-
Hintergrund
-
Manche Speichermodule, wie ein Festkörperlaufwerk (SSD), enthalten eine Vielzahl von Speicherchips (z. B. in einem Mehrchippaket), die parallel gelesen oder geschrieben werden können. Solche Speichermodule weisen üblicherweise einen maximalen Energieschwellenwert auf, der die Anzahl der Vorgänge einschränkt, die zu einem gegebenen Zeitpunkt ausgeführt werden können. Wenn sich der tatsächliche Energieverbrauch dem maximalen Energieschwellenwert nähert, kann eine Steuereinrichtung im Speichermodul einen neuen Vorgang zurückhalten (z. B. eine Übertragung über die NAND-Schnittstelle hinweg und/oder einen Schreibvorgang), um die Grenze nicht zu überschreiten. Idealerweise ist die im Speichermodul verbrauchte Energie gleich der maximalen Energieverbrauchsgrenze. Da jedoch verschiedene Vorgänge verschiedene Energiemengen verbrauchen können, ist die tatsächlich bei der Drosselung von Vorgängen verbrauchte Energie auf diese Weise oft kleiner als der maximale Energieverbrauch, was zu einer ineffizienten Energienutzung führt.
-
Überblick
-
Ausführungsformen der vorliegenden Erfindung werden durch die Ansprüche definiert und nichts in diesem Abschnitt sollte als eine Einschränkung dieser Ansprüche angesehen werden.
-
Einleitend betreffen die Ausführungsformen unten ein Speichermodul und -verfahren für optimierte Energienutzung. In einer Ausführungsform wird ein Speichermodul bereitgestellt, das eine Speichersteuereinrichtung und eine Vielzahl von Speicherchips in Kommunikation mit der Speichersteuereinrichtung umfasst. Die Speichersteuereinrichtung ermittelt, ob ausreichend Energie verfügbar ist, um einen Vorgang auf einem der Speicherchips durchzuführen. Als Reaktion auf das Ermitteln, dass nicht ausreichend Energie verfügbar ist, um den Vorgang auf einem der Speicherchips durchzuführen, ermittelt die Speichersteuereinrichtung, ob ein Anhalten eines in Bearbeitung befindlichen Vorgangs auf einem anderen der Speicherchips ausreichend Energie bereitstellen würde, um den Vorgang durchzuführen. Als Reaktion auf das Ermitteln, dass das Anhalten des in Bearbeitung befindlichen Vorgangs ausreichend Energie bereitstellen würde, um den Vorgang durchzuführen, hält die Speichersteuereinrichtung den in Bearbeitung befindlichen Vorgang an und führt den Vorgang durch. Anstatt des Anhaltens eines in Bearbeitung befindlichen Vorgangs kann die Speichersteuereinrichtung stattdessen eine Version des Vorgangs oder des in Bearbeitung befindlichen Vorgangs mit reduzierter Energie verwenden.
-
Andere Ausführungsformen sind möglich und jede der Ausführungsformen kann alleine oder zusammen in Kombination verwendet werden. Dementsprechend werden nun verschiedene Ausführungsformen unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
-
Kurzbeschreibung der Zeichnungen
-
1 ist ein Blockdiagramm eines beispielhaften Speichermoduls einer Ausführungsform.
-
2A ist ein Blockdiagramm eines Hosts einer Ausführungsform, wobei das beispielhafte Speichermodul von 1 im Host eingebettet ist.
-
2B ist ein Blockdiagramm des beispielhaften Speichermoduls von 1, das entfernbar mit einem Host verbunden ist, wobei das Speichermodul und der Host trennbare, entfernbare Einrichtungen sind.
-
3 ist ein Diagramm, das eine durchschnittliche verschwendete Energie zeigt, wenn ein Drosselungsvorgang verwendet wird.
-
4 ist ein Diagramm, das eine durchschnittliche verschwendete Energie zeigt, wenn ein Verfahren für optimierte Energienutzung einer Ausführungsform verwendet wird.
-
5 ist ein Ablaufdiagramm eines Verfahrens einer Ausführungsform für optimierte Energienutzung.
-
6 ist ein Ablaufdiagramm eines Verfahrens einer Ausführungsform, das eine reduzierte Energieversion eines neuen Vorgangs verwendet.
-
7 ist ein Ablaufdiagramm eines Verfahrens einer Ausführungsform, das eine reduzierte Energieversion eines bestehenden Vorgangs verwendet.
-
Ausführliche Beschreibung der derzeit bevorzugten Ausführungsformen
-
Wie im Abschnitt zum Stand der Technik oben erwähnt, ist das Zurückhalten eines neuen Vorgangs (z. B. einer Übertragung über die NAND-Schnittstelle hinweg und/oder eines Schreibvorgangs), um ein Überschreiten einer maximalen Energieschwelle eines Speichermoduls zu vermeiden, oft ineffizient, da eine solche Drosselung oft in einem Verbrauch von weit geringerer Energie als erlaubt resultiert. Die folgenden Ausführungsformen können verwendet werden, um einen effizienteren Weg der Energieverwaltung bereitzustellen. Bevor wir uns diesen und anderen Ausführungsformen zuwenden, legen die folgenden Paragrafen eine Besprechung von beispielhaften Speichermodulen dar, die mit diesen Ausführungsformen verwendet werden können. Natürlich sind dies nur Beispiele und andere geeignete Arten von Speichermodulen können verwendet werden.
-
Wie in 1 illustriert, umfasst ein Speichermodul 100 einer Ausführungsform eine Speichersteuereinrichtung 110 und ein nichtflüchtiges Speicherpaket 120, das eine Vielzahl von Speicherchips beinhaltet (Chip 0 bis Chip N). Obwohl nur ein nichtflüchtiges Speicherpaket 120 und eine Speicherschnittstelle 111 in 1 gezeigt werden, sollte klar sein, dass das Speichermodul 100 mehr als ein nichtflüchtiges Speicherpaket und/oder mehr als eine Speicherschnittstelle 111 aufweisen kann. Die Speichersteuereinrichtung 110 umfasst eine Speicherschnittstelle (z. B. eine NAND-Schnittstelle) 111 zum Ankoppeln an das nichtflüchtige Speicherpaket 120 und eine Host-Schnittstelle 112 zum Platzieren des Speichermoduls 100 wirksam in Kommunikation mit einer Host-Steuereinrichtung. Wie hier verwendet, könnte der Ausdruck „wirksam in Kommunikation mit“ direkt in Kommunikation mit oder indirekt in (verdrahteter oder drahtloser) Kommunikation mit einer oder mehreren Komponenten bedeuten, die hier gezeigt oder beschrieben werden können oder auch nicht.
-
Wie in 2A gezeigt, kann das Speichermodul 100 in einem Host 210 eingebettet werden, der eine Host-Steuereinrichtung 220 aufweist. Das heißt, der Host 210 bildet die Host-Steuereinrichtung 220 und das Speichermodul 100 aus, sodass die Host-Steuereinrichtung 220 an das eingebettete Speichermodul 100 ankoppelt, um seine Vorgänge zu verwalten. Das Speichermodul 100 kann zum Beispiel die Form einer iNANDTM eSD/eMMC-eingebetteten Flashlaufwerks von SanDisk Corporation oder allgemeiner, einer beliebigen Art von Festkörperlaufwerk (SSD), einer Hybrid-Steuereinrichtung (die sowohl ein Festplattenlaufwerk als auch ein Festkörperlaufwerk aufweist) und eines Speicher-Zwischenspeichersystems annehmen. Die Host-Steuereinrichtung 220 kann an das eingebettete Speichermodul 100 unter Verwendung beispielsweise einer eMMC-Host-Schnittstelle oder einer UFS-Schnittstelle ankoppeln. Der Host 210 kann eine beliebige Form annehmen, wie ein Mobiltelefon, einen Tablet-Computer, einen digitalen Medienplayer, eine Spieleinrichtung, einen Organizer (PDA), einen mobilen (z. B. Notebook, Laptop) Personalcomputer (PC) oder ein Buchlesegerät, aber nicht darauf beschränkt. Wie in 2A gezeigt, kann der Host 210 optionale andere Funktionalitätsmodule 230 beinhalten. Wenn der Host 210 beispielsweise ein Mobiltelefon ist, können die anderen Funktionalitätsmodule 230 Hardware- und/oder Softwarekomponenten beinhalten, um Telefonanrufe zu machen und zu tätigen. Als ein weiteres Beispiel, wenn der Host 210 Netzwerkverbindungsfähigkeiten aufweist, können die anderen Funktionalitätsmodule 230 eine Netzwerkschnittstelle beinhalten. Natürlich sind dies nur einige Beispiele und andere Implementierungen können verwendet werden. Außerdem kann der Host 210 andere Komponenten beinhalten (z. B. eine Audioausgabe, Eingabe-Ausgabe-Anschlüsse usw.), die nicht in 2A gezeigt werden, um die Zeichnung zu vereinfachen. Es sollte angemerkt werden, dass, obwohl die Host-Steuereinrichtung 220 das Speichermodul 100 steuern kann, das Speichermodul 100 seine eigene Steuereinrichtung aufweisen kann, um seine internen Speichervorgänge zu steuern. Im Allgemeinen kann eine Host-Steuereinrichtung auch eine beliebige Steuereinrichtung sein, die fähig ist, an das Speichermodul anzukoppeln, egal ob es sich um eine Steuereinrichtung in monolithischer Form, eine gesamte Steuereinrichtung oder ein separates Funktionalitätsmodul handelt.
-
Wie in 2B gezeigt, anstatt eine eingebettete Einrichtung in einem Host zu sein, kann das Speichermodul 100 physische und elektrische Anschlussteile aufweisen, die dem Speichermodul 100 erlauben, entfernbar über Gegenanschlussteile mit einem Host 240 verbunden zu sein (der eine Host-Steuereinrichtung 245 aufweist). Als solches ist das Speichermodul 100 eine separate Einrichtung vom Host 240 (und ist nicht in diesen eingebettet). In diesem Beispiel kann das Speichermodul 100 eine tragbare, entfernbare Speichereinrichtung sein, wie eine sichere digitale Speicherkarte (SD-Speicherkarte), eine microSD-Speicherkarte, eine CompactFlash-Speicherkarte (CF-Speicherkarte), eine Universal-Serial-Bus-Einrichtung (USB-Einrichtung) (mit einer USB-Schnittstelle zum Host) oder ein Festkörperlaufwerk (SSD), und der Host 240 ist eine separate Einrichtung, wie zum Beispiel ein Mobiltelefon, ein Tablet-Computer, ein digitaler Medienplayer, eine Spieleeinrichtung, ein Organizer (PDA), ein mobiler (z. B. Notebook, Laptop) Personalcomputer (PC) oder ein Buchlesegerät.
-
In den 2A und 2B ist das Speichermodul 100 über die in 1 gezeigte Host-Schnittstelle 112 in Kommunikation mit einer Host-Steuereinrichtung 220 oder einem Host 240. Die Host-Schnittstelle 112 kann eine beliebige geeignete Form annehmen, wie eine eMMC-Host-Schnittstelle, eine UFS-Schnittstelle und eine USB-Schnittstelle, aber nicht darauf beschränkt. Die Host-Schnittstelle 110 im Speichermodul 110 übermittelt Speicherverwaltungsbefehle von der Host-Steuereinrichtung 220 (2A) oder dem Host 240 (2B) an die Speichersteuereinrichtung 110 und übermittelt auch Speicherantworten von der Speichersteuereinrichtung 110 an die Host-Steuereinrichtung 220 (2A) oder den Host 240 (2B). Außerdem sollte angemerkt werden, dass, wenn das Speichermodul 110 im Host 210 eingebettet ist, einige oder alle der hier als von der Speichersteuereinrichtung 110 im Speichermodul 100 durchgeführt beschriebenen Funktionen stattdessen von der Host-Steuereinrichtung 220 durchgeführt werden können.
-
Zu 1 zurückkehrend umfasst die Speichersteuereinrichtung 110 eine Zentralprozessoreinheit (CPU) 113, eine optionale Hardware-Crypto-Engine 114, die betrieben werden kann, um Verschlüsselungs- und/oder Entschlüsselungvorgänge bereitzustellen, Speicher mit wahlfreiem Zugriff (RAM) 215, schreibgeschützten Speicher (ROM) 116, der Firmware für die grundlegenden Vorgänge des Speichermoduls 100 speichern kann, und einen nichtflüchtigen Speicher (NVM) 117, der einen einrichtungsspezifischen Schlüssel speichern kann, der für Verschlüsselungs-/Entschlüsselungsvorgänge verwendet werden kann, wenn diese verwendet werden. Die Speichersteuereinrichtung 110 kann auf eine beliebige geeignete Weise implementiert werden. Die Speichersteuereinrichtung 110 kann zum Beispiel die Form von einem Mikroprozessor oder Prozessor und einem computerlesbaren Medium annehmen, das computerlesbaren Programmcode speichert (z. B. Software oder Firmware), der zum Beispiel vom (Mikro-)Prozessor, logischen Gattern, Switches, einem anwendungsspezifischen integrierten Schaltkreis (ASIC), einer speicherprogrammierbaren Steuerung und einem eingebetteten Mikrocontroller ausführbar ist. Geeignete Steuereinrichtungen sind von SanDisk oder anderen Anbietern erhältlich. Die Speichersteuereinrichtung 110 kann mit Hardware und/oder Software konfiguriert werden, um die verschiedenen, unten beschriebenen und in den Ablaufdiagrammen gezeigten Funktionen durchzuführen. Außerdem können einige der als intern zur Speichersteuereinrichtung 110 gezeigten Komponenten auch extern zur Speichersteuereinrichtung 110 gespeichert werden und andere Komponenten können verwendet werden. Das RAM 115 (oder eine zusätzliche RAM-Einheit) kann beispielsweise außerhalb des Steuereinrichtungschips angeordnet sein und als ein Seitenpuffer für Daten verwendet werden, die aus dem Speicherpaket 120 gelesen werden und/oder in dieses geschrieben werden.
-
Die Speicherchips im nichtflüchtigen Speicherpaket 120 können auch eine beliebige geeignete Form annehmen. In einer Ausführungsform nimmt bzw. nehmen zum Beispiel einer oder mehrere der Speicherchips die Form eines Festkörperspeichers (z. B. Flashspeichers) an und kann bzw. können einmal programmierbar, wenige Male programmierbar oder viele Male programmierbar sein. Die Speicherchips können auch Single-Level-Cell-(SLC-), Multi-Level-Cell-(MLC-), Triple-Level-Cell-Speichertechnologien(TLC-Speichertechnologien) oder andere Speichertechnologien verwenden, nun bekannt oder später entwickelt. Außerdem können die Speicherchips ein zweidimensionaler Speicher oder ein dreidimensionaler Speicher sein.
-
Wie oben erwähnt muss das Speichermodul 100 sicherstellen, dass die tatsächlich verbrauchte Energie kleiner als ein maximaler Energieverbrauchsschwellenwert ist. Hierzu kann die Steuereinrichtung 110 des Speichermoduls den Gesamtenergieverbrauch auf Basis von Vorgängen (z. B. eine Übertragung von Daten über die Speicherschnittstelle 111 hinweg, einen Schreibvorgang, einen Lesevorgang oder einen Löschvorgang) vorausberechnen, die im bzw. in den Speicherchip(s) des Speichermoduls 100 durchzuführen sind. Wenn der vorausberechnete Verbrauch größer als der Schwellenwert ist, kann den Vorgang zurückhalten, sodass er nicht durchgeführt wird. Unterschiedliche Vorgänge können jedoch unterschiedliche Energiemengen auf unausgeglichene Weise verbrauchen. Wenn zum Beispiel Daten über eine NAND-Schnittstelle übertragen werden (für einen Lese- oder Schreibvorgang), kann eine solche Übertragung für eine relativ kurze Dauer 300 mW (oder 3 Energieeinheiten) verbrauchen. Während Lesevorgänge typischerweise von niedriger Energie sind und in diesem Beispiel als 0 Energieeinheiten verbrauchend angenommen werden), kann ein Schreibvorgang 100 mW (oder 1 Energieeinheit) für eine sehr lange Dauer verbrauchen. Wenn ein Speichermodul wie ein SSD in hoher Parallelität nahe der Energiegrenze arbeitet, kann dieses Energieungleichgewicht in ineffizientem Energieverbrauch resultieren, wie im Diagramm in 3 illustriert.
-
3 zeigt ein Beispiel von Energieverbrauch beim Schreiben von Daten in ein Speichermodul aus vier Chips, bei dem die Energieschwellengrenze in einem beliebigen gegebenen Zeitsegment 5 Einheiten beträgt. Am Beginn dieses Schreibprozesses werden drei Seiten von Daten an das Speichermodul 100 zur Speicherung in NAND-Chips 0, 1 und 2 gesendet. Wie in 3 zum Zeitpunkt 1 gezeigt, wird die erste Seite von Daten für 3 Energieeinheiten übertragen. Da kein anderer Vorgang zu diesem Zeitpunkt eintritt, werden 2 Energieeinheiten verschwendet (d. h. die Energiegrenze ist 5 Einheiten, aber nur 3 Einheiten werden verwendet). Zum Zeitpunkt 2 wird damit begonnen, dass die erste Seite von Daten, die zum Zeitpunkt 1 empfangen wurde, in den NAND-Chip 0 geschrieben wurde. Das Schreiben dieser Seite dauert 6 Zeitsegmente, mit 1 Energieeinheit pro Zeitsegment. Deshalb erfordert das Schreiben dieser Seite 1 Energieeinheit in Zeitpunkten 2–7. Gleichermaßen wird die Seite der zum Zeitpunkt 2 empfangenen Daten von den Zeitpunkten 3–8 mit 1 Energieeinheit pro Zeitsegment in den NAND-Chip 1 geschrieben. Und die Seite der zum Zeitpunkt 3 empfangenen Daten wird von den Zeitpunkten 4–9 mit 1 Energieeinheit pro Zeitsegment in den NAND-Chip 2 geschrieben. Wie im Diagramm gezeigt benötigen die Datenübertragung und/oder die Schreibvorgänge vom Zeitpunkt 1 bis zum Zeitpunkt 7 zwischen 3 und 5 Energieeinheiten zu einem beliebigen gegebenen Zeitsegment, was 0–2 Energieeinheiten zu allen gegebenen Zeitsegmenten übrig lässt. 0–2 Energieeinheiten ist nicht ausreichend Energie, um zusätzliche Seiten von Daten über die Speicherschnittstelle 111 zu empfangen, da das Empfangen einer weiteren Seite von Daten 3 Energieeinheiten erfordert. Deshalb muss das Speichermodul 100 bis zum Zeitpunkt 8 warten, wenn es ausreichend Energie gibt, um eine neue Seite von Daten von der Steuereinrichtung 110 über die Speicherschnittstelle 111 zu empfangen. Das heißt, obwohl es zu den Zeitpunkten 2–7 übrig gebliebene Energie gab, war diese übrig gebliebene Energie nicht ausreichend, um die Schnittstelle mit Energie zu versorgen, um neue, zu schreibende Daten anzunehmen oder aus dem Speicher gelesene Daten auszusenden. Dieses Problem breitet sich durch die anderen Zeitsegmente aus.
-
Falls deshalb das Speichermodul 100 in diesem Beispiel bei 3 oder mehr Energieeinheiten vom Grenzschwellenwert arbeitet und ein NAND-Übertragungsvorgang anhängig ist, dann ist der NAND-Übertragungsvorgang erlaubt. Falls jedoch weniger als 3 Energieeinheiten verfügbar sind, dann wird der NAND-Übertragungsvorgang zurückgehalten, bis irgendein laufender Vorgang (z. B. ein Programm) endet und dadurch 1 Energieeinheit freigibt, um zuzulassen, dass der NAND-Übertragungsvorgang beginnt. Auf diese Weise resultieren Drosselungsvorgänge in einem Betreiben des Speichermoduls 100 durchschnittlich 1,2 Energieeinheiten unter der Schwellenwertgrenze, wodurch in diesem Beispiel 1,2 Energieeinheiten „verschwendet“ werden.
-
Um einen effizienteren Weg zum Vermeiden des Überschreitens eines maximalen Energieschwellenwerts bereitzustellen, können die folgenden Ausführungsformen verwendet werden, um die Energienutzung zu optimieren. In einer Ausführungsform verwendet das Speichermodul eine manuelle Anhalte-/Fortsetzungsfunktion, anstatt einen neuen Vorgang zurückzuhalten, um den Energieverbrauch zu steuern. Diese Ausführungsform nutzt die Tatsache aus, dass der Speicherchip (z. B. NAND) geringfügige Energie verbraucht, wenn ein Programmvorgang angehalten wird; und wenn der Programmvorgang fortgesetzt wird, setzt der Speicherchip von dem Punkt fort, wo er angehalten wurde. Wenn nach dieser Ausführungsform ein neuer Vorgang (z. B. eine Datenübertragung über die Speicherschnittstelle 111) angefordert wird, kann das Speichermodul 100 einen oder mehrere laufende Vorgänge (z. B. Programmvorgänge) anhalten, bis es ausreichend Energie gibt, um den neuen Vorgang zu erlassen, vorausgesetzt, dass die Energiegrenzen erfüllt sind. Nach Abschluss des neuen Vorgangs kann bzw. können der angehaltene Vorgang bzw. die ausgehaltenen Vorgänge fortgesetzt werden.
-
4 zeigt ein Diagramm, dem in 3 ähnlich, um die Energieeinsparungen zu illustrieren, die von dieser Ausführungsform geboten werden. In der in 3 gezeigten Energiedrosselungssituation hatte der Zeitpunkt 4 2 Energieeinheiten übrig – nicht genug, um eine Schnittstellenübertragung zu 3 Energieeinheiten mit Energie zu versorgen. In dieser Ausführungsform wird der NAND-Chip-0-Schreibvorgang zum Zeitpunkt 4 angehalten (diese und andere angehaltene Vorgänge sind in 4 gekennzeichnet) und die 1 Energieeinheit, die für den Schreibvorgang verwendet worden wäre, wird stattdessen zusammen mit den 2 übrig gebliebenen Energieeinheiten verwendet, um die Schnittstellenübertragung zu 3 Energieeinheiten mit Energie zu versorgen. Nachdem diese Schnittstellenübertragung abgeschlossen ist, setzt der Schreibvorgang zum Zeitpunkt 5 fort. Obwohl dies die zum Abschluss des Schreibvorgangs zum NAND-Chip 0 benötigte Zeit streckt (von 6 Zeitsegmenten in 3 auf 7 Zeitsegmente in 4), stellt diese Ausführungsform im Gesamten einen effizienteren Energieverbrauch für das Speichermodul 100 bereit (in diesem Fall ist die verschwendete Energie durchschnittlich 0,6 Einheiten, was eine Verbesserung von 1 Energieeinheit gegenüber dem nicht optimierten Fall in 3 ist). Deshalb kann das Speichermodul 100 durch Verwenden dieser Ausführungsform eine höhere Leistung erreichen, indem es Energie in größtmöglichem Ausmaß nutzt.
-
Diese Anhalte-/Fortsetzungstechnik kann auf eine beliebige geeignete Weise implementiert werden und 5 ist ein Ablaufdiagramm 500 einer geeigneten Technik, die in Software und/oder Hardware der Steuereinrichtung 110 des Speichermoduls implementiert werden kann. Wie im Ablaufdiagramm 500 in 5 gezeigt, entscheidet die Speichersteuereinrichtung 110, ob eine neue Vorgangsanforderung empfangen wurde (Handlung 505). Falls ja, fügt die Steuereinrichtung 110 die neue Vorgangsanforderung zur Vorgangswarteschlange hinzu (Handlung 510). Die Steuereinrichtung 110 ermittelt dann, ob eine Vorgangsanforderung in die Warteschlange eingefügt wurde oder ob irgendein bestehender Vorgang abgeschlossen wurde (Handlung 520). Falls ja, wählt die Steuereinrichtung 110 den Vorgang mit der höchsten Priorität, der noch nicht ausgewertet wurde (Handlung 530) und ermittelt, ob es ausreichend Energie gibt, um diesen Vorgang durchzuführen (Handlung 540). Falls es ausreichend Energie gibt, führt die Steuereinrichtung 110 den Vorgang durch (oder setzt den angehaltenen Vorgang fort) (Handlung 550). Falls es nicht ausreichend Energie gibt, ermittelt die Steuereinrichtung 110, ob der Vorgang eine höhere Priorität aufweist, als ein bestehender Vorgang (Handlung 560). Falls er dies tut, ermittelt die Steuereinrichtung 110, ob der Vorgang ausgeführt werden kann, wenn ein bestehender Vorgang mit niedrigerer Priorität ausgesetzt wird (Handlung 570). Falls ja, ermittelt die Steuereinrichtung 110 den Vorgang mit der niedrigsten Priorität und hält diesen an (Handlung 580) und fügt den angehaltenen Vorgang in die Vorgangswarteschlange ein (Handlung 590).
-
Es gibt mehrere Alternativen, die mit diesen Ausführungsformen verwendet werden können. Anstatt Vorgänge anzuhalten/fortzusetzen, kann die Steuereinrichtung 110 des Speichermoduls zum Beispiel stattdessen eine Version mit reduzierter Energie eines neuen Vorgangs verwenden. Falls der neue Vorgang zum Beispiel eine NAND-Schnittstellenübertragung ist, die typischerweise mit einem Schaltmodus von 200 MHz läuft und 3 Energieeinheiten verbraucht, kann es eine NAND-Schnittstellenübertragung mit reduzierter Energie geben, die mit einem Schaltmodus von 100 MHz läuft und nur 2 Energieeinheiten verbraucht. Wenn nur 2 Energieeinheiten verfügbar sind, kann dieses NAND-Schnittstellenschalten mit reduzierter Energie verwendet werden, während die „normale“ Alternative mit 3 Energieeinheiten zurückgehalten worden wäre. 6 ist ein Ablaufdiagramm 600 einer beispielhaften Implementierung dieser alternativen Ausführungsform.
-
Wie im Ablaufdiagramm 600 in 6 gezeigt, entscheidet die Steuereinrichtung 110, ob eine neue Vorgangsanforderung empfangen wurde (Handlung 605). Falls ja, fügt die Steuereinrichtung 110 die neue Vorgangsanforderung zur Vorgangswarteschlange hinzu (Handlung 610). Die Steuereinrichtung 110 ermittelt dann, ob eine Vorgangsanforderung in die Warteschlange eingefügt wurde oder ob irgendein bestehender Vorgang abgeschlossen wurde (Handlung 620). Falls ja, wählt die Steuereinrichtung 110 den Vorgang mit der höchsten Priorität, der noch nicht ausgewertet wurde (Handlung 630) und ermittelt, ob es ausreichend Energie gibt, um diesen Vorgang durchzuführen (Handlung 640). Falls es ausreichend Energie gibt, führt die Steuereinrichtung 110 den Vorgang durch (Handlung 650). Falls es nicht ausreichend Energie gibt, ermittelt die Steuereinrichtung 110, ob der Vorgang einen reduzierten Energiemodus aufweist (Handlung 660). Falls er dies tut, ermittelt die Steuereinrichtung 110, ob der Vorgang ausgeführt werden kann, wenn er in die Version mit reduzierter Energie umgeschaltet wird (Handlung 670). Falls er dies kann, reduziert die Steuereinrichtung 110 den Energiemodus des Vorgangs (Handlung 680) und führt den Vorgang durch (Handlung 650).
-
In einer anderen alternativen Ausführung kann die Steuereinrichtung 110 des Speichermoduls eine Version mit reduzierter Energie eines laufenden Vorgangs verwenden, anstatt eine Version mit reduzierter Energie eines neuen Vorgangs zu verwenden. Falls beispielsweise die laufenden Vorgänge NAND-Programmvorgänge sind, die typischerweise jeweils 1 Energieeinheit verbrauchen, kann es einen NAND-Programmvorgang mit reduzierter Energie geben, der nur 0,8 Energieeinheiten verbraucht (z. B. langsamere Programmierung). Durch Umschalten von 10 NANDs zu dieser reduzierten Energiealternative werden 2 Energieeinheiten eingelöst und der neue NAND-Schnittstellenvorgang kann ausgeführt werden. Die NAND-Programmchips mit reduzierter Energie können dann zurück zum normalen Programmmodus umgeschaltet werden, der 1 Energieeinheit verbraucht. 7 ist ein Ablaufdiagramm 700 einer beispielhaften Implementierung dieser alternativen Ausführungsform.
-
Wie im Ablaufdiagramm 700 in 7 gezeigt, entscheidet die Steuereinrichtung 110, ob eine neue Vorgangsanforderung empfangen wurde (Handlung 705). Falls ja, fügt die Steuereinrichtung 110 die neue Vorgangsanforderung zur Vorgangswarteschlange hinzu (Handlung 710). Die Steuereinrichtung 110 ermittelt dann, ob eine Vorgangsanforderung in die Warteschlange eingefügt wurde oder ob irgendein bestehender Vorgang abgeschlossen wurde (Handlung 720). Falls ja, wählt die Steuereinrichtung 110 den Vorgang mit der höchsten Priorität, der noch nicht ausgewertet wurde (Handlung 730) und ermittelt, ob es ausreichend Energie gibt, um diesen Vorgang durchzuführen (Handlung 740). Falls es ausreichend Energie gibt, führt die Steuereinrichtung 110 den Vorgang durch (oder schaltet in einen Modus des Vorgangs mit voller Energie um) (Handlung 750). Falls es nicht ausreichend Energie gibt, ermittelt die Steuereinrichtung 110, ob der Vorgang eine höhere Priorität aufweist, als ein bestehender Vorgang (Handlung 760). Falls er dies tut, ermittelt die Steuereinrichtung 110, ob der Vorgang ausgeführt werden kann, wenn ein bestehender Vorgang mit niedrigerer Priorität in einen Modus mit reduzierter Energie umgeschaltet wird (Handlung 770). Falls ja, ermittelt die Steuereinrichtung 110, welcher Vorgang zum reduzierten Energiemodus reduziert werden sollte (Handlung 780). Die Steuereinrichtung 110 fügt dann den reduzierten Vorgang zum Zurückschalten zur vollen Energie in die Warteschlange ein (Handlung 790).
-
Schlussendlich kann wie oben erwähnt ein beliebiger geeigneter Speichertyp verwendet werden. Halbleiter-Speichereinrichtungen beinhalten flüchtige Speichereinrichtungen, wie dynamische Speichereinrichtungen mit wahlfreiem Zugriff („DRAM“) oder statische Speichereinrichtungen mit wahlfreiem Zugriff („SRAM“), nichtflüchtige Speichereinrichtungen, wie resistiven Speicher mit wahlfreiem Zugriff („ReRAM“), elektrisch löschbarer programmierbarer schreibgeschützter Speicher („EEPROM“), Flash-Speicher (der auch als eine Teilmenge von EEPROM angesehen werden kann), ferroelektrischen Speicher mit wahlfreiem Zugriff („FRAM“) und magnetoresistiven Speicher mit wahlfreiem Zugriff („MRAM“) und andere Halbleiterelemente, die Informationen speichern können. Jeder Typ von Speichereinrichtung kann unterschiedliche Konfigurationen aufweisen. Flash-Speichereinrichtungen können zum Beispiel in einer NAND- oder einer NOR-Konfiguration konfiguriert sein.
-
Die Speichereinrichtungen können aus passiven und/oder aktiven Elementen gebildet werden, in beliebigen Kombinationen. Beispielsweise, aber nicht einschränkend, enthalten passive Halbleiter-Speicherelemente ReRAM-Einrichtungselemente, die in manchen Ausführungsformen ein Resistivitäts-umschaltendes Speicherelement enthalten, wie ein Antifuse-Phasenübergangsmaterial usw. und optional ein Leitelement wie eine Diode usw. Ferner enthalten aktive Halbleiter-Speicherelemente beispielsweise, aber nicht einschränkend, EEPROM und Flashspeicher-Einrichtungselemente, die in manchen Ausführungsformen Elemente enthalten, die einen Ladungsspeicherbereich wie ein Floating Gate, leitende Nanopartikel oder ein dielektrisches Ladungsspeichermaterial beinhalten.
-
Mehrere Speicherelemente können so konfiguriert sein, dass sie in Reihe verbunden sind, oder so, dass auf jedes Element einzeln zugegriffen werden kann. Beispielsweise, aber nicht einschränkend beinhalten Flashspeichereinrichtungen in einer NAND-Konfiguration (NAND-Speicher) typischerweise in Reihe geschaltete Speicherelemente. Ein NAND-Speicherarray kann so konfiguriert sein, dass das Array aus mehreren Speicherstrings besteht, in denen ein String aus mehreren Speicherelementen besteht, die sich eine einzige Bitleitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente so konfiguriert sein, dass auf jedes Element einzeln zugegriffen werden kann, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft und Speicherelemente können anderweitig konfiguriert sein.
-
Die Halbleiter-Speicherelemente, die sich in und/oder auf einem Substrat befinden, können in zwei oder drei Dimensionen angeordnet sein, wie eine zweidimensionale Speicherstruktur oder eine dreidimensionale Speicherstruktur.
-
In einer zweidimensionalen Speicherstruktur sind die Halbleiter-Speicherelemente in einer einzigen Ebene oder einem einzigen Speichereinrichtungsniveau angeordnet. Üblicherweise sind Speicherelemente in einer zweidimensionalen Speicherstruktur in einer Ebene angeordnet (z. B. in einer Ebene in x-z-Richtung), die sich wesentlich parallel zu einer Hauptoberfläche eines Substrats erstreckt, das die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über dem oder in dem die Speicherelemente ausgebildet sind, oder es kann ein Trägersubstrat sein, das an den Speicherelementen angebracht wird, nachdem sie ausgebildet wurden. Als nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie Silizium enthalten.
-
Die Speicherelemente können im einzelnen Speichereinrichtungsniveau in einem geordneten Array angeordnet sein, wie in einer Vielzahl von Zeilen und/oder Spalten. Die Speicherelemente können jedoch auch in nicht regelmäßigen oder nicht orthogonalen Konfigurationen in Arrays angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen aufweisen, wie Bitleitungen und Wortleitungen.
-
Ein dreidimensionales Speicherarray ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichereinrichtungsniveaus einnehmen, wodurch eine Struktur in drei Dimensionen gebildet wird (d. h. in den x-, y- und z-Richtungen, wobei die y-Richtung wesentlich senkrecht und die x- und z-Richtungen wesentlich parallel zur Hauptoberfläche des Substrats sind).
-
Als nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als ein Stapel von mehreren zweidimensionalen Speichereinrichtungsniveaus angeordnet sein. Als ein weiteres nicht einschränkendes Beispiel kann ein dreidimensionales Speicherarray als mehrere vertikale Spalten (z. B. Spalten, die sich wesentlich senkrecht zur Hauptoberfläche des Substrats erstrecken, d. h. in der y-Richtung), wobei jede Spalte mehrere Speicherelemente in jeder Spalte aufweist. Die Spalten können in einer zweidimensionalen Konfiguration angeordnet sein, z. B. in einer x-z-Ebene, was in einer dreidimensionalen Anordnung von Speicherelementen mit Elementen auf mehreren vertikal gestapelten Speicherebenen resultiert. Andere Konfigurationen von Speicherelementen in drei Dimensionen können auch ein dreidimensionales Speicherarray bilden.
-
Als nicht einschränkendes Beispiel können die Speicherelemente in einem dreidimensionalen NAND-Speicherarray aneinander gekoppelt sein, um einen NAND-String in einem einzelnen horizontalen (z. B. x-z-)Speichereinrichtungsniveau zu formen. Alternativ können die Speicherelemente aneinander gekoppelt sein, um einen vertikalen NAND-String zu bilden, der mehrere horizontale Speichereinrichtungsniveaus durchquert. Man kann sich andere dreidimensionale Konfigurationen vorstellen, wobei manche NAND-Strings Speicherelemente in einem einzigen Speicherniveau beinhalten, während andere Strings Speicherelemente beinhalten, die mehrere Speicherniveaus umspannen können. Dreidimensionale Speicherarrays können ebenfalls in einer NOR-Konfiguration und in einer ReRAM-Konfiguration konstruiert werden.
-
Üblicherweise werden in einem monolithischen dreidimensionalen Speicherarray ein oder mehrere Speichereinrichtungsniveaus über einem einzelnen Substrat gebildet. Optional kann das monolithische dreidimensionale Speicherarray auch ein oder mehrere Speicherschichten zumindest teilweise innerhalb des einzelnen Substrats aufweisen. Als nicht einschränkendes Beispiel kann das Substrat einen Halbleiter wie Silizium enthalten. In einem monolithischen dreidimensionalen Array werden die Schichten, die jedes Speichereinrichtungsniveau des Arrays bilden, typischerweise auf den Schichten der zugrunde liegenden Speichereinrichtungsniveaus des Arrays geformt. Schichten von benachbarten Speichereinrichtungsniveaus eines monolithischen dreidimensionalen Speicherarrays können jedoch gemeinsam genutzt werden oder dazwischenliegende Schichten zwischen Speichereinrichtungsniveaus aufweisen.
-
Andererseits können zweidimensionale Arrays getrennt geformt und danach zusammen verpackt werden, um eine nicht monolithische Speichereinrichtung mit mehreren Speicherschichten zu formen. Nicht monolithische gestapelte Speicher können zum Beispiel durch Formen von Speicherniveaus auf getrennten Substraten und danach Stapeln der Speicherniveaus übereinander konstruiert werden. Die Substrate können vor dem Stapeln ausgedünnt oder aus den Speichereinrichtungsniveaus entfernt werden, aber da die Speichereinrichtungsniveaus anfänglich über getrennten Substraten geformt werden, sind die resultierenden Speicherarrays keine monolithischen dreidimensionalen Speicherarrays. Ferner können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nicht monolithisch) auf separaten Chips geformt werden und danach zusammen verpackt werden, um eine Speichereinrichtung mit gestapelten Chips zu formen.
-
Assoziierte Verschaltung ist üblicherweise für einen Betrieb der Speicherelemente und zur Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichereinrichtungen Verschaltung aufweisen, die zum Steuern und Antreiben von Speicherelementen verwendet wird, um Funktionen wie Programmierung und Lesen auszuführen. Diese assoziierte Verschaltung kann sich auf dem gleichen Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Eine Steuereinrichtung für Speicher-Lese-Schreibvorgänge kann beispielsweise auf einem separaten Steuereinrichtungschip und/oder auf dem gleichen Substrat wie die Speicherelemente angeordnet sein.
-
Fachleute werden erkennen, dass diese Erfindung nicht auf die beschriebenen, beispielhaften zweidimensionalen und dreidimensionalen Strukturen beschränkt ist, sondern alle relevanten Speicherstrukturen im Geist und Umfang der Erfindung abdeckt, wie hierin beschrieben und wie durch Fachleute verstanden.
-
Es ist beabsichtigt, dass die vorstehende detaillierte Beschreibung als eine Darstellung von ausgewählten Formen, die die Erfindung annehmen kann, und nicht als Definition der Erfindung verstanden wird. Es sind nur die folgenden Ansprüche, einschließlich aller Äquivalente, die den Umfang der beanspruchten Erfindung definieren sollen. Schließlich ist anzumerken, dass ein beliebiger Aspekt von beliebigen der hierin beschriebenen bevorzugten Ausführungsformen allein oder in Kombination miteinander verwendet werden kann.