DE112015004536T5 - Hardware-Automatisierung für Speicherverwaltung - Google Patents

Hardware-Automatisierung für Speicherverwaltung Download PDF

Info

Publication number
DE112015004536T5
DE112015004536T5 DE112015004536.8T DE112015004536T DE112015004536T5 DE 112015004536 T5 DE112015004536 T5 DE 112015004536T5 DE 112015004536 T DE112015004536 T DE 112015004536T DE 112015004536 T5 DE112015004536 T5 DE 112015004536T5
Authority
DE
Germany
Prior art keywords
module
data
host
address
memory
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.)
Withdrawn
Application number
DE112015004536.8T
Other languages
English (en)
Inventor
Gary J. Lin
Sergey Anatolievich Gorobets
Matthew Davidson
Daniel Tuers
Robert Jackson
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.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
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 SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE112015004536T5 publication Critical patent/DE112015004536T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ein Permanentspeichermodul kann einen Controller umfassen, der einen Hardwarepfad aufweist, der eine Vielzahl von Hardwaremodulen umfasst, die konfiguriert sind, um eine Vielzahl von Prozessen durchzuführen, die der Ausführung einer Hostanfrage zugeordnet sind. Ein Permanentspeichermodul kann außerdem ein Firmwaremodul mit einem Prozessor umfassen, der Firmware ausführt, um zumindest einen aus der Vielzahl von Prozessen durchzuführen, der von den Hardwaremodulen durchgeführt wird. Das Firmwaremodul führt die Prozesse durch, wenn die Hardwaremodule nicht in der Lage sind, diese durchzuführen.

