-
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 202–208, ein zentrales Firmwaremodul 210 und einen Pufferpool 212, zusammen mit dem Hostschnittstellenmodul (HIM) 216 und dem Speicherschnittstellenmodul (MIM) 114, umfassen.
-
Die Vielzahl von Hardwaremodulen 202–208 kann jeweils konfiguriert sein, um einen zugeordneten Prozess oder eine Vielzahl von Prozessen zur Ausführung eines Hostauslesebefehls durchzuführen. Die Vielzahl von Hardwaremodulen 202–208 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 202–208 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 202–208 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 202–208 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 202–208 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 202–208 in dem Hardwareausleseprozesspfad bearbeitet werden, bis ein Ausleseprozess nicht fähig ist, von einem der Hardwaremodule 202–208 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 202–208 das Firmwaremodul 210 miteinander wechselwirken oder die Hardware- und Firmwareausleseprozesspfade so verknüpfen, dass die Hardwaremodule 202–208 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 202–208 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 202–208 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 202–208 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 202–208 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 202–208 oder durch das Firmwaremodul 210 bearbeitet zu werden, kann ferner unabhängig von jedem der Hardwaremodule 202–208 bestimmt werden (d. h. auf einer Pro-Modul-Basis). Das heißt, ob eines der Hardwaremodule 202–208 seinen zugeordneten Ausleseprozess für eine bestimmte Hostausleseanfrage durchführen kann, kann bestimmen oder nicht bestimmen, ob ein anderes der Hardwaremodule 202–208 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 202–208 modularisiert werden, wobei jedes der Hardwaremodule 202–208 konfiguriert ist, um mit dem zentralen Firmwaremodul 210 unabhängig zu kommunizieren. Im Speziellen, wie in 2 gezeigt, kann jedes der Hardwaremodule 202–208 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 202–208 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 202–208 senden, um einen nächsten Hostausleseanfrageprozess durchzuführen. Danach können die Hardwaremodule 202–208 damit fortfahren, die Hostausleseanfrageprozesse durchzuführen, bis die Ausführung vollständig ist oder ein weiterer Hostausleseanfrageprozess nicht fähig ist, von den Hardwaremodulen 202–208 durchgeführt zu werden, zu welcher Zeit das Hardwaremodul das zentrale Firmwaremodul 210 benachrichtigen kann. Solche Wechselwirkung zwischen den Hardwaremodule 202–208 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 202–208 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 202–208 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 202–208 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 202–208 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.
-
3–6 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 302–306 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 202–208 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 202–208 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 202–208 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 202–208 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 202–208 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 202–208 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 202–208 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 202–208 und ihre zugeordneten Submodule auf verschiedene andere Weisen modularisiert sein als in den in 2–6 dargestellten beispielhaften Konfigurationen. Bei einigen beispielhaften Implementierungen können alle oder einige der Hardwaremodule 202–206 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 202–208, 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 202–208 in Kommunikation mit einem zentralen Firmwaremodul 210 aufweist, kann jedes der Hostanfragemodule 902–908 sowohl ein Hardwaremodul als auch ein lokales Firmwaremodul 910 umfassen.
-
Wie in 9 dargestellt kann jedes der Hostanfragemodule 902–908 eine Eingabeschnittstelle (I/P I/F) 924 und eine Ausgabeschnittstelle (O/P I/F) 926 umfassen, um mit den anderen Modulen 902–908 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.