-
TECHNISCHES GEBIET
-
Diese Offenbarung betrifft die Arbeitsspeicherverwaltung und im Speziellen das Zuteilen von Paritätsdaten in einer Speichervorrichtung.
-
HINTERGRUND
-
In Computern oder anderen elektronischen Vorrichtungen verwendete Arbeitsspeichervorrichtungen können nichtflüchtiger Arbeitsspeicher oder flüchtiger Arbeitsspeicher sein. Der Hauptunterschied zwischen nichtflüchtigem Arbeitsspeicher und flüchtigem Arbeitsspeicher besteht darin, dass nichtflüchtiger Arbeitsspeicher weiterhin Daten speichern kann, ohne eine anhaltende Stromversorgung zu erfordern. Deshalb sind nichtflüchtige Arbeitsspeichervorrichtungen zu einem beliebten Speichertyp für eine große Bandbreite an elektronischen Anwendungen geworden. Beispielsweise sind nichtflüchtige Arbeitsspeichervorrichtungen, einschließlich Flash-Arbeitsspeichervorrichtungen, häufig in Festkörperspeichervorrichtungen wie Festkörperlaufwerke (SSDs) eingebaut.
-
In manchen Beispielen kann eine Steuerung beim Einschreiben von Daten in nichtflüchtige Arbeitsspeichervorrichtungen eine oder mehrere Operationen durchführen, um die Daten vor Arbeitsspeicherfehlern zu schützen. Beispielsweise kann eine Steuerung zusätzlich zum Einschreiben der Daten in die nichtflüchtigen Arbeitsspeichervorrichtungen Paritätsdaten erzeugen und in die Arbeitsspeichervorrichtung einschreiben, die verwendet werden können, um Daten wiederherzustellen, wie beispielsweise im Fall eines Arbeitsspeicherfehlers.
-
ZUSAMMENFASSUNG
-
In einem Beispiel umfasst eine Speichervorrichtung eine primäre Speicheranordnung, die eine Vielzahl von Arbeitsspeichervorrichtungen, eine oder mehrere Paritätsarbeitsspeichervorrichtungen und eine Steuerung umfasst, die konfiguriert ist, um einen Datenblock zu speichern. In diesem Beispiel ist die Steuerung konfiguriert, den Datenblock durch zumindest das Einschreiben des Datenblocks in die primäre Speicheranordnung, das Bestimmen von Paritätsdaten für den Datenblock und das Einschreiben von zumindest einem Teil der bestimmten Paritätsdaten in die eine oder mehreren Paritätsarbeitsspeichervorrichtungen zu speichern.
-
In einem weiteren Beispiel umfasst ein Verfahren das Einschreiben eines Datenblocks in eine primäre Speicheranordnung, die eine Vielzahl von Arbeitsspeichervorrichtungen umfasst, durch eine Steuerung einer Speichervorrichtung, das Bestimmen von Paritätsdaten für den Datenblock durch die Steuerung und das Einschreiben der bestimmten Paritätsdaten in eine oder mehrere Paritätsarbeitsspeichervorrichtungen durch die Steuerung.
-
In einem weiteren Beispiel speichert ein computerlesbares Speichermedium Befehle, die, wenn sie ausgeführt werden, dazu führen, dass ein oder mehrere Prozessoren einer Speichervorrichtung: einen Datenblock in eine primäre Speicheranordnung, die eine Vielzahl von Arbeitsspeichervorrichtungen umfasst, einschreibt, Paritätsdaten für den Datenblock bestimmt und die bestimmten Paritätsdaten in eine oder mehrere Paritätsarbeitsspeichervorrichtungen einschreibt.
-
In einem weiteren Beispiel umfasst ein System eine primäre Speicheranordnung, die eine Vielzahl von Arbeitsspeichervorrichtungen umfasst, eine oder mehrere Paritätsarbeitsspeichervorrichtungen, Mittel zum Einschreiben eines Datenblocks in die primäre Speicheranordnung, Mittel zum Bestimmen von Paritätsdaten für den Datenblock und Mittel zum Einschreiben der bestimmten Paritätsdaten in eine oder mehrere Paritätsarbeitsspeichervorrichtungen.
-
Die Details eines oder mehrerer Beispiele sind in den beigefügten Zeichnungen der untenstehenden Beschreibung ausgeführt. Weitere Merkmale, Ziele und Vorteile erschließen sich aus der Beschreibung, den Zeichnungen sowie aus den Patentansprüchen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein konzeptuelles und schematisches Blockdiagramm, das eine beispielhafte Speicherumgebung veranschaulicht, in der eine Speichervorrichtung als Speichervorrichtung für eine Hostvorrichtung fungieren kann, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
-
2 ist ein konzeptuelles Blockdiagramm, das eine beispielhafte Arbeitsspeichervorrichtung veranschaulicht, die eine Vielzahl von Blöcken umfasst, wobei jeder Block eine Vielzahl von Seiten umfasst, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
-
3 ist ein konzeptuelles und schematisches Blockdiagramm, das beispielhafte Details einer Steuerung veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
-
4 ist ein konzeptuelles Diagramm, das eine beispielhafte logische Konfiguration von Benutzerdaten und auf derselben Seite einer Arbeitsspeichervorrichtung gespeicherten entsprechenden Paritätsdaten veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
-
5 ist ein konzeptuelles Diagramm, das eine beispielhafte physikalische Konfiguration von Benutzerdaten auf derselben Seite einer Arbeitsspeichervorrichtung gespeicherten entsprechenden Paritätsdaten veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
-
6 ist ein konzeptuelles Diagramm, das eine beispielhafte logische Konfiguration von Benutzerdaten und zumindest einem Teil der auf unterschiedlichen Seiten einer Arbeitsspeichervorrichtung gespeicherten Paritätsdaten veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
-
7 ist ein konzeptuelles Diagramm, das eine beispielhafte physikalische Konfiguration von Benutzerdaten und zumindest einem Teil von auf unterschiedlichen Seiten einer Arbeitsspeichervorrichtung gespeicherten Paritätsdaten veranschaulicht, gemäß einer oder mehreren Verfahren der vorliegenden Offenbarung.
-
8 ist ein konzeptuelles Diagramm, das eine beispielhafte logische Konfiguration von Benutzerdaten und zumindest einem Teil von auf unterschiedlichen Arbeitsspeichervorrichtungen gespeicherten Paritätsdaten veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
-
9 ist ein konzeptuelles Diagramm, das eine beispielhafte physikalische Konfiguration von Benutzerdaten und zumindest einem Teil von auf unterschiedlichen Arbeitsspeichervorrichtungen gespeicherten Paritätsdaten veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
-
10 ist ein Flussdiagramm, das ein beispielhaftes Verfahren zum Speichern zumindest eines Teils von Paritätsdaten in einer anderen Arbeitsspeichervorrichtung als zugeordnete Benutzerdaten veranschaulicht, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Diese Offenbarung beschreibt eine Speichervorrichtung, die eine Steuerung umfasst, die konfiguriert ist, um Benutzerdaten in einer primären Arbeitsspeichervorrichtung zu speichern und zumindest einen Teil von den Benutzerdaten zugeordneten Fehlerkorrekturcode(ECC)-Paritätsdaten in einer Paritätsarbeitsspeichervorrichtung zu speichern. Durch Speichern zumindest eines Teils der ECC-Paritätsdaten in einer Paritätsarbeitsspeichervorrichtung kann eine größere Speichermenge durch ECC-Paritätsdaten verwendet werden, was stärkere ECC-Paritätsverfahren ermöglichen kann und die Integrität von Benutzerdaten besser schützt. Im Vergleich dazu kann in manchen Speichervorrichtungen die Größe der ECC-Paritätsdaten auf die Differenz zwischen der Größe eines Blocks von Benutzerdaten und der Größe der physikalischen Seite der Arbeitsspeichervorrichtung begrenzt sein. Wenn beispielsweise eine physikalische Seite in einer Arbeitsspeichervorrichtung 8.320 Bytes umfasst und die Größe des Blocks von Benutzerdaten 8.192 Bytes beträgt, kann die Größe der Paritätsdaten auf 128 Bytes begrenzt sein. Das Speichern von zumindest einem Teil der ECC-Paritätsdaten in der Paritätsarbeitsspeichervorrichtung kann auch flexible ECC-Stärke erleichtern, z. B. durch Erhöhen der Menge an ECC-Paritätsdaten mit steigendem Alter der Speichervorrichtung.
-
Ferner kann das Speichern von zumindest einem Teil der ECC-Paritätsdaten in einer Paritätsarbeitsspeichervorrichtung Lesezugriffe der primären Arbeitsspeichervorrichtung im Vergleich zu der Verwendung mehrerer Seiten von Daten innerhalb der primären Arbeitsspeichervorrichtung reduzieren, um ECC-Paritätsinformationen zu speichern. In manchen Beispielen, wie wenn eine Steuerung ein erweitertes Schema zur Abbildung von logischen auf physikalische Adressen verwendet, kann die Größe der durch die Steuerung verwendeten Paritätsdaten von der Größe von physikalischen Seiten der Arbeitsspeichervorrichtung unabhängig gemacht werden. Im Speziellen kann die Steuerung mehrere physikalische Seitenadressen zuteilen, um die Paritätsdaten zu speichern. Auf diese Weise kann eine Steuerung höhere ECC-Stärken verwenden. Da ein Teil der Paritätsdaten in einer anderen Seite der Arbeitsspeichervorrichtung als die Benutzerdaten gespeichert wird, kann es allerdings sein, dass die Steuerung sowohl die erste physikalische Seite als auch die zweite physikalische Seite auslesen muss, um die Benutzerdaten abzurufen. Ebenso kann es sein, dass die Steuerung, wenn sie die Benutzerdaten speichert, in zwei verschiedene physikalische Adressen in der Arbeitsspeichervorrichtung einschreiben muss, was möglicherweise nicht wünschenswert ist (z. B. aufgrund von erhöhter Zykluszählung, reduziertem Leistungsverhalten, reduzierter Zuverlässigkeit und erhöhter Lesestörung). Das Reduzieren von Lese- und Schreibzugriffen der primären Arbeitsspeichervorrichtung kann die Abnutzung reduzieren und die Lebensdauer der primären Arbeitsspeichervorrichtung verlängern.
-
Gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung kann eine Steuerung zumindest einen Teil der ECC-Paritätsdaten in einer separaten Paritätsarbeitsspeichervorrichtung speichern. Beispielsweise kann eine Steuerung einem Block von Benutzerdaten zugeordnete Paritätsdaten bestimmen, den Block von Benutzerdaten in einer primären Arbeitsspeichervorrichtung speichern und zumindest einen Teil der Paritätsdaten in einer Paritätsarbeitsspeichervorrichtung speichern, die von der primären Arbeitsspeichervorrichtung getrennt ist. In manchen Beispielen kann die Steuerung den zumindest einen Teil der Paritätsdaten in die Paritätsarbeitsspeichervorrichtung einschreiben und den Block von Benutzerdaten parallel dazu in die primäre Arbeitsspeichervorrichtung einschreiben. Ebenso kann die Steuerung in manchen Beispielen den zumindest einen Teil der Paritätsdaten aus der Paritätsarbeitsspeichervorrichtung auslesen und den Block von Benutzerdaten parallel dazu aus der primären Arbeitsspeichervorrichtung auslesen. Auf diese Weise kann die Steuerung größere Größen von Paritätsdaten verwenden, ohne dass das Leistungsverhalten signifikant reduziert wird.
-
In manchen Beispielen kann die Paritätsarbeitsspeichervorrichtung derselbe Typ von Arbeitsspeicher sein wie die primäre Arbeitsspeichervorrichtung. Beispielsweise können in manchen Beispielen sowohl die Paritätsarbeitsspeichervorrichtung als auch die primäre Arbeitsspeichervorrichtung NAND-Flash-Arbeitsspeichervorrichtungen sein, können jedoch separat durch die Steuerung adressierbar sein. Allerdings kann die Größe der Paritätsdaten signifikant geringer als die Größe der Benutzerdaten sein; daher kann die Größe der Paritätsarbeitsspeichervorrichtung signifikant geringer als die Größe der primären Arbeitsspeichervorrichtung sein. Beispielsweise kann die Größe der in der Paritätsarbeitsspeichervorrichtung gespeicherten Paritätsdaten geringer als ein Zehntel der Größe der in der primären Arbeitsspeichervorrichtung gespeicherten Benutzerdaten sein.
-
Gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung kann eine Speichervorrichtung eine primäre Arbeitsspeichervorrichtung und eine Paritätsarbeitsspeichervorrichtung umfassen, die ein anderer Typ von Arbeitsspeichervorrichtung als die primäre Vorrichtung ist. In manchen Beispielen kann die primäre Speichervorrichtung eine NAND-Flash-Arbeitsspeichervorrichtung sein und die Paritätsarbeitsspeichervorrichtung kann ein Speicherklassentyp von Arbeitsspeichervorrichtung sein, wie beispielsweise eine magnetoresistive Random-Access-Memory(MRAM)-Vorrichtung, eine Phase-Change-Random-Access-Memory(PRAM)-Vorrichtung oder eine resistive Random-Access-Memory(ReRAM)-Vorrichtung. Verglichen mit manchen Flash-Arbeitsspeichervorrichtungen (z. B. NAND-Flash-Arbeitsspeichervorrichtungen) können solche Speicherklassen-Arbeitsspeichervorrichtungen erhöhte Kosten pro Bit und reduzierte Latenzzeit (z. B. Nanosekunde vs. Mikrosekunde) aufweisen. Wie oben diskutiert, kann die Größe der Paritätsdaten signifikant geringer als die Größe der Benutzerdaten sein. Daher kann die Größe der Paritätsarbeitsspeichervorrichtung signifikant geringer als die Größe der primären Arbeitsspeichervorrichtung sein, was die Kosten der Paritätsarbeitsspeichervorrichtung weniger signifikant machen kann. Da die Paritätsarbeitsspeichervorrichtung eine kürzere Latenzzeit als die primäre Arbeitsspeichervorrichtung aufweisen kann, kann darüber hinaus das Schreiben und Lesen von Paritätsdaten in der Paritätsarbeitsspeichervorrichtung weniger Zeit benötigen als das Schreiben und Lesen von Benutzerdaten in der primären Arbeitsspeichervorrichtung. Auf diese Weise kann die Steuerung größere Größen von Paritätsdaten verwenden, ohne das Leistungsverhalten signifikant zu reduzieren.
-
1 ist ein konzeptuelles und schematisches Blockdiagramm, das eine beispielhafte Speicherumgebung 2 veranschaulicht, in der Speichervorrichtung 6 als eine Speichervorrichtung für Hostvorrichtung 4 fungieren kann, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung. Beispielsweise kann Hostvorrichtung 4 in Speichervorrichtung 6 enthaltene nichtflüchtige Arbeitsspeichervorrichtungen verwenden, um Daten zu speichern und abzurufen. In manchen Beispielen kann die Speicherumgebung 2 eine Vielzahl von Speichervorrichtungen umfassen, wie die Speichervorrichtung 6, die als Speicheranordnung arbeiten können. Beispielsweise kann die Speicherumgebung 2 eine Vielzahl von Speichervorrichtungen 6 umfassen, die als redundante Anordnung von kostengünstigen/unabhängigen Festplatten (RAID) konfiguriert sind, die zusammen als eine Massenspeichervorrichtung für die Hostvorrichtung 4 dienen.
-
Die Speicherumgebung 2 kann eine Hostvorrichtung 4 umfassen, die Daten in und/oder von einer oder mehreren Speichervorrichtungen, wie Speichervorrichtung 6, speichern und/oder abrufen kann. Wie in 1 veranschaulicht, kann die Hostvorrichtung 4 mit der Speichervorrichtung 6 über eine Schnittstelle 14 kommunizieren. Die Hostvorrichtung 4 kann ein beliebiges einer großen Bandbreite an Vorrichtungen umfassen, einschließlich Computerservern, netzgebundener Speicher(NAS)-Einheiten, Desktopcomputern, Notebook-(d. h. Laptop-)Computern, Tabletcomputern, Set-Top-Boxen, Mobiltelefonen wie z. B. sogenannter „Smart”-Phones, sogenannter „Smart”-Pads, Fernsehgeräten, Kameras, Anzeigegeräten, digitaler Medienabspielgeräte, Videospielkonsolen, Videostreamingvorrichtungen und dergleichen.
-
Wie in 1 veranschaulicht, kann die Speichervorrichtung 6 eine Steuerung 8, eine nichtflüchtige Arbeitsspeicheranordnung 10 (NVMA 10), einen flüchtigen Arbeitsspeicher 12, eine Schnittstelle 14 und Paritätsarbeitsspeichervorrichtung(en) 20 umfassen. In manchen Beispielen kann die Speichervorrichtung 6 zusätzliche, in 1 der Klarheit halber nicht gezeigte Komponenten umfassen. Beispielsweise kann die Speichervorrichtung 6 eine Leiterplatte (PB), an der Komponenten der Speichervorrichtung 6 mechanisch befestigt sind und die elektrisch leitfähige Leiterzüge umfasst, die Komponenten der Speichervorrichtung 6 elektrisch zwischenverbinden; und dergleichen umfassen. In manchen Beispielen können die physikalischen Abmessungen und Konnektorkonfigurationen von Speichervorrichtung 6 einem oder mehreren Standardformfaktoren entsprechen. Manche beispielhafte Standardformfaktoren umfassen, sind jedoch nicht beschränkt auf 3,5''-Festplattenlaufwerk (HDD), 2-5''-HDD, 1,8''-HDD, Peripheral Component Interconnect (PCI), PCI-Extended (PCI-X), PCI Express (PCIe) (z. B. PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI etc.). In manchen Beispielen kann die Speichervorrichtung 6 an eine Hauptplatine der Hostvorrichtung 4 direkt gekoppelt (z. B. direkt gelötet) sein.
-
Die Speichervorrichtung 6 kann eine Schnittstelle 14 zum Verbinden mit der Hostvorrichtung 4 umfassen. Die Schnittstelle 14 kann einen oder beide von einem Datenbus zum Austausch von Daten mit der Hostvorrichtung 4 und einen Steuerbus zum Austausch von Befehlen mit der Hostvorrichtung 4 umfassen. Die Schnittstelle 14 kann gemäß jeglichem geeigneten Protokoll arbeiten. Beispielsweise kann die Schnittstelle 14 gemäß einem oder mehreren der folgenden Protokolle arbeiten: Advanced Technology Attachment (ATA) (z. B. Serial ATA (SATA) und Parallel ATA (PAPA)), Fibre Channel, Small Computer System Interface (SCSI), Serially Attached SCSI (SAS), Peripheral Component Interconnect (PCI), PCI Express oder Non-Volatile Memory Express (NVMe). Die elektrische Verbindung von Schnittstelle 14 (z. B. der Datenbus, der Steuerbus oder beide) ist mit der Steuerung 8 elektrisch verbunden, wodurch eine elektrische Verbindung zwischen der Hostvorrichtung 4 und der Steuerung 8 bereitgestellt ist, was einen Datenaustausch zwischen der Hostvorrichtung 4 und der Steuerung 8 ermöglicht. In manchen Beispielen kann die elektrische Verbindung von Schnittstelle 14 es der Speichervorrichtung 6 auch erlauben, Leistung von der Hostvorrichtung 4 zu empfangen.
-
Die Speichervorrichtung 6 kann eine NVMA 10 umfassen, die eine Vielzahl von Arbeitsspeichervorrichtungen 16Aa–16Nn umfassen kann (zusammen „Arbeitsspeichervorrichtungen 16”). Jede der Arbeitsspeichervorrichtungen 16 kann konfiguriert sein, um Daten zu speichern und/oder abzurufen. Beispielsweise kann eine Arbeitsspeichervorrichtung von Arbeitsspeichervorrichtungen 16 Daten und eine Nachricht von Steuerung 8 empfangen, welche die Arbeitsspeichervorrichtung anweist, die Daten zu speichern. Ebenso kann die Arbeitsspeichervorrichtung von Arbeitsspeichervorrichtungen 16 eine Nachricht von der Steuerung 8 empfangen, welche die Arbeitsspeichervorrichtung anweist, Daten abzurufen. In manchen Beispielen kann jede der Arbeitsspeichervorrichtungen 6 als Nacktchip bezeichnet werden. In manchen Beispielen kann ein einzelner physikalischer Chip eine Vielzahl von Nacktchips umfassen (d. h. eine Vielzahl von Arbeitsspeichervorrichtungen 16). In manchen Beispielen kann jede der Arbeitsspeichervorrichtungen 16 konfiguriert sein, um relativ große Datenmengen (z. B. 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB etc.) zu speichern.
-
In manchen Beispielen können Arbeitsspeichervorrichtungen 16 Flash-Arbeitsspeichervorrichtungen umfassen. Flash-Arbeitsspeichervorrichtungen können NAND- oder NOR-basierte Flash-Arbeitsspeichervorrichtungen umfassen und können Daten basierend auf einer in einem Schwebegate eines Transistors enthaltene Ladung für jede Flash-Arbeitsspeicherzelle speichern. In NAND-Flash-Arbeitsspeichervorrichtungen kann die Flash-Arbeitsspeichervorrichtung in eine Vielzahl von Blöcken geteilt sein. 2 ist ein konzeptuelles Blockdiagramm, das eine beispielhafte Arbeitsspeichervorrichtung 16Aa veranschaulicht, die eine Vielzahl von Blöcken 17A–17N (zusammen „Blöcke 17”) umfasst, wobei jeder Block eine Vielzahl von Seiten 19Aa–19Nm (zusammen „Seiten 19”) umfasst. Jeder Block von Blöcken 17 kann eine Vielzahl von NAND-Zellen umfassen. mn von NAND-Zellen können unter Verwendung einer Wortleitung seriell elektrisch verbunden werden, um eine Seite zu definieren (eine Seite der Seiten 19). Die jeweiligen Zellen in jeder einer Vielzahl von Seiten 19 können mit jeweiligen Bitleitungen elektrisch verbunden sein. Die Steuerung 8 kann Daten in NAND-Flash-Arbeitsspeichervorrichtungen auf Seitenebene einschreiben und daraus auslesen und Daten von NAND-Flash-Arbeitsspeichervorrichtungen auf Blockebene löschen.
-
In manchen Beispielen können Arbeitsspeichervorrichtungen 16 jeglichen Typ von nichtflüchtigen Speichervorrichtungen umfassen. Manche Beispiele für Arbeitsspeichervorrichtungen 16 umfassen, sind jedoch nicht beschränkt auf Flash-Arbeitsspeichervorrichtungen (z. B. NAND oder NOR), Phase-Change-Memory(PCM)-Vorrichtungen, resistive Random-Access-Memory(ReRAM)-Vorrichtungen, magnetoresistive Random-Access-Memory(MRAM)-Vorrichtungen, ferroelektrischen Random Access Memory (F-RAM), holographische Arbeitsspeichervorrichtungen und jeglichen anderen Typ von nichtflüchtigen Arbeitsspeichervorrichtungen.
-
In manchen Beispielen ist es für die Steuerung 8 möglicherweise nicht praktisch, mit jeder Arbeitsspeichervorrichtung von Arbeitsspeichervorrichtungen 16 separat verbunden zu sein. Als solche können die Verbindungen zwischen Arbeitsspeichervorrichtungen 16 und Steuerung 8 gemultiplext sein. Als Beispiel können die Arbeitsspeichervorrichtungen 16 in Kanäle 18A–18N (zusammen „Kanäle 18”) zusammengefasst sein. Wie in 1 veranschaulicht, können die Arbeitsspeichervorrichtungen 16Aa–16An beispielsweise in einen ersten Kanal 18A zusammengefasst sein und die Arbeitsspeichervorrichtungen 16Na–16Nn können in einen Nten Kanal 18N zusammengefasst sein. Die in jedem der Kanäle 18 zusammengefassten Arbeitsspeichervorrichtungen 16 können eine oder mehrere Verbindungen mit der Steuerung 8 gemeinsame verwenden. Beispielsweise können die in den ersten Kanal 18A zusammengefassten Arbeitsspeichervorrichtungen 16 an einen gewöhnlichen I/O-Bus und einen gewöhnlichen Steuerbus angeschlossen sein. Die Speichervorrichtung 6 kann einen gewöhnlichen I/O-Bus und einen gewöhnlichen Steuerbus für jeden Kanal der Kanäle 18 umfassen. In manchen Beispielen kann jeder Kanal der Kanäle 18 einen Satz von Chipfreigabe(CE)-Leitungen umfassen, die verwendet werden können, um Arbeitsspeichervorrichtungen auf jedem Kanal zu multiplexen. Beispielsweise kann jede CE-Leitung mit einer jeweiligen Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 18 verbunden sein. Auf diese Weise kann die Anzahl von separaten Verbindungen zwischen der Steuerung 8 und den Arbeitsspeichervorrichtungen 18 reduziert werden. Da jeder Kanal einen unabhängigen Satz von Verbindungen mit der Steuerung 8 aufweist, kann es zusätzlich dazu sein, dass die Reduktion der Verbindungen die Datendurchsatzrate nicht signifikant beeinflusst, da die Steuerung 8 verschiedene Befehle zu jedem Kanal simultan ausgeben kann.
-
Die Speichervorrichtung 6 kann eine Leistungsversorgung 11 umfassen, die einer oder mehrere Komponenten der Speichervorrichtung 6 Leistung bereitstellt. Wenn sie in einem Standardmodus arbeitet, kann die Leistungsversorgung 11 Leistung der einen oder den mehreren Komponenten Leistung bereitstellen, indem sie durch eine externe Vorrichtung, wie Hostvorrichtung 4, bereitgestellte Leistung verwendet. Beispielsweise kann die Leistungsversorgung 11 der einen oder den mehreren Komponenten Leistung bereitstellen, und zwar unter Verwendung von über Schnittstelle 14 von Hostvorrichtung 4 empfangener Leistung. In manchen Beispielen kann die Leistungsversorgung 11 eine oder mehrere Leistungsspeicherkomponenten umfassen, die konfiguriert sind, um der einen oder den mehreren Komponenten Leistung bereitzustellen, wenn in einem Abschaltmodus gearbeitet wird, wenn beispielsweise keine Leistung mehr von der externen Vorrichtung empfangen wird. Auf diese Weise kann die Leistungsversorgung 11 als integrierte Back-up-Leistungsquelle fungieren. Manche Beispiele für die eine oder die mehreren Leistungsspeicherkomponenten umfassen, sind jedoch nicht beschränkt auf Kondensatoren, Superkondensatoren, Batterien und dergleichen.
-
Die Speichervorrichtung 6 kann auch einen flüchtigen Arbeitsspeicher 12 umfassen, der durch die Steuerung 8 verwendet werden kann, um Informationen zu speichern. In manchen Beispielen kann die Steuerung 8 den flüchtigen Arbeitsspeicher 12 als Cache verwenden. Beispielsweise kann die Steuerung 8 gecachte Informationen 13 im flüchtigen Arbeitsspeicher 12 speichern, bis die gecachten Informationen 13 in die Arbeitsspeichervorrichtungen 16 eingeschrieben werden. Wie in 1 veranschaulicht, kann der flüchtige Arbeitsspeicher 12 von der Leistungsversorgung 11 empfangene Leistung verbrauchen. Beispiele für einen flüchtigen Arbeitsspeicher 12 umfassen, sind jedoch nicht beschränkt auf Random-Access Memory (RAM), Dynamic Random Access Memory (DRAM), Static RAM (SRAM) und Synchronous Dynamic RAM (SDRAM (z. B. DDR1, DDR2, DDR3, DDR3L, LPDDR3, DDR4 und dergleichen).
-
Die Speichervorrichtung 6 umfasst eine Steuerung 8, die eine oder mehrere Operationen der Speichervorrichtung 6 verwalten kann. Beispielsweise kann die Steuerung 8 das Auslesen von Daten von und/oder das Einschreiben von Daten in die Arbeitsspeichervorrichtung 16 verwalten. In manchen Beispielen kann die Steuerung 8 eine oder mehrere Operationen ausführen, um durch die Arbeitsspeichervorrichtung 16 gespeicherte Daten zu verwalten. Beispielsweise kann die Steuerung 8 eine oder mehrere Operationen durchführen, um die Integrität von durch die Arbeitsspeichervorrichtungen 16 gespeicherte Daten sicherzustellen, wie beispielsweise das Speichern von Paritätsdaten für durch die Arbeitsspeichervorrichtungen 16 gespeicherte Benutzerdaten. Zusätzliche Details für die Steuerung 8 werden untenstehend unter Bezugnahme auf 3 diskutiert.
-
Gemäß einem oder mehrere Verfahren der vorliegenden Offenbarung kann die Speichervorrichtung 6 eine oder mehrere Paritätsarbeitsspeichervorrichtungen 20 umfassen, die von der Steuerung 8 verwendet werden können, um zumindest einen Teil der Paritätsinformationen zu speichern. In manchen Beispielen können die Paritätsarbeitsspeichervorrichtungen 20 jeglichen Typ von nichtflüchtigen Arbeitsspeichervorrichtungen umfassen. Manche Beispiele für Paritätsarbeitsspeichervorrichtungen 20 umfassen, sind jedoch nicht beschränkt auf Flash-Arbeitsspeichervorrichtungen, wie beispielsweise NAND-Flash-Arbeitsspeichervorrichtungen und/oder NOR-Flash-Arbeitsspeichervorrichtungen, Speicherklassen-Arbeitsspeichervorrichtungen, holographische Arbeitsspeichervorrichtungen und jeglichen anderen Typ von nichtflüchtigen Arbeitsspeichervorrichtungen. Manche Beispiele für Speicherklassen-Arbeitsspeichervorrichtungen umfassen, sind jedoch nicht beschränkt auf Phase-Change-Memory(PCM)-Vorrichtungen, resistive Random-Access-Memory(ReRAM)-Vorrichtungen, magnetoresistive Random-Access-Memory(MRAM)-Vorrichtungen und ferroelektrischen Random Access Memory (F-RAM). In manchen Beispielen können Speicherklassen-Arbeitsspeichervorrichtungen Byte-zugänglich sein, eine relativ hohe Lebensdauer aufweisen (vergleichbar mit oder größer als Flash-Arbeitsspeicher), eine relativ niedrige Schreib- und Lese-Latenzzeit aufweisen (z. B. niedriger als Flash-Arbeitsspeicher, in manchen Beispielen vergleichbar mit DRAM).
-
Wie oben diskutiert, kann die Steuerung 8 herbeiführen, dass die Arbeitsspeichervorrichtungen 16, Paritätsarbeitsspeichervorrichtungen 20 oder beide Paritätsdaten speichern, die durch die Arbeitsspeichervorrichtungen 16 gespeicherte Benutzerdaten zugeordnet sind. Wenn sie beispielweise einen Block von Benutzerdaten speichert, kann die Steuerung 8 das exklusive ODER (XOR) des Blocks von Benutzerdaten bestimmen und mit den Benutzerdaten speichern. Wenn sie den Block von Benutzerdaten abruft, kann die Steuerung, kann die Steuerung 8 sowohl den gespeicherten Block von Benutzerdaten als auch die dem Block von Benutzerdaten zugeordneten gespeicherten Paritätsdaten auslesen und die gespeicherten Paritätsdaten verwenden, um den Block von Benutzerdaten zu verifizieren. In manchen Beispielen kann die Steuerung 8 die Paritätsdaten mit den Benutzerdaten in derselben physikalischen Seite einer Arbeitsspeichervorrichtung speichern. Beispielsweise kann die Steuerung 8 Paritätsdaten zusammen mit den Benutzerdaten in Seite 19Aa von Block 17A der Arbeitsspeichervorrichtung 16Aa von 2 speichern.
-
Die Größe der durch die Steuerung 8 verwendeten Paritätsdaten kann als ECC-Stärke bezeichnet werden. In manchen Beispielen kann eine größere Größe von Paritätsdaten besseren Schutz vor Datenkorruptionsfehlern bereitstellen. Allerdings steigt mit steigender Größe der Paritätsdaten auch die Menge an durch die Paritätsdaten verbrauchtem Arbeitsspeicher. In manchen Beispielen, wie wenn die Steuerung 8 die Paritätsdaten mit den Benutzerdaten in derselben physikalischen Seite der Arbeitsspeichervorrichtung speichert, kann die Größe der Paritätsdaten auf die Differenz zwischen der Größe eines Blocks von Benutzerdaten und der Größe der physikalischen Seite der Arbeitsspeichervorrichtung begrenzt sein. Wenn beispielsweise eine Größe der physikalischen Seite 19Aa 8.320 Bytes beträgt und die Größe des Blocks von Benutzerdaten 8.192 Bytes beträgt, kann die Größe der Paritätsdaten, welche die Steuerung 8 in derselben Seite wie die Benutzerdaten speichern kann, auf 128 Bytes begrenzt sein. Allerdings kann es in manchen Beispielen wünschenswert sein, dass die Steuerung 8 größere Paritätsdaten als die begrenzte Größendifferenz zwischen der Größe eines Blocks von Benutzerdaten und der Größe der physikalischen Seite der Arbeitsspeichervorrichtung speichert, z. B. um stärkeren Schutz vor Datenkorruptionsfehlern bereitzustellen.
-
In manchen Beispielen kann die Steuerung 8 die Größe der Paritätsdaten von der Größe von physikalischen Seiten der Arbeitsspeichervorrichtungen 16, der Differenz zwischen der Größe der physikalischen Seiten der Arbeitsspeichervorrichtungen 16 und der Größe des Blocks von Benutzerdaten oder beidem unabhängig machen. Beispielsweise kann die Steuerung 8 die Benutzerdaten und zumindest einen Teil der Paritätsdaten auf verschiedenen physikalischen Seiten innerhalb der Arbeitsspeichervorrichtungen 16 speichern. Als Beispiel kann die Steuerung 8 einen ersten Teil der Paritätsdaten zusammen mit den Benutzerdaten in Seite 19Aa von Arbeitsspeichervorrichtung 16Aa speichern und einen zweiten Teil der Paritätsdaten in Seite 19Ab von Arbeitsspeichervorrichtung 16Aa speichern. Da allerdings der zweite Teil der Paritätsdaten in einer anderen Seite der Arbeitsspeichervorrichtungen 16 als die Benutzerdaten gespeichert ist, kann es sein, dass die Steuerung 8 beide Seiten (z. B. Seite 19Aa und Seite 19Ab) auslesen muss, um die Benutzerdaten abzurufen und zu dekodieren. Ebenso kann es sein, dass die Steuerung 8, wenn sie die Benutzerdaten speichert, auf zwei verschiedene physikalische Seiten in den Arbeitsspeichervorrichtungen 16 einschreiben muss, was möglicherweise nicht wünschenswert ist (z. B. aufgrund von erhöhten Zykluszählungen, reduziertem Leistungsverhalten, reduzierter Zuverlässigkeit und erhöhter Lesestörung). Ein weiteres Beispiel besteht darin, dass im Gegensatz zum Speichern der Paritätsdaten auf einer anderen physikalischen Seite als den entsprechenden Benutzerdaten innerhalb einer Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 die Steuerung 8 zumindest einen Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 speichert. Beispielsweise kann die Steuerung 8 Paritätsdaten für einen Block von Benutzerdaten bestimmen, den Block von Benutzerdaten in Arbeitsspeichervorrichtungen 16 speichern und zumindest einen Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 speichern. In manchen Beispielen kann die Steuerung 8 den zumindest einen Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 einschreiben und den Block von Benutzerdaten parallel dazu in Arbeitsspeichervorrichtungen 16 einschreiben. Ebenso kann die Steuerung 8 in manchen Beispielen den zumindest einen Teil der Paritätsdaten aus der Paritätsarbeitsspeichervorrichtung 20 auslesen und den Block von Benutzerdaten parallel dazu aus den Arbeitsspeichervorrichtungen 16 auslesen. Auf diese Weise kann die Steuerung 8 größere Größen von Paritätsdaten ohne oder mit reduzierten unerwünschten Wirkungen (z. B. erhöhte Zykluszählungen, reduziertes Leistungsverhalten, reduzierte Zuverlässigkeit und erhöhte Lesestörung) verwenden.
-
3 ist ein konzeptuelles und schematisches Blockdiagramm, das beispielshafte Details der Steuerung 8 veranschaulicht. In manchen Beispielen kann die Steuerung 8 ein Adresstranslationsmodul 22, ein Schreibmodul 24, ein Wartungsmodul 26, ein Lesemodul 28, ein Zeitplanmodul 30 und eine Vielzahl von Kanalsteuerungen 32A–32N (zusammen „Kanalsteuerungen 32”) umfassen. In weiteren Beispielen kann die Steuerung 8 zusätzliche Module oder Hardwareeinheiten umfassen oder kann weniger Module und Hardwareeinheiten umfassen. Die Steuerung 8 kann einen Mikroprozessor, digitalen Signalprozessor (DSP), anwendungsspezifische integrierte Schaltung (ASIC), Field-Programmable Gate Array (FPGA) oder weitere digitale Logikschaltungen umfassen.
-
Die Steuerung 8 kann mit der Hostvorrichtung 4 über eine Schnittstelle 14 verbunden sein und das Speichern von Daten in und das Abrufen von Daten aus den Arbeitsspeichervorrichtungen 16 verwalten. Beispielsweise kann das Schreibmodul 24 der Steuerung 8 Einschreibungen in die Arbeitsspeichervorrichtungen 16 verwalten. Beispielsweise kann das Schreibmodul 24 von der Hostvorrichtung 4 über die Schnittstelle 14 eine Nachricht empfangen, welche die Speichervorrichtung 6 anweist, einer logischen Adresse zugeordnete Daten und die Daten zu speichern, die als Benutzerdaten bezeichnet werden können. Das Schreibmodul 24 kann das Einschreiben der Benutzerdaten in die Arbeitsspeichervorrichtungen 16 verwalten.
-
Beispielsweise kann das Schreibmodul 24 mit dem Adresstranslationsmodul 22 kommunizieren, das Translation zwischen logischen Adressen, die von Hostvorrichtung 4 verwendet werden, verwaltet, um Speicherorte von Daten und physikalische Blockadressen zu verwalten, die von dem Schreibmodul 24 verwendet werden, um das Einschreiben von Daten in Arbeitsspeichervorrichtungen anzuweisen. Das Adresstranslationsmodul 22 der Steuerung 8 kann eine Flash-Translationsebene oder eine Tabelle verwenden, die logische Adressen (oder logische Blockadressen) von durch Arbeitsspeichervorrichtungen 16 gespeicherten Daten zu physikalischen Blockadressen von durch Arbeitsspeichervorrichtungen 16 gespeicherten Daten translatiert. Beispielsweise kann die Hostvorrichtung 4 die logischen Blockadressen der durch Arbeitsspeichervorrichtungen 16 in Befehle oder Nachrichten an Speichervorrichtung 6 gespeicherten Daten verwenden, während das Schreibmodul 24 physikalische Blockadressen der Daten verwendet, um das Einschreiben von Daten in Arbeitsspeichervorrichtungen 16 zu steuern. (Ebenso kann das Lesemodul 28 physikalische Blockadressen verwenden, um das Auslesen von Daten aus Arbeitsspeichervorrichtungen 16 zu steuern.) Die physikalischen Blockadressen entsprechen tatsächlichen, physikalischen Blöcken von Arbeitsspeichervorrichtungen 16. In manchen Beispielen kann das Adresstranslationsmodul 22 die Flash-Translationsebene oder Tabelle in flüchtigen Arbeitsspeicher 12 speichern, wie beispielsweise innerhalb gecachter Information 13.
-
Auf diese Weise kann es der Hostvorrichtung 4 ermöglicht werden, eine statische logische Blockadresse für einen bestimmte Datensatz zu verwenden, während sich die physikalische Blockadresse, auf der die Daten tatsächlich gespeichert sind, ändert. Das Adresstranslationsmodul 22 kann die Flash-Translationsebene oder Tabelle beibehalten, um die logischen Blockadressen auf physikalischen Blockadressen abzubilden, um die Verwendung der statischen logischen Blockadressen durch die Hostvorrichtung 4 zu ermöglichen, während sich die physikalischen Blockadressen der Daten ändern können, z. B. aufgrund Wear-Leveling, Speicherbereinigung oder dergleichen.
-
Wie oben diskutiert, kann das Schreibmodul 24 von Steuerung 8 eine oder mehrere Operationen zum Verwalten des Einschreibens von Daten in Arbeitsspeichervorrichtungen 16 durchführen. Beispielsweise kann das Schreibmodul 24 das Einschreiben von Daten in Arbeitsspeichervorrichtungen 16 verwalten, indem es einen oder mehrere Blöcke innerhalb der Arbeitsspeichervorrichtungen 16 auswählt, um die Daten zu speichern, und herbeiführt, dass Arbeitsspeichervorrichtungen der Arbeitsspeichervorrichtungen 16, welche die ausgewählten Blöcke umfassen, die Daten tatsächlich speichern. Wie oben diskutiert, kann das Schreibmodul 24 herbeiführen, dass das Adresstranslationsmodul 22 die Flash-Translationsebene oder Tabelle basierend auf den ausgewählten Blöcken aktualisiert. Beispielsweise kann das Schreibmodul 24 eine Nachricht von der Hostvorrichtung 4 empfangen, die eine Dateneinheit und eine logische Blockadresse umfasst, einen Block innerhalb einer bestimmten Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 zum Speichern der Daten auswählen, herbeiführen, dass die bestimmte Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 die Daten tatsächlich speichert (z. B. über eine Kanalsteuerung der Kanalsteuerungen 32, die der bestimmten Arbeitsspeichervorrichtung entspricht), und herbeiführen, dass das Adresstranslationsmodul 22 die Flash-Translationsebene oder Tabelle aktualisiert, um anzuzeigen, dass die logische Blockadresse dem ausgewählten Block innerhalb der bestimmten Arbeitsspeichervorrichtung entspricht.
-
Das Lesemodul 28 kann ebenso das Auslesen von Daten aus Arbeitsspeichervorrichtungen 16 steuern. Beispielsweise kann das Lesemodul 28 von der Hostvorrichtung 4 eine Nachricht empfangen, die Daten mit einer zugeordneten logischen Blockadresse anfordert. Das Adresstranslationsmodul 22 kann die logische Blockadresse unter Verwendung der Flash-Translationsebene oder Tabelle in eine physikalische Blockadresse umwandeln. Das Lesemodul 28 kann dann eine oder mehrere Kanalsteuerungen 32 steuern, um die Daten von den physikalischen Blockadressen abzurufen. Ähnlich dem Schreibmodul 24 kann das Lesemodul 28 einen oder mehrere Blöcke auswählen und an die Kanalsteuerungen 32 eine Nachricht übermitteln, die herbeiführen kann, dass die Kanalsteuerungen 32 die Daten aus den ausgewählten Blöcken auslesen.
-
Um ein Bit mit einem logischen Wert von 0 (geladen) auf ein Bit mit einem vorigen logischen Wert von 1 (ungeladen) zu schreiben, wird eine hohe Stromstärke verwendet. Diese Stromstärke kann groß genug sein, dass sie unbeabsichtigte Änderungen der Ladung von benachbarten Flash-Arbeitsspeicherzellen herbeiführen kann. Zum Schutz vor unbeabsichtigten Änderungen kann ein ganzer Block von Flash-Arbeitsspeicherzellen auf einen logischen Wert von 1 (ungeladen) gelöscht werden, bevor jegliche Daten in Zellen innerhalb des Blocks eingeschrieben werden. Deshalb können Flash-Arbeitsspeicherzellen auf Blockebene gelöscht und auf Seitenebene beschrieben werden.
-
Um auch nur eine Datenmenge einzuschreiben, die weniger als eine Seite beanspruchen würde, kann die Steuerung 8 daher herbeiführen, dass ein ganzer Block gelöscht wird. Dies kann zu Schreibvervielfachung führen, was sich auf das Verhältnis zwischen der von der Hostvorrichtung 4 empfangenen Datenmenge, die in Arbeitsspeichervorrichtungen 16 einzuschreiben ist, und der tatsächlich in Arbeitsspeichervorrichtungen 16 eingeschriebenen Daten bezieht. Schreibvervielfachung trägt zu einer schnelleren Abnutzung der Flash-Arbeitsspeicherzellen bei, als sie ohne Schreibvervielfachung auftreten würde. Abnutzung von Flash-Arbeitsspeicherzellen kann auftreten, wenn Flash-Arbeitsspeicherzellen aufgrund der relativ hohen Spannungen gelöscht werden, die verwendet werden, um die Flash-Arbeitsspeicherzellen zu löschen. Über eine Vielzahl von Löschzyklen können die relativ hohen Spannungen zu Änderungen der Flash-Arbeitsspeicherzellen führen. Schließlich können sich die Flash-Arbeitsspeicherzellen abnutzen, sodass Daten nicht weiter in die Zellen eingeschrieben werden können.
-
Ein Verfahren, das die Steuerung 8 implementieren kann, um Schreibvervielfachung und Abnutzung von Flash-Arbeitsspeicherzellen zu reduzieren, umfasst das Einschreiben von Daten, die von der Hostvorrichtung 4 empfangen werden, in nicht verwendete Blöcke (z. B. Blöcke 17 von 2) oder teilweise verwendete Blöcke. Beispielsweise wenn die Hostvorrichtung 4 an die Speichervorrichtung 6 Daten sendet, die nur eine kleine Änderung von bereits durch die Speichervorrichtung 6 gespeicherten Daten umfassen. Die Steuerung kann dann die alten Daten als veraltet und nicht länger gültig markieren. Im Zeitverlauf kann dies die Anzahl von Löschoperationen, denen Blöcke ausgesetzt sind, reduzieren im Vergleich zum Löschen des Blocks, der die alten Daten hält, und Schreiben der aktualisierten Daten in denselben Block.
-
Als Antwort auf das Empfangen eines Schreibbefehls von der Hostvorrichtung 4 kann das Schreibmodul 24 bestimmen, an welchen physikalischen Orten (Blöcken 17) von Arbeitsspeichervorrichtungen 16 die Daten einzuschreiben sind. Beispielsweise kann das Schreibmodul 24 vom Adresstranslationsmodul 22 oder Wartungsmodul 26 eine oder mehrere physikalische Blockadressen anfordern, die leer sind (z. B. keine Daten speichern), teilweise leer sind (z. B. nur manche Seiten des Blocks speichern Daten), oder zumindest manche ungültige (oder veraltete) Daten speichern. Bei Erhalt der einen oder mehreren physikalischen Blockadressen kann das Schreibmodul 24 einen oder mehrere Blöcke definieren und/oder auswählen und eine Nachricht an Kanalsteuerungen 32A–32N (zusammen „Kanalsteuerungen 32”) übermitteln, was dazu führt, dass die Kanalsteuerungen 32 die Daten in die Blöcke einschreiben.
-
Jede Kanalsteuerung der Kanalsteuerungen 32 kann mit einem entsprechenden Kanal der Kanäle 18 verbunden sein. In manchen Beispielen kann die Steuerung 8 dieselbe Anzahl von Kanalsteuerungen 32 umfassen wie die Anzahl von Kanälen 18 der Speichervorrichtung 2. Die Kanalsteuerungen 32 können die Nahsteuerung des Adressierens, Programmierens, Löschens und Auslesens von mit entsprechenden Kanälen verbundenen Arbeitsspeichervorrichtungen 16 durchführen, z. B. unter der Steuerung des Schreibmoduls 24, Lesemoduls 28 und/oder des Wartungsmoduls 26.
-
Das Wartungsmodul 26 kann konfiguriert sein, um Operationen in Bezug auf das Beibehalten des Leistungsverhaltens und das Erweitern der Lebensdauer von Speichervorrichtung 6 (z. B. Arbeitsspeichervorrichtungen 16) durchzuführen. Beispielsweise kann das Wartungsmodul 26 zumindest eines von Wear-Leveling oder Speicherbereinigung implementieren.
-
Das Zeitplanmodul 30 von Steuerung 8 kann eine oder mehrere Operationen zum Planen von durch die Arbeitsspeichervorrichtungen 16 durchzuführenden Aktivitäten durchführen. Beispielsweise kann die Zeitplanvorrichtung 30 von anderen Komponenten der Steuerung 8 empfangenen Anfragen planen, um eine oder mehrere Arbeitsspeichervorrichtungen 16 anzuweisen, eine oder mehrere Aktivitäten während der Laufzeit durchzuführen. In manchen Beispielen kann das Zeitplanmodul 30 die Anfragen so planen, dass sie in der Reihenfolge durchgeführt werden, in der sie empfangen wurden (z. B. nach dem Durchlauf- oder FIFO-Prinzip). In manchen Beispielen kann das Zeitplanmodul 30 die Anfragen basierend auf einem oder mehreren Faktoren planen, welche die folgenden umfassen können, ohne darauf eingeschränkt zu sein: den Anfragetyp (z. B. eine Leseanfrage, eine Schreibanfrage, eine Löschanfrage, eine Speicherbereinigungsanfrage etc.), eine Menge an Zeit, die verstrichen ist, seit die Anfrage empfangen wurde, eine Menge an Leistung, die durch das Durchführen der Anfrage verbraucht würde, Berücksichtigung der Bandbreite und dergleichen.
-
In manchen Beispielen kann das Schreibmodul 24 zusätzlich zum Herbeiführen, dass die Einheit von Benutzerdaten durch Arbeitsspeichervorrichtungen 16 gespeichert wird, herbeiführen, dass Arbeitsspeichervorrichtungen 16 Informationen (Paritätsdaten) speichern, die verwendet werden können, um die Dateneinheit wiederherzustellen und/oder zu validieren, sollten einer oder mehrere der Blocks ausfallen oder beschädigt werden. In manchen Beispielen kann das Schreibmodul 24 herbeiführen, dass die Paritätsdaten mit den Benutzerdaten in derselben physikalischen Seite einer Arbeitsspeichervorrichtung von Arbeitsspeichervorrichtungen 16 gespeichert werden. Beispielsweise kann das Adresstranslationsmodul 22 ein einfaches Schema zur Abbildung von logischen auf physikalische Adressen implementieren, das eine einzelne physikalische Seitenadresse auf einer einzelnen logischen Seitenadresse abbilden kann. Ein Beispiel für ein solches Schema ist untenstehend unter Bezugnahme auf 4 und 5 beschrieben.
-
In manchen Beispielen kann es wünschenswert sein, dass das Schreibmodul 24 herbeiführt, dass mehr Paritätsdaten für einen Block von Benutzerdaten gespeichert werden. Beispielsweise im Zuge der Verwendung und Alterung oder Alterung von Arbeitsspeichervorrichtungen 16 kann die Zuverlässigkeit der Arbeitsspeicherzellen der Arbeitsspeichervorrichtungen 16 abnehmen. In manchen Beispielen kann die Zuverlässigkeit der Arbeitsspeicherzellen von Arbeitsspeichervorrichtungen 16 als Bitfehlerhäufigkeit (BER) quantitativ bestimmt werden. Um die Wahrscheinlichkeit, dass das Lesemodul 28 den Block von Benutzerdaten erfolgreich abrufen kann, zu erhöhen, kann das Schreibmodul 24 als solches mit steigender BER größere Größen von Paritätsdaten speichern. Als ein Beispiel, wenn die BER niedriger als ein Schwellenwert ist, kann das Schreibmodul 24 weniger Paritätsdaten für jeden Block von Benutzerdaten speichern, als wenn die BER größer als ein Schwellenwert ist.
-
Allerdings kann es sein, dass in manchen Beispielen das Schreibmodul 24 nicht in der Lage ist, schnell herbeizuführen, dass die Menge von gespeicherten Paritätsdaten größer ist. In Beispielen, wo das Schreibmodul 24 herbeiführt, dass die Paritätsdaten für einen Block von Benutzerdaten mit den Benutzerdaten mit den Benutzerdaten in derselben physikalischen Seite einer Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 gespeichert wird, ist die Größe der Paritätsdaten möglicherweise auf die Differenz zwischen der Größe eines Blocks von Benutzerdaten und der Größe der physikalischen Seite der Arbeitsspeichervorrichtung begrenzt. Wenn beispielsweise die physikalische Seite in einer Arbeitsspeichervorrichtung 8.320 Bytes speichern kann und die Größe des Blocks von Benutzerdaten 8.192 Bytes beträgt, kann die Größe der Paritätsdaten auf 128 Bytes begrenzt sein. Diese Größenbegrenzung kann verhindern, dass das Schreibmodul 24 die Menge an gespeicherten Paritätsdaten schnell erhöht, was möglicherweise nicht wünschenswert ist.
-
4 ist ein konzeptuelles Diagramm, das eine beispielhafte logische Konfiguration von Benutzerdaten und entsprechenden auf derselben Seite einer Arbeitsspeichervorrichtung gespeicherten entsprechenden Paritätsdaten veranschaulicht. Wie in 4 veranschaulicht, können Benutzerdaten 40A und entsprechende Paritätsdaten 42A einer logischen Seitenadresse 44A zugeordnet sein, und Benutzerdaten 40B und entsprechende Paritätsdaten 42B können einer logischen Seitenadresse 44B zugeordnet sein. Eine Länge 46 kann die kombinierte Länge der Benutzerdaten und der Paritätsdaten auf jeder logischen Seitenadresse darstellen. In manchen Beispielen können die Benutzerdaten 40A und Benutzerdaten 40B jeweils 8.192 Bytes lang sein und die Paritätsdaten 42A und Paritätsdaten 42B können jeweils 128 Bytes lang sein, sodass die kombinierte Länge von auf jeder logischen Seitenadresse zu speichernden Daten 8.320 Bytes betragen kann. 5 ist ein konzeptuelles Diagramm, das eine beispielhafte physikalische Konfiguration von Benutzerdaten und auf derselben Seite einer Arbeitsspeichervorrichtung gespeicherten entsprechenden Paritätsdaten veranschaulicht. In manchen Beispielen können die physikalische Seitenadresse 50A bzw. die physikalische Seitenadresse 50B Seite 19Aa bzw. Seite 19Ab von 2 entsprechen. Die Länge 48 kann eine Maximalgröße von Daten darstellen, deren Speicherung auf jede physikalische Seitenadresse das Schreibmodul 24 herbeiführen kann. In manchen Beispielen kann die Länge 48 8.320 Bytes betragen.
-
Wenn die kombinierte Größe von Datenblöcken auf einer logischen Seitenadresse weniger oder gleich der Maximalgröße von Daten ist, die auf jeder physikalischen Seitenadresse gespeichert werden können, kann das Schreibmodul 24 herbeiführen, dass die Blöcke von Daten auf jeder logischen Seitenadresse auf eine physikalische Seitenadresse ohne Neuanordnung geschrieben werden. In dem Beispiel von 4 und 5 kann das Schreibmodul 24, da die kombinierte Länge der Datenblöcke auf der logischen Seitenadresse 44A (d. h. Benutzerdaten 40A und Paritätsdaten 42A) niedriger oder gleich der Länge 48 ist, herbeiführen, dass die Datenblöcke auf der logischen Seitenadresse 44A ohne Neuanordnung auf die physikalische Seitenadresse 50A geschrieben werden. Allerdings ist es in diesem Beispiel nicht möglich, dass das Schreibmodul 24 die Größe der Paritätsdaten 42A erhöht, ohne dass die kombinierte Größe von Benutzerdaten 40A und Paritätsdaten 42A größer als die Länge 48 ist. Wie oben diskutiert, kann dieses Begrenzung nicht wünschenswert sein.
-
In manchen Beispielen kann das Schreibmodul 24 die Größe der Paritätsdaten von der Größe der physikalischen Seiten der Arbeitsspeichervorrichtungen 16 unabhängig machen. Beispielsweise kann das Schreibmodul 24 die Benutzerdaten und zumindest einen Teil der Paritätsdaten auf verschiedenen physikalischen Seiten innerhalb der Arbeitsspeichervorrichtungen 16 speichern. Als ein Beispiel kann die Steuerung 8 einen ersten Teil der Paritätsdaten zusammen mit den Benutzerdaten in Seite 19Aa der Arbeitsspeichervorrichtung 16Aa speichern und einen zweiten Teil der Paritätsdaten in Seite 19Ab der Arbeitsspeichervorrichtung 16Aa speichern. Da der zweite Teil der Paritätsdaten in einer anderen Seite der Arbeitsspeichervorrichtung 16 als die Benutzerdaten gespeichert wird, kann das Lesemodul 28 beide Seiten (z. B. Seite 19Aa und Seite 19Ab) auslesen, um die Benutzerdaten abzurufen. Ebenso kann das Schreibmodul 24 beim Speichern der Benutzerdaten in verschiedene physikalische Seiten in den Arbeitsspeichervorrichtungen 16 einschreiben.
-
In manchen Beispielen kann die Größe der durch das Schreibmodul 24 gespeicherten Paritätsdaten von der Größe der physikalischen Seiten der Arbeitsspeichervorrichtung unabhängig gemacht werden. Beispielsweise kann das Adresstranslationsmodul 22 ein erweitertes Schema zur Abbildung von logischen auf physikalische Adressen implementieren, das eine logische Seitenadresse auf mehrere physikalische Seitenadressen abbilden kann. Ein Beispiel für ein solches Schema ist untenstehend unter Bezugnahme auf 6 und 7 beschrieben.
-
6 ist ein konzeptuelles Diagramm, das eine beispielhafte logische Konfiguration von Benutzerdaten und zumindest einen Teil von auf verschiedenen Seiten einer Arbeitsspeichervorrichtung gespeicherten Paritätsdaten veranschaulicht. Wie in 6 veranschaulicht, können Benutzerdaten 40A und entsprechende Paritätsdaten 42A1 und Paritätsdaten 42A2 einer logischen Seitenadresse 44A zugeordnet sein und Benutzerdaten 40B und entsprechende Paritätsdaten 42B1 und Paritätsdaten 42B2 können einer logischen Seitenadresse 44B zugeordnet sein. Eine Länge 46 kann die kombinierte Länge der Benutzerdaten und der Paritätsdaten auf jeder logischen Seitenadresse darstellen. In dem Beispiel von 6 können Benutzerdaten 40A und Benutzerdaten 40B jeweils 8.192 Bytes lang sein und Paritätsdaten 42A1, Paritätsdaten 42A2, Paritätsdaten 42B1 und Paritätsdaten 42B2 können jeweils 128 Bytes lang sein, sodass die auf jeder logischen Seitenadresse zu speichernde kombinierte Datenlänge 8.448 Bytes betragen kann. 7 ist ein konzeptuelles Diagramm, das eine beispielhafte physikalische Konfiguration von Benutzerdaten und zumindest einen Teil von auf verschiedenen Seiten einer Arbeitsspeichervorrichtung gespeicherten Paritätsdaten veranschaulicht. In manchen Beispielen können die physikalische Seitenadresse 50A, physikalische Seitenadresse 50B bzw. physikalische Seitenadresse 50C Seite 19Aa, 19Ab bzw. Seite 19Ac von 2 entsprechen. Die Länge 48 kann die Maximalgröße von Daten darstellen, deren Speicherung auf jede physikalische Seitenadresse das Schreibmodul 24 herbeiführen kann. In dem Beispiel von 7 kann die Länge 48 8.320 Bytes betragen.
-
Wie oben diskutiert, wenn die kombinierte Größe von Datenblöcken auf einer logischen Seitenadresse niedriger oder gleich der Maximalgröße von Daten ist, die auf jeder physikalischen Seitenadresse gespeichert werden können, kann das Schreibmodul 24 herbeiführen, dass die Datenblöcke auf jeder logischen Seitenadresse ohne Neuanordnung auf eine physikalische Seitenadresse geschrieben werden können. Da in dem Beispiel von 6 und 7 jedoch die kombinierte Länge der Datenblöcke auf der logischen Seitenadresse 44A (d. h. Benutzerdaten 40A, Paritätsdaten 42A1 und Paritätsdaten 42A2) größer als die Länge 48 ist, kann das Schreibmodul 24 herbeiführen, dass die Datenblöcke auf der logischen Seitenadresse 44A auf mehrere physikalische Seitenadressen geschrieben werden. Um es beispielsweise dem Schreibmodul 24 zu ermöglichen, die Datenblöcke auf der logischen Seitenadresse 44A zu speichern, kann das Adresstranslationsmodul 22 die logische Seitenadresse 44A auf die gesamte physikalische Seitenadresse 50A und einen ersten Teil einer physikalischen Seitenadresse 50B abbilden. Ebenso kann das Adresstranslationsmodul 22, um es dem Schreibmodul 24 zu ermöglichen, die Datenblöcke auf der logischen Seitenadresse 44B zu speichern, die logische Seitenadresse 44B auf einen zweiten Teil der physikalischen Seitenadresse 50B und einen ersten Teil der physikalischen Seitenadresse 50C abbilden. Basierend auf den Abbildungen kann das Schreibmodul 24 Benutzerdaten 40A und Paritätsdaten 42A1 auf die physikalische Seitenadresse 50A speichern, Paritätsdaten 42A2 und Benutzerdaten 40B auf der physikalischen Seitenadresse 50B speichern und Paritätsdaten 42B1 und Paritätsdaten 42B2 auf der physikalischen Seitenadresse 50C speichern. Auf diese Weise kann das Schreibmodul 24 größere Größen von Paritätsdaten speichern.
-
Da ein Teil der Paritätsdaten in einer anderen Seite als die Benutzerdaten gespeichert werden kann, kann das Schreibmodul 24 zwei Schreiboperationen ausführen, um einen Block von Benutzerdaten zu speichern. Ebenso kann das Lesemodul 28 zwei Leseoperationen ausführen, um einen Block von Benutzerdaten abzurufen. In manchen Beispielen sind mehrere Lese- oder Schreiboperationen zum Abrufen oder Speichern eines einzelnen Blocks von Benutzerdaten möglicherweise nicht wünschenswert (z. B. aufgrund von erhöhten Zykluszählungen, reduziertem Leistungsverhalten, reduzierter Zuverlässigkeit und erhöhter Lesestörung).
-
Daher kann das Schreibmodul 24 in manchen Beispielen, anstatt zumindest einen Teil der Paritätsdaten auf einer anderen physikalischen Seite als die entsprechenden Benutzerdaten innerhalb einer einzelnen Arbeitsspeichervorrichtung zu speichern (z. B. einer Arbeitsspeichervorrichtung von Arbeitsspeichervorrichtungen 16), zumindest einen Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 speichern. Beispielsweise kann das Schreibmodul 24 Paritätsdaten für einen Block von Benutzerdaten bestimmen, den Block von Benutzerdaten in Arbeitsspeichervorrichtungen 16 speichern und zumindest einen Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 speichern. Ein Beispiel für ein solches Schema ist untenstehend unter Bezugnahme auf 8 und 9 beschrieben. In manchen Beispielen kann das Schreibmodul 24 den Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 einschreiben und den Block von Benutzerdaten parallel dazu in Arbeitsspeichervorrichtungen 16 einschreiben. Ebenso kann das Lesemodul 28 in manchen Beispielen den Teil der Paritätsdaten aus der Paritätsarbeitsspeichervorrichtung 20 auslesen und den Block von Benutzerdaten parallel dazu aus Arbeitsspeichervorrichtungen 16 auslesen. Auf diese Weise kann das Schreibmodul 24 größere Größen von Paritätsdaten ohne oder mit reduzierten unerwünschten Wirkungen (z. B. erhöhten Zykluszählungen, reduziertem Leistungsverhalten, reduzierter Zuverlässigkeit und erhöhter Lesestörung) verwenden.
-
8 ist ein konzeptuelles Diagramm, das eine beispielhafte logische Konfiguration von Benutzerdaten und zumindest einen Teil von auf unterschiedlichen Arbeitsspeichervorrichtungen gespeicherten Paritätsdaten veranschaulicht. Wie in 8 veranschaulicht, können Benutzerdaten 40A und entsprechende Paritätsdaten 42A1 und Paritätsdaten 42A2 einer logischen Seitenadresse 44A zugeordnet sein und Benutzerdaten 40B und entsprechende Paritätsdaten 42B1 und Paritätsdaten 42B2 können einer logischen Seitenadresse 44B zugeordnet sein. Die Länge 46 kann die kombinierte Länge von Benutzerdaten und Paritätsdaten auf jeder logischen Seitenadresse darstellen. In dem Beispiel von 8 können Benutzerdaten 40A und Benutzerdaten 40B jeweils 8.192 Bytes lang sein und Paritätsdaten 42A1, Paritätsdaten 42A2, Paritätsdaten 42B1 und Paritätsdaten 42B2 können jeweils 128 Bytes lang sein, sodass die kombinierte Länge von auf jeder logischen Seitenadresse zu speichernden Daten 8.448 Bytes betragen kann.
-
9 ist ein konzeptuelles Diagramm, das eine beispielhafte physikalische Konfiguration von Benutzerdaten und zumindest einen Teil von auf verschiedenen Arbeitsspeichervorrichtungen gespeicherten Paritätsdaten veranschaulicht. In manchen Beispielen können die physikalische Seitenadresse 50A bzw. physikalische Seitenadresse 50B Seite 19Aa bzw. Seite 19Ab von 2 entsprechen. Die Länge 48 kann die Maximalgröße von Daten darstellen, deren Speicherung auf jede physikalische Seitenadresse der Speichervorrichtungen 16 das Schreibmodul 24 herbeiführen kann. In dem Beispiel von 9 kann die Länge 48 8.320 Bytes betragen. Die Länge 52 kann die Größe von Paritätsdaten darstellen, die in eine Paritätsarbeitsspeichervorrichtung der Paritätsarbeitsspeichervorrichtungen 20 eingeschrieben sind.
-
Wie in 9 gezeigt, kann das Schreibmodul 24 zumindest einen Teil der Paritätsdaten in Paritätsarbeitsspeichervorrichtungen 20 speichern. Beispielsweise kann das Schreibmodul 24 erste Paritätsdaten 42A1 und zweite Paritätsdaten 42A2 für Benutzerdaten 40A bestimmen. Wie in 8 gezeigt, können Benutzerdaten 40A, erste Paritätsdaten 42A1 und zweite Paritätsdaten 42A2 jeweils der logischen Seitenadresse 44A zugeordnet sein. Das Adresstranslationsmodul 22 kann eine Abbildung bereitstellen, die Benutzerdaten 40A und erste Paritätsdaten 42A1 auf die physikalische Seitenadresse 50A der Arbeitsspeichervorrichtungen 16 abbildet, die Seite 19Aa von 2 entsprechen kann, und zweite Paritätsdaten 42A2 auf Paritätsarbeitsspeichervorrichtungen 20 abbildet. Basierend auf der Abbildung kann das Schreibmodul 24 herbeiführen, dass Benutzerdaten 40A und erste Paritätsdaten 42A1 in Seite 19Aa der Arbeitsspeichervorrichtung 16Aa von 2 eingeschrieben werden, und herbeiführen, dass zweite Paritätsdaten 42A2 in Paritätsarbeitsspeichervorrichtungen 20 eingeschrieben werden.
-
10 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Speichern von Paritätsdaten in einer anderen Arbeitsspeichervorrichtung als entsprechende Benutzerdaten, gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung. Das Verfahren von 10 wird der einfacheren Beschreibung halber unter gleichzeitiger Bezugnahme auf Speichervorrichtung 6 und Steuerung 8 von 1 und 3 beschrieben, obwohl Rechenvorrichtungen mit anderen Konfigurationen als jener der Speichervorrichtung 6 oder Steuerung 8 die Verfahren von 10 ausführen können.
-
Wie in 10 dargestellt, kann die Steuerung 8 einen zu speichernden Datenblock empfangen (1002). Beispielsweise kann das Schreibmodul 24 von Steuerung 8 einen zu speichernden Block von Benutzerdaten von Host 4 von 1 empfangen. Die Steuerung 8 kann Paritätsdaten für den Datenblock bestimmen (1004). Beispielsweise kann das Schreibmodul 24 XOR-Paritätsdaten für den von der Hostvorrichtung 4 empfangenen Block von Benutzerdaten bestimmen. In manchen Beispielen kann das Schreibmodul 24 eine Größe von Paritätsdaten zur Bestimmung für den Datenblock wählen. Beispielsweise kann das Schreibmodul 24 die Größe der Paritätsdaten basierend auf einer oder mehreren Gesundheitsstatistiken der Arbeitsspeichervorrichtungen 16 auswählen, wie beispielsweise einer Bitfehlerhäufigkeit (BER). Als ein Beispiel, wenn die BER niedriger als ein Schwellenwert ist, kann das Schreibmodul 24 eine kleinere Größe von Paritätsdaten (z. B. 128 Bytes, wenn die Größe des Datenblocks 8.192 Bytes beträgt) auswählen, um den Datenblock dann zu bestimmen, wenn die BER größer als der Schwellenwert ist (z. B. 256 Bytes, wenn die Größe des Datenblocks 8.192 Bytes beträgt).
-
Die Steuerung 8 kann bestimmen, ob eine kombinierte Größe der Paritätsdaten und des Datenblocks größer als eine Größe einer Seite einer primären Speicheranordnung ist (1006). Beispielsweise kann das Schreibmodul 24 bestimmen, ob die kombinierte Größe der Paritätsdaten und des Datenblocks größer als eine Größe einer Seite einer Arbeitsspeichervorrichtung der Arbeitsspeichervorrichtungen 16 der nichtflüchtigen Arbeitsspeicheranordnung 10 ist.
-
Wenn die kombinierte Größe der Paritätsdaten und des Datenblocks nicht größer als eine Größe einer Seite der primären Speicheranordnung ist („Nein”-Verzweigung von 1006), kann die Steuerung 8 den Datenblock und die Paritätsdaten in eine Seite der primären Speicheranordnung (1008) einschreiben. Beispielsweise kann das Schreibmodul 24 herbeiführen, dass die Kanalsteuerung 32A den Datenblock und die Paritätsdaten in Seite 19Aa von Block 17A der Arbeitsspeichervorrichtung 16Aa von 2 einschreibt.
-
Wenn die kombinierte Größe der Paritätsdaten und des Datenblocks größer als eine Größe einer Seite der primären Speicheranordnung ist („Ja”-Verzweigung von 1006), kann die Steuerung 8 den Datenblock und einen ersten Teil der Paritätsdaten in eine Seite der primären Speicheranordnung einschreiben und einen zweiten Teil der Paritätsdaten in eine Paritätsarbeitsspeichervorrichtung (1010) einschreiben. Beispielsweise kann das Schreibmodul 24 herbeiführen, dass die Kanalsteuerung 32A den Datenblock und den ersten Teil der Paritätsdaten in Seite 19Aa einschreibt, und herbeiführen, dass eine Paritätsarbeitsspeichervorrichtung der Paritätsarbeitsspeichervorrichtungen 20 den zweiten Teil der Paritätsdaten speichert. Auf diese Weise kann die Steuerung 8 zumindest einen Teil von Paritätsdaten in einer anderen Arbeitsspeichervorrichtung als die entsprechenden Datenblöcke speichern.
-
Die obigen Operationen sind nur ein Beispiel und weitere Variationen kommen in Frage. Beispielsweise kann es in manchen Beispielen sein, dass die Steuerung 8 keine der Paritätsdaten in die primäre Speicheranordnung speichert und die Paritätsdaten immer in die Paritätsarbeitsspeichervorrichtungen speichert, ungeachtet der Größe der Paritätsdaten.
-
Die in der vorliegenden Offenbarung beschriebenen Verfahren können zumindest teilweise in Hardware, Software, Firmware oder jeglichen Kombination davon implementiert werden. Beispielsweise können verschiedene Aspekte der beschriebenen Verfahren innerhalb eines oder mehrerer Prozessoren implementiert sein, einschließlich eines oder mehrere Mikroprozessoren, digitaler Signalprozessoren (DSPs), anwendungsspezifischer integrierter Schaltungen (ASICs), Field-Programmable Gate Arrays (FPGAs) oder jeglicher weiteren äquivalenten integrierten oder diskreten Logikschaltung sowie jeglicher Kombinationen solcher Komponenten. Der Begriff „Prozessor” oder „verarbeitende Schaltung” kann sich im Allgemeinen auf jegliche der vorangegangenen Logikschaltungen, alleine oder in Kombination mit anderen Logikschaltungen, oder jegliche andere äquivalente Schaltung beziehen. Eine Steuereinheit umfassend Hardware kann auch eine oder mehrere Verfahren der vorliegenden Offenbarung durchführen.
-
Solche Hardware, Software und Firmware kann innerhalb derselben Vorrichtung innerhalb separater Vorrichtungen implementiert sein, um die verschiedenen in der vorliegenden Offenbarung beschriebenen Verfahren zu unterstützen. Zusätzlich dazu können jegliche der beschriebenen Einheiten, Module oder Komponenten zusammen oder separat als diskrete, aber interoperable Logikvorrichtungen implementiert sein. Die Darstellung von verschiedenen Merkmalen als Module oder Einheiten soll verschiedene funktionale Aspekte unterstreichen und impliziert nicht notwendigerweise, dass solche Module oder Einheiten durch separate Hardware-, Firmware- oder Softwarekomponenten umgesetzt werden müssen. Vielmehr kann die mit einem oder mehreren Modulen verbundene Funktionalität durch separate Hardware-, Firmware- oder Softwarekomponenten ausgeführt werden oder innerhalb gemeinsamer oder separater Hardware-, Firmware- oder Softwarekomponenten integriert sein.
-
Die in dieser Offenbarung beschriebenen Verfahren können auch in einem Herstellartikel ausgeführt oder kodiert sein, der ein mit Befehlen kodiertes computerlesbares Speichermedium umfasst. Befehle, die in einem Herstellartikel umfassend ein kodiertes computerlesbares Speichermedium eingebettet oder kodiert sind, können herbeiführen, dass eine oder mehrere programmierbare Prozessoren oder andere Prozessoren eine oder mehrere der hierin beschriebenen Verfahren implementieren, wie beispielsweise wenn in dem computerlesbaren Speichermedium enthaltene oder kodierte Befehle durch den einen oder die mehreren Prozessoren ausgeführt werden. Computerlesbare Speichermedien können Random Access Memory (RAM), Nurlesearbeitsspeicher (ROM), programmierbaren Nurlesearbeitsspeicher (PROM), löschbaren programmierbaren Nurlesearbeitsspeicher (EPROM), elektronisch löschbaren programmierbaren Nurlesearbeitsspeicher (EEPROM), Flash-Arbeitsspeicher, eine Festplatte, eine Compact-Disc-ROM (CD-ROM), eine Diskette, eine Kassette, ein Magnetmedium, optisches Medium oder ein anderes computerlesbares Medium umfassen. In manchen Beispielen kann ein Herstellartikel ein oder mehrere computerlesbare Speichermedien umfassen.
-
In manchen Beispielen kann ein computerlesbares Speichermedium ein nichtflüchtiges Medium umfassen. Der Begriff „nichtflüchtig” kann anzeigen, dass das Speichermedium nicht in einer Trägerwelle oder einem übermittelten Signal ausgeführt ist. In bestimmten Beispielen kann ein nichtflüchtiges Speichermedium Daten speichern, die sich im Zeitverlauf ändern können (z. B. in einem RAM oder Cache).
-
Es wurden verschiedene Beispiele beschrieben. Diese und weitere Beispiele liegen innerhalb des Schutzumfangs der folgenden Patentansprüche.