Description

  • HINTERGRUND
  • Permanentspeichermodule können Datenpermanentspeicher als Antwort auf von einem Host empfangene Hostbefehle verwalten. Wenn ein Hostauslesebefehl empfangen wird, kann das Permanentspeichermodul eine Vielzahl von Prozessen durchführen, um zu bestimmen, wo die Daten gespeichert sind, die Daten abzurufen und die Daten zurück zum Host zu senden. Permanentspeichermodule können mit Firmware konfiguriert sein, die ein Prozessor des Permanentspeichermoduls ausführen kann, um die zum Ausführen des Auslesebefehls erforderlichen Prozesse durchzuführen. Programmieren des Permanentspeichermoduls mit Firmware kann vorteilhaft sein, da sie Ausleseanfragen erfolgreich bearbeiten kann, auch solche Auslesungen, die komplex sind, während sie nicht zu viel Platz in Anspruch nimmt. Allerdings können viele Ausleseanfragen relativ geradlinig sein, und Verwendung von Firmware ist möglicherweise nicht die effizienteste Weise, um diese Ausleseanfragen zu bearbeiten.
  • KURZFASSUNG
  • Ausführungsformen der vorliegenden Erfindung sind durch die Patentansprüche definiert, und nichts in diesem Abschnitt sollte als Beschränkung dieser Patentansprüche ausgelegt werden. Beispielhalber betreffen die in diesem Dokument beschriebenen und in den beigefügten Zeichnungen veranschaulichten Ausführungsformen im Allgemeinen Permanentspeichermodule und verwandte Verfahren eines Controllers, der Kontextbefehle auf einem Kommunikationsbus gemäß einer Cacheabfolge ausführt, während ein Speichermodul interne Speicheroperationen durchführt.
  • In einem Beispiel kann ein Permanentspeichermodul zumindest einen Speicher; und einen Controller in Kommunikation mit dem zumindest einen Speicher umfassen. Der Controller kann Folgendes umfassen: einen Hardwarepfad, der eine Vielzahl von Hardwaremodulen umfasst, die konfiguriert sind, um eine Vielzahl von dem Ausführen von Hostausleseanfragen zugeordneten Prozessen auszuführen. Der Controller kann auch ein Firmwaremodul, das in dem zumindest einen Speicher gespeicherte Firmware umfasst; und einen Prozessor, der konfiguriert ist, um die Firmware auszuführen, um zumindest manche der Vielzahl von dem Ausführen von Hostausleseanfragen zugeordneten Prozessen durchzuführen, umfassen. Der Controller kann auch ein Front-End-Modul umfassen, das konfiguriert ist, um einen Hostbefehl zu empfangen, und als Antwort auf das Empfangen des Hostbefehls zu bestimmen, ob Ausführung des Hostbefehls entlang des Hardwarepfads oder mit dem Firmwaremodul gestartet wird.
  • Kurz gesagt kann ein Hardwarepfad in einem Controller eines Permanentspeichermoduls enthalten sein, das zumindest ein Hardwaremodul umfasst, das konfiguriert ist, um zumindest einen mit der Ausführung einer Hostanfrage verbundenen Prozess durchzuführen. Ausführung einer Hostanfrage kann beschleunigt werden, wenn die Prozesse zumindest teilweise durch das zumindest eine Hardwaremodul durchgeführt werden.
  • Diese und weitere Ausführungsformen, Merkmale, Aspekte und Vorteile der vorliegenden Erfindung sind aus der hierin enthaltenen Beschreibung, den beigefügten Patentansprüchen und den beiliegenden Zeichnungen, wie im Folgenden beschrieben, besser verständlich.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die beiliegenden Zeichnungen, die in die vorliegende Beschreibung aufgenommen sind und einen Teil derselben bilden, veranschaulichen verschiedene Aspekte der Erfindung und dienen zusammen mit der Beschreibung dazu, ihre Prinzipen zu erläutern. Wenn dies zweckmäßig ist, werden in den gesamten Zeichnungen dieselben Bezugszeichen verwendet, um auf dieselben oder entsprechende Elemente Bezug zu nehmen.
  • 1 ist ein Blockdiagramm eines beispielhaften Permanentspeichersystems.
  • 2 ist ein Blockdiagramm einer beispielhaften Konfiguration von Komponenten des Controllers von 1, die eine Hostausleseanfrage ausführen.
  • 3 ist ein Blockdiagramm einer beispielhaften Konfiguration des Front-End-Hardwaremoduls von 2.
  • 4 ist ein Blockdiagramm einer beispielhaften Konfiguration des Adressenübersetzungshardwaremoduls von 2.
  • 5 ist ein Blockdiagramm einer beispielhaften Konfiguration des Datenabrufhardwaremoduls von 2.
  • 6 ist ein Blockdiagramm einer beispielhaften Konfiguration des Datennachabrufhardwaremoduls von 2.
  • 7 ist ein schematisches Diagramm einer beispielhaften Abbildung zwischen logischen Gruppen und Metablöcken.
  • 8 ist ein schematisches Diagramm einer beispielhaften primären und sekundären Adressdatenstrukturanordnung.
  • 9 ist ein Blockdiagramm einer weiteren beispielhaften Konfiguration von Komponenten des Controllers von 1, die eine Hostausleseanfrage ausführen.
  • 10A ist ein Blockdiagramm des Permanentspeichermoduls von 1, das in einen Host eingebettet ist.
  • 10B ist ein Blockdiagramm des Permanentspeichermoduls von 1, das mit dem Host trennbar verbunden ist.
  • 11 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Initiieren der Ausführung einer Hostausleseanfrage mit einem Front-End-Modul.
  • 12 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Übersetzen einer logischen Adresse in eine physikalische Adresse als Antwort auf das Starten der Ausführung einer Hostausleseanfrage in einem Hardwarepfad.
  • 13 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Abrufen von in einem Speicher gespeicherten Daten mit einem Datenabrufhardwaremodul in einem Hardwarepfad und einem Firmwaremodul.
  • 14 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Verarbeiten von Daten, nachdem sie mit einem Datennachabrufhardwaremodul in einem Hardwarepfad und einem Firmwaremodul aus einem Speicher abgerufen wurden.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Verschiedene Modifikationen und Äquivalente der beschriebenen und gezeigten Ausführungsformen sind möglich und verschiedene hierin definierte allgemeine Prinzipien können auf diese und weitere Ausführungsformen angewendet werden. Daher ist der beanspruchten Erfindung der breiteste Schutzumfang zu gewähren, der mit den hierin offenbarten Prinzipien, Merkmalen und Lehren übereinstimmt.
  • 1 zeigt ein Blockdiagramm eines beispielhaften Systems 100, das ein Hostsystem 101 und ein Permanentspeichermodul 102 umfasst. Das Hostsystem 101 kann konfiguriert sein, um Daten in das Permanentspeichermodul 102 zu speichern und aus ihm abzurufen. Das Permanentspeichermodul 102 kann konfiguriert sein, um Speicherverwaltungsfunktionen durchzuführen, die die Speicherung und das Abrufen der Daten steuern und verwalten. Wie in 1 gezeigt, kann das Permanentspeichermodul 102 eine Controllerschaltung 110 und ein Speichermodul 130 umfassen. Abhängig von der Konfiguration des Permanentspeichermoduls 102 können der Controller 110 und das Speichermodul 130 auf demselben oder unterschiedlichen Substraten angeordnet sein.
  • Der Controller 110 kann ein Speicherschnittstellenmodul 114 umfassen, das eine Schnittstelle mit dem Speichermodul 130 bildet. Der Controller 110 kann auch ein Hostschnittstellenmodul 116 umfassen, das das mit dem Hostsystem 101 operativ in Kommunikation stehende Permanentspeichermodul 102 konfiguriert. Wie hierin verwendet, könnte der Ausdruck „operativ in Kommunikation mit“ bedeuten, direkt in Kommunikation oder indirekt in Kommunikation durch eine oder mehrere Komponenten, die hierin gezeigt oder beschrieben sein können oder nicht. Der Controller 110 kann durch das oder unter Verwendung des Hostschnittstellenmoduls 116 von dem Hostsystem 101 Hostanfragen wie beispielsweise Hostauslese- und Einschreibanfragen empfangen und durch die oder unter Verwendung der Hostschnittstelle 116 Antworten zu den Hostauslese- und Einschreibanfragen an das Hostsystem 101 senden. Zusätzlich dazu kann die Hostschnittstelle 116 eine beliebige Form einnehmen, wie beispielsweise eine eMMC-Hostschnittstelle, eine UFS-Schnittstelle und eine USB-Schnittstelle, ohne darauf beschränkt zu sein.
  • Das Speichermodul 130 kann einen Speicher 132 umfassen, der konfiguriert ist, um Daten oder andere Informationen in dem Speichermodul 102 zu speichern. Der Speicher 132 kann eine Vielzahl von Speicherelementen oder -zellen umfassen, die jeweils konfiguriert sind, um ein oder mehrere Datenbits zu speichern. Zusätzlich oder alternativ dazu kann der Speicher 132 einen einzigen Speichertyp (wie beispielsweise einen einzigen Typ von flüchtigem Speicher oder einen einzigen Typ von nichtflüchtigem Speicher) oder verschiedene Speichertypen (wie beispielsweise verschiedene Typen von flüchtigem Speicher, verschiedene Typen von nichtflüchtigem Speicher oder Kombinationen davon) umfassen.
  • Zusätzlich dazu kann der Speicher 132 ein einzelner physikalischer Ort (wie beispielsweise ein Einzelnacktchip oder ein Einzelchip) sein, in dem der Controller 110 denselben Bus oder Kanal verwenden kann, um auf den einzelnen physikalischen Ort zuzugreifen. Alternativ dazu kann der Speicher 132 mehrere verschiedene physikalische Orte (wie beispielsweise Mehrfachnacktchips oder Mehrfachchips) umfassen, in denen der Controller 110 verschiedene Busse oder verschiedene Kanäle verwenden kann, um auf die verschiedenen physikalischen Orte zuzugreifen.
  • Der Speicher 132 kann eine Organisationsanordnung oder -hierarchie aufweisen, unter der die Speicherelemente oder Zellen des Speichers 132 organisiert sein können. Der Controller 110 kann konfiguriert sein, um Daten zu speichern und/oder auf gespeicherte Daten gemäß der Organisationsanordnung oder -struktur zuzugreifen.
  • Für manche beispielhafte Konfigurationen von Flash-Speicher können die Speicherelemente in Blöcke unterteilt oder organisiert sein, wobei jeder Block die Mindestanzahl von Speicherelementen enthält, die zusammen gelöscht werden können. Jeder Block kann ferner in eine Anzahl von Seiten unterteilt sein, wobei jede Seite eine Programmier- oder Ausleseeinheit ist. Jede einzelne Seite kann ferner in Segmente unterteilt sein, wobei jedes Segment die geringste Anzahl von Speicherelementen enthält, die zu einer Zeit als eine Basisprogrammieroperation eingeschrieben werden können. Zusätzlich dazu können für manche beispielhafte Konfigurationen mehrere Blöcke und Seiten über mehrere Ebenen verteilt sein und zusammen als Metablöcke bzw. Metaseiten betrieben werden. Alternativ dazu kann die Verteilung von Blöcken und Seiten auf eine einzelne Ebene beschränkt sein. Ferner können mehrere Ebenen, über die ein Metablock verteilt sein kann, in Bänke gruppiert sein. Jede Bank kann einen Metablock oder eine Metaseite breit sein. Zusätzlich dazu kann jede Bank von dem Controller 110 unabhängig verwaltet werden.
  • Daten können in einem Block und/oder Metablock auf verschiedene Arten gespeichert werden, einschließlich nicht fortlaufend (zufällig) oder fortlaufend. Wie hierin verwendet und wenn nicht anders spezifiziert, können die Begriffe „Block“ und „Metablock“ und die Begriffe „Seite“ und „Metaseite“ austauschbar verwendet werden und/oder gemeinsam als „Metablock“ bzw. „Metaseite“ bezeichnet werden, ungeachtet dessen, ob der Block/Metablock und die Seite/Metaseite eine einzelne Ebene oder mehrere Ebenen umfassen.
  • Die Speicherelemente können als Single-Level-Zellen (SLCs), die ein einzelnes Datenbit pro Zelle speichern, Multi-Level-Zellen (MLCs), die mehrere Datenbits pro Zelle (z. B. zwei Datenbits pro Zelle) speichern, Triple-Level-Zellen (TLCs), die drei Datenbits pro Zelle speichern, oder Kombinationen von SLCs, MLCs und TLCs konfiguriert sein. Dementsprechend kann ein Block oder eine Seite von Speicherelementen jeweils einen einzelnen Datenblock oder -seite oder mehrere Datenblöcke oder -seiten speichern, abhängig davon, ob die Speicherelemente als SLCs, MLCs und/oder TLCs konfiguriert sind. Ob ein Speicherelement ein SLC, ein MLC oder ein TLC ist, kann von der Anzahl von Bits abhängen, von denen der Controller 110 bestimmt, dass sie in das Speicherelement programmiert werden. Beispielsweise kann der Controller 110 konfiguriert sein, um ein einzelnes Datenbit in ein Speicherelement zu programmieren, in welchem Fall das Speicherelement als SLC konfiguriert ist. Dementsprechend kann jedes der Speicherelemente in einem SLC-Modus, einem MLC-Modus oder einem TLC-Modus konfiguriert sein, wie dadurch bestimmt, wie der Controller 110 die jeweiligen Speicherelemente programmiert.
  • Zusätzlich dazu kann der Speicher 132 für manche beispielhafte Konfigurationen einen einzelnen Bereich umfassen. Für weitere beispielhafte Konfigurationen kann der Speicher 132 in verschiedene Bereiche oder Abschnitte unterteilt oder getrennt sein, einschließlich eines Hauptspeichers 134 und eines Sekundärspeichers 136, wie in 1 gezeigt. Der Hauptspeicher 134 und der Sekundärspeicher 136 können insofern verschieden sein, als sie verschiedene Speichertypen aufweisen können, an verschiedenen physikalischen Orten angeordnet sein können, verschiedenen Zellkonfigurationen aufweisen können, oder eine Kombination davon.
  • Für manche beispielhafte Flash-Memory-Anwendungen kann der Sekundärspeicher 136 ein Binärcache 136 sein. Der Hauptspeicher 134 kann eine höhere Bit-pro-Zelle-Permanentspeicherdichte als der Binärcache 136 aufweisen. Das heißt, die Speicherelemente des Hauptspeichers 134 können als MLCs konfiguriert sein, während die Speicherelemente des Binärcaches 136 als SLCs konfiguriert sein können. In alternativen beispielhaften Konfigurationen können die Speicherelemente des Hauptspeichers 134 auch als SLCs konfiguriert sein. Zusätzlich dazu kann der Binärcache 136 konfiguriert sein, um eine feinere Granularität von Schreibvorgängen als für den Hauptspeicher 134 zu erlauben. Die feinere Granularität kann mit der Granularität logischer Dateneinheiten von einer Hosteinschreibanfrage kompatibler sein. Zusätzlich oder alternativ dazu kann der Hauptspeicher 134 konfiguriert sein, um logische Dateneinheiten sequenziell zu speichern, während der Binärcache 136 logische Dateneinheiten sequenziell speichern kann oder nicht. Dementsprechend können Datenfragmente (z. B. weniger als ein Metablock oder logische Datengruppe) in dem Binärcache 136 gespeichert werden. Für manche Situationen können die Datenfragmente daraufhin in sequenzieller Abfolge in den Blöcken in dem Hauptspeicher 134 reassembliert werden.
  • Das Speichermodul 130 kann ferner Logikschaltung 142 umfassen, die konfiguriert ist, um die Speicherung von Daten in dem Speicher zu steuern und/oder zu verwalten. Die Logikschaltung 142 kann eine Schnittstelle zwischen dem Controller 110 und dem Speicher 132 bereitstellen. Die Logikschaltung 142 kann die Speicherung von Daten in dem Speicher 132 als Antwort auf und/oder gemäß von dem Controller 110 empfangenen und/oder von ihm erzeugten Kontextinstruktionen oder -befehlen, wie beispielsweise Abfühl-, Programmier- und/oder Löschbefehlen, steuern und/oder verwalten. Die Logikschaltung 142 kann konfiguriert sein, um verschiedene Speicherverwaltungsfunktionen durchzuführen, um die Datenspeicherung zu steuern und/oder zu verwalten, einschließlich, aber nicht beschränkt auf Adressierung, Datenübertragung, Abfühlen, Zeilen- und Spaltendekodierung und/oder Gate-Vorspannung. Zusätzlich dazu kann der Speichercontroller 142 in Hardware implementiert sein, einschließlich eines oder mehrerer Prozessoren, Hardwarelogiken, Puffer, Spannungsgeneratoren und/oder weiterer Schaltungen, um die Funktionen des Speichercontrollers 142 auszuführen.
  • Das Speichermodul 130 kann ferner Abfühlschaltung 144 umfassen, die Abfühlverstärker, die konfiguriert sind, um in dem Speicher 132 gespeicherte Daten abzufühlen, und Zwischenspeicher umfassen kann, die konfiguriert sind, um die abgefühlten Daten zu speichern, die dann zu dem Controller 110 übertragen werden können.
  • 1 zeigt den Controller 110 und die Logikschaltung 142 als separate Komponenten des Permanentspeichermoduls 102. Allerdings können die Logikschaltung 142 und/oder die durch die Logikschaltung 142 ausgeführten Funktionen für alternative beispielhafte Konfigurationen in den Controller 110 aufgenommen werden und der Controller 110 kann konfiguriert sein, direkt mit dem Speicher 132 und/oder der Abfühlschaltung 144 zu kommunizieren.
  • Das Permanentspeichermodul 102 kann auch einen Kommunikationsbus 146 umfassen, der eine Kommunikationsverbindung zwischen dem Controller 110 und dem Speichermodul 130 bereitstellt. Der Kommunikationsbus 146 kann durch den Controller 110 und das Speichermodul 130 verwendet werden, um Daten, Befehle oder andere Informationen oder Nachrichten zu übermitteln, um von dem Hostsystem 101 empfangene Hostanfragen oder Befehle, wie beispielsweise Hostauslese- und Einschreibanfragen, auszuführen.
  • Wenn das Speichermodul 102 einen Hostausleseanfrage von dem Hostsystem 101 empfängt, kann das Permanentspeichermodul 102 konfiguriert sein, um eine Vielzahl von Prozessen auszuführen, um die Hostausleseanfragen auszuführen oder durchzuführen. Solche Prozesse können Folgendes umfassen: Front-End-Befehl-Parsen; Adressenübersetzung; Datenabrufen; Datennachabrufen; und Hostkommunikation.
  • 2 zeigt eine beispielhafte Konfiguration von Komponenten des Controllers 110, die verwendet werden können, um die Vielzahl von Prozessen zur Ausführung einer Hostausleseanfrage durchzuführen. Wie in 2 gezeigt, kann der Controller 110 eine Vielzahl von Hardwaremodulen 202208, ein zentrales Firmwaremodul 210 und einen Pufferpool 212, zusammen mit dem Hostschnittstellenmodul (HIM) 216 und dem Speicherschnittstellenmodul (MIM) 114, umfassen.
  • Die Vielzahl von Hardwaremodulen 202208 kann jeweils konfiguriert sein, um einen zugeordneten Prozess oder eine Vielzahl von Prozessen zur Ausführung eines Hostauslesebefehls durchzuführen. Die Vielzahl von Hardwaremodulen 202208 kann ihre zugeordneten Prozesse mit Hardwarekomponenten und/oder ohne Ausführungssoftware oder -firmware durchführen. Beispielhafte Hardwarekomponenten können Puffer, Register, Zwischenspeicher, Flipflops, Kantendetektoren, Zähler, Logikschaltungen (z. B. AND-Gates, OR-Gates etc.), Komparatoren, Operationsverstärker, passive Komponenten (z. B. Widerstände, Kondensatoren etc.), Multiplexer, Demultiplexer, Maskierschaltungen und Rechenschaltungen (z. B. Addierer, Subtrahierer, Multiplizierer, Dividierer etc.) als nichteinschränkende Beispiele umfassen.
  • Alle oder zumindest manche dieser Prozesse können auch durch das zentrale Firmwaremodul 210 ausgeführt werden, das einen Prozessor oder eine Prozessorschaltung 214 umfassen kann, das Firmware (FW) 216 ausführt, um die Prozesse durchzuführen. Die Firmware 216 kann im Allgemeinen Software und/oder einen Satz von ausführbaren Programminstruktionen umfassen, die fähig sind, in einem Speichermedium gespeichert zu werden, und durch den Prozessor 214 ausführbar sind. Der Prozessor 214 kann einen einzelnen Prozessor oder eine Vielzahl von Prozessoren umfassen, die konfiguriert sind, um verschiedene Typen von Verarbeitung auszuführen, wie beispielsweise Coprocessing, Multiprocessing, Multitasking, Parallelverarbeitung, Fernverarbeitung, verteilte Verarbeitung oder dergleichen, um die Hostausleseanfrageprozesse auszuführen. Der Prozessor 214 kann ein Mikroprozessor, ein Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC), ein Universalschaltkreis (FPGA) oder eine weitere derzeit bekannte oder später entwickelte Verarbeitungsschaltung sein, die konfiguriert ist, um Programminstruktionen auszuführen, die Teil der Firmware 216 sein können.
  • Wie in 2 gezeigt, kann die Firmware 216 lokal oder innerhalb des Controllers 110 in einem Controllerspeicher 218 gespeichert werden, der separat oder außerhalb des Chips von dem Speicher in dem Speichermodul 130 sein kann und der einen oder mehrere verschiedene Typen von Speicherstrukturen oder -technologien von flüchtigem Speicher, nichtflüchtigem Speicher oder Kombinationen davon umfassen kann. Der Prozessor 214 kann den Controllerspeicher 218 verwenden oder auf ihn zugreifen, um Hostausleseprozesse durchzuführen. Beispielsweise kann Software und/oder Firmware, einschließlich Programminstruktionen, in dem Controllerspeicher 218 gespeichert werden, die der Prozessor 214 ausführen kann, um die Hostausleseprozesse auszuführen. Wie unten ausführlicher beschrieben, kann der Controller 218 weitere Informationen und/oder Daten innerhalb des Controllers 110, außer der Firmware 216, speichern.
  • Die Kombination der Hardwaremodule 202208 und dem zentralen Firmwaremodul 210 kann mehrere Ausleseprozesspfade oder -abläufe bereitstellen, einschließlich eines Hardwareausleseprozesspfads und eines Firmwareausleseprozesspfads. Die Hardware- und Firmwareausleseverarbeitungspfade können eine Hostausleseanfrage unabhängig voneinander ausführen oder miteinander kommunizieren, um die Hostausleseanfrage auszuführen. Die Hardwaremodule 202208 können Ausleseprozesse ausführen, während eine Hostausleseanfrage entlang des Hardwareausleseprozesspfads abläuft. Das zentrale Firmwaremodul 210 kann die Ausleseprozesse durchführen, während die Hostausleseanfrage entlang des Firmwareausleseprozesspfads abläuft.
  • Im Allgemeinen kann die Vielzahl von Hardwaremodulen 202208 in dem Ausleseprozesspfad in dem Controller 110 implementiert werden, um Ausführung der Hostausleseanfragen zu beschleunigen. Für manche beispielhafte Konfigurationen kann jedes der Hardwaremodule 202208 konfiguriert sein, um einen oder mehrere zugeordnete Ausleseprozesse zur Ausführung einer Hostausleseanfrage durchzuführen, wenn eines oder mehrere Kriterien erfüllt sind. Wenn das eine oder die mehreren Kriterien nicht erfüllt sind, dann kann das zentrale Firmwaremodul 210 den Ausleseprozess durchführen. Zusätzlich dazu, wenn das eine oder die mehreren Kriterien erfüllt sind, das den Ausleseprozess ausführende Hardwaremodul aber andernfalls nicht fähig ist, den Ausleseprozess auszuführen, dann kann das zentrale Firmwaremodul 210 den Ausleseprozess ausführen.
  • Dementsprechend kann die Ausführung einer Hostausleseanfrage durch die Hardwaremodule 202208 in dem Hardwareausleseprozesspfad bearbeitet werden, bis ein Ausleseprozess nicht fähig ist, von einem der Hardwaremodule 202208 durchgeführt zu werden, an welchem Punkt das Firmwaremodul 210 den Ausleseprozess durchführen kann. Daraufhin kann das Firmwaremodul 210 bestimmen, ob das Verarbeiten der Hostausleseanfrage entlang des Firmwarepfads fortgesetzt wird oder die Verantwortung für das folgende Verarbeiten der Hostausleseanfrage an den Hardwarepfad zurückgegeben wird. Das Firmwaremodul 210 kann die Verantwortung an den Hardwarepfad zurückgeben, wenn eines oder mehrere Kriterien zum Ausführung eines nächsten Ausleseprozesses erfüllt sind. Andernfalls kann das Firmwaremodul 210 das Verarbeiten der Hostausleseanfrage fortsetzen. Als solche können die Hardwaremodule 202208 das Firmwaremodul 210 miteinander wechselwirken oder die Hardware- und Firmwareausleseprozesspfade so verknüpfen, dass die Hardwaremodule 202208 die Hostausleseprozesse ausführen, wenn sie dazu fähig sind, und das Firmwaremodul 210 übernimmt, wenn sie es nicht sind.
  • Ein Kriterium kann Komplexität sein und/oder auf Komplexität bezogen sein. Wenn bestimmt wird, dass die an der erfolgreichen Durchführung eines Ausleseprozesses beteiligten Aufgaben unter und/oder innerhalb eines Komplexitätsniveaus liegen, dann kann der Ausleseprozess durch einen den Hardwaremodulen 202208 zugeordneten ausgeführt werden. Wenn alternativ dazu bestimmt wird, dass die an der erfolgreichen Ausführung des Ausleseprozesses beteiligten Aufgaben über einem Komplexitätsniveau liegen, dann kann der Ausleseprozess durch das Firmwaremodul 210 bearbeitet werden.
  • Ein weiteres Kriterium kann Gewöhnlichkeit und/oder auf Gewöhnlichkeit bezogen sein. Die Hardwaremodule 202208 können konfiguriert sein, um einen zugeordneten Ausleseprozess auszuführen, wenn die an der erfolgreichen Ausführung des Ausleseprozesses beteiligten Aufgaben gewöhnlich sind oder häufig auftreten oder die Hostausleseanfrage selbst als ein häufig empfangener Typ von Hostausleseanfrage identifiziert wird. Alternativ dazu kann das Firmwaremodul 210 einen Ausleseprozess ausführen, wenn die an der erfolgreichen Ausführung des Ausleseprozesses beteiligten Aufgaben als ungewöhnlich oder nicht häufig auftretend erachtet werden oder die Hostausleseanfrage selbst als ein nicht häufig empfangener Typ von Hostausleseanfrage identifiziert wird.
  • Für manche Ausleseprozesse können Komplexität und Gewöhnlichkeit zusammenhängen. Je weniger komplex ein Ausleseprozess ist, desto häufiger kann dieser Ausleseprozess ausgeführt werden. Alternativ dazu kann, je komplexer ein Ausleseprozess ist, dieser Ausleseprozess desto weniger häufig ausgeführt werden.
  • Zusätzlich dazu können für manche beispielhafte Konfigurationen das eine oder die mehreren Kriterien, einschließlich der Komplexität und Gewöhnlichkeit, mit der Größe der Daten, deren Auslesen angefordert wird, zusammenhängen und/oder ihr entsprechen. Wie unten ausführlicher beschrieben, können die Hardwaremodule 202208 konfiguriert sein, um Ausleseanfragen zu verarbeiten, die Daten mit einer Größe anfordern, die innerhalb einer vorbestimmten Menge liegt. Die vorbestimmte Menge kann Folgendem entsprechen: einer Anzahl von logischen Gruppennummern, die verwendet werden, um die Daten, deren Auslesen angefordert wird, zu identifizieren, einer Anzahl von Übersetzungen von logischen in physikalische Adressen, die durchgeführt werden, um einen oder mehrere physikalische Orte zu identifizieren, an denen die angeforderten Daten gespeichert sind, einer Anzahl von Bereichen in dem Speicher 132, in denen die Daten fortlaufend gespeichert werden können, einer Anzahl von Befehlen oder Befehlssätzen, die erzeugt und ausgegeben werden, um die Daten abzurufen, oder Kombinationen davon.
  • Ferner können die Hardwaremodule 202208 für manche beispielhafte Konfigurationen konfiguriert sein, um die einfachsten Ausleseanfragen zu verarbeiten, die erfordern können, dass „kurze Auslesungen“ durchgeführt werden, um sie auszuführen. Solche Ausleseanfragen können für eine Größe von Daten sein, die durch Folgendes identifiziert werden können und/oder ihm entsprechen: eine einzelne logische Gruppennummer, eine einzelne Abfrage oder einzelnen Satz von Abfragen an eine oder mehrere Adressdatenstrukturen mit der einzelnen logischen Gruppennummer, um eine physikalische Adresse zu identifizieren, an der sich eine aktuellste Version der Daten befindet, einen einzelnen Bereich (z. B. eine Seite oder einen Block), in dem die Daten fortlaufend gespeichert werden können, und/oder einen einzelnen Satz von Abfühl- und Datenübertragungsbefehlen, um die Daten abzurufen.
  • Ob ein bestimmter Ausleseprozess in den Bereich fällt, durch eines der Hardwaremodule 202208 oder durch das Firmwaremodul 210 bearbeitet zu werden, kann ferner unabhängig von jedem der Hardwaremodule 202208 bestimmt werden (d. h. auf einer Pro-Modul-Basis). Das heißt, ob eines der Hardwaremodule 202208 seinen zugeordneten Ausleseprozess für eine bestimmte Hostausleseanfrage durchführen kann, kann bestimmen oder nicht bestimmen, ob ein anderes der Hardwaremodule 202208 seinen zugeordneten Ausleseprozess für dieselbe Hostausleseanfrage durchführen kann.
  • Wie in 2 gezeigt, können die Hardwarekomponenten, die verwendet werden, um die Hostausleseanfrageprozesse durchzuführen, in die Hardwaremodule 202208 modularisiert werden, wobei jedes der Hardwaremodule 202208 konfiguriert ist, um mit dem zentralen Firmwaremodul 210 unabhängig zu kommunizieren. Im Speziellen, wie in 2 gezeigt, kann jedes der Hardwaremodule 202208 eine Firmwareschnittstelle (FW I/F) 220 umfassen, die konfiguriert ist, um mit einer Firmware-Schnittstelle (FW I/F) 222 des zentralen Firmwaremoduls 210 zu kommunizieren.
  • In dem Fall, dass eines der Hardwaremodule 202208 bestimmt, dass es nicht fähig ist, seinen Teil des Ausführens einer Hostausleseanfrage erfolgreich durchzuführen, kann das Hardwaremodul das zentrale Firmwaremodul 210 von seinem Versagen benachrichtigen, zusammen mit jeglichen der Hostausleseanfrage zugeordneten Daten oder weiteren Informationen, die das zentrale Firmwaremodul 210 verwenden kann, um den Prozess durchzuführen. Als Antwort darauf kann das zentrale Firmwaremodul 210 den Hostausleseanfrageprozess durchführen, zu dessen Durchführung das Hardwaremodul nicht fähig war.
  • Für manche beispielhafte Konfigurationen kann das zentrale Firmwaremodul 210 nach dem Durchführen eines bestimmten Ausleseprozesses, den ein Hardwaremodul nicht durchführen konnte, damit fortfahren, die restlichen Hostausleseanfrageprozesse zur Ausführung einer Hostausleseanfrage durchzuführen. Für weitere beispielhafte Konfigurationen kann das zentrale Firmwaremodul 210, nachdem es den bestimmten Ausleseprozess durchgeführt hat, das Ergebnis des Prozesses an eines der Hardwaremodule 202208 senden, um einen nächsten Hostausleseanfrageprozess durchzuführen. Danach können die Hardwaremodule 202208 damit fortfahren, die Hostausleseanfrageprozesse durchzuführen, bis die Ausführung vollständig ist oder ein weiterer Hostausleseanfrageprozess nicht fähig ist, von den Hardwaremodulen 202208 durchgeführt zu werden, zu welcher Zeit das Hardwaremodul das zentrale Firmwaremodul 210 benachrichtigen kann. Solche Wechselwirkung zwischen den Hardwaremodule 202208 und dem Firmwaremodul 210 kann fortgesetzt werden, bis die Ausführung der Hostausleseanfrage vollständig ist oder anderweitig beendet wird.
  • Zusätzlich dazu, wie in 2 gezeigt, kann jedes der Hardwaremodule 202208 eine Hardwareeingabeschnittstelle (HW I/P I/F) 224 und eine Hardwareausgabeschnittstelle (HW O/P I/F) 226 umfassen. Wie unten ausführlicher erläutert, kann das erste Hardwaremodul 202 über seine Hardwareeingabeschnittstelle 224 einen Hostbefehl von dem Hardwareschnittstellenmodul 116 empfangen. Daraufhin kann jedes der Hardwaremodule 202208 konfiguriert sein, unter Verwendung ihrer jeweiligen Hardwareausgabeschnittstellen 226 eine „Ergebnis-“Ausgabe und eine „Status-“Ausgabe auszugeben. Die Ergebnis- und Statusausgabe, die ausgegeben werden, können dann als jeweilige Ergebnis- und Statuseingaben durch eine Hardwareeingabeschnittstelle 224 eines anderen Hardwaremoduls empfangen werden.
  • Die Ergebnisausgabe, die ein Hardwaremodul ausgibt, kann die Informationen umfassen, die aus einem durch das Hardwaremodul durchgeführten Hostausleseanfrageprozess resultierten. Die Statusausgabe kann eine Angabe dahingehend umfassen, ob der durch das Hardwaremodul durchgeführte Hostausleseanfrageprozess erfolgreich war. Für manche beispielhafte Konfigurationen kann die Statusausgabe dem Hardwaremodul, das die Statuseingabe empfängt, anzeigen und/oder ihm befehlen, die Ergebnisausgabe, die es von dem anderen Hardwaremodul empfängt, die Ergebnisausgabe zu übernehmen oder sie anderweitig zu halten. Alternativ dazu, wenn ein Hardwaremodul eine Statuseingabe auf einem nicht erfolgreichen Pegel empfängt, kann das Hardwaremodul jegliche Informationen ignorieren, die es auf seiner Ergebniseingabe empfängt.
  • Die Hardwaremodule 202208 können auf verschiedene Arten modularisiert sein, die von den jeweiligen durchgeführten Ausleseprozessen abhängen können. In einer beispielhaften Konfiguration, wie in 2 gezeigt, können die Hardwaremodule 202208 ein Front-End-Hardwaremodul 202, ein Adressenübersetzungshardwaremodul 204, ein Datenabrufhardwaremodul 206 und ein Datennachabrufhardwaremodul 208 umfassen.
  • Das Front-End-Hardwaremodul 202 kann durch das Permanentspeichermodul 102 empfangene Hostbefehle über das Hostschnittstellenmodul 116 empfangen. Das Front-End-Hardwaremodul 202 kann konfiguriert sein, um den Hostbefehl zu parsen, um einen Typ des Hostbefehls zu identifizieren. Wenn der identifizierte Hostbefehl ein Befehl ist, der kein Hostauslesebefehl ist, wie beispielsweise ein Hosteinschreibbefehl, dann kann das Front-End-Hardwaremodul 202 den Hostbefehl ablehnen und den Hostbefehl an das zentrale Firmwaremodul 210 zur darauffolgenden Verarbeitung senden. Alternativ dazu, wenn der Hostbefehl ein Hostauslesebefehl ist, dann kann das Front-End-Hardwaremodul 202 in der Hostausleseanfrage identifizierte Informationen zur logischen Adresse bestimmen und die Informationen zur logischen Adresse als seine Ergebnisausgabe an das Adressenübersetzungshardwaremodul 204 ausgeben. Wenn das Front-End-Hardwaremodul 202 allerdings aus einem bestimmten Grund nicht fähig ist, die Informationen zur logischen Adresse zu bestimmen, dann kann Front-End-Hardwaremodul 202 das zentrale Firmwaremodul 210 benachrichtigen. Zusätzlich dazu, ausgehend von der Annahme, dass das Front-End-Hardwaremodul 202 die Informationen zur logischen Adresse bestimmte, kann das Front-End-Hardwaremodul 202 seine Statusausgabe auf einem Pegel ausgeben, der angibt, dass das Front-End-Modul eine Hostausleseanfrage empfing und Informationen zur logischen Adresse in der Hostausleseanfrage erfolgreich bestimmte.
  • Für alternative beispielhafte Konfigurationen kann das Front-End-Hardwaremodul 202 in Firmware implementiert sein – das heißt, es kann Teil des Firmwaremoduls Firmwaremodul 210 sein. In beiden Fällen kann das Firmwaremodul 210, ob es nun als Hardwaremodul oder als Teil des Firmwaremoduls 210 implementiert ist, als Verwalter fungieren, der anfänglich bestimmt, ob ein Hostbefehl anfänglich entlang des Hardwarepfads oder des Firmwarepfads verarbeitet wird.
  • Das Adressenübersetzungshardwaremodul 204 kann die Informationen zur logischen Adresse von dem Front-End-Hardwaremodul 202 als seine Ergebniseingabe empfangen. Zusätzlich dazu kann das Adressenübersetzungsmodul 204 die Statusausgabe als seine Statuseingabe empfangen, identifizieren, dass der Status erfolgreich ist, und als Antwort darauf die Ergebnisausgabe übernehmen, um die Informationen zur logischen Adresse zu halten.
  • Ferner kann das Adressenübersetzungshardwaremodul 204 konfiguriert sein, um die Informationen zur logischen Adresse in Informationen zur physikalischen Adresse zu übersetzen, die einen physikalischen Ort identifizieren, an dem der Hostausleseanfrage zugeordnete Daten gespeichert sind. Wenn das Adressenübersetzungsmodul 204 nicht fähig ist, die Informationen zur logischen Adresse in Informationen zur physikalischen Adresse zu übersetzen, dann kann das Adressenübersetzungsmodul 204 das zentrale Firmwaremodul 210 benachrichtigen und die Informationen zur logischen Adresse bereitstellen. Alternativ dazu, wenn das Adressenübersetzungshardwaremodul 204 Informationen zur physikalischen Adresse bestimmt, dann kann das Adressenübersetzungshardwaremodul 204 die Informationen zur physikalischen Adresse als seine Ergebnisausgabe an das Datenabrufhardwaremodul 206 ausgeben. Zusätzlich dazu kann das Adressenübersetzungsmodul 202 seine Statusausgabe auf einem Pegel ausgeben, der angibt, dass das Adressenübersetzungsmodul 202 erfolgreich der Hostausleseanfrage zugeordnete Informationen zur physikalischen Adresse bestimmte.
  • Das Datenabrufhardwaremodul 206 kann die Informationen zur physikalischen Adresse von dem Adressenübersetzungshardwaremodul 204 als seine Ergebniseingabe empfangen. Zusätzlich dazu kann das Datenabrufhardwaremodul 206 die Statusausgabe von dem Adressenübersetzungsmodul 204 als seine Statuseingabe empfangen, identifizieren, dass der Status erfolgreich ist, und als Antwort darauf die Ergebnisausgabe übernehmen, um die Informationen zur physikalischen Adresse zu halten.
  • Ferner kann das Datenabrufhardwaremodul 206 konfiguriert sein, um einen oder mehrere Sätze eines oder mehrerer Datenabrufbefehle zum Abrufen von Daten zu erzeugen, die den Informationen zur physikalischen zugeordnet sind. Wie unten ausführlicher erläutert, kann ein beispielhafter Satz einen Abfühlbefehl und einen Datenübertragungsbefehl umfassen. Der Abfühlbefehl kann dem Speichermodul 130 befehlen, Daten in den Zwischenspeichern der Abfühlschaltung 144 abzufühlen. Der zugeordnete Datenübertragungsbefehl kann dem Speichermodul 130 befehlen, die abgefühlten Daten an den Controller 110 zu senden.
  • Wenn das Datenabrufhardwaremodul 206 aus einem bestimmten Grund nicht fähig ist, die Datenabrufbefehle zu erzeugen, kann das Datenabrufhardwaremodul 206 das zentrale Firmwaremodul 210 benachrichtigen und ihm die Informationen zur physikalischen Adresse bereitstellen. Ausgehend von der Annahme, dass das Datenabrufmodul 206 fähig ist, die Datenabrufbefehle zu erzeugen, kann das Datenabrufmodul 206 die Datenabrufbefehle an das Speicherschnittstellenmodul 114 senden, das wiederum die Datenabrufbefehle an das Speichermodul 130 senden kann. Als Antwort auf die Datenabrufbefehle kann das Speichermodul 130 in dem Speicher 132 gespeicherte Daten abrufen, an einem den Informationen zur physikalischen Adresse zugeordneten Ort.
  • Die Daten können über das Speicherschnittstellenmodul 114 an das Datennachabrufhardwaremodul 208 gesendet werden. Zusätzlich dazu kann das Speicherschnittstellenmodul 114 für manche beispielhafte Konfigurationen auch eine Statusausgabe an das Datennachabrufhardwaremodul 208 senden, das dem Datennachabrufhardwaremodul 208 befehlen kann, die Daten zu übernehmen. Bei Erhalt der Daten kann das Datennachabrufhardwaremodul 208 Datennachabrufprozesse durchführen. Beispielhafte Prozesse können Fehlerkorrektur und Dekodieren umfassen. Für manche beispielhafte Konfigurationen, wenn der Fehlerkorrekturprozess eine Bitfehlerrate identifiziert, die zu hoch ist, und/oder nicht fähig ist, die Daten erfolgreich zu dekodieren, kann das Datennachabrufhardwaremodul 208 das zentrale Firmwaremodul 210 benachrichtigen und die Daten bereitstellen.
  • Wenn das Datennachabrufhardwaremodul 208 fähig ist, die Datennachabrufprozesse erfolgreich durchzuführen, kann das Datennachabrufhardwaremodul 208 die Daten als seine Ergebnisausgabe an den Pufferpool 212 zu senden, wo die Daten temporär gespeichert werden können, bevor sie an das Hostsystem 101 zur Ausführung der Hostausleseanfrage gesendet werden. Zusätzlich dazu kann das Datennachabrufhardwaremodul 208 für manche beispielhafte Konfigurationen eine Statusausgabe an den Pufferpool 212 senden, die den Pufferpool benachrichtigen kann, die Daten zu übernehmen.
  • Zusätzlich oder alternativ dazu kann das Datennachabrufhardwaremodul 208 eine Statusausgabe an das Hostschnittstellenmodul 116 senden, die dem Hostschnittstellenmodul anzeigen kann, dass Daten in dem Pufferpool 212 gespeichert sind und bereit sind, an das Hostsystem 101 gesendet zu werden. Als Antwort darauf kann das Hostschnittstellenmodul 116 die in dem Pufferpool 212 gespeicherten Daten abrufen und die Daten an das Hostsystem 101 senden.
  • 36 zeigen Blockdiagramme von beispielhaften Konfigurationen des Front-End-Hardwaremoduls 202, des Adressenübersetzungshardwaremoduls 204, des Datenabrufhardwaremoduls 206 bzw. des Datennachabrufhardwaremoduls Datennachabrufhardwaremodul 208.
  • Bezug nehmend auf 3 kann eine beispielhafte Konfiguration des Front-End-Hardwaremoduls 202 eine Vielzahl von Submodulen 302, 304, 306 umfassen, von denen jedes konfiguriert ist, einen Subprozess des Front-End-Befehl-Parsingprozesses durchzuführen. Zusätzlich dazu kann jedes der Vielzahl von Submodulen 302306 konfiguriert sein, um eine Ergebnisausgabe und eine Statusausgabe an ein nächstes oder stromabwärts liegendes Submodul zur weiteren Verarbeitung zu senden und mit dem Firmwareschnittstellenmodul 220 zu kommunizieren, falls es nicht fähig ist, den ihm zugeordneten Subprozess durchzuführen.
  • Die Vielzahl von Submodulen kann ein Befehlstyp-Identifikations(ID)-Submodul 302, ein Größenbestimmungssubmodul 304 und ein Submodul zur Bestimmung der logischen Adresse 306 umfassen. Wie in 3 gezeigt, kann das Befehlstyp-ID-Submodul 302 konfiguriert sein, um einen Hostbefehl von der Hardwareeingabeschnittstelle 224 zu empfangen und den Hostbefehl zu parsen, um zu identifizieren, ob der Hostbefehl eine Hostausleseanfrage oder ein anderer Typ von Hostbefehl, wie beispielsweise eine Hosteinschreibanfrage, ist. Wie zuvor beschrieben, wenn der empfangene Hostbefehl ist anderer Befehl als eine Hostausleseanfrage ist, dann kann das Befehlstyp-ID-Submodul 302 den Hostbefehl an das zentrale Firmwaremodul 210 über die Firmwareschnittstelle 220 zur weiteren Verarbeitung senden. Alternativ dazu, wenn das Befehlstyp-ID-Modul bestimmt, dass der Hostbefehl ein Hostauslesebefehl ist, kann das Befehlstyp-ID-Submodul 302 die Hostausleseanfrage (oder die aus der Hostausleseanfrage geparsten Informationen) als seine Ergebnisausgabe an das Größenbestimmungssubmodul 304 senden und als seine Statusausgabe anzeigen, dass es einen Hostauslesebefehl erfolgreich empfangen hat.
  • Als Antwort darauf kann das Größenbestimmungssubmodul 304 die von dem Befehlstyp-ID-Submodul 302 empfangenen Informationen zur Hostausleseanfrage übernehmen und eine Größe der Daten bestimmen, deren Auslesen angefordert wurde. Wenn die Größe der Daten eine vorbestimmte Schwellenmenge überschreitet, dann kann das Größenbestimmungssubmodul bestimmen, dass die Hostausleseanfrage das Auslesen einer Datenmenge anfordert, die für die Hardwaremodule 202208 zu groß zur Bearbeitung ist. Als Antwort darauf kann das Größenbestimmungssubmodul 304 die Informationen zur Hostausleseanfrage an das zentrale Firmwaremodul 210 zur weiteren Verarbeitung senden.
  • Für manche beispielhafte Konfigurationen kann der Schwellenpegel von Daten einem Sektor oder Mindesteinheit von Daten entsprechen, die aus dem Speicher 132 zu einer Zeit oder pro Ausleseversuch ausgelesen werden können. Zusätzlich oder alternativ dazu kann der Schwellenpegel einer Menge von Daten entsprechen, die durch den Controller 110 von dem Speichermodul 130 als Antwort auf das Senden eines einzelnen Satzes von Datenabrufbefehlen empfangen werden kann. Beispielhafte Schwellengrößen können 4 Kilobytes (kB) oder 8 kB sein, obwohl weitere Größen möglich sein können. Zusätzlich oder alternativ dazu kann für Flash-Speicher die kleinste Einheit von Daten einer Seite von Daten entsprechen. Ausführung von Ausleseanfragen für Daten mit einer Größe, die kleiner oder gleich der kleinsten Einheit von Auslesedaten ist, kann als kurze Ausleseanfrage bezeichnet werden, und Ausführung einer kurzen Ausleseanfrage kann als kurze Auslesung bezeichnet werden. Für manche Beispiele können die Hardwaremodule 202208 konfiguriert sein, um nur kurze Auslesungen zu bearbeiten, und so können beliebige Ausleseanfragen, die Auslesungen umfassen, die größer als kurze Auslesungen sind, an das zentrale Firmwaremodul 210 zur weiteren Verarbeitung gesendet werden. Für weitere beispielhafte Konfigurationen können die Hardwaremodule 202208 fähig sein, Hostausleseanfragen zu bearbeiten, die keine kurzen Auslesungen sind.
  • Wenn das Größenbestimmungssubmodul 304 bestimmt, dass die Größe der Daten, deren Auslesen angefordert wurde, den vorbestimmten Schwellenpegel nicht überschritten hat, dann kann das Größenbestimmungssubmodul 304 die Informationen zur Hostausleseanfrage als seine Ergebnisausgabe an das Submodul zur Bestimmung der logischen Adresse 306 senden.
  • Das Submodul zur Bestimmung der logischen Adresse 306 kann konfiguriert sein, um in der Hostausleseanfrage enthaltene Informationen zur Bestimmung der logischen Adresse zu bestimmen, die dann durch das Adressenübersetzungshardwaremodul 204 (2) in eine physische Adresse übersetzt werden können, die einem Ort zugeordnet ist, an dem die angeforderten Daten gespeichert sind. Weiter ins Detail gehend, können das Hostsystem 101 und das Permanentspeichermodul 102 für manche Speichertechnologien wie beispielsweise Flash-Speicher verschiedene Adressierungsschemata zum Verwalten Speicherung von Daten verwenden. Wenn das Hostsystem 101 beispielsweise Daten in das Permanentspeichermodul 102 einschreiben will, kann das Hostsystem 101 den Daten eine logische Adresse (auch als logische Blockadresse (LBA) bezeichnet) zuweisen. Wenn ähnlich dazu das Hostsystem 101 Daten aus dem Permanentspeichermodul 102 auslesen will, kann das Hostsystem 101 die Daten, die es von der logischen Adresse ausgelesen haben will, identifizieren. Das Hostsystem 101 kann ein logisches Adressierungsschema verwenden, in dem ein Hostdateisystem einen logischen Adressbereich für alle LBAs, die durch das Hostsystem 101 zugewiesen oder erkannt werden, beibehält. Zusätzlich dazu kann das Hostsystem 101 für manche beispielhafte Konfigurationen Daten in Einheiten von logischen Sektoren adressieren. Dementsprechend können Hostauslese- und Einschreibanfragen Anfragen zum Auslesen und Einschreiben eines Segments sein, das eine Kette von logischen Sektoren von Daten mit fortlaufenden Adressen umfasst.
  • Im Gegensatz zu dem logischen Adressierungsschema des Hostsystems kann das Permanentspeichermodul 102 Daten speichern und auf sie zugreifen gemäß dem physikalischen Adressierungsschema, das physikalische Adressen verwendet, die sich von den logischen Adressen unterscheiden, die durch das Hostsystem 101 zugewiesen sind, um Daten zu speichern und auf sie zuzugreifen. Um das logische Adressierungsschema des Hostsystems mit dem physikalischen Adressierungsschema des Permanentspeichermoduls zu koordinieren, kann das Permanentspeichermodul 102 die Adressenübersetzung durchführen, bei der das Permanentspeichermodul 102 eine logische Adresse übersetzt, die in einer Hostanfrage an eine physikalische Adresse zum Speichern oder Abrufen von Daten enthalten ist. Wie zuvor beschrieben, kann der Speicher 132 in Metablöcke organisiert aufgebaut sein. Dementsprechend, wenn die Speichervorrichtung 102 Adressenübersetzung durchführt, kann die physikalische Adresse, die die Speichervorrichtung 102 bestimmt, den Metablock, die Vielzahl von Metablöcken und/oder die physikalischen Sektoren innerhalb eines Metablocks identifizieren, an denen die Daten gespeichert sind.
  • Für manche beispielhafte Konfigurationen können die logischen Adressen (LBAs) in logische Gruppen (LGs) gruppiert sein, die durch logische Gruppennummern identifiziert sind, und die logischen Gruppen können in den Metablöcken abgebildet werden. 7 zeigt ein schematisches Diagramm der Abbildung zwischen logischen Gruppen (LG) und Metablöcken (MB). Jede logische Gruppe kann in einem einzigarten Metablock abgebildet werden. Dementsprechend kann ein Metablock, wie in 7 gezeigt, eine N-Anzahl von physikalischen Sektoren zum Speichern von N-logischen Sektoren von Daten, die einer logischen Gruppe zugeordnet sind, aufweisen. Für manche beispielhafte Konfigurationen können die logischen Sektoren von Daten in den physikalischen Sektoren in der fortlaufenden und sequenziellen logischen Reihenfolge 0, 1, ... N – 1 gespeichert sein. Alternativ dazu können N logische Sektoren von Daten zufällig oder nicht fortlaufend in N physikalischen Sektoren eines Metablocks gespeichert sein.
  • Zusätzlich dazu kann für manche beispielhafte Konfigurationen, bei denen Daten fortlaufend gespeichert sind, ein Offset zwischen der niedrigsten Adresse einer logischen Gruppe und der niedrigsten Adresse des Metablocks, in den sie abgebildet ist, bestehen. In diesem Fall können logische Sektoradressen als Schleife vom unteren Ende zurück zum oberen Ende der logischen Gruppe innerhalb des Metablocks rundum geführt werden. Wie im unteren Diagramm von 2 gezeigt, kann ein Metablock MBj Daten, die einem logischen Sektor k zugeordnet sind, in seinem ersten physikalischen Sektor 0 speichern. Wenn der letzte logische Sektor N – 1 erreicht ist, können die logischen Sektoren derart rundum geführt werden, dass der erste logische Sektor 0 fortlaufend und sequenziell nach dem logischen Sektor 0 gespeichert ist und der logische Sektor k – 1 in dem letzten physikalischen Sektor N – 1 gespeichert ist. Eine Seitenkennung kann verwendet werden, um jeglichen Offset zu identifizieren, wie beispielsweise durch Identifizieren der beginnenden logischen Sektoradresse der in dem ersten physikalischen Sektor des Metablocks gespeicherten Daten.
  • Unter erneuter Bezugnahme auf 3, wenn das Submodul zur Bestimmung der logischen Adresse 306 die Informationen zur Hostausleseanfrage von dem Größenbestimmungssubmodul 304 empfängt, kann das Submodul zur Bestimmung der logischen Adresse 306 die Informationen parsen, um Informationen zur logischen Adresse gemäß einem Abbildungsschema wie beispielsweise der in 7 gezeigten Abbildung zu bestimmen. Beispielhafte Informationen zur logischen Adresse können zumindest eine logische Gruppennummer zusammen mit einem zugeordneten Offset, einer zugeordneten Länge (Größe) und einer zugeordneten Banknummer umfassen. Das Submodul zur Bestimmung der logischen Adresse 306 kann die Informationen zur logischen Adresse als seine Ergebnisausgabe an das Adressenübersetzungshardwaremodul 204 ausgeben, das dann die Informationen zur logischen Adresse verwenden kann, um einen Metablock und/oder den physikalischen Sektor innerhalb des Metablocks, an dem die Daten gespeichert sind, zu identifizieren.
  • Für manche beispielhafte Konfigurationen kann das Submodul zur Bestimmung der logischen Adresse 306 konfiguriert sein, um eine Anzahl von logischen Gruppennummern zu bestimmen, die Teil der Informationen zur logischen Adresse sind. Zusätzlich dazu kann das Submodul zur Bestimmung der logischen Adresse 306 die Anzahl von logischen Gruppennummern mit einer Schwellenanzahl vergleichen. Wenn die Anzahl von logischen Gruppennummern die Schwelle überschreitet, dann kann das Submodul zur Bestimmung der logischen Adresse 306 bestimmen, dass die Hostausleseanfrage das Auslesen einer Datenmenge anfordert, die für die Hardwaremodule 202208 zu groß zur Bearbeitung ist. Als Antwort darauf kann das Submodul zur Bestimmung der logischen Adresse 306 die Informationen zur Hostausleseanfrage an das zentrale Firmwaremodul 210 zur weiteren Verarbeitung senden. Für manche Beispiele kann die Schwellenanzahl eins sein. Das heißt, jegliche Ausleseanfragen, die Daten anfordern, die mehreren logischen Gruppennummern zugeordnet sind, können als Hostausleseanfrage für das Firmwaremodul 210 und nicht die Hardwaremodule 202208 identifiziert werden. Schwellenanzahlen, die nicht eins sein, können möglich sein.
  • Zusätzlich oder alternativ dazu ist für manche beispielhafte Konfigurationen das Größenbestimmungssubmodul 304 möglicherweise nicht als ein Submodul des Front-End-Moduls 202 enthalten, und das Front-End-Modul 202 kann bestimmen, ob eine Hostausleseanfrage eine zu große Datenmenge für die Hardwaremodule 202208 anfordert, basierend nur auf der Anzahl von logischen Gruppennummern, die durch das Submodul zur Bestimmung der logischen Adresse 306 bestimmt sind. Für weitere beispielhafte Konfigurationen kann das Submodul zur Bestimmung der logischen Adresse 306 die Anzahl von logischen Gruppennummern nicht berücksichtigen, und solange das Größenbestimmungssubmodul 304 bestimmt, dass die Größe der angeforderten Daten innerhalb des vorbestimmten Werts liegt, kann das Submodul zur Bestimmung der logischen Adresse 306 die Informationen zur logischen Adresse an das Adressenübersetzungshardwaremodul 204 weitergeben.
  • Erneut auf 1 Bezug nehmend, können die Metablöcke in dem Hauptspeicher 134 intakte Blöcke und Aktualisierungsblöcke umfassen oder als solche gelten. Ein Metablock ist ein intakter Block, wenn er eine logische Gruppe von Daten vollständig (und manchmal sequenziell) speichert, ohne dass jegliche der Daten veraltet sind (d. h., alle N-physikalischen Sektoren der Metaseite speichern N-logische Sektoren von Daten und keiner der Datensektoren ist veraltet). Ein Metablock ist ein Aktualisierungsblock, wenn er einen oder mehrere logische Sektoren von aktualisierten Daten speichert. Wenn ein Aktualisierungsblock nicht vollständig mit aktualisierten Daten gefüllt ist, kann der Aktualisierungsblock offen oder verfügbar sein, um weitere logische Sektoren von aktualisierten Daten, die derselben logischen Gruppe zugeordnet sind, zu empfangen. Wenn ein Aktualisierungsblock vollständig gefüllt ist, kann er geschlossen oder nicht länger verfügbar sein, um weitere logische Sektoren aktualisierter Daten zu empfangen, an welchem Punkt der Aktualisierungsblock ein intakter Block werden kann.
  • Für beispielhafte Konfigurationen des Speichers 132, der sowohl den Hauptspeicher 134 als auch den Binärcache 136 umfasst, können Daten in Binärcacheblöcken des Binärcaches 136 anstatt in Metablöcken des Hauptspeichers 134 gespeichert werden. Der Controller 110 kann konfiguriert sein, um verschiedene Faktoren oder Kriterien zur Bestimmung zu bewerten, ob bestimmte Daten in dem Hauptspeicher 134 oder in dem Binärcache 136 gespeichert werden. Ein Faktor kann umfassen, ob die zu speichernden Daten ein Datenfragment sind. Ein Datenfragment können Daten sein, die eine Größe aufweisen, die niedriger als eine Größe einer Metaseite sind, sodass das Einschreiben der Daten eine Partialseiteneinschreibung darstellen würde. Zur Veranschaulichung soll angenommen werden, dass eine Metaseite acht physikalische Sektoren umfasst. Wenn bestimmte einzuschreibende Daten nur zwei Sektoren umfassen, können diese Daten als ein Datenfragment zur Speicherung in dem Binärcache 136 identifiziert werden. Faktoren verschieden von oder zusätzlich zu der Größe der Daten können verwendet werden, um zu bestimmen, ob Daten in dem Hauptspeicher 134 oder dem Binärcache 136 gespeichert werden. Wenn beispielsweise ein Aktualisierungsblock aktuell für die Daten existiert und für die Speicherung der Daten verfügbar ist, auch wenn die Daten als Datenfragment gelten, kann der Controller 110 bestimmen, die Daten in dem verfügbaren Aktualisierungsblock in dem Hauptspeicher 134 und nicht in dem Binärcache 136 zu speichern.
  • Für manche beispielhafte Konfigurationen können Fragmentheader mit zugeordneten Datenfragmenten in dem Binärcache 136 gespeichert werden. Die Fragmentheader können eine logische Gruppennummer, die die logische Gruppe identifiziert, der das zugeordnete Datenfragment angehört, einen Sektoroffset, der einen bestimmten Sektor innerhalb der logischen Gruppe identifiziert, einen Längenidentifizierer, der eine Länge des zugeordneten Datenfragments identifiziert, und einen oder mehrere Überschreibungsindikatoren oder Flags, die identifizieren, ob das zugeordnete Datenfragment entsprechende in einem Aktualisierungsblock gespeicherte Daten überschreibt, umfassen.
  • Für manche Situationen kann der Controller 110 als Antwort auf eine Hostanfrage, Daten einzuschreiben, die Daten sowohl im Hauptspeicher 134 als auch im Binärcache 136 speichern. Wenn beispielsweise die zu speichernden Daten größer als eine Metaseite sind, kann der Controller 110 einen ersten Abschnitt mit der Größe einer Metaseite in einem Aktualisierungsblock in dem Hauptspeicher 134 speichern und einen zweiten, restlichen Abschnitt der Daten in dem Binärcache 136 speichern. Zur Veranschaulichung soll angenommen werden, dass einzuschreibende Daten neun physikalische Sektoren erfordern. Der Controller 110 kann acht der neun Sektoren der Daten in einem Aktualisierungsblock und den restlichen Sektor von Daten in dem Binärcache 136 speichern.
  • Zusätzlich oder alternativ dazu kann der Controller 110 überlappende Daten in dem Hauptspeicher 134 und dem Binärcache 136 speichern. Zur Veranschaulichung soll angenommen werden, dass der Controller 110 acht Datensektoren in einem Metablock in dem Hauptspeicher 134 als Antwort auf eine erste Hosteinschreibanfrage speichert. Ferner soll angenommen werden, dass der Controller 110 eine zweite Hosteinschreibanfrage für eine Aktualisierung von zwei der acht Sektoren empfängt. Der Controller 110 kann die aktualisierten Daten als Datenfragment in dem Binärcache 136 speichern. Zur weiteren Veranschaulichung kann der Controller 110 eine erste Hosteinschreibanfrage empfangen, in der zwei Sektoren von Daten als ein Datenfragment in dem Binärcache 136 gespeichert sind. Die Steuerung 110 kann dann eine zweite Hosteinschreibanfrage zur Speicherung von acht Sektoren empfangen, von denen zwei einer Aktualisierung der zwei in dem Binärcache 136 gespeicherten Datensektoren dienen können.
  • Alternativ zu einer Speicherung in dem Speicher 132 können manche Daten in dem Controller 110 gespeichert werden, wie beispielsweise in dem Pufferpool 212 oder dem Controllerspeicher 218 (2). Solche Daten können Daten, die temporär innerhalb des Controllers 110 gespeichert werden, bevor sie entweder zu dem Speicher 132 oder dem Hostsystem 101 gesendet werden, oder Daten umfassen, die permanent in dem Controller 110 gespeichert werden sollen.
  • Um nachzuverfolgen, wo in dem Permanentspeichermodul 102 Daten gespeichert sind, kann das Permanentspeichermodul 102 ein Directory-System verwalten, das die Beziehungen oder Zuordnungen zwischen logischen Adressen und physikalischen Adressen abbildet. Das Directory-System kann eine Vielzahl von Adressdatenstrukturen (wie beispielsweise Tabellen, Listen, Logs oder Datenbanken) umfassen, die die logisch-physikalischen Adressenbeziehungen nachverfolgen und identifizieren. Die Vielzahl von Adressdatenstrukturen kann eine primäre Adressdatenstruktur (auch als Gruppenadressentabelle (GAT) bezeichnet) und zumindest eine sekundäre Adressdatenstruktur umfassen. Der Controller 110 kann auf die primären und sekundären Datenstrukturen zugreifen, um zu bestimmen, wo in dem Permanentspeichermodul 102 die aktuellste Version der Daten gespeichert ist.
  • Die primäre Adressdatenstruktur (GAT) kann eine primäre Abbildung für logische Adressen bereitstellen, die in dem logischen Adressenbereich enthalten sind, der durch das Hostsystem 101 erkannt wird. Verschiedene Konfigurationen der Abbildung für die GAT sind möglich. In einer beispielhaften Konfiguration für Flashtechnologie verfolgt die GAT die Abbildung zwischen logischen Gruppen von logischen Sektoren und entsprechenden Metablöcken nach. Die GAT umfasst einen Eintrag für jede logische Gruppe, sequenziell nach logischen Adressen geordnet. Zusätzlich dazu kann die GAT in einer Vielzahl von GAT-Seiten organisiert sein, wobei jede GAT-Seite Einträge umfasst, die eine Metablockadresse für jede logische Gruppe identifiziert.
  • Die zumindest eine sekundäre Adressdatenstruktur kann logisch-physikalische Adressabbildung für in dem Binärcache 136 gespeicherte Datenfragmente, logisch-physikalische Adressabbildung für Änderungen an Daten wie beispielsweise in Aktualisierungsblöcken gespeicherten Daten und/oder einer Kombination davon bereitstellen.
  • Eine beispielhafte sekundäre Adressdatenstruktur, als GAT Delta bezeichnet, kann Änderungen von Einträgen nachverfolgen und/oder eine Auflistung von geänderten Einträgen in den Abbildungen der GAT umfassen. Wie oben beschrieben, wenn Daten neu eingeschrieben werden, kann die neue Version der Daten in einen anderen Teil des Hauptspeichers 134, wie beispielsweise in einen Aktualisierungsblock, eingeschrieben werden. GAT Delta kann in den Aktualisierungsblöcken gespeicherte Daten mit zugeordneten logischen Gruppen abbilden. Für manche beispielhafte Konfigurationen kann GAT Delta Teil einer Master Index Page (MIP) sein, die zusätzlich zu GAT Delta eine Free Block List (FBL) und/oder die GAT umfasst. Die Free Block List kann eine Liste sein, die Blöcke identifiziert, die für die Speicherung von Daten (z. B. für Zuteilung als ein Aktualisierungsblock) verfügbar sind und die später in logische Gruppen abgebildet werden können.
  • Eine weitere sekundäre Adressdatenstruktur kann ein Binary Cache Index (BCI) sein, der Datenfragmente in dem Binärcache 136 nachverfolgt. Der Binary Cache Index kann eine Vielzahl von Binärcacheindizes umfassen, die die logischen Gruppen, denen die Datenfragmente angehören, den physikalischen Orten oder Adressen in dem Binärcache 136, in denen die Datenfragmente gespeichert sind, zuordnen oder sie auf diese abbilden. Für manche beispielhafte Konfigurationen kann der Controller 110 den BCI nach einem gegebenen Datenfragment abfragen und als Antwort einen Pointer oder anderen Identifizierer empfangen, der einen Binärcacheblock und eine Sektornummer zusammen mit einer Länge des Datenfragments identifiziert.
  • Weitere sekundäre Adressdatenstrukturen können möglich sein. Beispielsweise können eine oder mehrere weitere sekundäre Adressdatenstrukturen physikalische Adressen von Daten, die in dem Pufferpool 212 oder dem Controllerspeicher 218 gespeichert sind, mit zugeordneten logischen Gruppen abbilden.
  • Die primären und sekundären Adressdatenstrukturen können in einem beliebigen der Speicher des Permanentspeichermoduls 102, einschließlich des Controllerspeichers 218, des Hauptspeichers 134 und des Binärcaches 136, gespeichert sein. Zusätzlich oder alternativ dazu können manche oder alle der primären und sekundären Adressdatenstrukturen außerhalb des Permanentspeichermoduls 102, wie beispielsweise in dem Hostsystem 101, gespeichert werden. Zusätzlich dazu können für manche beispielhafte Konfigurationen zu einer beliebigen gegebenen Zeit oder für eine beliebige Dauer Kopien einer oder mehrerer der Adressdatenstrukturen oder zumindest von Abschnitten der Adressdatenstrukturen erzeugt werden, sodass für eine gegebene Adressdatenstruktur zwei Versionen bestehen, die an zwei verschiedenen Orten in dem Permanentspeichermodul 102 gespeichert sind. Zur Veranschaulichung kann für eine gegebene Adressdatenstruktur eine Version in dem Speicher 132, entweder in dem Hauptspeicher 134 oder dem Binärcache 136, gespeichert werden und eine weitere kann in dem Controllerspeicher 118 gespeichert werden, wie beispielsweise in einem RAM-Abschnitt des Controllers 118. Zur weiteren Veranschaulichung kann für eine gegebene Adressdatenstruktur eine Version außerhalb des Permanentspeichermoduls 102 gespeichert werden und eine weitere Version kann innerhalb des Permanentspeichermoduls 102, wie beispielsweise in dem Controllerspeicher 218 oder in dem Speicher 132, gespeichert werden. Für manche beispielhafte Konfigurationen kann eine Haupt- oder primäre Version der Adressdatenstruktur in dem Speicher 132 oder in dem Hostsystem 101 gespeichert werden, und wenn der Controller 110 bestimmt, die Adressdatenstruktur abzufragen oder zu aktualisieren, kann der Controller 110 eine Kopie erstellen oder eine zweite Version in dem Controllerspeicher 218 laden. Wenn jegliche Aktualisierungen auf der Kopie durchgeführt werden, kann die in dem Speicher 132 gespeicherte Version ebenso aktualisiert werden. Verschiedene Arten oder Orte, an denen die primären und sekundären Adressdatenstrukturen gespeichert sind, können möglich sein.
  • 8 zeigt ein schematisches Diagramm einer beispielhaften primären und sekundären Adressdatenstrukturanordnung für Flash-Speicher. Wie in 8 gezeigt, kann ein logischer Adressenbereich 802 für alle logischen Blockadressen (LBAs) in einem Hostdateisystem verwaltet werden, das durch das Hostsystem 101 verwendet wird. Diese LBAs können in logische Gruppen (LGs) 804 gruppiert sein. Wie zuvor beschrieben, können bestimmte Datenfragmente 808, die logischen Gruppen 804 zugeordnet sind, in den Binärcache 136 und nicht in den Hauptspeicher 134 eingeschrieben werden. Für die Datenfragmente 808, die in dem Binärcache 136 gespeichert sind, können Binärcacheindizes 806 die logischen Gruppen, denen die Datenfragmente 808 zugeordnet sind, in den Binärcacheblöcken 810 des Binärcaches 136, in dem die Datenfragmente 808 gespeichert sind, abbilden. Wie in 8 angezeigt, können die Binärcacheindizes 806 in dem Speicher (MEM) 132, entweder in dem Hauptspeicher 134 oder in dem Binärcache 136, gespeichert sein. Zusätzlich dazu kann eine Kopie der gesamten oder eines Abschnitts der Binärcacheindizes, identifiziert als BCI-Cache 812 in 8, in einem RAM-Abschnitt 824 des Controllerspeichers 218 aufgrund von häufiger oder kürzlicher Verwendung verwaltet (gecacht) werden. 8 zeigt die in dem RAM 824 verwaltete Kopie der Binärcacheindizes 812, die auf die in den Binärcacheblöcken 810 gespeicherten Datenfragmente 808 zeigt. Die in dem Binärspeicher 132 gespeicherten Binärcacheindizes 806 können ebenso auf in den Binärcacheblöcken 810 gespeicherte Datenfragmente 808 zeigen.
  • Die primäre Adressdatenstruktur (GAT), die GAT-Seiten 814 umfasst, kann in dem Speicher 132 gespeichert sein. Zusätzlich dazu kann eine Kopie mancher oder aller GAT-Seiten 814 zusätzlich zu GAT Delta, zusammen als GAT-Seitencache 816 in 8 identifiziert, in RAM 824 verwaltet (gecacht) werden. Ebenso kann für die in 8 gezeigte beispielhafte Anordnung GAT Delta auch in RAM 824 verwaltet werden, obwohl die gesamte oder ein Abschnitt von GAT Delta zusätzlich oder alternativ dazu in dem Hauptspeicher 134 für weitere beispielhafte Anordnungen gespeichert sein kann. 8 zeigt die GAT-Seiten und GAT Delta 816, die in RAM 824 verwaltet werden, der auf Daten zeigt, die in Aktualisierungs- und intakten Blöcken 818 des Hauptspeichers 134 gespeichert sind. Die in dem Speicher 132 gespeicherten GAT-Seiten 814 können ebenso auf Daten zeigen, die in den Aktualisierungs- und/oder intakten Blöcken 818 gespeichert sind.
  • Zu einer beliebigen gegebenen Zeit können Einträge in der primären Adressdatenstruktur (GAT) eine logische Gruppe möglicherweise nicht an einem physikalischen Ort abbilden, an dem zu der logischen Gruppe gehörende Daten gespeichert sind, und/oder können eine logische Gruppe möglicherweise nicht an einem physikalischen Ort abbilden, an dem die aktuellste Version der zu der logischen Gruppe gehörenden Daten gespeichert ist. Wenn die primäre Adressdatenstruktur eine logisch-physikalische Abbildung aufweist, die veraltet ist, kann zumindest eine der sekundären Adressdatenstrukturen die aktuellste Abbildung bereitstellen. Zusätzlich dazu können die sekundären Adressdatenstrukturen eine oder mehrere Anzeigen bereitstellen, wie beispielsweise durch Pointer oder Zeitstempel, die anzeigen, ob die logisch-physikalische Abbildung zu der aktuellsten Version der Daten abbildet.
  • Damit die Einträge in der primären Adressdatenstruktur so aktuell wie möglich sind, kann der Controller 110 konfiguriert sein, die Abbildungen in der primären Adressdatenstruktur mit den Abbildungen in den sekundären Adressdatenstrukturen zu synchronisieren, sodass die primäre Adressdatenstruktur Abbildungen zu den aktuellsten Versionen der Daten bereitstellt. Allerdings kann zu einer beliebigen gegebenen Zeit eine Hostausleseanfrage empfangen werden, wenn die primäre Adressdatenstruktur nicht mit den sekundären Adressdatenstrukturen synchronisiert worden ist.
  • Um sicherzustellen, dass die Daten, die zum Host zurückgesendet werden, die aktuellste Version sind, kann der Controller 110 konfiguriert sein, um entweder unter Verwendung des Adressenübersetzungsmoduls 204, des zentralen Firmwaremoduls 210 oder einer Kombination der beiden alle oder zumindest eine der sekundären Adressdatenstrukturen abzufragen, bevor die Daten vom Speichermodul 132 abgerufen werden und/oder dem Host geantwortet wird. Beim Abfragen einer ausreichenden Anzahl der primären und/oder sekundären Adressdatenstrukturen kann der Controller 110 die logisch-physikalische Abbildung bestimmen und/oder die physikalische Adresse abrufen, die identifiziert, wo die aktuellste Version der Daten gespeichert ist. So kann der Controller 110 durch eine Abfrage einer ausreichenden Anzahl der sekundären Adressdatenstrukturen und/oder der primären Adressdatenstrukturen sicherstellen, dass die aktuellste Version der Daten zum Hostsystem 101 zurückgesendet wird.
  • Unter Bezugnahme auf 4 kann das Adressenübersetzungshardwaremodul 204 ein sekundäres Adressdatenstrukturabfragemodul 402, das konfiguriert ist, um eine oder mehrere sekundäre Adressdatenstrukturen abzufragen, und ein primäres Adressdatenstrukturabfragemodul 404 umfassen, das konfiguriert ist, um eine primäre Adressdatenstruktur abzufragen. In manchen beispielhaften Konfigurationen können, bevor das sekundäre und primäre Adressdatenstrukturabfragemodul 402, 404 ihre jeweiligen Subprozesse durchführen, die primäre und sekundäre Adressdatenstruktur, welche die Submodule 402, 404 abrufen können, in den Controllerspeicher 218 geladen werden, wie z. B. in einen RAM-Abschnitt des Controllerspeichers 218, wenn sie noch nicht dort gespeichert sind.
  • Das sekundäre Adressdatenstrukturabfragesubmodul 402 kann die Informationen zur logischen Adresse als Ergebniseingabe über die Hardwareeingabeschnittstelle 224 empfangen und kann die Informationen zur logischen Adresse übernehmen, wenn es eine Anzeige über einen erfolgreichen Status bei seiner Statuseingabe detektiert. Unter Verwendung der Informationen zur logischen Adresse kann das sekundäre Adressdatenstrukturabfragesubmodul 402 konfiguriert sein, um alle oder zumindest eine der sekundären Adressdatenstrukturen abzufragen, um zu bestimmen, ob eine logisch-physikalische Abbildung für die Informationen zur logischen Adresse in den sekundären Adressdatenstrukturen vorhanden sind, für deren Abfrage es konfiguriert ist. Beispielhafte sekundäre Adressdatenstrukturen können Datenstrukturen umfassen, die Veränderungen von Einträgen nachverfolgen und/oder eine Auflistung von geänderten Einträgen in den Abbildungen der primären Datenstruktur umfassen, wie z. B. GAT Delta oder MIP wie zuvor beschrieben.
  • Wenn in den abgefragten sekundären Adressdatenstrukturen eine logisch-physikalische Abbildung vorhanden ist, kann das sekundäre Adressdatenstrukturabfragesubmodul 402 einen „Treffer“ identifizieren und die physikalische Adresse, die es identifiziert hat, stromabwärts als Ergebnisausgabe zum primären Adressdatenstrukturabfragesubmodul 404 senden. Aufgrund der inhärenten Natur der sekundären Adressdatenstrukturen, die Veränderungen von Einträgen und logisch-physikalischen Abbildungen von neueren Versionen der Daten identifizieren, kann gegebenenfalls keine Suche in der primären Adressdatenstruktur, z. B. GAT, durchgeführt werden, weil solch eine Suche eine logisch-physikalische Abbildung ergeben kann, die veraltet ist. Demgemäß kann in manchen beispielhaften Konfigurationen, um eine von der primären Adressdatenstruktur 404 durchgeführte Suche zu vermeiden, das sekundäre Adressdatenstrukturabfragesubmodul 402 seine Statusausgabe auf einem „Umgehungspegel" ausgeben, der dem primären Adressdatenstrukturabfragesubmodul 404 anzeigt, dass es von einer Abfrage der primären Adressdatenstruktur absehen soll und die physikalische Adresse, die vom sekundären Adressdatenstrukturabfragesubmodul 402 identifiziert wurde, weiter zum Datenabrufhardwaremodul 206 leiten soll.
  • Alternativ dazu kann, wenn in den sekundären Adressdatenstrukturen, die vom sekundären Adressdatenabfragestruktursubmodul 402 abgefragt werden, keine logisch-physikalische Abbildung vorhanden ist, dann kann das sekundäre Adressdatenstrukturabfragesubmodul 402 die Informationen zur logischen Adresse als Ergebnisausgabe an das primäre Datenstrukturabfragesubmodul 404 schicken. Darüber hinaus kann das sekundäre Adressdatenstrukturabfragesubmodul 402 seine Statusausgabe mit einem Pegel ausgeben, der dem primären Datenstrukturabfragesubmodul 404 anzeigt oder dieses anweist, die Informationen zur logischen Adresse zu übernehmen, die an seinem Ergebniseingang empfangen werden, und eine Abfrage der primären Adressdatenstruktur, z. B. GAT, auszuführen, um eine logisch-physikalische Abbildung zu bestimmen. Wenn das primäre Adressdatenstrukturabfragesubmodul 404 nicht in der Lage ist, eine logisch-physikalische Abbildung zu bestimmen, dann kann das primäre Adressdatenstrukturabfragesubmodul 404 das zentrale Firmwaremodul 210 benachrichtigen, dass das Adressenübersetzungsmodul 204 nicht in der Lage war, eine physikalische Adresse für die Informationen zur logischen Adresse zu bestimmen, die es erhalten hat. Alternativ dazu kann, wenn das primäre Adressdatenstrukturabfragemodul 404 eine physikalische Adresse bestimmt, das primäre Adressdatenstrukturabfragesubmodul 404 die physikalische Adresse als Ergebnisausgabe ausgeben.
  • Bei manchen beispielhaften Konfigurationen kann zumindest eine der sekundären Adressdatenstrukturen nur vom zentralen Firmwaremodul 210 und nicht vom Adressenübersetzungshardwaremodul 204, z. B. dem BCI, abgefragt werden. Eine finale physikalische Adresse, die einer neuersten Version der Daten zugeordnet ist, kann nicht mit ausreichender Sicherheit bestimmt werden, wenn diese sekundäre Datenstruktur nicht vom zentralen Firmwaremodul 210 abgefragt wird. Für diese beispielhaften Konfigurationen kann, wenn das Front-End-Modul 202 erfolgreich Informationen zur logischen Adresse für eine Host-Ausleseanfrage bestimmt, kann das Front-End-Hardwaremodul 202 die Informationen zur logischen Adresse zum zentrale Firmwaremodul 210 senden, sodass das zentrale Firmwaremodul 210 beginnen kann, die sekundäre Adressdatenstrukturen abzufragen, die nicht vom Adressenübersetzungshardwaremodul 204 abgefragt werden.
  • Beim Abfragen der sekundären Adressdatenstrukturen kann, wenn das Firmwaremodul 210 keine physikalische Adresse identifiziert, das Firmwaremodul 210 ein Freigabesignal an das Datenabrufmodul 206 senden, das dem Datenabrufmodul 206 anzeigen kann, dass es die Informationen zur physikalischen Adresse übernehmen soll, die es vom Adressenübersetzungshardwaremodul 204 empfangen hat. Alternativ dazu kann, wenn das Firmwaremodul 210 eine physikalische Adresse identifiziert, das Firmwaremodul 210 konfiguriert sein, um zu bestimmen, ob das Datenabrufhardwaremodul 206 die Daten an der physikalischen Adresse abrufen soll oder ob das Firmwaremodul 210 selbst die Daten abrufen soll. Bei einigen beispielhaften Konfigurationen kann die Bestimmung basierend darauf erfolgen, ob das Firmwaremodul 210 die Daten an der physikalischen Adresse durch Generierung und Ausgabe eines einzelnen Satzes von Datenabrufbefehlen bestimmt. Wenn es in der Lage ist, kann das Firmwaremodul 210 dann die physikalische Adresse an das Datenabrufhardwaremodul 206 senden. Wenn es nicht dazu in der Lage ist, kann das Firmwaremodul 210 entscheiden, selbst die Daten an der physikalischen Adresse abzurufen.
  • Bei einigen beispielhaften Konfigurationen kann das Datenabrufhardwaremodul 206 keine Aktionen ausführen, die dazu führen, dass im Speicher 132 gespeicherte Daten vom Speichermodul 130 zum Controller 110 übertragen werden, ohne dass eine Benachrichtigung vom zentralen Firmwaremodul 210 empfangen wird und eine finale physikalische Adresse, die der neuesten Version der Daten zugeordnet ist, bestätigt wird.
  • Unter Bezugnahme auf 5 kann eine beispielhafte Konfiguration des Datenabrufmoduls 206 ein Submodul zur Bestimmung der aktuellen physikalischen Adresse 502 und ein Kontextbefehlgenerierungssubmodul 504 umfassen. Wenn das Submodul zur Bestimmung der aktuellen physikalischen Adresse 502 oder das Kontextbefehlgenerierungssubmodul 504 nicht in der Lage ist, seine entsprechenden Subprozesse durchzuführen, können sie konfiguriert sein, um das zentrale Firmwaremodul 210 zu benachrichtigen, gemeinsam mit den Informationen zur physikalischen Adresse.
  • Bei einigen beispielhaften Konfigurationen ist die physikalische Adresse, die das Adressenübersetzungshardwaremodul 204 bestimmt, eine abstrakte physikalische Adresse, z. B. eine Metablocknummer. Das Submodul zur Bestimmung der aktuellen physikalischen Adresse 502 kann konfiguriert sein, um die abstrakte physikalische Adresse in eine aktuelle physikalische Adresse umzuwandeln, welche die physikalischen Aspekte des Speichers identifiziert und die in einem Format vorliegen kann, das die Logikschaltung 142 des Speichermoduls 130 verwenden kann, um die Daten abzufühlen. Bei einigen beispielhaften Konfigurationen kann das Submodul zur Bestimmung der aktuellen physikalischen Adresse 502 Register umfassen, um Registermaskierung und -verschiebung durchzuführen, um die aktuelle physikalische Adresse zu bestimmen. Das Submodul zur Bestimmung der aktuellen physikalischen Adresse 502 kann die aktuelle physikalische Adresse als Ergebnisausgabe ausgeben und auch seine Statusausgabe auf einem erfolgreichen Pegel ausgeben.
  • Das Kontextbefehlgenerierungssubmodul 504 kann die aktuelle physikalische Adresse übernehmen, die an seinem Ergebniseingang erhalten wurde, und einen oder mehrere Sätze von Datenabrufbefehlen generieren. Im Allgemeinen können Datenabrufbefehle Kontextbefehle sein, die der Controller 110 ausführt oder an die Logikschaltung 142 ausgegeben werden, um die Daten abzurufen, die das Hostsystem 101 ausgelesen haben möchte. Die Kontextbefehle können in Sätzen generiert werden, wobei jeder Satz einen Abfühlbefehl und einen Datenübertragungsbefehl umfasst. Der Abfühlbefehl kann die Logikschaltung 142 des Speichermoduls 130 anweisen, Daten abzufühlen, die an einer bestimmten aktuellen physikalischen Adresse gespeichert sind, die im Abfühlbefehl identifiziert ist. Der Datenübertragungsbefehl kann generiert werden, um die Daten, die abgefühlt werden, auf dem Bus 146 zum Controller 110 übertragen werden. Je nach Größe der Daten, die ausgelesen werden sollen, und/oder abhängig davon, wie oder wo im Speicher 132 die Daten gespeichert sind, können ein einzelnes Paar oder mehrere Paare von Kontextbefehlen generiert, ausgegeben und/oder ausgeführt werden.
  • Bei einigen beispielhaften Konfigurationen kann das Kontextbefehlgenerierungssubmodul 504 konfiguriert sein, um einen einzelnen Satz von Abfühl- und Datenübertragungskontextbefehlen zu generieren, die mit dem Hostauslesebefehl assoziiert sind. Mit anderen Worten kann, wenn die Informationen zur logischen und/oder physikalischen Adresse angeben, dass mehr als ein einzelner Satz von Abfühl- und Datenübertragungsbefehlen erforderlich ist, um die angefragten Daten abzurufen, solch eine Hostausleseanfrage vom Firmwaremodul 210 anstatt dem Datenabrufhardwaremodul 206 gehandhabt werden.
  • Wie zuvor beschrieben kann es bei einigen beispielhaften Konfigurationen eine oder mehrere sekundäre Adressdatenstrukturen geben, zur Abfrage derer das zentrale Firmwaremodul 210 konfiguriert ist, ohne dass zuerst das Adressenübersetzungsmodul 204 eine Abfrage versucht, wie z. B. eine Abfrage des BCI. Bei diesen Konfigurationen kann das Kontextbefehlgenerierungssubmodul 504 konfiguriert sein, um die Ausgabe zumindest des Datenübertragungsbefehls zu unterlassen, bevor es eine Benachrichtigung vom zentralen Firmwaremodul 210 erhält, ob die Abfrage des Firmwaremoduls 210 der sekundären Datenstruktur eine logisch-physikalische Abbildung ergeben hat. Beispielsweise kann das Kontextbefehlgenerierungssubmodul 504 den Abfühlbefehl ausgeben, wartet aber bis zum Empfang einer Genehmigung vom zentralen Firmwaremodul 210, bevor es den Datenübertragungsbefehl ausgibt. Bei anderen Konfigurationen kann das Kontextbefehlgenerierungssubmodul 504 die Ausgabe von sowohl dem Abfühlbefehl als auch dem Datenübertragungsbefehl zu unterlassen. Wenn das zentrale Firmwaremodul 210 keine logisch-physikalische Abbildung aus der Abfrage identifiziert, dann kann das zentrale Firmwaremodul 210 das Kontextbefehlgenerierungssubmodul 504 benachrichtigen, mit der Ausgabe des Datenübertragungsbefehls fortzufahren. Alternativ dazu kann, wenn das zentrale Firmwaremodul 210 eine logisch-physikalische Adressenabbildung identifiziert, das zentrale Firmwaremodul 210 eine Benachrichtigung an das Kontextbefehlgenerierungssubmodul 504 senden, das verhindert, dass das Kontextbefehlgenerierungssubmodul 504 einen Datenübertragungsbefehl mit der aktuellen physikalische Adresse ausgibt, die vom Submodul zur Bestimmung der aktuellen physikalischen Adresse 502 bestimmt wurde.
  • Bei einigen beispielhaften Konfigurationen kann das zentrale Firmwaremodul 210 eine physikalische Adresse senden, die sie aus seiner Anfrage an das Datenabrufmodul 206 bestimmt hat, wobei das Submodul zur Bestimmung der aktuellen physikalischen Adresse 502 eine neue aktuelle physikalische Adresse bestimmen kann und das Kontextbefehlgenerierungssubmodul 502 unter Verwendung der neuen aktuellen physikalischen Adresse einen oder mehrere neue Sätze von Abfühl- und Datenübertragungsbefehls generieren kann. Alternativ dazu kann das zentrale Firmwaremodul 210 diese Datenabrufaktionen selbst ausführen.
  • Andere Hostausleseanfrageprozesse können vom zentralen Firmwaremodul 210 und/oder vom Kontextbefehlgenerierungssubmodul 504 mit dem Speicherschnittstellenmodul 114 durchgeführt werden, beispielsweise Ablaufsteuerung, Umschaltoperationen, Chipaktivierungen, Nacktchipselektionen beispielsweise, um das Speicherschnittstellenmodul 114 einzurichten, die Abfühl- und/oder Datenübertragungsbefehle an das Speichermodul 130 zu senden, um Daten an einer aktuellen physikalischen Adresse abzurufen, die entweder vom Submodul zur Bestimmung der aktuellen physikalischen Adresse 502 und/oder vom zentralen Firmwaremodul 210 bestimmt wurde. Außerdem kann, wenn der Datenverarbeitungsablauf nur für kurze Auslesungen konfiguriert ist, um das zentrale Firmwaremodul 210 das Speicherschnittstellenmodul 114 spezifisch so konfigurieren, dass es konfiguriert ist, um nur Kontextbefehle für kurze Auslesungen auszugeben, was die Vorbereitungszeit für das für das Speicherschnittstellenmodul 114 beschleunigen kann.
  • Als Antwort auf einen Datenübertragungsbefehl, der dem Speichermodul 130 ausgegeben wird, können Daten, die dem Befehl zugeordnet sind, der abgefühlt wurde, zum Datennachabrufhardwaremodul 208 übertragen werden. Unter Bezugnahme auf 6 kann eine beispielhafte Konfiguration des Datennachabrufhardwaremoduls 208 ein Fehlerkorrekturmodul 602 und ein Dekodiermodul 604 umfassen.
  • Das Fehlerkorrekturmodul 602 kann konfiguriert sein, um Fehleridentifizierung und -korrektur an den Daten auszuführen, die vom Speicher 132 abgerufen werden. Beispielsweise kann das Fehlerkorrekturmodul 602 eine Bitfehlerrate (BER) für die Daten identifizieren. Wenn die Bitfehlerrate unter einer Schwelle liegt, dann kann das Fehlerkorrekturmodul 602 bestimmen, dass die Fehlermenge korrigierbar ist, die Fehler korrigieren und die Daten an das Dekodiermodul 604 übermitteln. Alternativ dazu kann, wenn das Fehlerkorrekturmodul 602 bestimmt, dass die Bitfehlerrate über einer Schwelle liegt, das Fehlerkorrekturmodul 602 bestimmen, dass es nicht in der Lage ist, die Fehler zu korrigieren, und nachfolgende Fehlerbehebungsaktionen können ausgeführt werden, um die Daten wiederherzustellen (z. B. die Daten mit einer Bitfehlerrate unter der Schwelle auszulesen). Verschiedene beispielhafte Fehlerbehebungsaktionen können möglich sein, einschließlich des Betreibens des Fehlerkorrektur-Engines in einem höheren Leistungsmodus, des Erhöhens einer Anzahl an Soft Bits und das Einstellen der Spannungspegel, die an den Speicher angelegt werden, um die Daten abzufühlen, um nichteinschränkende Beispiele zu nennen. Im Allgemeinen kann das Fehlerkorrekturmodul 602 konfiguriert sein, um das zentrale Firmwaremodul 210 in dem Fall zu benachrichtigen, wenn es bestimmt, dass die abgefühlten Daten eine Bitfehlerrate über einem Schwellenwert aufweisen, sodass eine Fehlerbehebung erforderlich ist. Das zentrale Firmwaremodul 210 kann dann einen nachfolgenden Fehlerbehebungs- und -korrekturvorgang ausführen.
  • In dem Fall, dass das Fehlerkorrekturmodul 602 eine Bitfehlerrate unter dem Schwellenwert identifiziert, kann das Fehlerkorrekturmodul 602 die Fehler korrigieren und dann die korrigierten Daten zum Dekodiersubmodul 604 senden. Bei einigen beispielhaften Konfigurationen ist das Dekodieren gegebenenfalls nicht notwendig, in welchem Fall das Fehlerkorrekturmodul 602 seine Statusausgabe auf einen Pegel setzen kann, der dem Dekodiermodul 604 anzeigt, dass es bei Empfang der korrigierten Daten die Dekodierung umgehen soll. Alternativ dazu kann das Fehlerkorrekturmodul 602 die Statuseingabe auf einen Pegel setzen, der bewirkt, dass das Dekodiermodul 604 sich mit den korrigierten Daten verknüpft. Das Dekodiersubmodul 604 kann dann die Daten dekodieren und die dekodierten Daten an den Pufferpool 212 zur vorübergehenden Speicherung ausgeben, bevor sie an das Hostsystem 101 gesendet werden. Das Dekodiermodul 604 kann auch eine Statusausgabe an das Hostschnittstellenmodul 116 senden, um das Hostschnittstellenmodul 116 zu benachrichtigen, dass die Daten im Pufferpool gespeichert sind und bereit sind, an den Host gesendet zu werden. Alternativ dazu kann, wenn das Dekodiersubmodul 604 bestimmt, dass es nicht in der Lage ist, die Daten erfolgreich zu dekodieren, das Dekodiersubmodul das zentrale Firmwaremodul 210 benachrichtigen.
  • Wieder auf 2 zurückkommend kann das zentrale Firmwaremodul 210 konfiguriert sein, um vor Ausführung eines Hostauslesebefehls, z. B. während des Hochfahrens des Permanentspeichermoduls 102, eines oder mehrere der Module 202208 und ihre zugeordneten Submodule mit beliebigen Vorkonfigurationsdaten, z. B. Logikgruppenparametern (z. B. Partitionsgrenzen, Bankteilungsinformationen, Logikgruppengrößenparameter) vorzubereiten oder vorzukonfigurieren und auf beliebige der primären und/oder sekundären Adressdatenstrukturen zuzugreifen und diese in den Controllerspeicher 218 zu laden, um einige Beispiele zu nennen.
  • Darüber hinaus können die Hardwaremodule 202208 und ihre zugeordneten Submodule auf verschiedene andere Weisen modularisiert sein als in den in 26 dargestellten beispielhaften Konfigurationen. Bei einigen beispielhaften Implementierungen können alle oder einige der Hardwaremodule 202206 und ihrer zugeordneten Submodule als Teil eines Kontrollpfads oder eines Kontrollabschnitts des Hostausleseanfrageprozessablaufs gesehen werden, der jene Hostausleseanfrageprozesse umfassen kann, die durchgeführt werden, um Daten aus dem Speicher abzurufen, während das Datennachabrufhardwaremodul 208 und seine zugeordneten Submodule als Teil eines Datenpfads oder Datenabschnitts des Hostausleseanfrageprozessablaufs gesehen werden können, der jene Hostausleseanfrageprozesse umfassen kann, die an den Daten durchgeführt werden, nachdem die Daten aus dem Speicher 132 abgerufen wurden, und um sicherzustellen, dass die Daten zur Übertragung an das Hostsystem 101 bereit sind. Verschiedene Modularisierungsanordnungen können den Kontroll- und Datenabschnitten des Hostausleseanfrageprozessablaufs entsprechen. Beispielsweise können einige beispielhafte Konfigurationen des Controllers 110 Hardwaremodule für den Kontrollpfad umfassen, aber nicht für den Datenpfad, oder umgekehrt. Andere Wege, um einen Hardwareprozessablauf für Hostausleseanfragen zu modularisieren, können ebenfalls möglich sein.
  • Darüber hinaus können, obwohl die Modularisierungskonfigurationen für die Ausführung von Hostausleseanfragen beschrieben sind, ähnliche Modularisierungsschemata für andere Speicherverwaltungsoperationen ausgeführt werden, wie z. B. die Ausführung von Hosteinschreibanfragen.
  • 9 zeigt ein Blockdiagramm einer weiteren beispielhaften Konfiguration von Komponenten des Controllers, die zur Ausführung einer Hostausleseanfrage eingesetzt wird. Ähnlich wie bei den Hardwaremodulen 202208, die unter Bezugnahme auf 2 dargestellt und beschrieben sind, kann die in 9 dargestellte beispielhafte Konfiguration eine Vielzahl von Hostanfragemodulen umfassen, einschließlich eines Front-End-Moduls 902, eines Adressenübersetzungsmoduls 904, eines Datenabrufmoduls 906 und eines Datennachabrufmoduls 908. Im Gegensatz zu der in 2 dargestellten beispielhaften Konfiguration, die eine Vielzahl von Hardwaremodulen 202208 in Kommunikation mit einem zentralen Firmwaremodul 210 aufweist, kann jedes der Hostanfragemodule 902908 sowohl ein Hardwaremodul als auch ein lokales Firmwaremodul 910 umfassen.
  • Wie in 9 dargestellt kann jedes der Hostanfragemodule 902908 eine Eingabeschnittstelle (I/P I/F) 924 und eine Ausgabeschnittstelle (O/P I/F) 926 umfassen, um mit den anderen Modulen 902908 sowie mit einer High-Level-Firmware 950, dem Hostschnittstellenmodul 116 und dem Speicherschnittstellenmodul 114 unter Verwendung eines Kommunikationsbusses 952 zu kommunizieren. Das High-Level-Firmwaremodul 950 kann andere Speicherverwaltungsfunktionen steuern und/oder ausführen, z. B. die Ausführung von Hostausleseanfragen, das Antworten auf Statusanfragen, das Ausführen von Speicherverschiebungen (z. B. Speicherbereinigung) und das Verwalten von Adressenregistern, um nicht einschränkende Beispiele zu nennen.
  • Das Front-End-Modul 902 ist so dargestellt, dass es Hardware(HW)-Module 930(1), 930(2) und 930(3) umfasst, die dem Befehlstyp-ID-Submodul 302, dem Größenbestimmungssubmodul 304 bzw. dem Submodul zur Bestimmung der logischen Adresse 306 entsprechen. Das Adressenübersetzungsmodul 904 ist so dargestellt, dass es Hardwaremodule 932(1) und 932(2) umfasst, die dem sekundären Adressdatenstrukturabfragesubmodul 402 bzw. dem primären Adressdatenstrukturabfragesubmodul 404 entsprechen können. Das Datenabrufmodul 906 ist so dargestellt, dass es Hardwaremodule 934(1) und 934(2) umfasst, die dem Submodul zur Bestimmung der aktuellen physikalischen Adresse 502 bzw. dem Kontextbefehlgenerierungssubmodul 504 entsprechen können. Das Datennachabrufmodul 908 ist so dargestellt, dass es Hardwaremodule 936(1) und 936(2) umfasst, die dem Fehlerkorrekturmodul 602 bzw. dem Dekodiersubmodul 604 entsprechen können.
  • Wenn eine Hostausleseanfrage empfangen wird, kann sie vom Hostschnittstellenmodul 116 zum Front-End-Modul 902 gesendet werden. Das Front-End-Modul 902 kann die Hostausleseanfrage unter Verwendung des Hardwaremoduls 930, des lokalen Firmwaremoduls 910 oder einer Kombination davon verarbeiten. Wenn das Front-End-Modul 902 die Verarbeitung der Hostausleseanfrage beendet, kann es Informationen zur logischen Adresse zum Adressenübersetzungsmodul 904 senden, das sein Hardwaremodul 932, sein lokales Firmwaremodul 910 oder eine Kombination davon verwenden kann, um die Informationen zur logischen Adresse in Informationen zur physikalischen Adresse zu übersetzen. Wenn das Adressenübersetzungsmodul fertig ist, kann das Adressenübersetzungsmodul 904 die Informationen zur physikalischen Adresse ab das Datenabrufmodul 906 ausgeben. Das Datenabrufmodul 906 kann unter Verwendung des Hardwaremoduls 934, seines lokalen Firmwaremoduls 910 oder einer Kombination davon einen oder mehrere Sätze von Kontextbefehlen generieren, um Daten abzurufen, die sie an einer aktuellen physikalischen Adresse im Speicher befinden. Das Datenabrufmodul 906 kann die Kontextbefehle an das Speicherschnittstellenmodul 114 übermitteln, das die Kontextbefehle an das Speichermodul 130 senden kann (1). Als Antwort kann das Speichermodul 130 die Daten zurück an den Controller 110 (1), durch die Speicherschnittstelle 114 an das Datennachabrufmodul 908 senden. Als Antwort kann das Datenabrufmodul 908 unter Verwendung des Hardwaremoduls 936, seines lokalen Firmwaremoduls 910 oder einer Kombination davon Postdatenabrufprozesse durchführen, wie z. B. Fehlerkorrektur und/oder Dekodierung. Bei einigen beispielhaften Konfigurationen kann sich der Pufferpool 212 (2) im Datennachabrufmodul 908 befinden, und das Hostschnittstellenmodul 116 kann mit dem Datennachabrufmodul 908 kommunizieren, um die Daten an das Hostsystem 101 zu übermitteln (1).
  • Bei einigen beispielhaften Konfigurationen kann das Permanentspeichermodul 102 mit dem Hostsystem 101 implementiert sein, indem es eine eingebettete Vorrichtung des Hostsystems 101 ist, oder es kann trennbar mit dem Hostsystem 101 verbunden sein. 10A und 10B zeigen diese Implementierungen. Wie in 10A dargestellt kann das Permanentspeichermodul 102 im Hostsystem 101 eingebettet sein. Zusätzlich zu einer Einbettung des Permanentspeichermoduls 102 kann das Hostsystem 101 auch einen Hostcontroller 1020 aufweisen. Das bedeutet, dass das Hostsystem 101 den Hostcontroller 1020 und das Permanentspeichermodul 102 verkörpern kann, sodass der Hostcontroller 1020 eine Schnittstelle mit dem eingebetteten Permanentspeichermodul 102 aufweist, um seine Operationen zu verwalten. Beispielsweise kann das Permanentspeichermodul 102 die Form eines iNANDTM-eSD/eMMC-Embedded-Flashlaufwerks von SanDisk Corporation aufweisen. Der Hostcontroller 1020 kann eine Schnittstelle mit dem eingebetteten Permanentspeichermodul 102 unter Verwendung der Hostschnittstelle 116 aufweisen (1). Darüber hinaus können, wenn das Permanentspeichermodul 102 im Hostsystem 101 eingebettet ist, einige oder alle der vom Controller 110 im Permanentspeichermodul 102 ausgeführten Funktionen stattdessen vom Hostcontroller 1020 ausgeführt werden.
  • Das Hostsystem 1010 kann jede beliebige Form haben, beispielsweise, ohne Einschränkung, ein Solid State Drive (SSD), ein Hybridpermanentspeichermodul (mit sowohl einem Festplattenlaufwerk als auch einem Solid-State-Laufwerk), ein Zwischenspeichersystem, ein Mobiltelefon, ein Tabletcomputer, ein digitales Medienabspielgerät, ein Spielgerät, ein persönlicher digitaler Assistent (PDA), ein mobiler (z. B. Notebook, Laptop) Personalcomputer (PC) oder ein Buchlesegerät, um einige Beispiele zu nennen. Wie in 10A dargestellt ist, kann das Hostsystem 101 optionale weitere Funktionalitätsmodule 1030 umfassen. Wenn beispielsweise das Hostsystem 101 ein Mobiltelefon ist, können die weiteren Funktionalitätsmodule 1030 Hardware- und/oder Softwarekomponenten für Telefonanrufe umfassen. Als weiteres Beispiel weist das Hostsystem 101 Netzwerkverbindungsfähigkeiten auf, die weiteren Funktionalitätsmodule 1030 können eine Netzwerkschnittstelle umfassen. Dies sind lediglich einige Beispiele und andere Implementierungen können verwendet werden. Außerdem kann das Hostsystem 101 weitere Komponenten umfassen (z. B. einen Audioausgang, Eingabe-Ausgabe-Anschlüsse usw.), die in 10A der Einfachheit der Zeichnung halber nicht dargestellt sind.
  • In einer alternativen Konfiguration, die in 10B dargestellt ist, kann das Permanentspeichermodul 102, anstatt eine eingebettete Vorrichtung in einem Hostsystem zu sein, physikalische und elektrische Steckverbindungen aufweisen, die eine lösbare Verbindung des Permanentspeichermoduls 102 mit dem Hostsystem 101 (einschließlich eines Hostcontrollers 1045) mittels Gegenstecker ermöglichen. Daher kann das Permanentspeichermodul 102 eine separate Vorrichtung vom Hostsystem 101 sein (und ist nicht darin eingebettet). In diesem Beispiel kann das Permanentspeichermodul 102 eine abnehmbare Speichervorrichtung sein, wie z. B. eine Secure-Digital(SD)-Speicherkarte, eine MicroSD-Speicherkarte, eine Compact-Flash(CF)-Speicherkarte oder eine universelle serielle Busvorrichtung (USB) (mit einer USB-Schnittstelle zum Host) sein, und das Hostsystem 102 ist eine separate Vorrichtung, wie z. B. ein Mobiltelefon, ein Tabletcomputer, ein digitales Medienabspielgerät, ein Spielgerät, ein persönlicher digitaler Assistent (PDA), eine mobiler (z. B. Notebook, Laptop) Personalcomputer (PC) oder ein Buchlesegerät, um einige Beispiele zu nennen.
  • Darüber hinaus kann, unter Bezugnahme auf 1, der Speicher 132 eine Halbleiterspeichervorrichtung sein, die flüchtige Speichervorrichtungen, wie etwa dynamische Direktzugriffspeicher-(„DRAM“) oder statische Direktzugriffsspeicher-(„SRAM“) Vorrichtungen, nichtflüchtige Speichervorrichtungen, wie etwa resistive Direktzugriffsspeicher („ReRAM“), elektrisch löschbare programmierbare Festwertspeicher („EEPROM“), Flashspeicher (die auch als Untergruppe von EEPROM gesehen werden können), ferroelektrische Direktzugriffsspeicher („FRAM“) und magnetoresistive Direktzugriffsspeicher („MRAM“) und andere Halbleiterelemente, die zur Speicherung von Informationen in der Lage sind, umfassen. Jede Art von Speichervorrichtung kann verschiedene Konfigurationen aufweisen. Beispielsweise können Flashspeichervorrichtungen in einer NAND- oder NOR-Konfiguration konfiguriert sein.
  • Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen bestehen. Als nicht einschränkende Beispiele umfassen passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente, die in manchen Ausführungsformen ein Widerstandsumschaltungsspeicherelement, wie z. B. Antifuse, Phasenänderungsmaterial usw. umfassen, und gegebenenfalls ein Steuerelement, wie z. B. eine Diode usw. Weiters umfassen aktive Halbleiterspeicherelemente als nicht einschränkende Beispiele EEPROM- und Flashspeichervorrichtungselement, die in manchen Ausführungsformen Elemente umfassen, die einen Ladungsspeicherbereich umfassen, wie z. B. ein Floating Gate, leitende Nanopartikel oder ein dielektrisches Ladungsspeichermaterial.
  • Mehrere Speicherelemente können so konfiguriert sein, dass sie in Reihe geschaltet sind, oder so, dass jedes Element einzeln zugänglich ist. Als nicht einschränkende Beispiele können Flashspeichervorrichtungen in einer NAND-Konfiguration (NAND-Speicher) typischerweise in Reihe geschaltete Speicherelemente enthalten. Ein NAND-Speicher kann so konfiguriert sein, dass die Anordnung aus mehreren Speicherketten besteht, in denen eine Kette aus mehreren Speicherelementen besteht, die sich eine einzelne Bitleitung teilen und auf die als Gruppe zugegriffen wird. Alternativ dazu können Speicherelemente so konfiguriert sein, dass jedes Element einzeln zugänglich ist, z. B. eine NOR-Speicheranordnung. NAND- und NOR-Speicherkonfigurationen sind Beispiele und Speicherelemente können auch anders konfiguriert sein.
  • Die Halbleiterspeicherelemente, die sich in und/oder über einem Substrat befinden, können in zwei oder drei Dimensionen angeordnet sein, wie z. B. in einer zweidimensionalen Speicherstruktur oder in einer dreidimensionalen Speicherstruktur.
  • In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzigen Ebene oder auf einer einzigen Speichervorrichtungsebene angeordnet. Typischerweise sind Speicherelemente in einer zweidimensionalen Speicherstruktur in einer Ebene (z. B. in einer x-z-Richtungsebene) angeordnet, die sich im Wesentlichen parallel zu einer Hauptfläche eines Substrats erstreckt, das die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Speicherelemente ausgebildet ist, oder es kann ein Trägersubstrat sein, das mit den Speicherelementen verbunden wird, nachdem sie ausgebildet wurden. Als nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie Silicium umfassen.
  • Die Speicherelemente können in der einzelnen Speichervorrichtungsebene in einer geordneten Anordnung angeordnet sein, wie z. B. in einer Vielzahl von Reihen und/oder Spalten. Die Speicherelemente können aber auch in nicht regelmäßigen oder nicht orthogonalen Konfigurationen angeordnet sen. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen, wie z. B. Bitleitungen und Wortleitungen, aufweisen.
  • Eine dreidimensionale Speicheranordnung ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsebenen einnehmen und dadurch eine Struktur in drei Dimensionen bilden (d. h. in der x-, y- und z-Richtung, wobei die y-Richtung im Wesentlichen orthogonal und die x- und z-Richtung im Wesentlichen parallel zur Hauptfläche des Substrats ist).
  • Als nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als Stapel aus mehreren zweidimensionalen Speichervorrichtungsebenen angeordnet sein. Als weiteres nicht einschränkendes Beispiel kann eine dreidimensionale Speicheranordnung als mehrere vertikale Säulen angeordnet sein (z. B. Säulen, die sich im Wesentlichen orthogonal zur Hauptfläche des Substrats erstrecken, d. h. in die y-Richtung), wobei jede Säule mehrere Speicherelemente aufweist. Die Säulen können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-z-Ebene, was zu einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen führt. Andere Konfigurationen von Speicherelementen in drei Dimensionen können ebenfalls eine dreidimensionale Speicheranordnung bilden.
  • Als nicht einschränkendes Beispiel können die Speicherelemente in einer dreidimensionalen NAND-Speicheranordnung miteinander verbunden sein, um eine NAND-Kette in einer einzelnen horizontalen (z. B. x-z-)Speichervorrichtungsebene zu bilden. Alternativ dazu können die Speicherelemente miteinander verbunden sein, um eine vertikale NAND-Kette zu bilden, die mehrere horizontale Speichervorrichtungsebenen durchquert. Andere dreidimensionale Konfigurationen können vorgesehen sein, worin einige NAND-Ketten Speicherelemente in einer einzigen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die mehrere Speicherebenen überspannen. Dreidimensionale Speicheranordnungen können auch in einer NOR-Konfiguration und in einer ReRAM-Konfiguration entworfen werden.
  • Typischerweise werden in einer monolithischen dreidimensionalen Speicheranordnung eine oder mehrere Speichervorrichtungsebenen über einem einzigen Substrat ausgebildet. Gegebenenfalls kann die monolithische dreidimensionale Speicheranordnung auch eine oder mehrere Speicherschichten zumindest teilweise innerhalb eines einzigen Substrats aufweisen. Als nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie Silicium umfassen. In einer monolithischen dreidimensionalen Anordnung sind die Schichten, die die einzelnen Speichervorrichtungsebenen der Anordnung bilden, typischerweise auf den Schichten der darunterliegenden Speichervorrichtungsebenen der Anordnungen ausgebildet. Schichten von benachbarten Speichervorrichtungsebenen einer monolithischen dreidimensionalen Speicheranordnung können aber auch geteilt werden oder dazwischenliegende Schichten zwischen Speichervorrichtungsebenen aufweisen.
  • Zweidimensionale Anordnungen können wiederum separat ausgebildet und dann zusammen eingehaust werden, um eine nicht monolithische Speichervorrichtung mit mehreren Speichervorrichtungen zu bilden. Beispielsweise können nicht monolithische, gestapelte Permanentspeicher hergestellt werden, indem Speicherebenen auf separaten Substraten ausgebildet werden und die Speicherebenen dann übereinander gestapelt werden. Die Substrate können vor dem Stapeln verdünnt oder von den Speichervorrichtungsebenen genommen werden, aber da die Speichervorrichtungsebenen anfangs über separaten Substraten ausgebildet werden, sind die resultierenden Speicheranordnungen keine monolithischen dreidimensionalen Speicheranordnungen. Darüber hinaus können mehrere zweidimensionale Speicheranordnungen oder dreidimensionale Speicheranordnungen (monolithisch oder nicht monolithische) auf separaten Chips ausgebildet werden und dann gemeinsam eingehaust werden, um eine Speichervorrichtung mit gestapelten Chips herzustellen.
  • Typischerweise ist eine zugeordnete Schaltung für den Betrieb der Speicherelemente und für die Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen eine Schaltung aufweisen, die zur Regelung und Ansteuerung von Speicherelementen verwendet wird, um Funktionen wie Programmieren und Auslesen auszuführen. Diese zugeordnete Schaltung kann sich auf demselben Substrat befinden wie die Speicherelemente und/oder auf einem separaten Substrat. Beispielsweise kann sich ein Controller für Speicherauslese-/-einschreiboperationen auf einem separaten Controllerchip und/oder auf demselben Substrat wie die Speicherelemente befinden.
  • Fachleute auf dem Gebiet der Erfindung werden erkennen, dass diese Erfindung nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt, sondern alle relevanten Speicherstrukturen innerhalb des Geistes und Schutzumfangs der Erfindung wie hierin beschrieben und wie von Fachleuten auf dem Gebiet der Erfindung verstanden umfasst.
  • 11 ist ein Ablaufdiagramm eines beispielhaften Verfahrens 1100 zur Initiierung der Ausführung einer Hostausleseanfrage mit einem Front-End(FE)-Moduleines Controllers eines Permanentspeichermoduls. Der Controller kann eine Vielzahl von Hardwaremodulen in einem Hardwarepfad umfassen, die konfiguriert sind, um Prozesse zur Ausführung der Hostausleseanfrage durchzuführen. Der Controller kann auch ein Firmwaremodul umfassen, das ebenfalls konfiguriert ist, um Prozesse durchzuführen, um die Hostausleseanfrage auszuführen. Bei Block 1102 kann ein Hostschnittstellenmodul (HIM) des Controllers einen Hostbefehl empfangen und den Hostbefehl zum Front-End-Modul senden. Bei Block 1104 kann das Front-End-Modul des Hostbefehl den Hostbefehl auf Informationen parsen, die im Hostbefehl enthalten sind. Bei Block 1106 kann das Front-End-Modul identifizieren, ob der Hostbefehl eine Ausleseanfrage ist. Wenn der Hostbefehl keine Hostausleseanfrage ist, dann kann bei Block 1108 das Front-End-Modul die Hostanfrage an das Firmwaremodul für nachfolgende Verarbeitung senden. Alternativ dazu kann, wenn bei Block 1106 der Hostbefehl eine Hostausleseanfrage ist, bei Block 1110 das Front-End-Modul bestimmen, ob die Hostausleseanfrage eine Anfrage nach Daten mit einer Größe ist, die einen Schwellenwert oder eine Größengrenze nicht überschreiten. Wenn das der Fall ist, dann kann das Front-End-Modul bei Block 1112 die Hostausleseanfrage an das Firmwaremodul zur nachfolgenden Verarbeitung senden. Alternativ dazu kann, wenn die Daten, die ausgelesen werden sollen, innerhalb der Größengrenze liegen, bei Block 1114 das Front-End-Modul bestimmen, die Ausführung der Hostausleseanfrage mit dem Hardwaremodule im Hardwarepfad zu starten.
  • 12 ist ein Ablaufdiagramm eines beispielhaften Verfahrens 1200 zur Übersetzung einer logischen Adresse in eine physikalische Adresse als Antwort auf den Start der Ausführung einer Hostausleseanfrage in einem Hardwarepfad. Bei Block 1202 kann ein Front-End-Modul die Ausleseanfrage parsen, um Informationen zur logischen Adresse zu bestimmen, die in der Hostausleseanfrage identifizierst sind. Bei Block 1204 kann, wenn das Front-End-Modul nicht in der Lage ist, die Informationen zur logischen Adresse erfolgreich zu bestimmen, bei Block 1206 das Front-End-Modul die Hostausleseanfrage zum Firmwaremodul senden. Alternativ dazu kann, wenn das Front-End-Modul in der Lage ist, die Informationen zur logischen Adresse erfolgreich zu bestimmen, bei Block 1208 das Front-End-Modul Informationen zur logischen Adresse zu einem Adressenübersetzungshardwaremodul (ATHM) im Hardwarepfad senden. Darüber hinaus kann bei Block 1208 das Front-End-Modul die Informationen zur logischen Adresse zum Firmwaremodul senden, wenn es eine sekundäre Adressdatenstruktur gibt, die exklusiv für die Abfrage durch das Firmwaremodul bezeichnet ist.
  • Bei Block 1210 kann, als Antwort auf den Empfang der Informationen zur logischen Adresse, das Adressenübersetzungshardwaremodul die sekundäre Adressdatenstruktur abrufen, um eine logisch-physikalische Abbildung für die Informationen zur logischen Adresse zu bestimmen. Bei Block 1212 kann, wenn die Abfrage erfolgreich und das Adressenübersetzungshardwaremodul eine logisch-physikalische Abbildung bestimmt, bei Block 1214 das Adressenübersetzungshardwaremodul bestimmen, darauf zu verzichten, eine primäre Adressdatenstruktur abzufragen und eine physikalische Adresse, die der Abbildung zugeordnet ist, an ein Datenabrufhardwaremodul (DRHM) zur nachfolgenden Verarbeitung zu senden.
  • Alternativ dazu kann wenn das Adressenübersetzungshardwaremodul keine logisch-physikalische Abbildung bestimmt, bei Block 1216 das Adressenübersetzungshardwaremodul eine primäre Adressdatenstruktur abfragen. Bei Block 1218 kann, wenn das Adressenübersetzungshardwaremodul eine logisch-physikalische Abbildung durch Abfragen der primären Adressdatenstruktur bestimmt, das Verfahren mit Block 1214 fortsetzen, bei dem das Adressenübersetzungshardwaremodul eine physikalische Adresse, die der logisch-physikalischen Abbildung zugeordnet ist, zum Datenabrufhardwaremodul zu senden. Alternativ dazu kann bei Block 1218, wenn das Adressenübersetzungshardwaremodul keine logisch-physikalische Abbildung durch Abfragen der primären Adressdatenstruktur bestimmt, bei Block 1220 das Adressenübersetzungshardwaremodul das Firmwaremodul benachrichtigen, dass es nicht in der Lage war, erfolgreich eine Adressenübersetzung durchzuführen und eine physikalische Adresse durch Abfragen der sekundären und primären Datenstruktur zu bestimmen.
  • 13 ist ein Flussdiagramm eines beispielhaften Verfahrens 1300 zum Abrufen von Daten, die im Speicher gespeichert sind, mit einem Datenabrufhardwaremodul (DRHM) auf einem Hardwarepfad und einem Firmwaremodul. Bei Block 1302 kann das Datenabrufhardwaremodul eine physikalische Adresse von einem Adressenübersetzungshardwaremodul empfangen. Bei Block 1304 kann das Datenabrufhardwaremodul versuchen, die physikalische Adresse, die vom Adressenübersetzungshardwaremodul empfangen wurde, bei der es sich um eine abstrakte Adresse handeln kann, in eine aktuelle physikalische Adresse umzuwandeln. Bei Block 1306 kann, wenn die Umwandlung nicht erfolgreich ist, bei Block 1308 das Datenabrufhardwaremodul das Firmwaremodul benachrichtigen, dass es nicht in der Lage ist, die Umwandlung auszuführen. Alternativ dazu kann, wenn die Umwandlung erfolgreich ist, das Datenabrufhardwaremodul konfiguriert sein, um bei Block 1310 einen Satz von Abfühl- und Datentransferkontextbefehlen für die aktuelle physikalische Adresse zu generieren.
  • Bei Block 1312 kann das Datenabrufhardwaremodul den Abfühlbefehl zum Speicher ausgeben, um die Daten abzufühlen, die sich an der aktuellen physikalischen Adresse befinden. Bei Block 1314 kann das Datenabrufhardwaremodul bestimmen, ob die aktuelle physikalische Adresse, die es basierend auf der physikalischen Adresse bestimmt, die vom Adressenübersetzungshardwaremodul erhalten wurde, eine finale aktuelle physikalische Adresse ist. Bei einigen beispielhaften Verfahren kann das Datenabrufhardwaremodul die Bestätigung basierend auf Informationen vornehmen, die vom Firmwaremodul empfangen wurden. Beispielsweise kann, um wieder auf das Verfahren 1200 in 12 zurückzukommen, bei Block 1208 das Front-End-Modul Informationen zur logischen Adresse zum Firmwaremodul senden, die das Firmwaremodul zum Abfragen einer sekundären Datenstruktur verwenden kann, die ausschließlich für das Firmwaremodul verfügbar ist. Um wieder auf das Verfahren 1300 aus 13 zurückzukommen, kann, wenn das Firmwaremodul keine logisch-physikalische Abbildung bestimmen konnte, bei Block 1314 das Datenabrufhardwaremodul bestimmen, dass die aktuelle physikalische Adresse, die es basierend auf der physikalischen Adresse bestimmt hat, die vom Adressenübersetzungshardwaremodul empfangen wurde, korrekt ist. Als Antwort kann bei Block 1316 das Datenabrufhardwaremodul den Datenübertragungsbefehl ausgeben, dass die abgefühlten Daten an den Controller übertragen werden sollen. Alternativ dazu kann, wenn das Firmwaremodul eine logisch-physikalische Abbildung basierend auf seiner Abfrage bestimmt hat, bei Block 1318 das Datenabrufhardwaremodul eine neue physikalische Adresse vom Firmwaremodul empfangen, die neue physikalische Adresse in eine aktuelle physikalische Adresse umwandeln und erneut Kontextbefehle mit der neuen aktuellen physikalische Adresse generieren. Bei Block 1320 kann das Datenabrufhardwaremodul die neuen Kontextbefehle ausgeben, damit die Daten abgefühlt und übertragen werden.
  • 14 ist ein Flussdiagramm eines beispielhaften Verfahrens 1400 zum Verarbeiten von Daten, nachdem sie mit einem Datennachabrufhardwaremodul (PDRHM) und einem Firmwaremodul vom Speicher abgerufen wurden. Bei Block 1402 kann das Datennachabrufhardwaremodul die Daten vom Speicher empfangen. Bei Block 1404 kann das Datennachabrufhardwaremodul eine anfängliche Fehleridentifikation auszuführen, um zu bestimmen, ob eine Bitfehlerrate, die den Auslesedaten zugeordnet ist, unter eine Schwelle liegt. Bei Block 1406 kann, wenn die Bitfehlerrate nicht unter dem Schwellenwert liegt, bei Block 1408 das Datennachabrufhardwaremodul die Daten an das Firmwaremodul senden, um eine Fehlerbehebung auszuführen, um die Daten mit einer Bitfehlerrate unter der Schwelle zu retten und auszulesen. Alternativ dazu kann, wenn bei Block 1406 die Bitfehlerrate unter der Schwelle liegt, bei Block 1410 das Datennachabrufhardwaremodul die Fehler in den Daten korrigieren. Bei Block 1412 kann das Datennachabrufhardwaremodul eine Dekodierung ausführen. Wenn bei Block 1414 das Datennachabrufhardwaremodul in der Lage ist, erfolgreich die Daten zu dekodieren, dann kann bei Block 1416 das Datennachabrufhardwaremodul die dekodierten Daten zur vorübergehenden Speicherung zu einem Pufferpool senden, bevor sie zum Host gesendet werden. Alternativ dazu kann, wenn bei Block 1414 das Datennachabrufhardwaremodul nicht in der Lage ist, erfolgreich die Daten zu dekodieren, bei Block 1418 das Datennachabrufhardwaremodul die Daten zum Firmwaremodul senden, um die Daten zu dekodieren.
  • Es ist vorgesehen, dass die vorstehende ausführliche Beschreibung als Veranschaulichung ausgewählter Formen zu verstehen ist, in denen die Ausführungsformen vorliegen können, und nicht als Einschränkung der nachfolgenden Ansprüche vorgesehen ist. Außerdem kann in einigen der nachfolgenden Ansprüche angegeben sein, dass ein Bauteil betriebsfähig ist, um eine bestimmte Funktion auszuführen, oder für eine bestimmte Aufgabe konfiguriert ist. Es gilt jedoch anzumerken, dass dies keine restriktiven Einschränkungen sind. Außerdem ist anzumerken, dass die in den Ansprüchen angeführten Vorgänge in jeder beliebigen Reihenfolge ausgeführt werden können – nicht notwendigerweise in der Reihenfolge, in der sie angeführt sind. Darüber hinaus kann jeder Aspekt beliebiger der hierin beschriebenen bevorzugten Ausführungsformen alleine oder in Kombination mit anderen umgesetzt werden. Zusammengefasst sind, auch wenn die vorliegende Erfindung unter Bezugnahme auf bestimmte Ausführungsformen davon in beträchtlichem Detail beschrieben wurde, auch andere Versionen möglich. Daher sollte der Geist und Schutzumfang der beiliegenden Ansprüche nicht durch die hierin enthaltene Beschreibung der Ausführungsformen eingeschränkt sein.

