DE102019111132A1 - Speichereinrichtung, die Hostspeicher nutzt und Betriebsverfahren dafür - Google Patents

Speichereinrichtung, die Hostspeicher nutzt und Betriebsverfahren dafür Download PDF

Info

Publication number
DE102019111132A1
DE102019111132A1 DE102019111132.3A DE102019111132A DE102019111132A1 DE 102019111132 A1 DE102019111132 A1 DE 102019111132A1 DE 102019111132 A DE102019111132 A DE 102019111132A DE 102019111132 A1 DE102019111132 A1 DE 102019111132A1
Authority
DE
Germany
Prior art keywords
data
host
buffer
memory
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019111132.3A
Other languages
English (en)
Inventor
Kicheol Eom
Jaeho SIM
Dong-Ryoul Lee
Hyun Ju Yi
Hyotaek Leem
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102019111132A1 publication Critical patent/DE102019111132A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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
    • 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
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/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]

Abstract

Eine Speichereinrichtung (1200), welche einen Hostspeicher (1120) eines Host (1100) gemeinsam verwendet, wobei die Speichereinrichtung (1200) eine serielle Schnittstelle (1220) aufweist, welche Daten mit dem Host (1100) austauscht, und einen Speichercontroller (1240), welcher Pufferdaten in einem Hostspeicherpuffer (1125) speichert, welcher durch den Host (1100) über die serielle Schnittstelle (1220) zugewiesen wird. Der Speichercontroller (1240) führt eine Fehlerkorrekturkodierung und Fehlerkorrekturdekodierung auf den Pufferdaten durch.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Es wird unter 35 U. S. C. § 119 ein die Priorität für die koreanische Patentanmeldung Nummer 10-2018-0137228 beansprucht, welche am 9. November 2018 beim koreanischen Amt für geistiges Eigentum eingereicht wurde, und deren gesamter Inhalt hiermit durch Verweis miteingebunden ist.
  • HINTERGRUND
  • Die vorliegenden erfinderischen Konzepte, die hierin beschrieben sind, beziehen sich auf Halbleiterspeichervorrichtungen, und genauer auf Speichereinrichtungen, welche Speicher eines Host verwenden, und ein Betriebsverfahren dafür.
  • Ein Festkörperlaufwerk (hierin nachstehend wird hierauf Bezug genommen als „SSD“) ist ein Beispiel einer Flashspeicher-basierten Massenspeichereinrichtung. Die Nachfrage nach SSDs hat in großem Maße zugenommen, da SSDs für verschiedene Zwecke verwendet worden sind. Beispielsweise wurden SSDs in Servern, durch Clients und in Datenzentren unter anderen Verwendungen verwendet. Eine Schnittstelle einer SSD sollte die beste Geschwindigkeit und Zuverlässigkeit für jeden Zweck vorsehen. Um solch eine Anforderung zu erfüllen, wurden Schnittstellen wie beispielsweise eine Serial AT Attachment (SATA)-Schnittstelle, eine PCI Express (PCIe)-Schnittstelle und eine Serial Attached SCSI(SAS) in einer Anstrengung verwendet, eine hohe Geschwindigkeit und eine hohe Zuverlässigkeit vorzusehen. Insbesondere werden PCIe-basierte NVMi oder UFS-basierte UME (Unified Memory Extension) entwickelt und auf Speichereinrichtungen angewandt. Die Schnittstelle sieht eine Speicherteilfunktion zwischen Vorrichtungen vor. Demzufolge wird ein Datenverwaltungsverfahren hinsichtlich Speichereinrichtungen benötigt, welche ein Schema verwenden, um Speicherressourcen zu teilen beziehungsweise gemeinsam zu verwenden.
  • Im Allgemeinen können Speichereinrichtungen einen separaten flüchtigen Speicher aufweisen, um einen schnellen Zugriff auf Mappingtabellen beziehungsweise Abbildungstabellen zu ermöglichen. Datenspeichereinrichtungen können die Mappingtabellen in dem flüchtigen Speicher speichern, wenn Leistung angeschaltet ist. Der oben beschriebene flüchtige Speicher kann beispielsweise ein dynamischer Direktzugriffsspeicher (DRAM) oder statischer Direktzugriffspeicher (SRAM) sein. Die Verwendung von flüchtigem Speicher jedoch führt zu einer erhöhten Fläche und Kosten der Speichereinrichtung.
  • KURZFASSUNG
  • Ausführungsformen der erfinderischen Konzepte sehen eine Speichereinrichtung vor, welche eine Zuverlässigkeit zum Puffern von Daten in einem System vorsieht, welches eine Schnittstelle verwendet, auf welche ein Speicherressourcenteilungsschema angewandt wird, und ein Betriebsverfahren dafür.
  • Ausführungsformen der erfinderischen Konzepte sehen eine Speichereinrichtung vor, welche einen Hostspeicher eines Host teilt beziehungsweise gemeinsam verwendet, wobei die Speichereinrichtung eine serielle Schnittstelle aufweist, welche Daten mit dem Host austauscht; und einen Speichercontroller, welcher mit dem Host durch die serielle Schnittstelle verbunden ist, und welcher Pufferdaten in einem Hostspeicherpuffer speichert, welcher durch den Host zugewiesen wird, und welcher eine Fehlerkorrekturcodierung und Fehlerkorrekturdecodierung auf den Pufferdaten durchführt.
  • Ausführungsformen der erfinderischen Konzepte sehen ferner ein Betriebsverfahren für eine Speichereinrichtung vor, welcher ein Hostspeicher eines Host als ein Puffer zugewiesen ist. Das Verfahren weist ein Lesen an der Speichereinrichtung von Pufferdaten von dem Puffer auf; ein Erfassen eines Fehlers der Pufferdaten durch ein Verwenden einer ersten Fehlercodekorrekturmaschine; und ein Anfordern durch die Speichereinrichtung der Pufferdaten von dem Host, wenn der erfasste Fehler durch die erste Fehlerkorrekturcodemaschine unkorrigierbar ist.
  • Ausführungsformen der erfinderischen Konzepte sehen noch weiterhin eine Speichereinrichtung vor, welche eine Schnittstelle aufweist, welche Daten mit dem Host austauscht; eine nichtflüchtige Speichervorrichtung; und einen Speichercontroller, welcher mit der Schnittstelle verbunden ist, und welcher Pufferdaten in einem Teilbereich eines Hostspeichers des Host, welcher als ein Puffer zugewiesen ist speichert, die nichtflüchtige Speichervorrichtung in Antwort auf die Pufferdaten steuert und eine Fehlerkorrekturcodierung und Fehlerkorrekturdecodierung auf den Pufferdaten durchführt. Der Speichercontroller ersetzt einen verlorenen Abschnitt eines Pakets der Pufferdaten, welcher verloren ist, wenn ein Fehler an der Schnittstelle während dem Empfangen der Pufferdaten auftritt, wobei der verlorene Abschnitt durch Dummydaten ersetzt wird.
  • Ausführungsformen der erfinderischen Konzepte sehen ebenso ein Speichersystem vor, welches einen Host aufweist, welcher einen Hostspeicher aufweist, und konfiguriert ist, um einen Teilbereich des Hostspeichers als einen Hostspeicherpuffer zuzuweisen; und eine Speichereinrichtung, welche als ein Master konfiguriert ist, um den Hostspeicherpuffer ohne Intervention des Host zu verwalten. Die Speichereinrichtung weist einen Speichercontroller auf, welcher konfiguriert ist, um einen Typ von Zugriffsanforderung auf den Hostspeicherpuffer zu identifizieren. Wenn die Zugriffsanforderung als eine Leseoperation identifiziert wird, wird der Speichercontroller konfiguriert, um erste Daten von dem Hostspeicherpuffer zu lesen und um eine Fehlerkorrekturdecodierung auf den ersten Daten durchzuführen, und wenn die Zugriffsanforderung als eine Schreiboperation identifiziert wird, wird der Speichercontroller konfiguriert, um eine Fehlerkorrekturcodierung auf zweiten Daten durchzuführen, und um die Fehlerkorrekturcodierten zweiten Daten in den Hostspeicherpuffer zu schreiben.
  • Figurenliste
  • Die obigen und andere Aufgaben und Merkmale der erfinderischen Konzepte werden in Hinsicht auf die folgende Detailbeschreibung von beispielhaften Ausführungsformen unter Bezugnahme auf die beigefügten Zeichnungen offensichtlich werden.
    • 1 veranschaulicht ein Blockschaltbild eines Computersystems, mit welchem eine Speichereinrichtung gemäß Ausführungsformen der erfinderischen Konzepte verbunden ist.
    • 2 veranschaulicht ein Blockschaltbild einer beispielhaften Konfiguration eines Host, welcher in 1 veranschaulicht ist.
    • 3 veranschaulicht ein Blockschaltbild einer beispielhaften Konfiguration eines Speichercontrollers, welcher in 1 veranschaulicht ist.
    • 4 veranschaulicht ein Flussdiagramm einer Operation zum Zugreifen auf einen Hostspeicherpuffer gemäß Ausführungsformen der erfinderischen Konzepte.
    • 5 veranschaulicht ein Blockschaltbild eines Beispiels einer ersten Fehlerkorrekturcodemaschine, welche in 3 veranschaulicht ist.
    • 6 veranschaulicht ein Diagramm, welches ein Verfahren zum Verwalten eines Hostspeicherpuffers gemäß Ausführungsformen des erfinderischen Konzepts erklärt.
    • 7 veranschaulicht ein Flussdiagramm eines Prozesses zum Lesen von Daten von einem Hostspeicherpuffer gemäß Ausführungsformen der erfinderischen Konzepte.
    • 8 veranschaulicht ein Blockschaltbild einer beispielhaften Reparaturoperation eines Hostspeicherpuffers, welche durch einen Host gemäß Ausführungsformen der erfinderischen Konzepte durchgeführt wird.
    • 9 veranschaulicht ein Diagramm einer Datenaustauschprozedur zwischen einem Hostspeicherpuffer und einer Speichereinrichtung.
    • 10 veranschaulicht ein Diagramm, welches eine Charakteristik einer Speichereinrichtung gemäß anderen Ausführungsformen der erfinderischen Konzepte erklärt.
    • 11 veranschaulicht ein Flussdiagramm einer Operation einer Speichereinrichtung gemäß Ausführungsformen der erfinderischen Konzepte, wenn ein Link-Down-Ereignis auftritt.
    • 12 veranschaulicht ein Flussdiagramm einer Operation einer Speichereinrichtung gemäß anderen Ausführungsformen der erfinderischen Konzepte, wenn ein Link-Down-Ereignis auftritt.
    • 13 veranschaulicht ein Diagramm, welches ein Verfahren zum Wiederherstellen von Daten, welche zu einem Hostspeicherpuffer übertragen werden, erklärt, welcher unter Bezugnahme auf 12 beschrieben ist.
    • 14 veranschaulicht ein Blockschaltbild eines Computersystems gemäß anderer Ausführungsformen der erfinderischen Konzepte.
    • 15 veranschaulicht ein Flussdiagramm einer Operation einer Speichereinrichtung gemäß Ausführungsformen der erfinderischen Konzepte.
    • 16 veranschaulicht ein Blockschaltbild eines Speicherkartensystems, welches ein nichtflüchtiges Speichersystem gemäß Ausführungsformen der erfinderischen Konzepte aufweist.
    • 17 veranschaulicht ein Blockschaltbild eines Festkörperlaufwerk(SSD)-Systems, welches ein nichtflüchtiges Speichersystem gemäß Ausführungsformen der erfinderischen Konzepte aufweist.
  • DETAILLIERTE BESCHREIBUNG
  • Hierin nachstehend werden Ausführungsformen der erfinderischen Konzepte deutlich und im Detail unter Bezugnahme auf die beigefügten Zeichnungen in einem solchen Ausmaß beschrieben werden, dass ein Fachmann Ausführungsformen der erfinderischen Konzepte implementieren kann. Wo immer es möglich ist, werden dieselben Bezugszeichen in den Zeichnungen und der Beschreibung verwendet, um auf dieselben oder ähnlichen Teile Bezug zu nehmen.
  • Hierin nachstehend wird ein Festkörperlaufwerk (SSD), welches eine Flashspeichervorrichtung verwendet, als ein Beispiel einer Speichereinrichtung zum Beschreiben der Merkmale und Funktionen der erfinderischen Konzepte verwendet werden. Ein Fachmann jedoch sollte leicht andere Leistungen und Leistungsfähigkeit der erfinderischen Konzepte abhängig von den Inhalten, welche hierin offenbart sind, verstehen. Die erfinderischen Konzepte können durch andere Ausführungsformen implementiert oder angewandt werden. Zusätzlich kann die detaillierte Beschreibung gemäß Sichtpunkten und Anwendungen geändert oder modifiziert werden, ohne von den Ansprüchen und dem Umfang und Gedanken und anderen beliebigen Zwecken der erfinderischen Konzepte abzuweichen.
  • Wie es in dem Gebiet der erfinderischen Konzepte traditionell ist, können Ausführungsformen in Einheiten von Blöcken beschrieben und veranschaulicht werden, welche eine beschriebene Funktion oder Funktionen ausführen. Diese Blöcke, auf welche hierin als Einheiten oder Module oder dergleichen Bezug genommen werden kann, sind physikalisch durch analoge und/oder digitale Schaltungen wie beispielsweise Logikgatter, integrierte Schaltungen, Mikroprozessoren, Mikrocontroller, Speicherschaltungen, passive elektronische Komponenten, aktive elektronische Komponenten, optische Komponenten, festverdrahtete Schaltungen und dergleichen implementiert und können optional durch Firmware und/oder Software betrieben werden. Die Schaltungen können beispielsweise in einem oder mehreren Halbleiterchips ausgeführt sein oder auf Substratunterstützungen wie beispielsweise Leiterplatten und dergleichen. Die Schaltungen, welche einen Block bilden, können durch gewidmete Hardware implementiert sein oder durch einen Prozessor (beispielsweise einen oder mehrere programmierte Mikroprozessoren und zugehörige Schaltungen), oder durch eine Kombination von gewidmeter Hardware, um einige Funktionen des Blocks durchzuführen, und einem Prozessor, um andere Funktionen des Blocks durchzuführen. Jeder Block der Ausführungsformen kann physikalisch in zwei oder mehr interagierende und diskrete Blöcke geteilt werden, ohne von dem Umfang der erfinderischen Konzepte abzuweichen. Ähnlich können die Blöcke der Ausführungsformen physikalisch in komplexere Blöcke kombiniert werden, ohne vom Umfang der erfinderischen Konzepte abzuweichen.
  • 1 veranschaulicht ein Blockschaltbild eines Computersystems, mit welchem eine Speichereinrichtung gemäß Ausführungsformen des erfinderischen Konzepts verbunden ist. Bezug nehmend auf 1 weist ein Computersystem 1000 einen Host 1100 und eine Speichereinrichtung 1200 auf. Das Computersystem 1000 kann eine elektronische Vorrichtung wie beispielsweise ein Desktopcomputer, ein Laptopcomputer, ein Tabletcomputer, ein Smartphone, eine tragbare Vorrichtung, eine Workstation, ein oder mehrere Server, ein elektrisches Fahrzeug, Heimanwendungen beziehungsweise Haushaltsgeräte, eine medizinische Vorrichtung oder dergleichen sein.
  • Der Host 1100 kann auf die Speichereinrichtung 1200 beispielsweise für den Zweck des Lesens von Daten zugreifen. Die Speichereinrichtung 1200 speichert Daten in oder liest Daten von einer nichtflüchtigen Speichervorrichtung (NVM) 1260 in Antwort auf eine Schreib- oder Leseanfrage des Host 1100. Insbesondere kann die Speichereinrichtung 1200 einen Hostspeicherpuffer (HMB) 1125 verwenden, welcher in dem Host 1100 als ein Datenpuffer vorgesehen ist. Als ein Master kann die Speichereinrichtung 1200 einen Bereich des Hostspeicherpuffers 1125 des Hostspeichers 1120, welcher in dem Host 1100 vorgesehen ist, verwalten. Insbesondere kann die Speichereinrichtung 1200 Daten, welche in dem Hostspeicherpuffer 1125 gespeichert sind, zu einem Fehlerkorrekturcode (hierin nachstehend wird hierauf Bezug genommen als ein „ECC“) kodieren. Dies wird hierin nachstehend detaillierter beschrieben werden.
  • Der Host 1100 kann Daten in die Speichereinrichtung 1200 schreiben oder kann Daten, welche in der Speichereinrichtung 1200 gespeichert sind, lesen. Der Host 1100 kann einen Befehl und eine Adresse für die Speichereinrichtung 1200 für den Zweck des Schreibens von Daten vorsehen. Der Host 1100 kann einen Befehl und eine Adresse für die Speichereinrichtung 1200 für den Zweck des Lesens von Daten, welche in der Speichereinrichtung 1200 gespeichert sind, vorsehen.
  • Der Host 1100 weist einen Prozessor 1110, den Hostspeicher 1120 und eine Schnittstellenschaltung 1130 auf. Beispielsweise können ein Anwendungsprogramm, ein Dateisystem, ein Vorrichtungstreiber oder dergleichen auf den Hostspeicher 1120 geladen werden. Außerdem können Daten oder eine Vielzahl von Software, welche in dem Host 1100 betrieben wird, auf den Hostspeicher 1120 geladen werden. Insbesondere kann der Host 1100 einen Teilbereich des Hostspeichers 1120 als (oder für) einen Puffer der Speichereinrichtung 1200 zuweisen. Hierin nachstehend wird auf den Teilbereich des Hostspeichers 1120, welcher als ein Puffer der Speichereinrichtung 1200 zugewiesen ist, Bezug genommen als der „Hostspeicherpuffer (HMB) 1125“.
  • Der Hostspeicherpuffer 1125 wird zugewiesen, um es der Speichereinrichtung 1200 zu erlauben, den Hostspeicher 1120 als einen Puffer zu verwenden. Insbesondere können gemäß Ausführungsformen der erfinderischen Konzepte Daten, welche auf den Fehlerkorrekturcode an der Speichereinrichtung 1200 kodiert werden, oder welche eine Parität haben, in dem Hostspeicherpuffer 1125 gespeichert werden. Sobald der Hostspeicherpuffer 1125 als ein Puffer der Speichereinrichtung 1200 zugewiesen ist, arbeitet hinsichtlich des Hostspeicherpuffers 1125 die Speichereinrichtung 1200 als ein Master und der Hostspeicher 1120 arbeitet als ein Slave. Demzufolge kann der Host 1100 keine Autorität im Wesentlichen hinsichtlich eines Sicherstellens der Zuverlässigkeit von Daten haben (hierin nachstehend wird hierauf Bezug genommen als „Pufferdaten“), welche in dem Hostspeicherpuffer 1125 gespeichert sind.
  • Die Pufferdaten, welche in dem Hostspeicherpuffer 1125 der erfinderischen Konzepte gespeichert sind, haben Parität oder einen Fehlerkorrekturcode, welcher an der Speichereinrichtung 1200 kodiert wird. Die Pufferdaten werden zu der Speichereinrichtung 1200 ohne ein getrenntes Verarbeiten durch den Host 1100 übertragen. Die Pufferdaten jedoch, welche von dem Hostspeicherpuffer 1125 vorgesehen werden, können durch ein Verwenden einer getrennten Fehlerkorrekturmaschine, welche in der Speichereinrichtung 1200 vorgesehen ist, dekodiert werden. Demzufolge kann die Zuverlässigkeit von Daten, welche in dem Hostspeicherpuffer 1125 gespeichert sind, sichergestellt werden.
  • Die Schnittstellenschaltung 1130 sieht eine physikalische Verbindung zwischen dem Host 1100 und der Speichereinrichtung 1200 vor. Das heißt, dass die Schnittstellenschaltung 1130 einen Befehl, eine Adresse, Daten etc., welche verschiedenen Zugriffsanforderungen, welche von dem Host 1100 erzeugt werden, entsprechen, umwandeln kann, um für ein Schnittstellenverhalten mit der Speichereinrichtung 1200 geeignet zu sein. Ein Protokoll der Schnittstellenschaltung 1130 kann beispielsweise wenigstens eines von Universal Serial Bus (USB), Small Computer System Interface (SCSI), PCI Express, ATA, parallel ATA (PATA), serial ATA (SATA), Serial Attached SCSI (SAS) und Universal Flash Storage (UFS) aufweisen.
  • Die Speichereinrichtung 1200 kann als einen Datenspeicher des Host 1100 vorgesehen sein. Die Speichereinrichtung 1200 weist eine serielle Schnittstelle 1220, einen Speichercontroller 1240 und die nichtflüchtige Speichervorrichtung 1260 auf. Die Speichereinrichtung 1200 kann auf die nichtflüchtige Speichervorrichtung 1260 in Antwort auf einen Befehl CMD von dem Host 1100 zugreifen oder kann verschiedene Operationen durchführen, welche durch den Host 1100 angefordert werden.
  • Die serielle Schnittstelle 1220 ist als ein physikalischer Kommunikationskanal der Speichereinrichtung 1200 für einen Datenaustausch mit dem Host 1100 vorgesehen. Die serielle Schnittstelle 1220 kann ein Schnittstellenprotokoll haben, welches es dem Hostspeicherpuffer 1125 erlaubt, eine Pufferfunktion der Speichereinrichtung 1200 zu unterstützen. Das heißt, dass die serielle Schnittstelle 1220 ein Schnittstellenverhalten für ein wechselseitiges Teilen einer Speicherressource des Host 1100 und einer Speicherressource der Speichereinrichtung 1200 unterstützen kann. Beispielsweise kann die serielle Schnittstelle 1220 es für den Speichercontroller 1240 möglich machen, den Hostspeicherpuffer 1125 und einen internen Puffer (nicht veranschaulicht) der Speichereinrichtung 1200 durch ein Verwenden einer Speicherkarte zu verwalten.
  • Der Speichercontroller 1240 sieht ein Bilden einer Schnittstelle zwischen dem Host 1100 und der Speichereinrichtung 1200 vor. Der Speichercontroller 1240 kann Nutzerdaten in die nichtflüchtige Speichervorrichtung 1260 abhängig von einer Anforderung von dem Host 1100 schreiben. In diesem Fall können Schreibdaten, welche von dem Host 1100 vorgesehen werden, in die nichtflüchtige Speichervorrichtung 1260 nach einem Gepuffert-werden in dem Hostspeicherpuffer 1125 geschrieben werden. Zusätzlich kann der Speichercontroller 1240 Daten, welche in der nichtflüchtigen Speichervorrichtung 1260 gespeichert sind, zu dem Host 1100 in Antwort auf einen Befehl von dem Host 1100 ausgeben. Die Daten, welche in der nichtflüchtigen Speichervorrichtung 1260 gespeichert sind, können zu dem Host 1100 (beispielsweise Prozessor 1110) übertragen werden, nachdem sie in dem Hostspeicherpuffer 1125 durch den Speichercontroller 1240 gespeichert worden sind.
  • Für eine ECC-Verarbeitung kann der Speichercontroller 1240 eine erste Fehlerkorrekturcodemaschine (beispielsweise eine ECC-Einheit ECC1) 1242 und eine zweite Fehlerkorrekturcodemaschine (beispielsweise eine ECC-Einheit ECC2) 1244 aufweisen. Der Speichercontroller 1240 kann die erste Fehlerkorrekturcodemaschine 1242 zum Kodieren und Dekodieren eines Fehlerkorrekturcodes von Pufferdaten, welche in dem Hostspeicherpuffer 1125 gespeichert sind, aufweisen. Der Speichercontroller 1240 kann die zweite Fehlerkorrekturcodemaschine 1244 zum Kodieren und Dekodieren eines Fehlerkorrekturcodes von Daten, welche mit der nichtflüchtigen Speichervorrichtung 1260 ausgetauscht werden, aufweisen.
  • Die nichtflüchtige Speichervorrichtung 1260 ist als ein Speichermedium der Speichereinrichtung 1200 vorgesehen. Die nichtflüchtige Speichervorrichtung 1260 weist einen nichtflüchtigen Speicher wie beispielsweise einen Flashspeicher, einen Phasenübergangs-RAM (PRAM), einen magnetischen RAM (MRAM), einen resistiven RAM (ReRAM) oder einen ferroelektrischen RAM (FRAM) oder dergleichen auf.
  • Gemäß Ausführungsformen der erfinderischen Konzepte kann die Speichereinrichtung 1200 einen Fehlerkorrekturcode, welcher mit Pufferdaten, welche in dem Hostspeicherpuffer 1125 gespeichert sind, verbunden ist, verarbeiten. Die Pufferdaten können Abbildungsdaten beziehungsweise Mappingdaten oder Metadaten zum Verwalten der nichtflüchtigen Speichervorrichtung 1260 aufweisen. In dem Fall, in dem ein Fehler, welcher an den Pufferdaten auftritt, ohne Korrektur übertragen wird, kann ein Problem hinsichtlich der Gesamtsteuerung oder -verwaltung der Speichereinrichtung 1200 auftreten. Demzufolge ist es wichtig, die Zulässigkeit des Hostspeicherpuffers 1125, welcher innerhalb des Host 1100 platziert ist, jedoch als (oder für) ein(en) Puffer der Speichereinrichtung 1200 zugewiesen ist, sicherzustellen. Die Speichereinrichtung 1200 der erfinderischen Konzepte kann mit den obigen Tatsachen durch ein Verwenden der ersten Fehlerkorrekturmaschine 1242 zurechtkommen, welche vollständig verantwortlich für die Fehlerverwaltung der Pufferdaten ist.
  • 2 veranschaulicht ein Blockschaltbild einer beispielhaften Konfiguration des Host 1100, welcher in 1 veranschaulicht ist. Bezug nehmend auf 2 weist der Host 1100 den Prozessor 1110, den Hostspeicher 1120 und die Schnittstellenschaltung 1130 auf.
  • Der Prozessor 1110 führt eine Vielzahl von Software (beispielsweise ein Anwendungsprogramm, ein Betriebssystem und einen Vorrichtungstreiber) aus, welche auf den Hostspeicher 1120 geladen sind. Der Prozessor 1110 kann beispielsweise ein Betriebssystem (OS) und Anwendungsprogramme ausführen. Der Prozessor 1110 kann beispielsweise mit einem homogenen Multikernprozessor oder einem heterogenen Multikernprozessor implementiert sein.
  • Der Hostspeicher 1120 ist ein Speicher, welcher in dem Host 1100 vorgesehen ist. Beispielsweise kann der Hostspeicher 1120 mit einem flüchtigen Speicher wie beispielsweise einem DRAM oder einem SRAM implementiert sein oder kann mit einem nichtflüchtigen Speicher implementiert sein. Es sollte jedoch verstanden werden, dass der Hostspeicher 1120 verschiedentlich abhängig von einem Zweck implementiert sein kann. Der Hostspeicher 1120 kann Daten, welche durch den Host 1100 angefordert werden, speichern oder ausgeben. Zusätzlich ist der Hostspeicherpuffer 1125, welcher als ein Puffer der Speichereinrichtung 1200 zugewiesen ist, in dem Hostspeicher 1120 enthalten. Der Hostspeicherpuffer 1125 kann einem bestimmten Speicherbereich des Hostspeichers 1120 zugewiesen sein, oder kann auf dem Hostspeicher 1120 mit einer optimalen Größe gemäß Information der Speichereinrichtung 1200 zugewiesen sein.
  • Der Hostspeicherpuffer 1125 ist ein Teilbereich des Hostspeichers 1120, welcher zugewiesen ist, um als ein Puffer der Speichereinrichtung 1200 verwendet zu werden. Demzufolge kann die Speichereinrichtung 1200 den Hostspeicherpuffer 1125 ohne einen getrennten internen Puffer verwenden. Das heißt, dass ein getrennter interner Puffer in der Speichereinrichtung 1200 nicht vorgesehen sein muss. Aufgrund verschiedener Bedenken wie beispielsweise Kosten, Vorrichtungsgröße und Begrenzungen am Design kann es schwierig sein, einen internen Puffer vorzusehen, welcher eine ausreichende Kapazität in der Speichereinrichtung 1200 hat. Anstelle dessen kann in dem Fall des Teilens von Ressourcen des Hostspeicherpuffers 1125 die Speichereinrichtung 1200 ausreichend Pufferkapazität sicherstellen.
  • Pufferdaten, welche in dem Hostspeicherpuffer 1125 gespeichert sind, werden gespeichert, nachdem sie zu einem Fehlerkorrekturcode kodiert sind. Demzufolge können die Pufferdaten ein Codewort oder Parität gemäß einem ECC-Kodieren aufweisen. Die Speichereinrichtung 1200 kann eine ECC-Codierung auf den Pufferdaten durchführen und kann die ECC-kodierten Daten in dem Hostspeicherpuffer 1125 speichern. Beispielsweise kann nach dem Durchführen der ECC-Kodierung die Speichereinrichtung 1200 Daten in einem Datenbereich des Hostspeicherpuffers 1125 speichern und kann eine Parität in einem ECC-Bereich (welcher als ein Paritätsbereich charakterisiert sein kann) speichern. In dem Fall jedoch, in dem der Fehlerkorrekturcode nicht in Daten und Parität unterteilt ist, kann der Fehlerkorrekturcode in dem Hostspeicherpuffer 1125 ohne Daten und Paritätsunterteilung gespeichert werden.
  • Die Schnittstellenschaltung 1130 sieht eine physikalische Verbindung zwischen dem Host 1100 und der Speichereinrichtung 1200 vor. Das heißt, dass die Schnittstellenschaltung 1130 einen Befehl, eine Adresse, Daten etc., welche verschiedenen Zugriffsanforderungen, welche von dem Host 1100 erzeugt werden, entsprechen, umwandeln kann, um für eine Schnittstelle mit der Speichereinrichtung 1200 geeignet zu sein. Ein Protokoll der Schnittstellenschaltung 1130 kann wenigstens ein beliebiges eines von beispielsweise Universal Serial Bus (USB), Small Computer System Interface (SCSI), PCI Express, ATA, Parallel ATA (PATA), Serial ATA (SATA), Serial Attached SCSI (SAS) und Universal Flash Storage (UFS) oder dergleichen aufweisen.
  • Wie voranstehend beschrieben ist, kann der Host 1100 einen Teilbereich des Hostspeichers 1120 als einen Puffer der Speichereinrichtung 1200 zuweisen. Der Host 1100 kann jedoch keine Autorität haben, um Daten hinsichtlich des Teilbereichs des Hostspeichers 1120, welcher dem Hostspeicherpuffer 1125 zugewiesen ist, zu verwalten. Der Teilbereich des Hostspeichers 1120, welcher dem Hostspeicherpuffer 1125 zugewiesen ist, wird durch den Speichercontroller 1240 der Speichereinrichtung 1200 verwaltet. Der Speichercontroller 1240 kann die erste Fehlerkorrekturcodemaschine 1242 zum Sicherstellen der Zuverlässigkeit von Pufferdaten, welche in dem Hostspeicherpuffer 1125 gespeichert sind, aufweisen.
  • 3 veranschaulicht ein Blockschaltbild einer beispielhaften Konfiguration des Speichercontrollers 1240, welche in 1 veranschaulicht ist. Bezug nehmend auf 3 weist der Speichercontroller 1240 eine zentrale Verarbeitungseinheit (CPU) 1241, einen HMB-Controller 1243, die zweite Fehlerkorrekturcodemaschine 1244 und eine Flashschnittstelle (I/F) 1245 auf. Insbesondere kann der HMB-Controller 1243 die erste Fehlerkorrekturcodemaschine 1242 für Daten, welche in dem Hostspeicherpuffer 1125 gespeichert sind, aufweisen.
  • Die CPU 1241 kann verschiedene Speicherverwaltungsoperationen der Speichereinrichtung 1200 durchführen. Beispielsweise kann die CPU 1241 den HMB-Controller 1243 und die Flashschnittstelle 1245 in Antwort auf einen Befehl von dem Host 1100 für den Zweck des Schreibens von Daten in die nichtflüchtige Speichervorrichtung 1260 steuern. Der HMB-Controller 1243 kann eine ECC-Kodierung auf Pufferdaten, welche zu dem Host 1100 durch einen direkten Speicherzugriff (DMA) zu übertragen sind, durchführen. Der HMB-Controller 1243 kann die ECC-kodierten Pufferdaten in den Hostspeicherpuffer 1125 schreiben. In dem Fall, in dem die Pufferdaten benötigt werden, fordert die CPU 1241 den HMB-Controller 1243 auf, die Pufferdaten von dem Hostspeicherpuffer 1125 zu lesen. In diesem Fall kann der HMB-Controller 1243 die Pufferdaten von dem Hostspeicherpuffer 1125 lesen. Der HMB-Controller 1243 kann eine ECC-Dekodierung auf den gelesenen Pufferdaten durchführen. Ein Fehler, welcher in den Pufferdaten enthalten ist kann durch die ECC-Dekodierung erfasst oder korrigiert werden.
  • Die CPU 1241 kann die nichtflüchtige Speichervorrichtung 1260 durch ein Verwenden der ECC-dekodierten Pufferdaten verwalten. Alternativ kann in dem Fall, in dem die Pufferdaten Daten sind, welche in der nichtflüchtigen Speichervorrichtung 1260 zu speichern sind, die CPU 1241 die Flashschnittstelle derart steuern, dass die Pufferdaten in die nichtflüchtige Speichervorrichtung 1260 geschrieben werden. Die Flashschnittstelle 1245 überträgt die Pufferdaten zu der nichtflüchtigen Speichervorrichtung 1260 unter der Steuerung der CPU 1241.
  • Eine Steueroperation der CPU 1241 in dem Fall des Schreibens der Pufferdaten in die nichtflüchtige Speichervorrichtung 1260 ist obenstehend beschrieben. In dem Fall jedoch des Empfangens einer Anforderung zum Lesen von Daten, welche in der nichtflüchtigen Speichervorrichtung 1260 gespeichert sind, von dem Host 1100, kann die CPU 1241 den HMB-Controller 1243 und die Flashschnittstelle 1245 in einer ähnlichen Art und Weise steuern. Bei einem Lesen von Daten jedoch von der nichtflüchtigen Speichervorrichtung 1260 kann die CPU 1241 es der Flashschnittstelle 1245 erlauben, zuerst Daten von der nichtflüchtigen Speichervorrichtung 1260 zu lesen. Als Nächstes kann die CPU 1241 den HMB-Controller 1243 derart steuern, dass die gelesenen Daten in dem Hostspeicherpuffer 1125 gepuffert werden und zu dem Host 1100 ausgegeben werden. Bei dem Puffern unter Verwendung des Hostspeicherpuffers 1125 kann der Speichercontroller 1240 immer eine ECC-Kodierung und ECC-Dekodierung durch ein Verwenden der ersten Fehlerkorrekturcodemaschine 1242 durchführen.
  • Zusätzlich sollte es wohl verstanden werden, dass die Pufferdaten, welche in dem Hostspeicherpuffer 1125 gespeichert sind, nicht auf Mappingdaten oder Metadaten zum Verwalten der Speichereinrichtung 1200 beschränkt sind. Das heißt, dass Daten, welche durch den Host 1100 schreibangefordert oder leseangefordert werden, hinsichtlich der Speichereinrichtung 1200 vorübergehend in dem Hostspeicherpuffer 1125 gespeichert werden können.
  • 4 veranschaulicht ein Flussdiagramm einer Operation zum Zugreifen auf einen Hostspeicherpuffer gemäß Ausführungsformen der erfinderischen Konzepte. Bezug nehmend auf 4 führt der HMB-Controller 1243 immer eine ECC-Kodierung oder ECC-Dekodierung durch, wenn er auf den Hostspeicherpuffer 1125 zugreift.
  • In Operation S110 erfasst oder empfängt der HMB-Controller 1243 eine Anforderung für einen Zugriff auf den Hostspeicherpuffer 1125 von der CPU 1241. Beispielsweise kann der HMB-Controller 1243 einen Befehl identifizieren, welchen die CPU 1241 in ein internes Register schreibt, um die Zugriffsanforderung auf den Hostspeicherpuffer 1125 zu überprüfen.
  • In Operation S120 identifiziert der HMB-Controller 1243 einen Typ der Zugriffsanforderung auf den Hostspeicherpuffer 1125. Beispielsweise kann der HMB-Controller 1243 bestimmen, ob die Zugriffsanforderung von der CPU 1241 einer Schreiboperation oder einer Leseoperation entspricht. Wenn die Zugriffsanforderung auf den Hostspeicherpuffer 1125 der Leseoperation (Lesen in S120) entspricht, schreitet die Prozedur zu Operation S130 voran. Wenn die Zugriffsanforderung auf den Hostspeicherpuffer 1125 der Schreiboperation (Schreiben in S120) entspricht, schreitet die Prozedur zu Operation S160 voran.
  • In Operation S130 liest der HMB-Controller 1243 leseangeforderte Daten von einem bestimmten Bereich des Hostspeicherpuffers 1125. In diesem Fall können die Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, ein Codewort oder eine Parität aufweisen, welches/welche durch ECC-Kodieren erzeugt wird. Der HMB-Controller 1243 kann die Daten von dem Hostspeicherpuffer 1125 über den DMA empfangen.
  • In Operation S140 steuert der HMB-Controller 1243 die erste Fehlerkorrekturcodemaschine 1242, um eine ECC-Dekodierung auf den Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, durchzuführen. Wenn ein Ergebnis der ECC-Dekodierung anzeigt, dass ein Fehler von den Lesedaten erfasst ist, kann der HMB-Controller 1243 eine Operation zum Korrigieren des erfassten Fehlers durchführen. Insbesondere kann, wenn der erfasste Fehler unkorrigierbar ist, der HMB-Controller 1243 eine Operation wie beispielsweise eine erneute Leseversuchsoperation durchführen.
  • In Operation S150 gibt der HMB-Controller 1243 die gelesenen Daten, welche durch die ECC-Dekodierung verarbeitet wurden, zu der CPU 1241 zurück. In diesem Fall kann die CPU 1241 Gesamtspeicherverwaltungsoperationen der Speichereinrichtung 1200 unter Bezugnahme auf die gelesenen Daten durchführen. Beispielsweise kann in dem Fall, in dem die gelesenen Daten Mappingdaten sind, die CPU 1241 auf die nichtflüchtige Speichervorrichtung 1260 durch ein Verwenden der Mappingdaten zugreifen. Die Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, können Nutzerdaten sein, welche in die nichtflüchtige Speichervorrichtung 1260 zu programmieren sind. In diesem Fall kann die CPU 1241 die Flashschnittstelle 1245 derart steuern, dass die Nutzerdaten in die nichtflüchtige Speichervorrichtung 1260 nach einer ECC-Kodierung unter Verwendung der zweiten Fehlerkorrekturcodemaschine 1244 programmiert werden (es sei Bezug genommen auf 3).
  • In Operation S160 führt der HMB-Controller 1243 eine ECC-Kodierung auf schreibangeforderten Daten, welche in dem Hostspeicherpuffer 1125 zu speichern sind, durch ein Verwenden der ersten Fehlerkorrekturcodemaschine 1242 durch. Durch die erste Fehlerkorrekturcodemaschine 1242 können die schreibangeforderten Daten zu einem Codewort kodiert werden oder können ein Paritätsbit aufweisen.
  • In Operation S170 schreibt der HMB-Controller 1243 die ECC-kodierten Schreibdaten in einen spezifizierten Bereich des Hostspeicherpuffers 1125. Der HMB-Controller 1243 kann die Schreibdaten zu dem Hostspeicherpuffer 1125 über den DMA übertragen.
  • Ein Verfahren, in welchem der HMB-Controller 1243 auf den Hostspeicherpuffer 1125 zugreift, ist gemäß Ausführungsformen der erfinderischen Konzepte obenstehend beschrieben. Insbesondere kann der HMB-Controller 1243 die separate erste Fehlerkorrekturcodemaschine 1242 zum Verarbeiten von Pufferdaten, welche in dem Hostspeicherpuffer 1125 gespeichert sind, aufweisen. Wenn eine Fehlerkorrekturcodevorrichtung vorgesehen ist, welche Daten, welche in dem Hostspeicherpuffer 1125 gepuffert sind, gewidmet ist, kann eine hohe Zuverlässigkeit der Pufferdaten sichergestellt werden.
  • 5 veranschaulicht ein Blockschaltbild eines Beispiels einer ersten Fehlerkorrekturcodemaschine, welche in 3 veranschaulicht ist. Bezug nehmend auf 5 kann die erste Fehlerkorrekturcodemaschine 1242 ein Syndrom aus Lesedaten erzeugen und kann einen Fehlerort durch Verwenden des Syndroms erfassen. Eine Beschreibung wird gegeben werden unter der Annahme, dass ein BCH (Bose-Chaudhuri-Hocquenghem)-Codeschema auf die erste Fehlerkorrekturcodemaschine 1242 angewandt wird, es sollte aber wohl verstanden werden, dass verschiedene unterschiedliche Fehlerkorrekturcodierschemata, welche in der Lage sind, einen Fehlerort zu erfassen, auf die erfinderischen Konzepte anwendbar sind. Die erste Fehlerkorrekturcodemaschine 1242 weist einen ersten Puffer 121, einen Syndromberechnungsblock 122, einen Chien-Suchblock 123, einen Fehleradresserzeuger 124, einen Korrektor 125 und einen zweiten Puffer 126 auf.
  • Der erste Puffer 121 speichert Daten R(x) einer Codeworteinheit, welche von dem Hostspeicherpuffer 1125 übertragen wird. Die Daten R(x), welche in dem ersten Puffer 121 gespeichert werden, werden für den Syndromberechnungsblock 122 vorgesehen.
  • Der Syndromberechnungsblock 122 empfängt die Daten R(x), um ein Syndrom S(x) zu berechnen. Beispielsweise kann das Syndrom S(x) durch ein Multiplizieren eines Paritätserfassungspolynoms H(x) und der gelesenen Daten R(x) miteinander berechnet werden. Das Paritätserfassungspolynom H(x) kann durch ein Verwenden einer Wurzel beziehungsweise eines Fußes eines Erzeugungspolynoms G(x) erzeugt werden. Ob ein Fehler in den gelesenen Daten R(x) gegenwärtig ist, wird durch das Syndrom S(x) erfasst. Das Syndrom S(x) weist Gesamtfehlerinformation der Daten R(x) auf. Das heißt, dass das Syndrom S(x) einen Ort und eine Struktur eines Fehlers und eine Größe des Fehlers aufweist. Demzufolge kann das Syndrom S(x) verwendet werden, um die folgenden Operationen auf den gelesenen Daten R(x) durchzuführen: eine Operation zum Erfassen eines Fehlerbits, eine Operation zum Korrigieren eines Fehlers und eine Operation zum Erfassen, ob ein Fehler korrigierbar ist.
  • Der Chien-Suchblock 123 erzeugt einen Fehlerkorrekturvektor E(x) durch ein Verwenden des Syndroms S(x). Das Syndrom S(x), welches durch den Syndromberechnungsblock 122 berechnet wird, kann zu einem Schlüsselgleichungslöser (KES)-Block (nicht veranschaulicht) übertragen werden. Ein Fehlerortpolynom σ(x) und ein Fehlerstrukturpolynom ω(x) kann aus dem Syndrom S(x) durch den KES-Block erzeugt werden. Der Chien-Suchblock 123 berechnet eine Wurzel des Fehlerortpolynoms. Eine Größe eines Fehlers, welcher jedem von Fehlerorten entspricht, welche durch das Fehlerortsbestimmungspolynom gefunden werden, wird berechnet. Bei einem Erhalten von Fehlerorten und Fehlergrößen der gelesenen Daten R(x) durch einen Chien-Suchalgorithmus, gibt der Chien-Suchblock 143 den Fehlerkorrekturvektor E(x) zum Korrigieren des Fehlers aus. Der Fehlerkorrekturvektor E(x) weist Fehlerortinformation in dem Codewort auf.
  • Der Fehleradresserzeuger 124 erzeugt Adressinformation von Teildaten, welche auf dem zweiten Puffer 126 zu überschreiben sind, durch ein Verwenden des Fehlerkorrekturvektors E(x). Der Fehleradresserzeuger 124 kann eine zweite Pufferadresse PB_ADD erzeugen, welche einem Ort des zweiten Puffers 116 entspricht, welcher mit korrigierten Daten zu überbeschreiben ist.
  • Der Korrektor 125 korrigiert Daten, in welchen ein Fehler existiert durch ein Verwenden des Fehlerkorrekturvektors E(x). Der Korrektor 125 kann einen Fehler, welcher in den ersten Daten R(x) enthalten ist, durch ein Durchführen einer XOR-Operation auf den gelesenen Daten R(x), welche in dem Lesepuffer 121 gespeichert sind, und dem Fehlerkorrekturvektor E(x), welcher durch den Chien-Suchblock berechnet wird, korrigieren. Die fehlerkorrigierten Daten können in dem zweiten Puffer 126 gespeichert werden.
  • 6 veranschaulicht ein Diagramm, welches ein Verfahren zum Verwalten eines Hostspeicherpuffers gemäß Ausführungsformen der erfinderischen Konzepte erklärt. Bezug nehmend auf 6 kann die Speichereinrichtung 1200 eine Fehlerkorrektur oder Reparaturfunktion auf Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, durchführen. Hierin nachstehend wird der Fall, in dem der Speichercontroller 1240 Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, in die nichtflüchtige Speichervorrichtung 1260 schreibt, beschrieben werden.
  • Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, werden zu dem Speichercontroller 1240 über die serielle Schnittstelle 1220 übertragen. Alle Pufferdaten, welche in dem Hostspeicherpuffer 1125 gespeichert sind, sind ECC-kodierte Daten. Zusätzlich kann eine DMA-Schaltung (das heißt ein DMA-Controller) in einer Frontend-Vorrichtung der Speichereinrichtung 1200 oder in der seriellen Schnittstelle 1220 enthalten sein. In 6 ist die DMA-Schaltung 1222 als in der seriellen Schnittstelle 1220 enthalten gezeigt. Daten des Hostspeicherpuffers 1125 können zu dem Speichercontroller 1240 über DMA übertragen werden. In 6 ist der Übertragung von Daten zu dem Speichercontroller 1240 von dem Hostspeicherpuffer 1125 durch ① angezeigt.
  • Die erste Fehlerkorrekturcodemaschine 1242 führt ein ECC-Dekodieren auf den Daten durch, welche von dem Hostspeicherpuffer 1125 gelesen werden und dann zu dem Speichercontroller 1240 übertragen werden. Das heißt, dass gelesene Daten durch ein Verwenden der ersten Fehlerkorrekturcodemaschine 1242 decodiert werden, welche vorgesehen ist, um vollständig in Verantwortung für die ECC-Kodierung und ECC-Dekodierung von Daten zu sein, welche mit dem Hostspeicherpuffer 1125 ausgetauscht werden. In diesem Fall wird erfasst, ob ein Fehler in den Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, gegenwärtig ist. In dem Fall, in dem ein Fehler von den Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, abwesend ist, kann der Speichercontroller 1240 eine Speicherverwaltungsoperation durch ein Verwenden der gelesenen Daten durchführen. Zusätzlich kann in dem Fall des Aktualisierens der gelesenen Daten an der nichtflüchtigen Speichervorrichtung 1260 der Speichercontroller die gelesenen Daten durch ein Verwenden der zweiten Fehlerkorrekturcodemaschine 1244 kodieren. Eine Fehlerkorrekturcodeoperation wird jedoch durch die erste Fehlerkorrekturcodemaschine 1242 durchgeführt, wenn ein korrigierbarer Fehler in den gelesenen Daten von dem Hostspeicherpuffer 1125 gegenwärtig ist. Die fehlerkorrigierten Daten können für die Speicherverwaltungsoperation verwendet werden oder können zu der zweiten Fehlerkorrekturcodemaschine 1244 für den Zweck des Programmierens der gelesenen Daten in die nichtflüchtige Speichervorrichtung 1260 übertragen werden. In 6 ist die Übertragung von Daten zu der zweiten Fehlerkorrekturcodemaschine 1244 durch ② angezeigt.
  • In dem Fall jedoch, in dem ein unkorrigierbarer Fehler in den Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, gegenwärtig ist, kann der Speichercontroller 1240 eine erneute Leseversuchsoperation auf Daten eines spezifizierten Bereichs des Hostspeicherpuffers 1125 durchführen. In dem Fall, in dem ein unkorrigierbarer Fehler kontinuierlich erfasst wird, auch wenn die erneute Leseversuchsoperation so oft wie eine beschränkte Zählung durchgeführt wurde, kann der Speichercontroller 1240 den Host 1100 auffordern, eine Speicherkarte eines relevanten Bereichs des Hostspeicherpuffers 1125 anzupassen. Das heißt, dass eine Adresse des Hostspeicherpuffers 1125, an welcher ein unkorrigierbarer Fehler erfasst wird, auf einen normalen Speicherbereich zurückabgebildet werden kann. Ein Versuch, auf einen Bereich des Hostspeicherpuffers 1125 zuzugreifen, in welchem der unkorrigierbare Fehler erfasst wird, kann durch ein Auskartieren (engl. mapping out) des Bereichs des Hostspeicherpuffers 1125 blockiert werden.
  • In dem Fall, in dem die Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, vollständig durch die erste Fehlerkorrekturcodemaschine 1242 verarbeitet werden, können die gelesenen Daten zu der zweiten Fehlerkorrekturcodemaschine 1244 übertragen werden. Die zweite Fehlerkorrekturcodemaschine 1244 führt eine Fehlererfassung und Korrektur auf allen Daten durch, welche mit der nichtflüchtigen Speichervorrichtung 1260 ausgetauscht werden. Die Daten ECC, welche durch die zweite Fehlerkorrekturcodemaschine 1244 codiert werden, werden in die nichtflüchtige Speichervorrichtung 1260 programmiert. In 6 zeigt ein Zeichen ③ die Übertragung von Daten zu der nichtflüchtigen Speichervorrichtung 1260 von der zweiten Fehlerkorrekturcodemaschine 1244, dies ist angezeigt durch ③.
  • Gesamtprozesse, welche mit dem Fall verbunden sind, in dem Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, in der nichtflüchtigen Speichervorrichtung 1260 gespeichert werden, sind obenstehend beschrieben. Dieses Szenario ist nur ein Beispiel zum Beschreiben von Funktionen der ersten Fehlerkorrekturcodemaschine 1242 und der zweiten Fehlerkorrekturcodemaschine 1244 der erfinderischen Konzepte. Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, können Mappingdaten oder Metadaten sein. Demzufolge können die gelesenen Daten nicht in der nichtflüchtigen Speichervorrichtung 1260 gespeichert werden.
  • 7 veranschaulicht ein Flussdiagramm eines Prozesses zum Lesen von Daten von einem Hostspeicherpuffer gemäß Ausführungsformen der erfinderischen Konzepte. Bezugnehmend auf 7 führt der Speichercontroller 1240 eine ECC-Dekodierung auf Daten, welche von dem Hostspeicherpuffer 1125 empfangen werden, durch ein Verwenden der ersten Fehlerkorrekturcodemaschine 1242 durch. Verschiedene Speicherverwaltungsoperationen können basierend auf dem ECC-Dekodierergebnis durchgeführt werden.
  • In Operation S210 empfängt der Speichercontroller 1240 gelesene Daten von dem Hostspeicherpuffer 1125. Insbesondere kann der HMB-Controller 1243, welcher in dem Speichercontroller 1240 enthalten ist, um vollständig in Verantwortung für den Hostspeicherpuffer 1125 zu stehen, die gelesenen Daten empfangen.
  • In Operation S220 führt der HMB-Controller 1243 eine ECC-Dekodierung auf den empfangenen gelesenen Daten durch. Die empfangenen gelesenen Daten können eine Parität aufweisen, welche durch ECC-Kodierung erzeugt wird. Alternativ können die empfangenen gelesenen Daten in der Form von einem Codewort, welches durch ECC-Kodierung erzeugt wird, übertragen werden. Insbesondere kann der HMB-Controller 1243 eine ECC-Dekodierung durch ein Verwenden der ersten Fehlerkorrekturcodemaschine 1242 durchführen.
  • In Operation S230 führt der HMB-Controller 1243 einen Operationszweig durch, welcher von dem ECC-Dekodierergebnis abhängt. Wenn ein Fehler aus den Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, nicht erfasst wird (Nein in S230), schreitet der Fluss zu Operation S290 voran. Wenn ein Fehler aus den Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, erfasst wird (Ja in S230) schreitet der Fluss zu Operation S240 voran.
  • In Operation S240 führt der HMB-Controller 1243 einen Operationszweig durch, welcher davon abhängt, ob der erfasste Fehler korrigierbar ist. Beispielsweise schreitet in dem Fall, in dem die Anzahl von Fehlerbits der gelesenen Daten einer korrigierbaren Zählung entspricht (Ja in S240) der Fluss zu Operation S280 voran. Im Gegensatz dazu schreitet in dem Fall, in dem die Anzahl von Fehlerbits der gelesenen Daten einer unkorrigierbaren Zählung entspricht (Nein in S240) der Fluss zu Operation S250 voran.
  • In Operation S250 führt der HMB-Controller 1243 eine erneute Leseversuchsoperation auf dem Hostspeicherpuffer 1125 durch, da der Fehler der gelesenen Daten unkorrigierbar ist. Gelesene Daten, welche von dem Hostspeicherpuffer 1125 durch die erneute Leseversuchsoperation empfangen werden, werden zu dem HMB-Controller 1243 übertragen.
  • In Operation S260 führt der HMB-Controller 1243 eine ECC-Kodierung auf den Daten, welche von dem Hostspeicherpuffer 1125 durch die erneute Leseversuchsoperation gelesen werden, durch. Wenn ein ECC-Dekodierungsergebnis anzeigt, dass ein korrigierbarer Fehler existiert (Ja in S260) schreitet der Fluss zu Operation S280 voran. Im Gegensatz dazu schreitet, wenn ein unkorrigierbarer Fehler in den Daten, welche durch die erneute Leseversuchsoperation gelesen werden (Nein in S260), gegenwärtig ist, der Fluss zu Operation S270 voran.
  • In Operation S270 benachrichtigt der HMB-Controller 1243 die CPU 1241 des Speichercontrollers 1240 über einen Lesemisserfolg. In diesem Fall kann der Speichercontroller 1240 eine Speicherverwaltungsregel basierend auf Information über den Lesemisserfolg ausführen. Das heißt, dass der Speichercontroller 1240 den Host 1100 von dem Lesemisserfolg in Kenntnis setzen kann und den Host 1100 auffordern kann, einen neuen Hostspeicherpuffer 1125 zuzuweisen. In Antwort auf die Anforderung kann der Host 1100 einen Datenbereich des Hostspeicherpuffers 1125 reparieren, in welchem ein unkorrigierbarer Fehler gegenwärtig ist. Beispielsweise kann der Host 1100 einen Teilbereich des Hostspeicherpuffers 1125, in welchem ein unkorrigierbarer Fehler gegenwärtig ist, auf einen unzugreifbaren Speicherbereich einstellen oder kann den Teilbereich durch einen beliebigen anderen normalen Speicherbereich ersetzen.
  • In Operation S280 korrigiert der HMB-Controller 1243 den erfassten Fehler der gelesenen Daten. Beispielsweise korrigiert der HMB-Controller 1243 einen korrigierbaren Fehler, welcher aus den gelesenen Daten erfasst wird, durch ein Verwenden der ersten Fehlerkorrekturcodemaschine 1242.
  • In Operation S290 gibt der HMB-Controller 1243 die fehlerkorrigierten Daten zu der CPU 1241 zurück. Die CPU 1241 kann eine Speicherverwaltungsoperation durch ein Verwenden der gelesenen Daten, in welchen ein Fehler nicht existiert, durchführen. Alternativ kann die CPU 1241 eine Operation zum erneuten Speichern der fehlerfreien gelesenen Daten in der nichtflüchtigen Speichervorrichtung 1260 oder eine Speicherverwaltungsoperation zum Übertragen der fehlerfreien gelesenen Daten zu dem Host 1100 durchführen.
  • Die Art und Weise, in welcher gelesene Daten, welche von dem Hostspeicherpuffer 1125 empfangen werden, gemäß Ausführungsformen der erfinderischen Konzepte verarbeitet werden, ist obenstehend beschrieben. Die meisten Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, können Mappingdaten oder Metadaten sein. Die Übertragung eines Fehlers, welcher in Daten, welche von dem Hostspeicherpuffer 1125 gelesen werden, gegenwärtig ist, kann einen fatalen Einfluss auf die Speichereinrichtung 1200 haben. Die Zuverlässigkeit von Daten jedoch, welche von dem Hostspeicherpuffer 1125 gelesen werden, kann durch die Fehlerkorrekturprozedur der erfinderischen Konzepte sichergestellt werden.
  • 8 veranschaulicht ein Blockschaltbild einer beispielhaften Reparaturoperation eines Hostspeicherpuffers, durchgeführt durch einen Host gemäß Ausführungsformen der erfinderischen Konzepte. Bezug nehmend auf 8 kann in Antwort auf eine Lesemisserfolgsbenachrichtigung der Host 1100 eine Reparaturoperation auf einem Lesemisserfolgsbereich des Hostspeicherpuffers 1125 durchführen.
  • Der Host 1100 kann den Lesemisserfolgsbereich des Hostspeicherpuffers 1125, in welchem die Anzahl von Malen, dass ein unkorrigierbarer Fehler erfasst wird, nicht kleiner als eine bestimmte Zählung ist, oder in welchem ein Lesemisserfolg wiederholt ist, durch einen beliebigen anderen normalen Bereich ersetzen. In 8 ist dieses erste Reparaturverfahren durch ① angezeigt. Um den Lesemisserfolgsbereich zu reparieren kann der Host 1100 eine Adressmappingtabelle, welche mit dem Hostspeicherpuffer 1125 verbunden ist, rekonfigurieren. Das heißt, dass in dem Fall, in dem eine Adresse des Lesemisserfolgsbereichs auf eine Adresse des ersetzten normalen Bereichs gemappt wird, wenn ein Zugriff auf den Lesemisserfolgsbereich angefordert wird, auf den normalen Bereich, der demnach ersetzt ist, aktuell zugegriffen werden kann.
  • Alternativ kann der Host 1100 den Lesemisserfolgsbereich des Hostspeicherpuffers 1125, in welchem die Anzahl von Malen dass ein unkorrigierbarer Fehler erfasst wird, nicht kleiner als eine bestimmte Zählung ist, oder in welchem ein Lesemisserfolg wiederholt wird, von der Mappingtabelle auskartieren. In 8 ist dieses zweite Reparaturverfahren durch ② angezeigt. Der Host 1100 kann einen Zugriff auf einen Misserfolgsbereich fundamental blockieren durch ein Invalidieren oder Löschen einer Adresse, welche dem Misserfolgsbereich entspricht, und zwar von einer Adressmappingtabelle für den Hostspeicherpuffer 1125.
  • 9 veranschaulicht ein Diagramm einer Datenaustauschprozedur zwischen einem Hostspeicherpuffer und eine Speicherrichtung. Eine Prozedur, in welcher die Speichereinrichtung 1200 Daten von dem Hostspeicherpuffer 1125 liest, wird unter Bezugnahme auf 9 beschrieben werden.
  • In Operation S310 überträgt die Speichereinrichtung 1200 eine Anforderung zum Lesen von Daten, welche in dem Hostspeicherpuffer 1125 gespeichert sind.
  • In Operation S320 überträgt der Hostspeicherpuffer 1125 Daten eines spezifizierten Speicherbereichs zu der Speichereinrichtung 1200. In diesem Fall können gelesene Daten RD, welche von dem Hostspeicherpuffer 1125 zu der Speichereinrichtung 1200 übertragen werden, ein Codewort aufweisen, welches Daten und eine ECC-Parität aufweist. Insbesondere sollte es wohl verstanden werden, dass die gelesenen Daten RD in der Form eines Pakets einer Seriell-Schnittstellen-Art übertragen werden.
  • In Operation S330 führt der HMB-Controller 1243 der Speichereinrichtung 1200 eine ECC-Dekodierung auf den empfangenen gelesenen Daten RD durch. Der HMB-Controller 1243 führt eine ECC-Dekodierung durch ein Verwenden der ersten Fehlerkorrekturcodemaschine 1242 durch. Wenn ein Fehler aus den gelesenen Daten RD, welche von dem Hostspeicherpuffer 1125 vorgesehen sind, nicht erfasst wird (Nein in S330), schreitet der Fluss zu Operation S360 voran. Wenn bestimmt wird, dass ein Fehler aus den gelesenen Daten RD, welche von dem Hostspeicherpuffer 1125 vorgesehen sind, erfasst wird (Ja in S330), schreitet der Fluss zu Operation S340 voran.
  • In Operation S340 führt der HMB-Controller 1243 einen Operationszweig abhängig davon durch, ob der erfasste Fehler korrigierbar ist. Wenn die Anzahl von Fehlerbits der gelesenen Daten einer korrigierbaren Zählung entspricht (Ja in S340) schreitet der Fluss zu Operation S345 voran. Im Gegensatz dazu schreitet, wenn die Anzahl von Fehlerbits der gelesenen Daten einer unkorrigierbaren Zählung entspricht (Nein in S340) der Fluss zu Operation S350 voran.
  • In Operation S345 korrigiert der HMB-Controller 1243 den Fehler der gelesenen Daten RD. Als Nächstes verarbeitet in Operation S360 der Speichercontroller 1240 die gelesenen Daten RD, welche von dem HMB-Controller 1243 übertragen werden. Beispielsweise kann der Speichercontroller 1240 eine Speicherverwaltungsoperation durch ein Verwenden der gelesenen Daten RD durchführen, welche von dem Hostspeicherpuffer 1125 empfangen werden, oder kann die gelesenen Daten RD zu dem Host 1100 oder der nichtflüchtigen Speichervorrichtung 1260 übertragen.
  • Im Gegensatz dazu wird in Operation S350 bestimmt, ob die gegenwärtige Anzahl von Malen nRR, welche eine Leseoperation auf dem Hostspeicherpuffer 1125 durchgeführt wird, einen Grenzwert TH überschreitet. Das heißt, dass nRR einer Wiederversuchszählung entspricht. Wenn die gegenwärtige Anzahl von Malen nRR, welche eine Leseoperation auf dem Hostspeicherpuffer 1125 durchgeführt wird, kleiner ist oder gleich zu dem Grenzwert TH (Nein in S350), schreitet der Fluss zu einer Prozedur für eine erneute Leseversuchsoperation voran. Im Gegensatz dazu schreitet, wenn die gegenwärtige Anzahl von Malen nRR, welche eine Leseoperation auf dem Hostspeicherpuffer 1125 durchgeführt wird, größer als der Grenzwert TH ist (Ja in S350), der Fluss zu Operation S355 voran.
  • In Operation S355 kann der HMB-Controller 1243 die CPU 1241 (es sei Bezug genommen auf 3) über einen Lesemisserfolg des Hostspeicherpuffers 1125 benachrichtigen. In Antwort auf die Benachrichtigung kann die CPU 1241 eine Speicherverwaltungsregel, welche der Lesemisserfolgssituation entspricht, aktivieren.
  • 10 veranschaulicht ein Diagramm, welches eine Charakteristik einer Speichereinrichtung gemäß Ausführungsformen der erfinderischen Konzepte erklärt. Bezug nehmend auf 10 kann die Speichereinrichtung 1200 ein System-Hängen freigeben, welches in einem Link-down-Zustand auftritt, welcher auftritt, wenn Daten in dem Prozess des Übertragen-Werdens von dem Hostspeicherpuffer 1125 sind.
  • Daten, welche von dem Hostspeicherpuffer 1125 in Antwort auf eine Anforderung des Speichercontrollers 1240 gelesen werden, können zu der Speichereinrichtung 1200 übertragen werden. Gelesenen Daten, welche von dem Hostspeicherpuffer 1125 übertragen werden, können zu dem Speichercontroller 1240 durch die serielle Schnittstelle 1220 übertragen werden. Die gelesenen Daten können in der Form eines Pakets übertragen werden, um durch die serielle Schnittstelle 1220 übertragen zu werden. Es kann jedoch ein Ereignis auftreten, wodurch eine Paketübertragung aufgrund eines Fehlers, welcher in der seriellen Schnittstelle 1220 auftritt oder von Rauschen, welches in einen Übertragungskanal eingeführt wird, endet. Beispielsweise kann während des Prozesses des Versuchens, ein Paket zu übertragen, ein Ereignis auftreten, wodurch nur ein Abschnitt des Pakets übertragen wird und der verbleibende Abschnitt des Pakets nicht übertragen wird. In diesem Fall misslingt es einer DMA-Schaltung der seriellen Schnittstelle 1220, ein Paket vollständig zu empfangen, und eine Operation eines Systems kann enden. Dieser Zustand oder diese Bedingung wird ein „DMA-Hängen“ genannt. In dem Fall, in dem ein DMA-Hängen auftritt, kann die Übertragung von Daten durch die serielle Schnittstelle 1220 oder die Gesamtoperationen der Speichereinrichtung 1200 enden.
  • Um das DMA-Hängen zu lösen oder zu beseitigen kann die Speichereinrichtung 1200 der erfinderischen Konzepte das Systemhängen durch ein Füllen eines bei der Transmission geendeten Pakets mit Dummydaten (oder Abfalldaten) freigeben, um ein Übertragungspaket wiederherzustellen. Alternativ kann die Speichereinrichtung 1200 der erfinderischen Konzepte ein unperfektes Paket durch ein Durchführen einer Fehlerkorrekturoperation auf dem in der Übertragung geendeten Paket wiederherstellen. Da das unperfekte Paket Lesedaten nicht aufweist, aber eine perfekte Paketform hat, kann das DMA-Hängen gelöst oder beseitigt werden.
  • Wenn Daten von dem Hostspeicherpuffer 1125 übertragen werden, kann der Speichercontroller 1240 erkennen, dass die serielle Schnittstelle 1220 in einem Zustand ist, in dem eine Datenübertragung beendet ist beziehungsweise nicht mehr besteht. Der Speichercontroller 1240 kann einen verlorenen Abschnitt des empfangenen Pakets mit Dummydaten in Antwort auf ein Erfassen des Link-down-Zustands der seriellen Schnittstelle 1220 füllen. Der DMA-Hänge-Zustand kann durch ein Übertragen eines Pakets, welches durch ein Verwenden der Dummydaten vervollständigt ist, zu der DMA-Schaltung freigegeben werden. Selbstverständlich kann das empfangene Paket als ungültige Daten verarbeitet werden.
  • In einer anderen Ausführungsform kann, in dem Fall, in dem das DMA-Hängen auftritt, der Speichercontroller 1240 eine ECC-Dekodierung durch ein Verwenden eines Abschnitts des empfangenen Pakets durchführen. In dem Fall, in dem ein Ergebnis der ECC-Dekodierung anzeigt, dass es möglich ist, den verbleibenden Abschnitt des verlorenen Pakets wiederherzustellen, können die wiederhergestellten Daten als empfangene Daten verarbeitet werden. Demzufolge kann der DMA-Hänge-Zustand gelöst oder beseitigt werden.
  • 11 veranschaulicht ein Flussdiagramm einer Operation einer Speichereinrichtung gemäß Ausführungsformen der erfinderischen Konzepte, wenn ein Link-down-Ereignis auftritt. Bezug nehmend auf 11 kann die Speichereinrichtung 1200 einen Link-down- oder DMA-Hänge-Zustand durch ein Verwenden einer ersten Fehlerkorrekturcodemaschine (wie beispielsweise der ersten Fehlerkorrekturcodemaschine 1242 der 1) freigeben.
  • In Operation S410 überträgt der Speichercontroller 1240 eine Anforderung zum Lesen von Daten, welche in dem Hostspeicherpuffer 1125 gespeichert sind. In Antwort auf die Leseanforderung werden eine Leseoperation und eine Ausgabeoperation auf einem spezifizierten Speicherort des Hostspeicherpuffers 1125 durch eine DMA-Schaltung, welche in der seriellen Schnittstelle 1220 vorgesehen ist, durchgeführt. In diesem Fall können Daten zu der seriellen Schnittstelle 1220 in der Form eines Pakets übertragen werden.
  • In Operation S420 empfängt der Speichercontroller 1240 gelesenen Daten, welche durch die DMA-Schaltung der seriellen Schnittstelle 1220 in der Einheit eines Pakets übertragen werden. Das heißt, dass gelesene Daten durch ein Verwenden von Verbindungsinformation einer Mehrzahl von Paketen, welche empfangen werden, gebildet werden können.
  • In Operation S430 überwacht der Speichercontroller 1240 ein mögliches Auftreten eines Link-down-Zustands oder eines DMA-Hängens der seriellen Schnittstelle 1220. Wenn bestimmt wird, dass der Link-down in einer Situation auftritt, in der ein Paket in dem Prozess des Übertragen-Werdens ist (Ja in S430), schreitet der Fluss zu Operation S440 voran. Im Gegensatz dazu schreitet, in dem Fall, in dem der Link-down oder das DMA-Hängen nicht auftritt (Nein in S430) der Fluss zu Operation S450 voran.
  • In Operation S440 führt der Speichercontroller 1240 eine ECC-Dekodierung durch ein Verwenden nur des empfangenen Abschnitts des Pakets, welches übertragen wird, durch. In dem Fall, in dem es möglich ist, den verlorenen Abschnitt des Pakets durch ein Verwenden der ECC-Dekodierung wiederherzustellen, stellt der Speichercontroller 1240 Daten des verlorenen Abschnitts wieder her.
  • In Operation S450 führt der Speichercontroller 1240 eine zusätzliche Prozedur zum Speichern von empfangenen Daten in der nichtflüchtigen Speichervorrichtung 1260 durch.
  • Wie obenstehend beschrieben ist, können der Link-down- oder DMA-Hänge-Zustand durch ein Wiederherstellen verlorener Daten durch eine ECC-Dekodierung der erfinderischen Konzepte gelöst werden, wenn der Link-down- oder DMA-Hänge-Zustand auftritt.
  • 12 veranschaulicht ein Flussdiagramm einer Operation einer Speichereinrichtung gemäß anderen Ausführungsformen der erfinderischen Konzepte, wenn ein Link-down-Ereignis auftritt. Bezug nehmend auf 12 kann die Speichereinrichtung 1200 einen Link-down- oder DMA-Hänge-Zustand durch ein Verwenden von Dummydaten auflösen beziehungsweise freigeben.
  • In Operation S510 überträgt der Speichercontroller 1240 eine Anforderung zum Lesen von Daten, welche in dem Hostspeicherpuffer 1125 gespeichert sind. In Antwort auf die Leseanforderung werden eine Leseoperation und eine Ausgabeoperation auf einem spezifizierten Speicherort des Hostspeicherpuffers 1125 durch eine DMA-Schaltung, welche in der seriellen Schnittstelle 1220 vorgesehen ist, durchgeführt. In diesem Fall können Daten zu der seriellen Schnittstelle 1220 in der Form eines Pakets übertragen werden.
  • In Operation S520 empfängt der Speichercontroller 1240 gelesene Daten, welche durch die DMA-Schaltung der seriellen Schnittstelle 1220 übertragen werden, in der Einheit eines Pakets. Das heißt, dass gelesene Daten durch ein Verwenden von Verbindungsinformation einer Mehrzahl von Paketen, welche empfangen werden, gebildet werden können.
  • In Operation S530 überwacht der Speichercontroller 1240 ein mögliches Auftreten eines Link-down oder DMA-Hängens der seriellen Schnittstelle 1220. Wenn bestimmt wird, dass der Link-down in einer Situation auftritt, in der ein Paket in dem Prozess des Übertragen-Werdens ist (Ja in S530), schreitet der Fluss zu Operation S550 voran. Im Gegensatz dazu schreitet, in dem Fall, in dem der Link-down oder DMA-Hängen nicht auftritt (Nein in S530) der Fluss zu Operation S540 voran.
  • In Operation S540 führt der Speichercontroller 1240 eine Datenverarbeitung zum Speichern von empfangenen Daten in der nichtflüchtigen Speichervorrichtung 1260 durch. Das heißt, dass der Speichercontroller 1240 eine ECC-Kodierung auf den empfangenen Daten durch ein Verwenden der zweiten Fehlerkorrekturcodemaschine 1244 für den Zweck zum Programmieren der empfangenen Daten in die nichtflüchtige Speichervorrichtung 1260 durchführen kann. Selbstverständlich können die empfangenen Daten auch zu dem Host 1100 übertragen werden.
  • In Operation S550 führt der Speichercontroller 1240 eine Paketwiederherstellung für den Zweck zum Füllen eines verlorenen Abschnitts des Pakets, welches übertragen wird, wenn der Link-down oder das DMA-Hängen erfasst wird, mit Dummybits durch. Beispielsweise kann ein Paket durch ein Aufrechterhalten von Bits eines empfangenen Abschnitts des Pakets und ein Füllen eines verlorenen Abschnitts, welcher nicht empfangen wird mit logischer „1“ wiederhergestellt werden.
  • In Operation S560 sieht der Speichercontroller 1240 ein Paket, welches demnach wiederhergestellt ist, für eine DMA-Schaltung vor, um das DMA-Hängen aufzulösen beziehungsweise freizugeben. Zusätzlich kann Datenverlustinformation (beispielsweise Paketverlustinformation) zu der CPU 1241 für den Zweck des Vorsehens einer Benachrichtigung, dass das wiederhergestellte Paket ungültige Daten sind, übertragen werden.
  • Operationen der Speichereinrichtung 1200 der erfinderischen Konzepte, welche einen Systemhängezustand freigeben können, wenn ein Link-down- oder DMA-Hänge-Ereignis auftritt, sind oben stehend beschrieben. Da die Speichereinrichtung 1200 als ein Master hinsichtlich des Hostspeicherpuffers 1125 arbeitet, kann eine Intervention des Host 1100 hinsichtlich Daten, welche in dem Hostspeicherpuffer 1125 gespeichert sind, unmöglich sein. Demzufolge gelingt es dem Host 1100 nicht, beim Auflösen einer Link-down- oder DMA-Hänge-Situation, welche auftritt, während Daten, welche in dem Hostspeicherpuffer 1125 gespeichert sind, übertragen werden, zu intervenieren. Die Speichereinrichtung 1200 der erfinderischen Konzepte jedoch kann eine Wiederherstellung oder eine Fehlerkorrektur auf einem Paket durchführen, welches in dieser Situation übertragen wird, wodurch eine Situation vermieden wird, in welcher ein System es beendet, angemessen zu arbeiten.
  • 13 veranschaulicht ein Diagramm, welches ein Verfahren zum Wiederherstellen von Daten erklärt, welche von einem Hostspeicherpuffer, welcher unter Bezugnahme auf 12 beschrieben ist, übertragen werden. Bezug nehmend auf 13 kann ein Abschnitt eines Pakets, welches von dem Hostspeicherpuffer 1125 zu der Speichereinrichtung 1200 übertragen wird, verloren sein. Der Verlust des Pakets verursacht einen DMA-Hänge- oder Link-down-Zustand. In den erfinderischen Konzepten kann es möglich sein, das DMA-Hängen oder den Link-down-Zustand aufgrund des Paketverlustes aufzulösen.
  • Paketdaten 1300, welche von dem Hostspeicherpuffer 1125 zu der Speichereinrichtung 1200 übertragen werden, sind in 13 veranschaulicht. Daten, welche von dem Hostspeicherpuffer 1125 übertragen werden, können in Pakete unterteilt werden und können in der Einheit eines Pakets übertragen werden. Beispielsweise kann ein Paket einen Kopf und eine Nutzlast aufweisen. Die Pakete können in der Einheit eines Datums durch ein Verwenden von Verbindungsinformation, welche in dem Kopf enthalten ist, wiederhergestellt werden.
  • In dem Prozess des Übertragens des Pakets 1300 von dem Hostspeicherpuffer 1125 kann nur ein Abschnitt des Pakets 1300 durch die Speichereinrichtung 1200 empfangen werden, wenn ein Link-down-Ereignis aufgrund eines Fehlers oder von Rauschen auftritt. Die Speichereinrichtung 1200 kann nur einen Abschnitt 1310 des Pakets 1300 aufgrund des Link-down-Ereignisses empfangen. Das heißt, dass nur ein teilweise empfangenes Paket 1300 empfangen werden kann. Der verbleibende Abschnitt des Pakets 1300 entspricht einem verlorenen Paketabschnitt 1330. Der Paketverlust kann den DMA-Hänge- oder System-Hänge-Zustand verursachen. Demzufolge kann der Speichercontroller 1240 der erfinderischen Konzepte bestimmen (oder in anderen Worten auffassen oder es ansehen), dass ein Paket empfangen wird, durch ein Auffüllen des verlorenen Paketabschnitts 1330 mit Dummybits. Beispielsweise kann der Speichercontroller 1240 bestimmen (das heißt auffassen oder es ansehen), dass ein Paket empfangen wird durch ein Auffüllen des verlorenen Paketabschnitts 1330 mit Dummybits von „1“.
  • Ein Paket, welches in 13 veranschaulicht ist, welches ein Paket ist, welches durch ein Verwenden von Dummybits wiederhergestellt ist, weist den verlorenen Paketabschnitt 1330 auf, welcher durch einen Dummybitabschnitt 1335 ersetzt ist. Das wiederhergestellte Paket sind keine bedeutungsvollen Daten, ist aber hilfreich, um eine System-Hänge-Situation zu lösen (das heißt aufzulösen), welche während des DMA-Hänge oder Link-down-Ereignisses auftritt.
  • 14 veranschaulicht ein Blockschaltbild eines Computersystems gemäß anderen Ausführungsformen der erfinderischen Konzepte. Bezug nehmend auf 14 weist ein Computersystem 2000 gemäß anderen Ausführungsformen einen Host 2100 und eine Speichereinrichtung 2200 auf. Die Konfiguration und Funktionalität des Host 2100 sind unter Bezugnahme auf 1 beschrieben und demnach kann eine zusätzliche Beschreibung, welche mit dem Host 2100 verbunden ist, aus dem Folgenden ausgelassen werden, um Redundanz zu vermeiden. Das heißt, dass der Prozessor 2110, der Hostspeicher 2120, welcher einen Hostspeicherpuffer 2125 aufweist, und die Schnittstellenschaltung 2130 in 14 als jeweils äquivalent zu dem Prozessor 1110, dem Hostspeicher 1120, welcher einen Hostspeicherpuffer 1125 aufweist, und der Schnittstellenschaltung 1130, welche gezeigt sind in und beschrieben sind unter Bezugnahme auf 1 äquivalent betrachtet werden können.
  • Die Speichereinrichtung 2200 der erfinderischen Konzepte kann als Datenspeicher des Host 2100 vorgesehen sein. Die Speichereinrichtung 2200 in 14 weist eine serielle Schnittstelle 2220, einen Speichercontroller 2240 und eine nichtflüchtige Speichervorrichtung 2260 auf. Die Speichereinrichtung 2200 kann auf die nichtflüchtige Speichervorrichtung 2260 in Antwort auf einen Befehl CMD von dem Host 2100 zugreifen oder kann verschiedene Operationen, welche durch den Host 2100 angefordert sind, durchführen.
  • Die serielle Schnittstelle 2220 ist als ein physikalischer Kommunikationskanal der Speichereinrichtung 2200 für einen Datenaustausch mit dem Host 2100 vorgesehen. Der Speichercontroller 2240 sieht eine Schnittstellenbildung zwischen dem Host 2100 und der Speichereinrichtung 2200 vor. Der Speichercontroller 2240 kann Daten in die nichtflüchtige Speichervorrichtung 2260 in Antwort auf eine Anforderung von dem Host 2100 schreiben. In diesem Fall können Schreibdaten, welche von dem Host 2100 vorgesehen sind, in die nichtflüchtige Speichervorrichtung 2260 geschrieben werden, nachdem sie in einem Hostspeicherpuffer 2125 gepuffert sind. Zusätzlich kann der Speichercontroller 2240 Daten, welche in der nichtflüchtigen Speichervorrichtung 2260 gespeichert sind, zu dem Host 2100 in Antwort auf einen Befehl von dem Host 2100 ausgeben. Die Daten, welche in der nichtflüchtigen Speichervorrichtung 2260 gespeichert sind, können zu dem Host 2100 (beispielsweise zu dem Prozessor 2110) übertragen werden, nachdem sie in dem Hostspeicherpuffer 2125 durch den Speichercontroller 2240 gespeichert sind.
  • Der Speichercontroller 2240 weist eine kombinierte Fehlerkorrekturcodemaschine 2245 zum Verarbeiten eines Fehlerkorrekturcodes auf. Der Speichercontroller 2240 verwendet die kombinierte Fehlerkorrekturcodemaschine 2245 zum Kodieren und Dekodieren eines Fehlerkorrekturcodes von Daten (angezeigt durch Pfad ①), welche in dem Hostspeicherpuffer 2125 gepuffert sind. Ebenso kann der Speichercontroller 2240 die kombinierte Fehlerkorrekturcodemaschine 2245 für das Kodieren und Dekodieren eines Fehlerkorrekturcodes von Daten (angezeigt durch Pfad ②) nutzen, welche mit der nichtflüchtigen Speichervorrichtung 2260 ausgetauscht werden.
  • Das heißt, dass die kombinierte Fehlerkorrekturcodemaschine 2245 verwendet werden kann, um einen Fehler von Daten, welche mit dem Hostspeicherpuffer 2125 ausgetauscht werden zu erfassen/korrigieren, und um einen Fehler von Daten, welche mit der nichtflüchtigen Speichervorrichtung 2260 ausgetauscht werden, zu erfassen/korrigieren.
  • Gemäß einer Ausführungsform der erfinderischen Konzepte kann die Speichereinrichtung 2200 die kombinierte Fehlerkorrekturcodemaschine 2245 für den Zweck des Verarbeitens von Daten, welche in dem Hostspeicherpuffer 2125 gespeichert sind, und Daten, welche in der nichtflüchtigen Speichervorrichtung 2260 gespeichert sind, verwenden. Demzufolge können sowohl die Zuverlässigkeit des Hostspeicherpuffers 2125, welcher als ein Puffer der Speichereinrichtung 2200 zugewiesen ist, und die Zuverlässigkeit von Daten, welche mit der nichtflüchtigen Speichervorrichtung 2260 verbunden sind, sichergestellt werden.
  • 15 veranschaulicht ein Flussdiagramm einer Operation einer Speichereinrichtung der erfinderischen Konzepte. Bezug nehmend auf 15 kann der Speichercontroller 2240 die kombinierte Fehlerkorrekturcodemaschine 2245 für den Zweck des Pufferns von Daten in dem Hostspeicherpuffer 2125 und zum Zugreifen auf die nichtflüchtige Speichervorrichtung 2260 verwenden.
  • In Operation S610 erfasst oder empfängt der Speichercontroller 2240 eine Anforderung für einen Zugriff auf den Hostspeicherpuffer 2125 oder die nichtflüchtige Speichervorrichtung 2260 durch ein Überwachen eines Befehls oder einer Anforderung, welche in einer Speicherverwaltungsoperation erzeugt wird.
  • In Operation S620 identifiziert der Speichercontroller 2240 einen Speicher, welcher für die Zugriffsanforderung als Ziel dient. In dem Fall, in dem der als Ziel dienende Speicher der Hostspeicherpuffer 2125 ist (HMB bei S620), schreitet der Fluss zu Operation S630 voran. Im Gegensatz dazu schreitet in dem Fall, in dem der als Ziel dienende Speicher die nichtflüchtige Speichervorrichtung 2260 ist (NVM bei S620) der Fluss zu Operation S660 voran.
  • In Operation S630 wird ein Typ der Zugriffsanforderung auf den Hostspeicherpuffer 2125 identifiziert. Beispielsweise wird bestimmt, ob ein Typ der Zugriffsanforderung auf den Hostspeicherpuffer 2125 einer Schreiboperation oder einer Leseoperation entspricht. Wenn die Zugriffsanforderung auf den Hostspeicherpuffer 2125 der Schreiboperation entspricht (Schreiben bei S630), schreitet der Fluss zu Operation S640 voran. Wenn die Zugriffsanforderung auf den Hostspeicherpuffers 2125 der Leseoperation entspricht (Lesen bei S630), schreitet der Fluss zu Operation S650 voran.
  • In Operation S640 verarbeitet der Speichercontroller 2240 schreibangeforderte Daten durch ein Verwenden der kombinierten Fehlerkorrekturcodemaschine 2245. In diesem Fall können die schreibangeforderten Daten gemäß ECC-Kodierung, welche dem Hostspeicherpuffer 2125 durch die kombinierte Fehlerkorrekturcodemaschine 2245 zugewiesen ist, verarbeitet werden.
  • In Operation S645 schreibt der Speichercontroller 2240 die ECC-kodierten Schreibdaten in einen spezifizierten Bereich des Hostspeicherpuffers 2125. Der Speichercontroller 2240 kann die Schreibdaten zu dem Hostspeicherpuffer 2125 durch den DMA übertragen.
  • In Operation S650 liest der Speichercontroller 2240 leseangeforderte Daten von einem spezifizierten Bereich des Hostspeicherpuffers 2125. In diesem Fall können die Daten, welche von dem Hostspeicherpuffer 2125 gelesen werden, eine Parität aufweisen, welche durch ECC-Kodieren erzeugt wird. Der Speichercontroller 2240 kann die Daten von dem Hostspeicherpuffer 2125 durch den DMA empfangen.
  • In Operation S655 steuert der Speichercontroller 2240 die kombinierte Fehlerkorrekturcodemaschine 2245, um eine ECC-Dekodierung auf den Daten durchzuführen, welche von dem Hostspeicherpuffer 2125 gelesen werden. Wenn ein Ergebnis der ECC-Dekodierung anzeigt, dass ein Fehler in den gelesenen Daten gegenwärtig ist, kann die kombinierte Fehlerkorrekturcodemaschine 2245 eine Operation zum Korrigieren des erfassten Fehlers durchführen. Insbesondere wenn der erfasste Fehler unkorrigierbar ist, kann der Speichercontroller 2240 eine Operation wie beispielsweise eine erneute Leseversuchsoperation durchführen.
  • In Operation S660 wird ein Typ einer Zugriffsanforderung auf die nichtflüchtige Speichervorrichtung 2260 identifiziert. Beispielsweise wird bestimmt, ob ein Typ der Zugriffsanforderung auf die nichtflüchtige Speichervorrichtung 2260 einer Schreiboperation oder einer Leseoperation entspricht. Wenn die Zugriffsanforderung auf die nichtflüchtige Speichervorrichtung 2260 der Schreiboperation entspricht (Schreiben bei S660), schreitet der Fluss zu Operation S670 voran. Im Gegensatz dazu schreitet, wenn die Zugriffsanforderung auf die nichtflüchtige Speichervorrichtung 2260 der Leseoperation entspricht (Lesen bei S660) der Fluss zu Operation S680 voran.
  • In Operation S670 verarbeitet der Speichercontroller 2240 Daten, welche zum Schreiben zu der nichtflüchtigen Speichervorrichtung 2260 angefordert wurden durch ein Verwenden der kombinierten Fehlerkorrekturcodemaschine 2245. In diesem Fall können die schreibangeforderten Daten gemäß einer ECC2-Kodierung durch die kombinierte Fehlerkorrekturcodemaschine 2245 verarbeitet werden.
  • In Operation S675 programmiert (schreibt) der Speichercontroller 2245 die ECC-kodierten Schreibdaten in einen spezifizierten Bereich der nichtflüchtigen Speichervorrichtung 2260.
  • In Operation S680 liest der Speichercontroller 2240 leseangeforderte Daten von einem spezifizierten Bereich der nichtflüchtigen Speichervorrichtung 2260. In diesem Fall können die Daten, welche von der nichtflüchtigen Speichervorrichtung 2260 gelesen werden, eine Parität aufweisen, welche durch ECC-Kodieren erzeugt wird.
  • In Operation S685 steuert der Speichercontroller 2240 die kombinierte Fehlerkorrekturcodemaschine 2245, um eine ECC-Dekodierung auf den Daten, welche von der nichtflüchtigen Speichervorrichtung 2260 gelesen werden, durchzuführen. Wenn ein Ergebnis der ECC-Dekodierung anzeigt, dass ein Fehler in den gelesenen Daten gegenwärtig ist, kann die kombinierte Fehlerkorrekturmaschine 2245 eine Operation zum Korrigieren eines erfassten Fehlers durchführen.
  • Ein Verfahren, in welchem der Speichercontroller 2240, welcher die kombinierte Fehlerkorrekturcodemaschine 2245 aufweist, gemäß einer Ausführungsform des erfinderischen Konzepts auf den Hostspeicherpuffer 2125 und die nichtflüchtige Speichervorrichtung 2260 zugreift, ist obenstehend beschrieben.
  • 16 veranschaulicht ein Blockschaltbild eines Speicherkartensystems, welches ein nichtflüchtiges Speichersystem gemäß Ausführungsformen der erfinderischen Konzepte aufweist. Bezug nehmend auf 16 kann ein Speicherkartensystem 3000 einen Speicherkartencontroller 3100 und einen nichtflüchtigen Speicher 3200 aufweisen.
  • Der Speichercontroller 3100 ist mit dem nichtflüchtigen Speicher 3200 verbunden. Der Speichercontroller 3100 ist konfiguriert, um auf den nichtflüchtigen Speicher 3200 zuzugreifen. Beispielsweise ist der Speichercontroller 3100 konfiguriert, um einen Gesamtbetrieb des nichtflüchtigen Speichers 3200 einschließlich jedoch nicht beschränkt auf eine Leseoperation, eine Schreiboperation, eine Löschoperation und eine Hintergrundoperation zu steuern. Die Hintergrundoperation weist Operationen wie beispielsweise Wear-leveling und Speicherbereinigung oder dergleichen auf.
  • In einer Ausführungsform weist der Speichercontroller 3100 einen SRAM 3110, eine CPU 3120, eine Hostschnittstelle (I/F) 3130, eine HMB-Fehlerkorrekturcodemaschine (ECC) 3140 und eine Speicherschnittstelle (I/F) 3150 auf. Wie der Speichercontroller 1420, welcher unter Bezugnahme auf die 1 und 3 beschrieben ist, steuert der Speichercontroller 3100 einen Betrieb zum Puffern von Daten durch ein Verwenden eines Hostspeicherpuffers HMB (nicht veranschaulicht). Insbesondere weist der Speichercontroller 3100 die HMB-Fehlerkorrekturcodemaschine 3140 für ECC-Kodieren und ECC-Decodieren von Pufferdaten auf, welche gespeichert sind in und gelesen werden von dem Hostspeicherpuffer HMB.
  • Der Speichercontroller 3100 kann mit einer externen Vorrichtung durch die Hostschnittstelle 3130 kommunizieren. Der Speichercontroller 3100 kann mit einer externen Vorrichtung (beispielsweise einem Host) in Übereinstimmung mit einem bestimmten Kommunikationsprotokoll kommunizieren. Beispielsweise kann die Hostschnittstelle 3130 mit der externen Vorrichtung in Übereinstimmung mit wenigstens einem von verschiedenen Kommunikationsprotokollen wie beispielsweise Universal Serial Bus (USB), Multimedia Card (MMC), eMMC (embedded MMC), Peripheral Component Interconnection (PCI), PCI-express (PCI-E), Advanced Technology Attachment (ATA), serial-ATA, parallel-ATA, Small Computer Small Interface (SCSI), Enhanced Small Disk Interface (ESDI), Integrated Drive Electronics (IDE), Firewire, Universal Flash Storage (UFS), und Nonvolatile Memory Express (NVMe) oder dergleichen kommunizieren.
  • Der nichtflüchtige Speicher 3200 kann mit verschiedenen nichtflüchtigen Speichervorrichtungen wie beispielsweise elektrisch löschbarem und programmierbarem ROM (EEPROM), NAND-Flashspeicher, NOR-Flashspeicher Phasenübergangs-RAM (PRAM), resistivem RAM (ReRAM), ferroelektrischem RAM (FRAM) und Spin-Torque magnetic RAM (STT-MRAM) oder dergleichen implementiert sein.
  • In einer Ausführungsform können der Speichercontroller 3100 und der nichtflüchtige Speicher 3200 in eine einzelne Halbleitervorrichtung integriert sein. Der Speichercontroller 3100 und der nichtflüchtige Speicher 3200 können in eine einzelne Halbleitervorrichtung integriert sein, um eine Speicherkarte zu bilden. Beispielsweise können der Speichercontroller 3100 und der nichtflüchtige Speicher 3200 in eine einzelne Halbleitervorrichtung integriert sein, um eine Speicherkarte wie beispielsweise eine PC-Karte (eine Personal Computer Memory Card International Association (PCMCIA-Karte), eine Compact-Flash-Karte (CF), eine Smart Media Card (SM, SMC), einen Speicherstick, eine Multimediakarte (MMC, RS-MMC, MMCmicro, eMMC), eine SD-Karte (SD, miniSD, microSD, SDHC) und eine Universal Flash Storage (UFS) oder dergleichen zu bilden.
  • 17 veranschaulicht ein Blockschaltbild eines Festkörperlaufwerks (SST)-Systems, welches ein nichtflüchtiges Speichersystem gemäß Ausführungsformen der erfinderischen Konzepte aufweist. Bezug nehmend auf 17 weist ein SSD-System 4000 einen Host 4100 und ein SSD 4200 auf. Das SSD 4200 weist einen SSD-Controller 4210, einen Pufferspeicher 4220 und eine Mehrzahl von nichtflüchtigen Speichervorrichtungen 4230.
  • Der Host 4100 weist einen Teilbereich eines Speichers, welcher in dem Host 4100 vorgesehen ist, zu (oder als) einen/einem Hostspeicherpuffer 4150 zu. Die Autorität, um auf den Bereich zuzugreifen, welcher dem Hostspeicherpuffer 4150 zugewiesen ist, kann dem SSD-Controller 4210 übertragen werden.
  • Der SSD-Controller 4210 kann die Mehrzahl von nichtflüchtigen Speichervorrichtungen 4230 in Antwort auf ein Signal, welches von dem Host 4100 empfangen wird, steuern. In einer Ausführungsform kann der SSD-Controller 4210 eine Fehlerkorrekturoperation von Daten, welche in dem Hostspeicherpuffer 4150 gepuffert sind, durchführen, welche unter Bezugnahme auf die 1 und 3 beschrieben ist. Der SSD-Controller 4210 kann eine HMB-Fehlerkorrekturcodemaschine 4250 für den Zweck zum Durchführen einer Fehlerkorrekturoperation auf Daten, welche in dem Hostspeicherpuffer 4150 gepuffert sind, aufweisen.
  • Der Pufferspeicher 4220 arbeitet als ein Pufferspeicher des SSD 4200. Beispielsweise kann der Pufferspeicher 4220 Daten, welche von dem Host 4100 oder von den nichtflüchtigen Speichervorrichtungen 4230 empfangen werden, vorübergehend speichern oder kann Metadaten (beispielsweise eine Mappingtabelle) vorübergehend speichern. Der Pufferspeicher 4220 kann einen flüchtigen Speicher wie beispielsweise DRAM, SDRAM, Double Data Rate (DDR) SDRAM, Low Power Double Data Rate (LPDDR) SDRAM, oder SRAM oder dergleichen oder nichtflüchtigen Speicher wie beispielsweise FRAM, ReRAM, STT-MRAM, oder PRAM aufweisen. Abhängig von der Zuweisung des Hostspeicherpuffers 4150 der erfinderischen Konzepte jedoch kann der Pufferspeicher 4220 mit einer minimalen Größe vorgesehen sein, und in einigen Ausführungsformen kann das SSD 4200 konfiguriert sein, um den Pufferspeicher 4220 nicht aufzuweisen.
  • Gemäß Ausführungsformen der erfinderischen Konzepte können eine Datenzuverlässigkeit und eine Systemstabilität einer Speichereinrichtung, welche eine Schnittstelle hat, welche in der Lage ist, Ressourcen eines Hostspeicherpuffers gemeinsam zu verwenden, verbessert werden.
  • Während die erfinderischen Konzepte unter Bezugnahme auf beispielhafte Ausführungsformen davon beschrieben wurden, sollte es für Fachleute offensichtlich sein, dass verschiedene Änderungen und Modifikationen daran getätigt werden können, ohne von dem Gedanken und Umfang der erfinderischen Konzepte, wie sie in den folgenden Ansprüchen ausgeführt sind, abzuweichen.

Claims (25)

  1. Speichereinrichtung (1200, 2200), welche einen Hostspeicher (1120, 2120) eines Host (1100, 2100) gemeinsam verwendet, die Folgendes aufweist: eine serielle Schnittstelle (1220, 2220), welche konfiguriert ist, um Daten mit dem Host (1100, 2100) auszutauschen; und einen Speichercontroller (1240, 2240), welcher mit dem Host (1100, 2100) durch die serielle Schnittstelle (1220, 2220) verbunden ist und konfiguriert ist, um Pufferdaten in einem Hostspeicherpuffer (1125, 2125) zu speichern, welcher durch den Host (1100, 2100) zugewiesen ist, und um eine Fehlerkorrekturkodierung und Fehlerkorrekturdecodierung auf den Pufferdaten durchzuführen.
  2. Speichereinrichtung (1200, 2200) nach Anspruch 1, wobei der Hostspeicherpuffer (1125, 2125) einen Datenbereich und einen Paritätsbereich aufweist.
  3. Speichereinrichtung (1200, 2200) nach Anspruch 1, ferner aufweisend eine nichtflüchtige Speichervorrichtung (1260, 2260), welche als ein Speichermedium vorgesehen ist, wobei der Speichercontroller (1240, 2240) folgendes aufweist: eine erste Fehlerkorrekturcodemaschine (1242, 2245), welche konfiguriert ist, um eine Fehlerkorrekturkodierung und Fehlerkorrekturdecodierung auf den Pufferdaten durchzuführen, und eine zweite Fehlerkorrekturcodemaschine (1244, 2245), welche konfiguriert ist, um eine Fehlerkorrekturkodierung und Fehlerkorrekturdecodierung auf Speicherdaten durchzuführen, welche mit der nichtflüchtigen Speichervorrichtung (1260, 2260) ausgetauscht werden.
  4. Speichereinrichtung (1200, 2200) nach Anspruch 3, wobei der Speichercontroller (1240, 2240) ferner einen Hostspeicherpuffer (HMB)-Controller (1243) aufweist, welcher konfiguriert ist, um die Pufferdaten, welche mit dem Hostspeicherpuffer (1125, 2125) ausgetauscht werden, zu verwalten.
  5. Speichereinrichtung (1200, 2200) nach Anspruch 4, wobei die serielle Schnittstelle (1220, 2220) eine Direktspeicherzugriffs (DMA)-Schaltung (1222) aufweist, welche konfiguriert ist, um einen direkten Speicherzugriff auf den Hostspeicherpuffer (1125, 2125) durchzuführen.
  6. Speichereinrichtung (1200, 2200) nach Anspruch 3, wobei der Speichercontroller (1240, 2240) konfiguriert ist, um einen Fehler der Pufferdaten zu erfassen, und wenn der erfasste Fehler korrigierbar ist, der Speichercontroller (1240, 2240) ferner konfiguriert ist, um fehlerkorrigierte Pufferdaten in der nichtflüchtigen Speichervorrichtung (1260, 2260) nach dem Korrigieren des erfassten Fehlers zu speichern.
  7. Speichereinrichtung (1200, 2200) nach Anspruch 6, wobei, wenn der erfasste Fehler unkorrigierbar ist, der Speichercontroller (1240, 2240) konfiguriert ist, um die Pufferdaten erneut von dem Hostspeicherpuffer (1125, 2125) zu lesen.
  8. Speichereinrichtung (1200, 2200) nach Anspruch 6, wobei, wenn der erfasste Fehler unkorrigierbar ist, der Speichercontroller (1240, 2240) konfiguriert ist, um den Host (1100, 2100) über einen Lesemisserfolg der Pufferdaten zu benachrichtigen.
  9. Speichereinrichtung (1200, 2200) nach Anspruch 8, wobei der Host (1100, 2100) konfiguriert ist, um den Hostspeicherpuffer (1125, 2125) zu einem anderen Bereich des Hostspeichers (1120, 2120) in Antwort auf den Lesemisserfolg der Pufferdaten neu zuzuweisen.
  10. Speichereinrichtung (1200, 2200) nach Anspruch 1, wobei, wenn ein Link-down-Zustand der seriellen Schnittstelle (1220, 2220) auftritt, während die Pufferdaten von dem Hostspeicherpuffer (1125, 2125) empfangen werden, der Speichercontroller (1240, 2240) konfiguriert ist, um ein verlorenes Paket der Pufferdaten durch Dummydaten zu ersetzen, um ein System-Hängen freizugeben.
  11. Speichereinrichtung (1200, 2200) nach Anspruch 10, wobei, bevor das verlorene Paket durch die Dummydaten ersetzt wird, der Speichercontroller (1240, 2240) konfiguriert ist, um zuerst das verlorene Paket durch ein Dekodieren unter Verwendung der Fehlerkorrekturdekodierung wiederherzustellen.
  12. Betriebsverfahren für eine Speichereinrichtung (1200, 2200), welcher ein Hostspeicher (1120, 2120) eines Host (1100, 2100) als ein Puffer zugewiesen ist, wobei das Verfahren Folgendes aufweist: ein Lesen an der Speichereinrichtung (1200, 2200) von Pufferdaten von dem Puffer; ein Erfassen eines Fehlers der Pufferdaten durch ein Verwenden einer ersten Fehlerkorrekturcodemaschine (1242, 2245), und ein Anfordern durch die Speichervorrichtung (1260, 2260) der Pufferdaten von dem Host (1100, 2100), wenn der erfasste Fehler durch die erste Fehlerkorrekturcodemaschine (1242, 2245) unkorrigierbar ist.
  13. Verfahren nach Anspruch 12, ferner aufweisend ein Korrigieren des erfassten Fehlers der Pufferdaten durch ein Verwenden der ersten Fehlerkorrekturmaschine (1242, 2245), wenn der erfasste Fehler korrigierbar ist.
  14. Verfahren nach Anspruch 13, ferner aufweisend ein Kodieren der fehlerkorrigierten Pufferdaten durch ein Verwenden einer zweiten Fehlerkorrekturmaschine (1244, 2245) und ein Speichern der kodierten fehlerkorrigierten Pufferdaten in einem Speichermedium der Speichereinrichtung (1200, 2200).
  15. Verfahren nach Anspruch 12, ferner aufweisend: ein Empfangen an der Speichereinrichtung (1200, 2200) von Pufferdaten, welche in dem Puffer zu speichern sind; ein Durchführen einer Fehlerkorrekturcodekodierung auf den empfangenen Pufferdaten durch ein Verwenden der ersten Fehlerkorrekturcodemaschine (1242, 2245); und ein Schreiben der kodierten Pufferdaten in den Puffer.
  16. Speichereinrichtung (1200, 2200), die Folgendes aufweist: eine Schnittstelle (1220, 2220), welche konfiguriert ist, um Daten mit einem Host (1100, 2100) auszutauschen; eine nichtflüchtige Speichervorrichtung (1260, 2260); und einen Speichercontroller (1240, 2240), welcher mit der Schnittstelle (1220, 2220) verbunden ist, und konfiguriert ist, um Pufferdaten in einem Teilbereich eines Hostspeichers (1120, 2120) des Host (1100, 2100), welcher als ein Puffer zugewiesen ist, zu speichern, um die nichtflüchtige Speichervorrichtung (1260, 2260) in Antwort auf die Pufferdaten zu steuern, und um eine Fehlerkorrekturkodierung und Fehlerkorrekturdecodierung auf den Pufferdaten durchzuführen, wobei der Speichercontroller (1240, 2240) ferner konfiguriert ist, um einen verlorenen Abschnitt eines Pakets der Pufferdaten zu ersetzen, welcher verloren ist, wenn ein Fehler an der Schnittstelle (1220, 2220) auftritt während des Empfangens der Pufferdaten, wobei der verlorene Abschnitt durch Dummydaten ersetzt wird.
  17. Speichereinrichtung (1200, 2200) nach Anspruch 16, wobei der Speichercontroller (1240, 2240) konfiguriert ist, um den verlorenen Abschnitt des Pakets durch ein Verwenden der Fehlerkorrekturkodierung auf einem empfangenen Abschnitt des Pakets wiederherzustellen, wenn der Fehler auftritt.
  18. Speichereinrichtung (1200, 2200) nach Anspruch 16, wobei die Schnittstelle (1220, 2220) in einen Hängezustand eintritt, wenn der Fehler auftritt, und der Speichercontroller (1240, 2240) konfiguriert ist, um den Hängezustand der Schnittstelle (1220, 2220) durch ein Verwenden eines Pakets freizugeben, welches durch ein Ersetzen des verlorenen Abschnitts des Pakets mit den Dummydaten erhalten wird.
  19. Speichereinrichtung (1200, 2200) nach Anspruch 18, wobei der Speichercontroller (1240, 2240) konfiguriert ist, um den Host (1100, 2100) über einen Empfangsmisserfolg der Pufferdaten nach einem Freigeben des Hängezustands zu benachrichtigen.
  20. Speichereinrichtung (1200, 2200) nach Anspruch 16, wobei der Speichercontroller (1240, 2240) konfiguriert ist, um das Paket, welches wiederhergestellt ist, zu verarbeiten, um den verlorenen Abschnitt ersetzt durch die Dummydaten als ungültige Daten aufzuweisen.
  21. Speichersystem, das Folgendes aufweist: einen Host (1100, 2100), welcher einen Hostspeicher (1120, 2120) aufweist und konfiguriert ist, um einen Teilbereich des Hostspeichers (1120, 2120) als einen Hostspeicherpuffer (1125, 2125) zuzuweisen; und eine Speichereinrichtung (1200, 2200), welche als ein Master konfiguriert ist, um den Hostspeicherpuffer (1125, 2125) ohne Intervention des Host (1100, 2100) zu verwalten, wobei die Speichereinrichtung (1200, 2200) einen Speichercontroller (1240, 2240) aufweist, welcher konfiguriert ist, um einen Typen der Zugriffsanforderung auf den Hostspeicherpuffer (1125, 2125) zu identifizieren, wobei, wenn die Zugriffsanforderung als eine Leseoperation identifiziert wird, der Speichercontroller (1240, 2240) konfiguriert ist, um erste Daten aus dem Hostspeicherpuffer (1125, 2125) zu lesen, und um eine Fehlerkorrekturdecodierung auf den ersten Daten durchzuführen, und wenn die Zugriffsanforderung als eine Schreiboperation identifiziert ist, der Speichercontroller (1240, 2240) konfiguriert ist, um eine Fehlerkorrekturkodierung auf zweiten Daten durchzuführen, und um die fehlerkorrekturkodierten zweiten Daten in den Hostspeicherpuffer (1125, 2125) zu schreiben.
  22. Speichersystem nach Anspruch 21, wobei die Speichereinrichtung (1200, 2200) ferner eine serielle Schnittstelle (1220, 2220) aufweist, welche konfiguriert ist, um die ersten Daten und die fehlerkorrekturkodierten zweiten Daten zwischen dem Host (1100, 2100) und der Speichereinrichtung (1200, 2200) auszutauschen.
  23. Speichersystem nach Anspruch 22, wobei der Speichercontroller (1240, 2240) konfiguriert ist, um einen verlorenen Abschnitt eines Pakets der ersten Daten zu ersetzen, welcher verloren ist, wenn ein Fehler an der seriellen Schnittstelle (1220, 2220) während dem Empfangen der ersten Daten auftritt, wobei der verlorene Abschnitt durch Dummydaten ersetzt wird.
  24. Speichersystem nach Anspruch 23, wobei der Speichercontroller (1240, 2240) konfiguriert ist, um den verlorenen Abschnitt des Pakets durch ein Verwenden der Fehlerkorrekturkodierung auf einem empfangenen Abschnitt des Pakets wiederherzustellen, wenn der Fehler auftritt.
  25. Speichersystem nach Anspruch 23, wobei die serielle Schnittstelle (1220, 2220) in einen Hängezustand eintritt, wenn der Fehler auftritt, und der Speichercontroller (1240, 2240) konfiguriert ist, um den Hängezustand der seriellen Schnittstelle (1220, 2220) freizugeben durch ein Verwenden eines Pakets, welches erhalten wird durch ein Ersetzen des verlorenen Abschnitts des Pakets durch die Dummydaten.
DE102019111132.3A 2018-11-09 2019-04-30 Speichereinrichtung, die Hostspeicher nutzt und Betriebsverfahren dafür Pending DE102019111132A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2018-0137228 2018-11-09
KR1020180137228A KR102599188B1 (ko) 2018-11-09 2018-11-09 호스트 메모리를 사용하는 스토리지 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
DE102019111132A1 true DE102019111132A1 (de) 2020-05-14

Family

ID=70469130

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019111132.3A Pending DE102019111132A1 (de) 2018-11-09 2019-04-30 Speichereinrichtung, die Hostspeicher nutzt und Betriebsverfahren dafür

Country Status (4)

Country Link
US (2) US11016846B2 (de)
KR (1) KR102599188B1 (de)
CN (1) CN111177040B (de)
DE (1) DE102019111132A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200121645A (ko) * 2019-04-16 2020-10-26 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작 방법과 메모리 시스템
JP7442025B2 (ja) * 2019-08-30 2024-03-04 株式会社ユニテックス インタフェース変換装置
US11204833B1 (en) * 2020-06-19 2021-12-21 Western Digital Technologies, Inc. NVM endurance group controller using shared resource architecture
US11734018B2 (en) * 2020-07-17 2023-08-22 Western Digital Technologies, Inc. Parallel boot execution of memory devices
KR20220012019A (ko) * 2020-07-22 2022-02-03 삼성전자주식회사 메모리 모듈 및 이를 포함하는 메모리 시스템
KR20220018757A (ko) * 2020-08-07 2022-02-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법
US11500589B2 (en) * 2020-10-05 2022-11-15 Western Digital Technologies, Inc. Command draining using host memory buffer
KR20220046299A (ko) 2020-10-07 2022-04-14 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US11829237B1 (en) 2021-03-05 2023-11-28 Apple Inc. Error detection and recovery when streaming data
TWI798680B (zh) * 2021-04-14 2023-04-11 群聯電子股份有限公司 主機記憶體緩衝區管理方法、記憶體儲存裝置與記憶體控制電路單元
US11803322B2 (en) * 2021-05-03 2023-10-31 SK Hynix Inc. Memory system and operating method supporting fast boot using host memory buffer and default enabled information
TWI783522B (zh) * 2021-06-11 2022-11-11 群聯電子股份有限公司 資料重建方法、記憶體儲存裝置及記憶體控制電路單元
CN113360429A (zh) * 2021-06-21 2021-09-07 群联电子股份有限公司 数据重建方法、存储器存储装置及存储器控制电路单元
CN113468083B (zh) * 2021-07-02 2024-01-26 成都忆芯科技有限公司 一种双端口NVMe控制器及控制方法
US11531473B1 (en) * 2021-09-10 2022-12-20 Western Digital Technologies, Inc. Selective HMB backup in NVM for low power mode
US11809742B2 (en) 2021-09-20 2023-11-07 Western Digital Technologies, Inc. Recovery from HMB loss
US11893275B2 (en) 2021-09-20 2024-02-06 Western Digital Technologies, Inc. DRAM-less SSD with recovery from HMB loss
US11841767B2 (en) 2021-11-24 2023-12-12 Samsung Electronics Co., Ltd. Controller controlling non-volatile memory device, storage device including the same, and operating method thereof
EP4266175A1 (de) * 2022-04-22 2023-10-25 Siemens Mobility GmbH Verfahren zum rechnergestützten betreiben einer speichereinheit und ausführen von applikationsprogrammen mit speicherüberprüfung auf speicherfehler
US20240120947A1 (en) * 2022-10-07 2024-04-11 Micron Technology, Inc. Error detection and classification at a host device

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7831882B2 (en) * 2005-06-03 2010-11-09 Rambus Inc. Memory system with error detection and retry modes of operation
US8543742B2 (en) 2007-02-22 2013-09-24 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
KR101425957B1 (ko) * 2007-08-21 2014-08-06 삼성전자주식회사 이씨씨 제어 회로 및 그것을 포함하는 멀티채널 메모리시스템
JP2010009642A (ja) * 2008-06-24 2010-01-14 Toshiba Corp 半導体記憶装置およびそのテスト方法
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
US8341311B1 (en) 2008-11-18 2012-12-25 Entorian Technologies, Inc System and method for reduced latency data transfers from flash memory to host by utilizing concurrent transfers into RAM buffer memory and FIFO host interface
KR101650130B1 (ko) * 2010-05-14 2016-08-24 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
KR102020466B1 (ko) * 2012-10-04 2019-09-10 에스케이하이닉스 주식회사 버퍼 메모리 장치를 포함하는 데이터 저장 장치
KR102048765B1 (ko) * 2013-01-15 2020-01-22 삼성전자주식회사 메모리 시스템의 동작 방법 및 메모리 시스템
US10841317B2 (en) * 2015-03-31 2020-11-17 Dell Products, Lp Processing content sharing system data from a plurality of remotely connected computing devices in physical or virtualized space
US10025747B2 (en) * 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
US9870284B2 (en) * 2015-05-27 2018-01-16 International Business Machines Corporation First responder parities for storage array
KR102450555B1 (ko) * 2015-11-09 2022-10-05 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
KR102466412B1 (ko) 2016-01-14 2022-11-15 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10002405B2 (en) 2016-01-22 2018-06-19 Intel Corporation Smart optimization of unused graphics buffer memory in computing environments
US10157004B2 (en) 2016-04-14 2018-12-18 Sandisk Technologies Llc Storage system and method for recovering data corrupted in a host memory buffer
KR102636039B1 (ko) * 2016-05-12 2024-02-14 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법
US10055164B2 (en) * 2016-09-07 2018-08-21 Sandisk Technologies Llc Data storage at an access device
CN107918571B (zh) * 2016-10-08 2021-04-30 上海宝存信息科技有限公司 测试储存单元的方法以及使用该方法的装置
KR20180054394A (ko) 2016-11-15 2018-05-24 삼성전자주식회사 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
US10394706B2 (en) * 2017-11-02 2019-08-27 Western Digital Technologies, Inc. Non-volatile storage with adaptive command prediction
US20190042364A1 (en) * 2018-06-25 2019-02-07 Intel Corporation Technologies for maintaining data integrity during data transmissions
KR20210014473A (ko) * 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 라이트 방법

Also Published As

Publication number Publication date
US20200151055A1 (en) 2020-05-14
US20210248035A1 (en) 2021-08-12
CN111177040A (zh) 2020-05-19
CN111177040B (zh) 2024-03-08
US11016846B2 (en) 2021-05-25
KR20200054402A (ko) 2020-05-20
KR102599188B1 (ko) 2023-11-08

Similar Documents

Publication Publication Date Title
DE102019111132A1 (de) Speichereinrichtung, die Hostspeicher nutzt und Betriebsverfahren dafür
DE102017124079B4 (de) Speichervorrichtung zum Verarbeiten von beschädigten Metadaten und Verfahren zum Betreiben derselben
US11249840B2 (en) Data storage devices and methods for rebuilding a memory address mapping table
JP6144819B2 (ja) 不揮発性メモリシステムにおける同期ミラーリング
DE112019000149T5 (de) Multivorrichtungsspeichersystem mit gehosteten diensten auf peer-speichervorrichtungen
DE112015005211T5 (de) Systeme und verfahren für die speicherfehler-verwaltung
DE112019000146T5 (de) Multivorrichtungsspeichersystem mit verteilter lese-/schreibverarbeitung
US10468077B2 (en) Adaptive object buffering and meta-data indexing using persistent memory to improve flash memory durability in tiered storage
DE112016005869T5 (de) Vorausschauende Arbeitsspeicherinstandhaltung
US20140351526A1 (en) Data storage controller with multiple pipelines
US8601347B1 (en) Flash memory device and storage control method
US20150039815A1 (en) System and method for interfacing between storage device and host
DE102011085989B4 (de) Verfahren und Vorrichtung zum Ausführen von parallelen Speicherlese- und Speicherschreiboperationen
DE112014005570T5 (de) Deaktivieren von Seiten in einem Nand-Flash-Speicher-System
DE102018110012A1 (de) Speichervorrichtung, die in der Lage ist Jobs ohne Eingreifen eines Prozessors zu verwalten
DE112020005180T5 (de) Kondensieren von logischen zu physischen tabellenzeigern in ssds unter verwendung von gezonten namensräumen
DE102020115747A1 (de) Speichermodul, Fehlerkorrekturverfahren für Speicher-Controller, der dieses steuert, und Rechensystem, das dieses umfasst
DE102019104871A1 (de) Nichtflüchtige dateiaktualisierungsmedien
DE102018120964A1 (de) Integrierte Schaltungsspeichervorrichtungen mit verbesserter Pufferspeichernutzung während Lese- und Schreiboperationen
US20190042365A1 (en) Read-optimized lazy erasure coding
DE102021106721A1 (de) Schnelles durch-steuerung-kopieren
CN109901789A (zh) 数据存储装置、该数据存储装置的操作方法以及存储系统
DE102020121109A1 (de) Speicher-controller, speichervorrichtungen und betriebsverfahren der speichervorrichtungen
DE102022209756A1 (de) Speichervorrichtung und speichersystem zum programmieren von daten
DE112022000470T5 (de) Cache-basierter fluss für einen einfachen kopierbefehl

Legal Events

Date Code Title Description
R012 Request for examination validly filed