Claims (24)

  1. Permanentspeichermodul, umfassend: zumindest einen Speicher; und einen Controller in Kommunikation mit dem zumindest einen Speicher, wobei der Controller umfasst: einen Hardwarepfad, der eine Vielzahl von Hardwaremodulen umfasst, die konfiguriert sind, um eine Vielzahl von der Ausführung von Hostausleseanfragen zugeordneten Prozessen durchzuführen; und ein Firmwaremodul, umfassend: in dem zumindest einen Speicher gespeicherte Firmware; und einen Prozessor, der konfiguriert ist, um die Firmware auszuführen, um zumindest manche der Vielzahl von der Ausführung von Hostausleseanfragen zugeordneten Prozessen durchzuführen; und ein Front-End-Modul, das konfiguriert ist, um: einen Hostbefehl zu empfangen; als Antwort auf das Empfangen des Hostbefehls zu bestimmen, ob die Ausführung des Hostbefehls entlang des Hardwarepfads oder mit dem Firmwaremodul gestartet wird.
  2. Permanentspeichermodul nach Anspruch 1, wobei das Front-End-Modul konfiguriert ist, um als Antwort auf eine Identifikation, dass der Hostbefehl eine Hostausleseanfrage zum Auslesen von in dem zumindest einen Speicher gespeicherten Daten ist, zu bestimmen, mit der Ausführung des Hostbefehls entlang des Hardwarepfads zu starten.
  3. Permanentspeichermodul nach Anspruch 2, wobei das Front-End-Modul ferner konfiguriert ist, um die Ausführung der Hostausleseanfrage entlang des Hardwarepfads zu starten, wenn eine Größe der Daten eine Schwellenmenge nicht überschreitet.
  4. Permanentspeichermodul nach Anspruch 3, wobei die Schwellenmenge einer Maximalmenge von Daten entspricht, die durch Generierung eines einzelnen Satzes von Datenabrufbefehlen abrufbar ist.
  5. Permanentspeichermodul nach Anspruch 2, wobei die Vielzahl von Hardwaremodulen ein Adressenübersetzungsmodul umfasst, wobei das Front-End-Modul ferner konfiguriert ist, um: Informationen zur logischen Adresse zu identifizieren, die der Hostausleseanfrage zugeordnet sind; und die Informationen zur logischen Adresse zum Adressenübersetzungshardwaremodul zu senden, um eine physikalische Adresse zu identifizieren, auf die die Informationen zur logischen Adresse abgebildet sind, wenn die Informationen zur logischen Adresse eine Anzahl von einer oder mehreren logischen Gruppenzahlen umfassen, die eine Schwellenzahl nicht überschreitet.
  6. Permanentspeichermodul nach Anspruch 5, wobei die Schwellenzahl eins ist.
  7. Permanentspeichermodul nach Anspruch 5, wobei das Adressenübersetzungshardwaremodul konfiguriert ist, um zumindest eine Adressdatenstruktur abzufragen, um die physikalische Adresse zu identifizieren, auf die die Informationen zur logischen Adresse abgebildet sind.
  8. Permanentspeichermodul nach Anspruch 7, wobei die zumindest eine Adressdatenstruktur zumindest eine aus einer sekundären Adressdatenstruktur und einer primären Adressdatenstruktur umfasst.
  9. Permanentspeichermodul nach Anspruch 7, wobei das Adressenübersetzungshardwaremodul konfiguriert ist, um die zumindest eine Adressdatenstruktur mit nur einer einzigen logischen Gruppenzahl, die der Hostausleseanfrage zugeordnet ist, abzufragen.
  10. Permanentspeichermodul nach Anspruch 7, wobei die physikalische Adresse eine erste physikalische Adresse umfasst, wobei die zumindest eine Adressdatenstruktur zumindest eine erste Adressdatenstruktur umfasst, wobei das Front-End-Modul ferner konfiguriert ist, um die Informationen zur logischen Adresse zum Firmwaremodul zu senden und wobei das Firmwaremodul konfiguriert ist, um zumindest eine zweite Adressdatenstruktur abzufragen, um eine zweite physikalische Adresse zu identifizieren, auf die die Informationen zur logischen Adresse abgebildet sind.
  11. Permanentspeichermodul nach Anspruch 10, wobei die Vielzahl von Hardwaremodulen ferner ein Datenabrufhardwaremodul umfasst, das konfiguriert ist, um die Daten abzurufen, wobei das Adressenübersetzungshardwaremodul konfiguriert ist, um die erste physikalische Adresse zum Datenabrufhardwaremodul zu senden, um eine erste Version der an der ersten physikalischen Adresse gespeicherten Daten abzurufen; wobei das Firmwaremodul ferner konfiguriert ist, um: es dem Datenabrufhardwaremodul zu erlauben, die erste Version der Daten abzurufen, wenn die Abfrage der zumindest einen zweiten Adressdatenstruktur nicht die zweite physikalische Adresse ergibt; und wenn die Abfrage der zumindest einen zweiten Adressdatenstruktur die zweite physikalische Adresse ergibt, zu bestimmen, ob dem Datenabrufhardwaremodul befohlen werden soll, eine zweite Version der an der zweiten physikalischen Adresse gespeicherten Daten abzurufen, oder das Datenabrufhardwaremodul zu deaktivieren und die zweite Version der Daten abzurufen.
  12. Permanentspeichermodul nach Anspruch 11, wobei das Firmwaremodul konfiguriert ist, um dem Datenabrufhardwaremodul zu befehlen, die zweite Version der Daten abzurufen, wenn das Abrufen der Daten die Ausgabe eines einzelnen Satzes von Datenabrufbefehlen erfordert, um die zweite Version der Daten abzurufen.
  13. Permanentspeichermodul nach Anspruch 1, wobei die Vielzahl von Hardwaremodulen ein Datennachabrufhardwaremodul umfasst, das konfiguriert ist, um: eine anfängliche Bestimmung auszuführen, ob von dem zumindest einen Speicher empfangene Daten eine Bitfehlerrate über einem Schwellenwert aufweisen; und die Daten zur Fehlerbehebung an das Firmwaremodul zu senden, wenn die Bitfehlerrate über dem Schwellenwert liegt.
  14. Permanentspeichermodul nach Anspruch 1, wobei das Front-End-Modul eines aus der Vielzahl von Hardwaremodulen im Hardwarepfad ist.
  15. Permanentspeichermodul nach Anspruch 1, wobei einer oder mehrere des zumindest einen Speichers einen dreidimensionalen Speicher umfassen.
  16. Permanentspeichermodul nach Anspruch 1, wobei der Controller auf demselben Substrat angeordnet ist wie Speicherelemente des zumindest einen Speichers.
  17. Verfahren zum Ausführen einer Hostausleseanfrage in einem Permanentspeichermodul, das zumindest einen Speicher umfasst, wobei das Verfahren umfasst: in einem Controller des Permanentspeichermoduls: Empfangen der Hostausleseanfrage, um im Permanentspeichermodul gespeicherte Daten auszulesen; Senden der Hostausleseanfrage zu einem Hardwarepfad, der zumindest ein Hardwaremodul umfasst, das konfiguriert ist, um zumindest einen Prozess durchzuführen, welcher der Ausführung der Hostausleseanfrage zugeordnet ist; und Durchführen eines Prozesses des zumindest einen Prozesses mit einem Firmwaremodul, wenn ein Hardwaremodul des zumindest einen Hardwaremoduls nicht in der Lage ist, den Prozess erfolgreich durchzuführen.
  18. Verfahren nach Anspruch 17, ferner umfassend: Senden, mit einem Front-End-Modul des zumindest einen Hardwaremoduls, der Hostausleseanfrage zum Firmwaremodul, wenn eine Größe der Daten einen Schwellenwert überschreitet.
  19. Verfahren nach Anspruch 17, ferner umfassend: Abfragen, mit einem Adressenübersetzungshardwaremodul des zumindest einen Hardwaremoduls, von zumindest einem aus einer primären Adressdatenstruktur oder einer ersten sekundären Adressdatenstruktur; Abfragen, mit dem Firmwaremodul, von einer zweiten sekundären Adressdatenstruktur; und Übertragen von entweder einer ersten Version der Daten, die an einer ersten physikalischen Adresse gespeichert sind, die durch die vom Adressenübersetzungshardwaremodul ausgeführte Abfrage bestimmt wurde, oder einer zweiten Version der Daten, die an einer zweiten physikalischen Adresse gespeichert sind, die durch die vom Firmwaremodul ausgeführte Abfrage bestimmt wurde, zum Controller.
  20. Verfahren nach Anspruch 19, ferner umfassend: Senden, mit dem Adressenübersetzungshardwaremodul, einer Benachrichtigung an das Firmwaremodul, wenn das Adressenübersetzungsmodul nicht in der Lage ist, die physikalische Adresse zu bestimmen.
  21. Verfahren nach Anspruch 17, ferner umfassend: Empfangen, mit einem Datenabrufhardwaremodul des zumindest einen Hardwaremoduls, einer physikalischen Adresse von einem Adressenübersetzungshardwaremodul; und Bestimmen, mit dem Datenabrufhardwaremodul, ob die vom Adressenübersetzungshardwaremodul empfangene physikalische Adresse einer neuesten Version von Daten zugeordnet ist, deren Auslesen durch den Hostbefehl als Antwort auf eine Benachrichtigung vom Firmwaremodul angefordert wurde.
  22. Permanentspeichermodul, umfassend: zumindest einen Speicher; und einen Controller, der eine Vielzahl von Hostanfragemodulen umfasst, die konfiguriert sind, um eine Vielzahl von Prozessen durchzuführen, die der Ausführung einer Hostanfrage zugeordnet sind, wobei die Vielzahl von Hostanfragemodulen umfasst: ein erstes Hostanfragemodul, umfassend: ein erstes Hardwaremodul, das konfiguriert ist, um einen ersten Prozess durchzuführen, der der Ausführung der Hostanfrage zugeordnet ist; und ein erstes Firmwaremodul, das eine erste Firmware, die in dem zumindest einen Speicher gespeichert ist, und einen ersten Prozessor umfasst, der konfiguriert ist, um die erste Firmware auszuführen, um den ersten Prozess durchzuführen; und ein zweites Hostanfragemodul, umfassend: ein zweites Hardwaremodul, das konfiguriert ist, um einen zweiten Prozess durchzuführen, der der Ausführung der Hostanfrage zugeordnet ist; und ein zweites Firmwaremodul, das eine zweite Firmware, die in dem zumindest einen Speicher gespeichert ist, und einen zweiten Prozessor umfasst, der konfiguriert ist, um die zweite Firmware auszuführen, um den zweiten Prozess durchzuführen.
  23. Permanentspeichermodul nach Anspruch 22, wobei die Hostanfrage eine Hostausleseanfrage umfasst.
  24. Permanentspeichermodul nach Anspruch 22, wobei das erste Hostanfragemodul konfiguriert ist, um Informationen zur logischen Adresse zu bestimmen, die in der Hostanfrage identifiziert sind, und das zweite Hostanfragemodul konfiguriert ist, um eine physikalische Adresse basierend auf den Informationen zur logischen Adresse zu bestimmen, die in der Hostanfrage identifiziert sind.
DE112015004536.8T 2014-10-03 2015-09-24 Hardware-Automatisierung für Speicherverwaltung Withdrawn DE112015004536T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/506,067 US9626286B2 (en) 2014-10-03 2014-10-03 Hardware and firmware paths for performing memory read processes
US14/506,067 2014-10-03
PCT/US2015/051870 WO2016053736A1 (en) 2014-10-03 2015-09-24 Hardware automation for memory management

Publications (1)

Publication Number Publication Date
DE112015004536T5 true DE112015004536T5 (de) 2017-06-14

Family

ID=54289098

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015004536.8T Withdrawn DE112015004536T5 (de) 2014-10-03 2015-09-24 Hardware-Automatisierung für Speicherverwaltung

Country Status (4)

Country Link
US (1) US9626286B2 (de)
CN (1) CN106796490B (de)
DE (1) DE112015004536T5 (de)
WO (1) WO2016053736A1 (de)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105446653B (zh) 2014-08-27 2018-12-14 阿里巴巴集团控股有限公司 一种数据合并方法和设备
US10558468B2 (en) 2015-10-22 2020-02-11 American Megatrends International, Llc Memory channel storage device initialization
US10203893B2 (en) * 2015-10-22 2019-02-12 American Megatrends, Inc. Memory channel storage device detection
TWI579696B (zh) * 2015-11-06 2017-04-21 群聯電子股份有限公司 資料重建方法與系統及其記憶體控制電路單元
US10169144B2 (en) * 2016-01-15 2019-01-01 Micron Technology, Inc. Non-volatile memory including selective error correction
KR20180049338A (ko) * 2016-10-31 2018-05-11 삼성전자주식회사 저장 장치 및 그것의 동작 방법
US10359954B2 (en) * 2017-05-31 2019-07-23 Alibaba Group Holding Limited Method and system for implementing byte-alterable write cache
US10884926B2 (en) 2017-06-16 2021-01-05 Alibaba Group Holding Limited Method and system for distributed storage using client-side global persistent cache
US10303241B2 (en) 2017-06-19 2019-05-28 Alibaba Group Holding Limited System and method for fine-grained power control management in a high capacity computer cluster
US10678443B2 (en) 2017-07-06 2020-06-09 Alibaba Group Holding Limited Method and system for high-density converged storage via memory bus
US10564856B2 (en) 2017-07-06 2020-02-18 Alibaba Group Holding Limited Method and system for mitigating write amplification in a phase change memory-based storage device
US10303601B2 (en) 2017-08-11 2019-05-28 Alibaba Group Holding Limited Method and system for rearranging a write operation in a shingled magnetic recording device
US10423508B2 (en) 2017-08-11 2019-09-24 Alibaba Group Holding Limited Method and system for a high-priority read based on an in-place suspend/resume write
US10642522B2 (en) 2017-09-15 2020-05-05 Alibaba Group Holding Limited Method and system for in-line deduplication in a storage drive based on a non-collision hash
US10496829B2 (en) 2017-09-15 2019-12-03 Alibaba Group Holding Limited Method and system for data destruction in a phase change memory-based storage device
US10789011B2 (en) 2017-09-27 2020-09-29 Alibaba Group Holding Limited Performance enhancement of a storage device using an integrated controller-buffer
US10503409B2 (en) 2017-09-27 2019-12-10 Alibaba Group Holding Limited Low-latency lightweight distributed storage system
US10860334B2 (en) 2017-10-25 2020-12-08 Alibaba Group Holding Limited System and method for centralized boot storage in an access switch shared by multiple servers
US10445190B2 (en) 2017-11-08 2019-10-15 Alibaba Group Holding Limited Method and system for enhancing backup efficiency by bypassing encoding and decoding
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
IT201800000580A1 (it) * 2018-01-05 2019-07-05 St Microelectronics Srl Metodo di aggiornamento in tempo reale di una memoria differenziale con accessibilita' continua in lettura, memoria differenziale e sistema elettronico
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10891239B2 (en) 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
US10402112B1 (en) 2018-02-14 2019-09-03 Alibaba Group Holding Limited Method and system for chunk-wide data organization and placement with real-time calculation
CN110459256A (zh) 2018-05-08 2019-11-15 美光科技公司 动态p2l异步功率损耗降低
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
WO2020000136A1 (en) 2018-06-25 2020-01-02 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of i/o requests
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US10871921B2 (en) 2018-07-30 2020-12-22 Alibaba Group Holding Limited Method and system for facilitating atomicity assurance on metadata and data bundled storage
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US10747673B2 (en) 2018-08-02 2020-08-18 Alibaba Group Holding Limited System and method for facilitating cluster-level cache and memory space
US10635345B2 (en) * 2018-08-31 2020-04-28 Micron Technology, Inc. Live firmware activation in a memory system
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10852948B2 (en) 2018-10-19 2020-12-01 Alibaba Group Holding System and method for data organization in shingled magnetic recording drive
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
US10769018B2 (en) 2018-12-04 2020-09-08 Alibaba Group Holding Limited System and method for handling uncorrectable data errors in high-capacity storage
US10884654B2 (en) 2018-12-31 2021-01-05 Alibaba Group Holding Limited System and method for quality of service assurance of multi-stream scenarios in a hard disk drive
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
WO2020202169A1 (en) * 2019-04-04 2020-10-08 Telefonaktiebolaget Lm Ericsson (Publ) Service handling in software defined networking based container orchestration systems
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
CN112099985B (zh) 2019-06-17 2023-09-12 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN112100087B (zh) * 2019-06-17 2024-04-02 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN112130750B (zh) 2019-06-25 2023-11-07 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN112130749B (zh) 2019-06-25 2023-12-22 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11042307B1 (en) 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US10872622B1 (en) 2020-02-19 2020-12-22 Alibaba Group Holding Limited Method and system for deploying mixed storage products on a uniform storage infrastructure
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US12009034B2 (en) * 2020-03-02 2024-06-11 Micron Technology, Inc. Classification of error rate of data retrieved from memory cells
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11783893B2 (en) * 2020-12-23 2023-10-10 Intel Corporation Utilizing NAND buffer for DRAM-less multilevel cell programming
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
CN113031863B (zh) * 2021-03-19 2023-08-29 深圳忆联信息系统有限公司 Ssd命令相关性管理方法、装置、计算机设备及存储介质
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
US11966582B2 (en) 2022-08-10 2024-04-23 Western Digital Technologies, Inc. Data storage device that detects and releases bottlenecks

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5123101A (en) 1986-11-12 1992-06-16 Xerox Corporation Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss
US5537555A (en) 1993-03-22 1996-07-16 Compaq Computer Corporation Fully pipelined and highly concurrent memory controller
US6272609B1 (en) 1998-07-31 2001-08-07 Micron Electronics, Inc. Pipelined memory controller
US6571325B1 (en) * 1999-09-23 2003-05-27 Rambus Inc. Pipelined memory controller and method of controlling access to memory devices in a memory system
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7624239B2 (en) 2005-11-14 2009-11-24 Sandisk Corporation Methods for the management of erase operations in non-volatile memories
US7752417B2 (en) * 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
US8245101B2 (en) * 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
US8094500B2 (en) 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US9424930B2 (en) * 2010-09-15 2016-08-23 Sandisk Technologies Llc Apparatus, system, and method for non-volatile storage element programming
US8819328B2 (en) * 2010-12-30 2014-08-26 Sandisk Technologies Inc. Controller and method for performing background operations
US10838886B2 (en) * 2011-04-19 2020-11-17 Micron Technology, Inc. Channel depth adjustment in memory systems
US9021178B2 (en) 2011-05-02 2015-04-28 Western Digital Technologies, Inc. High performance path for command processing
US9392295B2 (en) * 2011-07-20 2016-07-12 Broadcom Corporation Adaptable media processing architectures
US9058284B1 (en) * 2012-03-16 2015-06-16 Applied Micro Circuits Corporation Method and apparatus for performing table lookup
KR20140073955A (ko) * 2012-12-07 2014-06-17 삼성전자주식회사 메모리 시스템 및 그 구동 방법
KR20150105323A (ko) * 2013-01-08 2015-09-16 바이올린 메모리 인코포레이티드 데이터 스토리지 방법 및 시스템
US9215472B2 (en) * 2013-09-27 2015-12-15 Apple Inc. Parallel hardware and software block processing pipelines

Also Published As

Publication number Publication date
WO2016053736A1 (en) 2016-04-07
CN106796490A (zh) 2017-05-31
US9626286B2 (en) 2017-04-18
US20160098344A1 (en) 2016-04-07
CN106796490B (zh) 2020-05-26

Similar Documents

Publication Publication Date Title
DE112015004536T5 (de) Hardware-Automatisierung für Speicherverwaltung
DE102018106154A1 (de) Faltungsoperationen in datenspeichersystemen mit einzeladressenaktualisierungen
DE102018105750A1 (de) System und Verfahren für Hybrid-Push-Pull-Datenmanagement in einem nichtflüchtigen Datenspeicher
DE102017128952B4 (de) Datenspeichervorrichtung, die konfiguriert ist, um eine nicht-blockierende Steuerungs-Aktualisierungsoperation auszuführen
DE102018123891A1 (de) Handhabung nichtabgestimmter Schreibvorgänge
DE112020000184T5 (de) In zonen unterteilte namensräume in festkörperlaufwerken
DE102010030745B4 (de) Nicht-flüchtiger Speicher zum Speichern von Speicher-Umabbildungs-Informationen
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE112018004256T5 (de) Redundanzcodierstreifen basierend auf internen adressen von speichervorrichtungen
DE112019005369T5 (de) Verfahren zum umschalten zwischen herkömmlicher ssd und open-channel-ssd ohne datenverlust
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE112018000228T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE112019000141T5 (de) System und verfahren zur vorhersage von mehrfachlesebefehlen, die auf nicht sequentielle daten gerichtet sind
DE112020000139T5 (de) Nicht sequentiell in zonen aufgeteilte namensräume
DE112016004760T5 (de) System und Verfahren für direktes Schreiben auf einen MLC-Speicher
DE112016004148T5 (de) Systeme und Verfahren zur Befehlsautorisierung
DE102018123880A1 (de) Adaptive Verwaltung von Zwischenspeichern
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112015005102T5 (de) Systeme und verfahren zum erzeugen von einem hostbefehl zugeordneten hinweisinformationen
DE112017005955T5 (de) Speichersystem und verfahren zur schlanken speicherzuweisung
DE102018214010A1 (de) Verfahren und Vorrichtung zur Reduzierung von unbemerkten Datenfehlern in nichtflüchtigen Speichersystemen
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE102018105871A1 (de) Speichersystem und Verfahren zur Vermeidung von Befehlskollisionen in nicht flüchtigen Datenspeichern mit expliziter Kachelgruppierung
DE102017120787A1 (de) Verfahren und Vorrichtung zum Entladen von Datenverarbeitung in Hybrid-Speichervorrichtungen

Legal Events

Date Code Title Description
R083 Amendment of/additions to inventor(s)
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0003060000

Ipc: G06F0012080000

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

R120 Application withdrawn or ip right abandoned