-
GEBIET DER OFFENBARUNG
-
Diese Offenbarung bezieht sich im Allgemeinen auf elektronische Vorrichtungen und insbesondere auf Datenspeichervorrichtungen, die von elektronischen Vorrichtungen zur Datenspeicherung verwendet werden.
-
HINTERGRUND
-
Datenspeichervorrichtungen ermöglichen es Benutzern, Daten zu speichern und abzurufen. Beispiele für Datenspeichervorrichtungen schließen flüchtige Speichervorrichtungen und nichtflüchtige Speichervorrichtungen ein. Ein nichtflüchtiger Speicher kann Daten nach einem Abschaltereignis beibehalten, und ein flüchtiger Speicher kann Daten nach einem Abschaltereignis verlieren.
-
Unter bestimmten Umständen kann es bei einer Datenspeichervorrichtung zu einem Ausfallereignis (z. B. einem „Absturz“) kommen. Daten, die einen Betriebszustand der Datenspeichervorrichtung anzeigen, können aus der Datenspeichervorrichtung gelesen werden, um einem Prüfcomputer zu ermöglichen, die Datenspeichervorrichtung zu debuggen. In einigen Fällen kann auf eine oder mehrere Komponenten der Datenspeichervorrichtung physisch zugegriffen werden oder sie können entfernt werden, um die Daten abzurufen (z. B. durch das Entfernen und Abtasten einer Komponente der Datenspeichervorrichtung).
-
In einigen Fällen kann der Zugriff auf eine Datenspeichervorrichtung zum Erhalten der Daten schwierig sein. Zum Beispiel kann ein Unternehmensspeichersystem eine große Anzahl von Datenspeichervorrichtungen einschließen, die zum Debuggen schwer zugänglich sind oder sich nur schwer entfernen lassen. In diesem Fall können Daten, die einen Betriebszustand einer ausgefallenen Speichervorrichtung anzeigen, schwer abrufbar sein.
-
Figurenliste
-
- 1 ist ein Blockdiagramm eines bestimmten veranschaulichenden Beispiels eines Systems einschließlich einer Datenspeichervorrichtung, die eingerichtet ist, um Vorgänge unter Verwendung einer drahtlosen Schnittstelle durchzuführen.
- 2 ist ein Blockdiagramm eines bestimmten veranschaulichenden Beispiels eines Systems, das bestimmte veranschaulichende Komponenten des Systems von 1 einschließt.
- 3 ist ein Flussdiagramm eines bestimmten veranschaulichenden Beispiels eines Betriebsverfahrens einer Datenspeichervorrichtung, wie beispielsweise der Datenspeichervorrichtung von 1.
- 4 ist ein Flussdiagramm eines anderen bestimmten veranschaulichenden Beispiels eines Betriebsverfahrens einer Datenspeichervorrichtung, wie beispielsweise der Datenspeichervorrichtung von 1.
- 5 ist ein Flussdiagramm eines anderen bestimmten veranschaulichenden Beispiels eines Betriebsverfahrens einer Datenspeichervorrichtung, wie beispielsweise der Datenspeichervorrichtung von 1.
- 6 ist ein Flussdiagramm eines anderen bestimmten veranschaulichenden Beispiels eines Betriebsverfahrens einer Datenspeichervorrichtung, wie beispielsweise der Datenspeichervorrichtung von 1.
- 7 ist ein Flussdiagramm eines anderen bestimmten veranschaulichenden Beispiels eines Betriebsverfahrens einer Datenspeichervorrichtung, wie beispielsweise der Datenspeichervorrichtung von 1, um einen Lastausgleichsvorgang durchzuführen.
- 8 ist ein Flussdiagramm eines anderen bestimmten veranschaulichenden Beispiels eines Betriebsverfahrens einer Datenspeichervorrichtung, wie beispielsweise der Datenspeichervorrichtung von 1, um einen Ausfallsicherungsvorgang durchzuführen.
-
DETAILLIERTE BESCHREIBUNG
-
Eine Datenspeichervorrichtung gemäß bestimmten Gesichtspunkt der Offenbarung schließt eine drahtlose Schnittstelle ein. In einem bestimmten Beispiel ist die drahtlose Schnittstelle so eingerichtet, dass sie Daten an eine andere Vorrichtung (z. B. eine Prüfvorrichtung) bereitstellt, damit die andere Vorrichtung einen oder mehrere Fehleranalysevorgänge durchführen kann (z. B. um die Datenspeichervorrichtung zu debuggen). Zum Beispiel kann die Datenspeichervorrichtung ein Fehlerereignis erkennen, wie z. B. einen Kommunikationsverlust mit einer Host-Vorrichtung über eine verkabelte Schnittstelle oder ein anderes Fehlerereignis. Als Reaktion auf das Erkennen des Fehlerereignisses kann die Datenspeichervorrichtung der Prüfvorrichtung automatisch (z. B. in „Echtzeit“ oder in nahezu Echtzeit) Daten bereitstellen, die einen Betriebszustand der Datenspeichervorrichtung anzeigen. Durch das automatische Bereitstellen der Daten an die Prüfvorrichtung können Fehleranalysevorgänge durchgeführt werden, ohne dass die Datenspeichervorrichtung das Fehlerereignis „wiederholen“ muss, wie in bestimmten Anwendungen, in denen Daten nicht in Echtzeit (oder nahezu in Echtzeit) an eine Prüfvorrichtung bereitgestellt werden. Zum Beispiel kann sich ein Fernbenutzer bei der Datenspeichervorrichtung anmelden (z. B. über eine sichere drahtlose Verbindung), um auf die Daten zuzugreifen, um eine Fehleranalyse basierend auf einem aktuellen Zustand der Datenspeichervorrichtung zu ermöglichen (und ohne das Fehlerereignis zu „wiederholen“).
-
Alternativ oder zusätzlich kann die Datenspeichervorrichtung Daten an eine andere Vorrichtung bereitstellen, um es der anderen Vorrichtung zu ermöglichen, einen „Ausfallsicherung“-Vorgang durchzuführen, um Funktionen der Datenspeichervorrichtung zu übernehmen, falls die Datenspeichervorrichtung für eine Zugriffsvorrichtung nicht verfügbar ist. Der Ausfallsicherungsvorgang kann es der anderen Vorrichtung ermöglichen, an die Datenspeichervorrichtung gerichtete Lese- und Schreibanforderungen abzufangen und drahtlos mit der Datenspeichervorrichtung zu kommunizieren, um die Anforderungen auszuführen. Die andere Vorrichtung kann auch eingerichtet werden, um eine Fehleranalyse durchzuführen (z. B. um eine oder mehrere Debugging-Aufgaben über die drahtlose Datenkommunikation mit der Datenspeichervorrichtung durchzuführen). In einigen Implementierungen vermeidet die Verwendung der drahtlosen Schnittstelle vorteilhaft den Prozess des physischen Entfernens der Datenspeichervorrichtung aus einem Unternehmensspeichersystem oder des physischen Verbindens eines Kabels mit der Datenspeichervorrichtung, was in einigen Anwendungen schwierig sein kann.
-
In einigen Fällen wird die drahtlose Schnittstelle verwendet, um bestimmte Vorgänge auf eine andere Vorrichtung zu „entladen“ (z. B. in Verbindung mit einem Lastausgleichsvorgang), während eine Zugriffsvorrichtung eine drahtgebundene Schnittstelle der Datenspeichervorrichtung nutzt. Zum Beispiel kann die Datenspeichervorrichtung einen Prozess mit niedriger Priorität durchführen, wie beispielsweise einen Speicherbereinigungsprozess. Wenn die Datenspeichervorrichtung einen oder mehrere Befehle von der Zugriffsvorrichtung über die verkabelte Schnittstelle empfängt, kann die Datenspeichervorrichtung eine oder mehrere Aufgaben des Speicherbereinigungsprozesses auf eine zweite Vorrichtung „entladen“. Das Entladen der einen oder der mehreren Aufgaben kann es der Datenspeichervorrichtung ermöglichen, das Verzögern des Speicherbereinigungsprozesses oder das Unterbrechen der Verarbeitung der einen oder mehreren Host-Befehle zu vermeiden.
-
Alternativ oder zusätzlich kann die drahtlose Schnittstelle verwendet werden, um der zweiten Vorrichtung im Falle eines Ausfallereignisses redundante Kopien von Daten bereitzustellen, z. B. durch das Bereitstellen einer Kopie einer Steuertabelle für die zweite Vorrichtung. In diesem Beispiel stellt die Datenspeichervorrichtung der zweiten Vorrichtung (z. B. über die drahtlose Schnittstelle) eine Anforderung nach einer Kopie der Steuertabelle bereit, wenn die Steuertabelle beschädigt ist (z. B. aufgrund eines Fehlerereignisses). In einem veranschaulichenden Beispiel wird die Datenspeichervorrichtung mit der zweiten Vorrichtung „gepaart“, sodass jede der Vorrichtungen eine Kopie bestimmter Daten für die andere Vorrichtung speichert.
-
Bestimmte Gesichtspunkte der vorliegenden Offenbarung werden im Folgenden anhand der Zeichnungen beschrieben. In der Beschreibung werden gemeinsame Merkmale durch gemeinsame Referenznummern gekennzeichnet. Obwohl einige Beispiele hierin mit Bezug auf eine Datenspeichervorrichtung beschrieben werden, ist zu beachten, dass die hierin beschriebenen Techniken auf andere Implementierungen anwendbar sind. Ferner ist zu beachten, dass bestimmte Ordnungsbegriffe (z. B. „erste“ oder „zweite“) zur Erleichterung der Bezugnahme bereitgestellt werden können und nicht unbedingt physische Charakteristika oder Ordnung implizieren. Daher bedeutet hierin ein Ordnungsbegriff (z. B. „erster“, „zweiter“, „dritter“ usw.), der zur Modifikation eines Elements, wie z. B. einer Struktur, einer Komponente, eines Vorgangs usw., verwendet wird, nicht unbedingt eine Priorität oder Reihenfolge des Elements in Bezug auf ein anderes Element, sondern unterscheidet das Element von einem anderen Element mit demselben Namen (jedoch zur Verwendung des Ordnungsbegriffs). Zusätzlich können, wie hierin verwendet, unbestimmte Artikel („ein“ und „eine“) „einen oder mehrere“ und nicht „einen“ bezeichnen. Ferner kann ein Vorgang, der „basierend auf“ einer Bedingung oder einem Ereignis durchgeführt wird, auch basierend auf einer oder mehreren anderen Bedingungen oder Ereignissen durchgeführt werden, die nicht ausdrücklich erwähnt werden. Wie hierin verwendet, kann „exemplarisch“ ein Beispiel, eine Implementierung und/oder einen Gesichtspunkt angeben und sollte nicht als Einschränkung oder als Hinweis auf eine Präferenz oder ein bevorzugtes Beispiel, eine Implementierung und/oder einen Gesichtspunkt ausgelegt werden.
-
Unter Bezugnahme auf 1 ist ein veranschaulichendes Beispiel für ein System dargestellt und im Allgemeinen mit 100 bezeichnet. Das System 100 schließt eine Datenspeichervorrichtung 102 (z. B. eine Einrichtung), eine erste Vorrichtung 180 (z. B. eine Host-Vorrichtung oder eine Zugriffsvorrichtung) und eine zweite Vorrichtung 182 (z. B. eine zweite Datenspeichervorrichtung) ein. In einem nicht einschränkenden veranschaulichenden Beispiel entspricht das System 100 einem Unternehmensspeichersystem, das eine erste Datenspeichervorrichtung (z. B. die Datenspeichervorrichtung 102) und eine zweite Datenspeichervorrichtung (z. B. die zweite Vorrichtung 182) einschließt. In einem bestimmten veranschaulichenden Beispiel ist die Datenspeichervorrichtung 102 eingerichtet, um drahtlos mit der zweiten Vorrichtung 182 zu kommunizieren, um zu vermeiden, dass die Datenspeichervorrichtung 102 physisch aus dem Unternehmensspeichersystem entfernt oder ein Kabel mit der Datenspeichervorrichtung 102 verbunden wird, was in einigen Fällen schwierig sein kann. Alternativ oder zusätzlich kann die Datenspeichervorrichtung 102 eingerichtet werden, um drahtlos mit der zweiten Vorrichtung 182 zu kommunizieren, um einen oder mehrere andere Vorgänge durchzuführen, wie beispielsweise einen Lastausgleichsvorgang, der das Übertragen der Durchführung eines Vorgangs von der Datenspeichervorrichtung 102 auf die zweite Vorrichtung 182 einschließt.
-
Die Datenspeichervorrichtung 102 schließt eine Speichervorrichtung 103 (z. B. eine oder mehrere Speichermatrizen) und eine Speichersteuerung 130 ein. Die Speichersteuerung 130 ist mit der Speichervorrichtung 103 gekoppelt. In einigen Implementierungen ist die Datenspeichervorrichtung 102 in die erste Vorrichtung 180 integriert (z. B. eingebettet), beispielsweise in Verbindung mit einer SSD-Implementierung (Solid State Drive).
-
Die Speichervorrichtung 103 schließt einen nichtflüchtigen Speicher 104 ein, wie beispielsweise ein nicht-flüchtiges Array von Speicherelementen, die in einer oder mehreren Speichermatrizen eingeschlossen sind. Der nichtflüchtige Speicher 104 kann einen Flash-Speicher (z. B. einen NAND-Flash-Speicher) oder einen resistiven Speicher, wie beispielsweise einen resistiven Direktzugriffsspeicher (ReRAM), als veranschaulichende Beispiele einschließen. Der nichtflüchtige Speicher 104 kann eine dreidimensionale (3D) Speicherkonfiguration aufweisen. Wie hierin verwendet, kann eine 3D-Speichervorrichtung mehrere physikalische Ebenen von Speicherelementen einschließen (anstatt eine einzige physikalische Ebene von Speicherelementen zu haben, wie in einer planaren Speichervorrichtung). Als Beispiel kann der nichtflüchtige Speicher 104 eine 3D vertikale Bitleitungskonfiguration (VBL) aufweisen. In einer bestimmten Implementierung ist der nichtflüchtige Speicher 104 ein nichtflüchtiger Speicher mit einer 3D-Speicherarray-Konfiguration, die monolithisch in einer oder mehreren physikalischen Ebenen von Arrays von Speicherzellen mit einem aktiven Bereich über einem Siliziumsubstrat gebildet ist. Alternativ kann der nichtflüchtige Speicher 104 eine andere Konfiguration aufweisen, wie beispielsweise eine zweidimensionale (2D) Speicherkonfiguration oder eine nichtmonolithische 3D-Speicherkonfiguration (z. B. eine Stapelmatrizen-3D-Speicherkonfiguration).
-
Der nichtflüchtige Speicher 104 schließt einen oder mehrere Gebiete von Speicherelementen ein. Ein Beispiel für einen Speichergebiet ist ein Block, wie beispielsweise eine NAND-Flash-Löschgruppe von Speicherelementen, oder eine Gruppe von widerstandsbasierten Speicherelementen in einer ReRAM-Implementierung. Ein anderes Beispiel für einen Speichergebiet ist eine Wortleitung von Speicherelementen (z. B. eine Wortleitung von NAND-Flashspeicherelementen oder eine Wortleitung von widerstandsbasierten Speicherelementen). Ein Speichergebiet kann eine einstufige Zellenkonfiguration (SLC), eine mehrstufige Zellenkonfiguration (MLC) oder eine dreistufige Zellenkonfiguration (TLC) als veranschaulichende Beispiele aufweisen. Jedes Speicherelement des nichtflüchtigen Speichers 104 kann in einen Zustand programmierbar sein (z. B. eine Schwellenwert-Spannung in einer Flash-Konfiguration oder ein Widerstandszustand in einer resistiven Speicherkonfiguration), der einen oder mehrere Werte anzeigt. Als Beispiel ist in einem veranschaulichenden TLC-Schema ein Speicherelement auf einen Zustand programmierbar, der drei Werte anzeigt. Als zusätzliches Beispiel ist in einem veranschaulichenden MLC-Schema ein Speicherelement auf einen Zustand programmierbar, der zwei Werte anzeigt.
-
Die Speichervorrichtung 103 schließt eine Stützschaltung (z. B. eine Lese-/Schreibschaltung 116) ein, um den Betrieb der Speichervorrichtung 103 zu unterstützen, wie beispielsweise den Betrieb einer oder mehrerer Speichermatrizen der Speichervorrichtung 103. Die Lese-/Schreibschaltung 116 kann eine einzelne Komponente sein oder in einzelne Komponenten der Speichervorrichtung 103 unterteilt sein, wie z. B. Leseschaltung und Schreibschaltung.
-
Die Speichervorrichtung 103 ist über einen Kommunikationsweg, wie beispielsweise einen Bus, mit der Speichersteuerung 130 gekoppelt. Zum Beispiel kann der Kommunikationsweg einen oder mehrere Kanäle einschließen, um es der Speichersteuerung 130 zu ermöglichen, mit einer einzigen Speichermatrize der Speichervorrichtung 103 zu kommunizieren. Als weiteres Beispiel kann der Kommunikationsweg mehrere verschiedene Kanäle (z. B. mehrere Kommunikationskanäle) einschließen, damit die Speichersteuerung 130 mit jeder Speichermatrize der Speichervorrichtung 103 parallel zu und unabhängig von der Kommunikation mit anderen Speichermatrizen der Speichervorrichtung 103 kommunizieren kann.
-
Die Speichersteuerung 130 schließt eine Speicherschnittstelle 132 ein, die eingerichtet ist, um mit der Speichervorrichtung 103 zu kommunizieren, und schließt ferner eine Schnittstelle der Zugriffsvorrichtung 172 ein, die eingerichtet ist, um mit der ersten Vorrichtung 180 zu kommunizieren. Die Speichersteuerung 130 ist eingerichtet, um die Daten 174 von der ersten Vorrichtung 180 über die Schnittstelle der Zugriffsvorrichtung 172 zu empfangen, beispielsweise in Verbindung mit einer Anforderung für einen Schreibzugriff auf den nichtflüchtigen Speicher 104. Die Speichersteuerung 130 ist eingerichtet, um die Daten 174 (oder eine Darstellung der Daten 174, wie beispielsweise eine kodierte Darstellung der Daten 174) an die Speichervorrichtung 103 (z. B. über die Speicherschnittstelle 132) zu senden. Die Speichervorrichtung 103 ist eingerichtet, um die Daten 174 im nichtflüchtigen Speicher 104 zu speichern.
-
Die Speichersteuerung 130 ist eingerichtet, um auf die Daten 174 aus dem nichtflüchtigen Speicher 104 zuzugreifen. Als veranschaulichendes Beispiel kann die Speichersteuerung 130 eine Anforderung für den Lesezugriff auf die Daten 174 empfangen. Die Speichersteuerung 130 kann einen Lesebefehl an die Speichervorrichtung 103 senden, um das Lesen der Daten 174 einzuleiten. Als Reaktion auf den Lesebefehl kann die Speichervorrichtung 103 die Daten 174 unter Verwendung der Lese-/Schreibschaltung 116 zum Erzeugen der erfassten Daten erfassen. Abhängig von der jeweiligen Implementierung können die erfassten Daten einen Satz von harten Bits einschließen, die die Daten 174 darstellen, einen Satz von weichen Bits, die die Daten 174 darstellen, oder beide. In einigen Fällen können die erfassten Daten aufgrund eines oder mehrerer Bitfehler von den Daten 174 abweichen.
-
Die Speichervorrichtung 103 kann die erfassten Daten der Speichersteuerung 130 bereitstellen. Die Speichersteuerung 130 ist eingerichtet, um die erfassten Daten von der Speichervorrichtung 103 zu empfangen (z. B. über die Speicherschnittstelle 132). Die Speichersteuerung 130 kann eingerichtet werden, um die erfassten Daten zu dekodieren (z. B. durch das Korrigieren eines oder mehrerer Bitfehler der erfassten Daten, um die Daten 174 zu erzeugen) und die dekodierten Daten an die erste Vorrichtung 180 bereitzustellen.
-
Die Speichersteuerung 130 schließt ferner eine drahtlose Schnittstelle 176 ein. Die drahtlose Schnittstelle 176 ist eingerichtet, um mit einer oder mehreren Vorrichtungen zu kommunizieren, wie beispielsweise einer oder mehreren der ersten Vorrichtung 180, der zweiten Vorrichtung 182 oder einer anderen Vorrichtung. Die drahtlose Schnittstelle 176 ist eingerichtet, um über einen oder mehrere drahtlose Kommunikationskanäle gemäß einem oder mehreren drahtlosen Kommunikationsprotokollen zu kommunizieren. Im Beispiel von 1 schließt die drahtlose Schnittstelle 176 eine drahtlose Steuerung 190 ein. 1 veranschaulicht auch, dass eine Antenne 192 mit der drahtlosen Steuerung 190 gekoppelt werden kann.
-
Als veranschaulichende Beispiele ist die drahtlose Steuerung 190 eingerichtet, um die Übertragung von Daten zu steuern, die über die drahtlose Schnittstelle 176 gesendet werden, beispielsweise durch das Bestimmen eines bestimmten Kommunikationskanals zum Senden der Daten oder durch die Anwendung eines Modulations- und Kodierungsschemas (MCS) zum Kodieren der Daten. Die drahtlose Schnittstelle 176 kann einen Sender einschließen, der eingerichtet ist, um Daten an die zweite Vorrichtung 182 zu übertragen. Die drahtlose Schnittstelle 176 kann einen Empfänger einschließen, der eingerichtet ist, um Daten von der zweiten Vorrichtung 182 zu empfangen. Als veranschaulichende, nicht einschränkende Beispiele ist in einigen Implementierungen die drahtlose Schnittstelle 176 so eingerichtet, dass sie gemäß einem oder mehreren Bluetooth®-Protokollen (Bluetooth® ist ein eingetragenes Warenzeichen von Bluetooth SIG, Inc.), einem Zigbee®-Protokoll (Zigbee® ist ein eingetragenes Warenzeichen der ZigBee Alliance), einem Internet-Protokoll der Version 6 (IPv6) über das Protokoll für niederleistungsfähige drahtlose persönliche Netzwerke (Low Power Wireless Personal Area Networks - 6LoWPAN), einem Protokoll des Instituts für Elektronik und Elektrotechnik und Elektronikingenieure (Institute of Electronics and Electrical and Electronics Engineers - IEEE) (z. B, ein IEEE 802.15.4-Protokoll) oder einem Protokoll der Nahfeldkommunikation (NFC) betrieben werden kann.
-
Die Schnittstelle der Zugriffsvorrichtung 172 kann einer In-Band-Schnittstelle entsprechen, und die drahtlose Schnittstelle 176 kann einer Out-of-Band-Schnittstelle entsprechen. Wie hierin verwendet, kann sich eine „In-Band“-Schnittstelle auf eine primäre Schnittstelle beziehen (z. B. eine standardmäßig für Speicherzugriffsvorgänge auf den nichtflüchtigen Speicher 104 verwendete Schnittstelle), und eine „Out-of-Band“-Schnittstelle kann einer Hilfsschnittstelle entsprechen (z. B. eine für die Hilfskommunikation verwendete Schnittstelle, z. B. als Reaktion auf eine mit der Schnittstelle der Zugriffsvorrichtung 172 verbundene Fehlerbedingung).
-
Die Speichersteuerung 130 schließt ferner einen oder mehrere Prozessoren ein, wie beispielsweise einen Prozessor 144. In einigen Implementierungen schließt der Prozessor 144 mehr als einen Prozessor ein (z. B. zwei Prozessoren, drei Prozessoren oder eine andere Anzahl von Prozessoren). In einem veranschaulichenden Beispiel entspricht der Prozessor 144 einer zentralen Verarbeitungseinheit (CPU) der Speichersteuerung 130. Der Prozessor 144 ist eingerichtet, um Vorgänge der Datenspeichervorrichtung 102 zu steuern, beispielsweise durch das Steuern von Lesevorgängen in dem nichtflüchtigen Speicher 104, von Schreibvorgängen in dem nichtflüchtigen Speicher 104, anderen Vorgängen oder einer Kombination davon. Als veranschaulichende Beispiele kann der Prozessor 144 eingerichtet werden, um Anweisungen der Firmware 106 auszuführen, die aus dem nichtflüchtigen Speicher 104 oder aus einem in der Speichersteuerung 130 eingeschlossenen Speicher, wie beispielsweise einem Nurlesespeicher (ROM), empfangen werden können.
-
Im Beispiel von 1 schließt die Speichersteuerung 130 ferner eine Aufgabenwarteschlange 146, eine Vergleichsschaltung 136 und eine Verschlüsselungsmaschine 134 ein. 1 veranschaulicht auch, dass die Speichersteuerung 130 einen Vorgangsübertragungsmanager 152 einschließt.
-
Der Vorgangsübertragungsmanager 152 ist mit einer oder mehreren Komponenten der Datenspeichervorrichtung 102 gekoppelt, wie beispielsweise mit einer oder mehreren der Aufgabenwarteschlangen 146, dem Prozessor 144 oder der Vergleichsschaltung 136. In einem bestimmten veranschaulichenden Beispiel ist der Vorgangsübertragungsmanager 152 mit der Aufgabenwarteschlange 146 gekoppelt und eingerichtet, um eine „Tiefe“ (z. B. eine Anzahl von Vorgängen) der Aufgabenwarteschlange 146 zu erkennen. Zum Beispiel kann der Vorgangsübertragungsmanager 152 eine Zählerschaltung einschließen, die eingerichtet ist, um eine Anzahl von Anzeigen von Vorgängen zu bestimmen, die von der Aufgabenwarteschlange 146 in die Warteschlange gestellt werden. Alternativ oder zusätzlich kann der Vorgangsübertragungsmanager 152 mit dem Prozessor 144 gekoppelt und eingerichtet werden, um einen Status des Prozessors 144 zu erkennen (z. B. ob der Prozessor 144 beschäftigt ist). Zum Beispiel kann der Vorgangsübertragungsmanager 152 eine „Snooper“-Schaltung einschließen, die eingerichtet ist, um eine oder mehrere Komponenten des Prozessors 144 zu „snoopen“, um einen Status des Prozessors 144 zu bestimmen. In einem anderen Beispiel schließt der Prozessor 144 ein Steuerregister ein und ist eingerichtet, um ein oder mehrere Bits des Steuerregisters zu setzen, um den Status anzuzeigen (z. B. beschäftigt oder verfügbar). In diesem Beispiel kann der Vorgangsübertragungsmanager 152 eine Abfrageschaltung einschließen, die eingerichtet ist, um auf das Steuerregister zuzugreifen und den Status des Prozessors 144 zu bestimmen.
-
Die Datenspeichervorrichtung 102 kann in Übereinstimmung mit einer Branchenspezifikation betrieben werden. Zum Beispiel kann die Datenspeichervorrichtung 102 eine SSD einschließen und eingerichtet werden, um mit der ersten Vorrichtung 180 über ein Protokoll vom Typ kleiner Computersystemschnittstellen (SCSI) zu kommunizieren, wie beispielsweise ein seriell angeschlossenes SCSI-Protokoll (SAS). Als veranschaulichende weitere Beispiele kann die Datenspeichervorrichtung 102 eingerichtet werden, um mit der ersten Vorrichtung 180 unter Verwendung eines NVM Express (NVMe)-Protokolls oder eines seriellen fortschrittlichen Technologie-Ansatzprotokolls (SATA) zu kommunizieren. In anderen Beispielen funktioniert die Datenspeichervorrichtung 102 in Übereinstimmung mit einer JEDEC eMMC-Spezifikation, einer JEDEC universellen Flash-Speicherspezifikation (UFS), einer oder mehreren anderen Spezifikationen oder einer Kombination derselben und ist eingerichtet, um über ein oder mehrere Protokolle zu kommunizieren, wie beispielsweise ein eMMC-Protokoll, ein universelles Flash-Speicherprotokoll (UFS), ein oder mehrere andere Protokolle oder jegliche Kombination derselben, als veranschaulichende, nicht einschränkende Beispiele.
-
Die erste Vorrichtung 180 und die zweite Vorrichtung 182 schließen jeweils einen Prozessor und einen Speicher ein (nicht dargestellt). In einem bestimmten Beispiel kann ein Speicher Anweisungen speichern, die von einem Prozessor ausgeführt werden können, um den Betrieb der Datenspeichervorrichtung 102 zu prüfen oder zu debuggen. Zum Beispiel kann die erste Vorrichtung 180 die Datenspeichervorrichtung 102 prüfen, um die Datenspeichervorrichtung 102 für die Verwendung zu validieren (oder zu qualifizieren).
-
Die erste Vorrichtung 180 ist über eine Verbindung, wie beispielsweise einen Bus, mit der Datenspeichervorrichtung 102 gekoppelt. Die erste Vorrichtung 180 und die Datenspeichervorrichtung 102 können als veranschaulichende Beispiele über einen universellen seriellen Busverbinder (USB) oder einen universellen asynchronen Empfänger-/Senderverbinder (UART) gekoppelt werden. Die erste Vorrichtung 180 schließt eine Schnittstelle (nicht dargestellt) ein und ist eingerichtet, um mit der Datenspeichervorrichtung 102 über die Schnittstelle zu kommunizieren, um Daten von der Datenspeichervorrichtung 102 zu lesen und Daten in diese zu schreiben. Zum Beispiel kann die erste Vorrichtung 180 mit der Datenspeichervorrichtung 102 gemäß einem verkabelten Kommunikationsprotokoll kommunizieren. In einigen Implementierungen ist die erste Vorrichtung 180 ferner eingerichtet, um drahtlos mit der Datenspeichervorrichtung 102 zu kommunizieren (z. B. über die drahtlose Schnittstelle 176).
-
Die zweite Vorrichtung 182 ist eingerichtet, um mit der Datenspeichervorrichtung 102 über eine drahtlose Verbindung zu kommunizieren. Die zweite Vorrichtung 182 kann eine drahtlose Schnittstelle einschließen (nicht dargestellt) und kann eingerichtet werden, um mit der Datenspeichervorrichtung 102 über die drahtlose Schnittstelle zu kommunizieren, um Daten von der Datenspeichervorrichtung 102 zu lesen und Daten in diese zu schreiben. Zum Beispiel kann die zweite Vorrichtung 182 mit der Datenspeichervorrichtung 102 gemäß einem drahtlosen Kommunikationsprotokoll kommunizieren.
-
Während des Vorgangs führt der Prozessor 144 Anweisungen aus, z. B. durch das Ausführen der Firmware 106. Der Prozessor 144 kann auf Anzeigen von Vorgängen aus der Aufgabenwarteschlange 146 zugreifen. Zum Beispiel kann der Prozessor 144 auf eine Anzeige eines ersten Vorgangs 148 und eine Anzeige eines zweiten Vorgangs 150 zugreifen. In einigen Implementierungen schließt die Anzeige des ersten Vorgangs 148 einen ersten Opcode ein, der eine Vorgangsart des ersten Vorgangs 148 anzeigt, und die Anzeige des zweiten Vorgangs 150 schließt einen zweiten Opcode ein, der eine Vorgangsart des zweiten Vorgangs 150 anzeigt.
-
Der Vorgangsübertragungsmanager 152 ist eingerichtet, um eine oder mehrere Aufgaben über die drahtlose Schnittstelle 176 auf die zweite Vorrichtung 182 zu übertragen. Zum Beispiel kann der Vorgangsübertragungsmanager 152 eingerichtet werden, um einen oder mehrere Vorgänge zu übertragen, die durch die Aufgabenwarteschlange 146 angezeigt werden, z. B. als Reaktion auf das Erkennen eines Triggerereignisses. In einem veranschaulichenden Beispiel schließt das Erkennen eines Triggerereignisses das Erkennen eines Fehlerereignisses an der Datenspeichervorrichtung 102 ein. In diesem Fall kann ein Fehleranalysevorgang auf die zweite Vorrichtung 182 übertragen werden (z. B. um der zweiten Vorrichtung 182 oder einer anderen Vorrichtung zu ermöglichen, die Datenspeichervorrichtung 102 zu debuggen). In einigen Implementierungen wird der Fehleranalysevorgang in „Echtzeit“ (oder nahezu in Echtzeit) auf die zweite Vorrichtung 182 übertragen, um ein Wiederholen des Fehlerereignisses zu vermeiden. Alternativ oder zusätzlich zur Übertragung einer Fehleranalyse kann als Reaktion auf das Erkennen eines Fehlerereignisses ein „Ausfallsicherung“-Vorgang durchgeführt werden (z. B. durch das Verwenden der zweiten Vorrichtung 182 oder einer anderen Vorrichtung zum „Ersetzen“ der Datenspeichervorrichtung 102 durch das Übernehmen einer oder mehrerer Funktionen der Datenspeichervorrichtung 102). Ein anderes Beispiel für das Erkennen eines Triggerereignisses ist das Erkennen, dass Ressourcen des Prozessors 144 nicht verfügbar sind, um einen Vorgang durchzuführen. In diesem Fall kann ein Vorgang auf die zweite Vorrichtung 182 übertragen werden, damit die zweite Vorrichtung 182 den Vorgang durchführen kann, beispielsweise in Verbindung mit einem Lastausgleichsvorgang (z. B. während der Prozessor 144 einen anderen Vorgang, wie beispielsweise einen Vorgang mit höherer Priorität, durchführt).
-
Um dies weiter zu veranschaulichen, kann die Speichersteuerung 130 unter bestimmten Umständen ein Fehlerereignis erkennen, wie beispielsweise einen Kommunikationsverlust mit der ersten Vorrichtung 180 (z. B. als Reaktion auf einen Ausfall der Schnittstelle der Zugriffsvorrichtung 172). Als nicht einschränkendes Beispiel kann die Schnittstelle der Zugriffsvorrichtung 172 eine verkabelte Schnittstelle einschließen, und ein Fehlerereignis kann aufgrund eines Kurzschlusses in der verkabelten Schnittstelle auftreten. In diesem Beispiel kann der Vorgangsübertragungsmanager 152 die drahtlose Schnittstelle 176 anweisen, Daten 179 an die zweite Vorrichtung 182 zu senden (z. B. in Verbindung mit einem Ausfallsicherungsbetrieb, der vorübergehend einen oder mehrere Vorgänge der Datenspeichervorrichtung 102 an eine andere Vorrichtung übermittelt).
-
In einigen Beispielen eines Ausfallsicherungsbetriebs ist die Datenspeichervorrichtung 102 eingerichtet, um eine Anweisung 188 von der zweiten Vorrichtung 182 über die drahtlose Schnittstelle 176 zu empfangen. Die Anweisung 188 kann einer Anforderung der ersten Vorrichtung 180 entsprechen, auf die Datenspeichervorrichtung 102 zuzugreifen. Die Datenspeichervorrichtung 102 kann die Anweisung 188 (z. B. unter Verwendung des Prozessors 144) ausführen, um ein Ergebnis 189 zu erzeugen, und das Ergebnis 189 über die drahtlose Schnittstelle 176 an die zweite Vorrichtung 182 übertragen.
-
Alternativ oder zusätzlich zum Ausfallsicherungsvorgang können die Daten 179 in Verbindung mit einem Debug-Vorgang als Reaktion auf ein Fehlerereignis an der Datenspeichervorrichtung 102 verwendet werden. In einigen Beispielen zeigen die Daten 179 einen Betriebszustand der Datenspeichervorrichtung 102 zu einem Zeitpunkt des Ausfallsereignisses an, damit die zweite Vorrichtung 182 (oder eine andere Vorrichtung) die Datenspeichervorrichtung 102 debuggen kann. In einem bestimmten Beispiel schließt der zweite Vorgang 150 eine oder mehrere Fehleranalyseaufgaben ein (z. B. um eine Ursache für ein Fehlerereignis zu bestimmen), und die Daten 179 sind mit einer oder mehreren Fehleranalyseaufgaben verknüpft.
-
Die Speichersteuerung 130 kann eingerichtet werden, um die Daten 179 (z. B. an die zweite Vorrichtung 182) als Reaktion auf das Erkennen eines Fehlerereignisses, das mit einer oder mehreren der Speichersteuerungen 130 oder dem nichtflüchtigen Speicher 104 verbunden ist, über die drahtlose Schnittstelle 176 zu übertragen. In einem bestimmten veranschaulichenden Beispiel kann sich ein Fernbenutzer bei der Datenspeichervorrichtung 102 anmelden (z. B. über eine sichere drahtlose Verbindung), um auf die Daten 179 von der Datenspeichervorrichtung 102 zuzugreifen, um eine Fehleranalyse basierend auf einem aktuellen Betriebszustand der Datenspeichervorrichtung 102 zu ermöglichen (und ohne das Fehlerereignis zu „wiederholen“). Als veranschaulichendes Beispiel kann die drahtlose Schnittstelle 176 eingerichtet werden, um eine Fernanmeldeanforderung 194 von der zweiten Vorrichtung 182 zu empfangen und die Daten 179 der zweiten Vorrichtung 182 (z. B. in Echtzeit oder nahezu in Echtzeit) als Reaktion auf die Fernanmeldeanforderung 194 bereitzustellen, um eine Fehleranalyse basierend auf den Daten 179 zu ermöglichen. In einigen Implementierungen schließen die Daten 179 Informationen ein, die durch die Fernanmeldung 194 angezeigt werden. Zum Beispiel können die Daten 179 einen Vorgang anzeigen, der von der Datenspeichervorrichtung 102 vor (oder während) der Erkennung des Fehlerereignisses durch die Speichersteuerung 130 eingeleitet oder ausgeführt wird. Alternativ oder zusätzlich können die Daten 179 einen oder mehrere Vorgänge bezeichnen, die durch die Aufgabenwarteschlange 146 zum Zeitpunkt des Fehlerereignisses, den Inhalt eines oder mehrerer Register der Speichersteuerung 130 zum Zeitpunkt des Fehlerereignisses oder andere Informationen angezeigt werden.
-
Indem die Daten 179 der zweiten Vorrichtung 182 in „Echtzeit“ (oder nahezu in Echtzeit) bereitgestellt werden, kann die zweite Vorrichtung 182 einen oder mehrere Fehleranalysevorgänge durchführen, ohne dass die Datenspeichervorrichtung 102 das Fehlerereignis zu einem späteren Zeitpunkt „wiederholen“ muss (z. B. nach dem „Verlust“ der Daten 179, so als ob die Daten 179 aus einem flüchtigen Speicher der Steuerung 130 gelöscht, überschrieben oder gespült würden). Zusätzlich kann der Fernzugriff auf die Datenspeichervorrichtung 102 über die drahtlose Schnittstelle 176 den Prozess des physischen Zugriffs auf die Datenspeichervorrichtung 102 (z. B. über ein Kabel) oder des physischen Entfernens der Datenspeichervorrichtung 102 (z. B. aus einem Unternehmensspeichersystem, z. B. um Komponenten der Datenspeichervorrichtung 102 aufgrund von Kommunikationsverlusten an der Schnittstelle der Zugriffsvorrichtung 172 zu untersuchen) vorteilhaft vermeiden.
-
In einigen Beispielen ist der Vorgangsübertragungsmanager 152 eingerichtet, um einen Vorgang über die drahtlose Schnittstelle 176 auf die zweite Vorrichtung 182 zu übertragen, als Reaktion auf das Erkennen der Nichtverfügbarkeit einer Ressource, beispielsweise als Reaktion auf einen Besetztzustand der Schnittstelle der Zugriffsvorrichtung 172. Zum Beispiel kann der Vorgangsübertragungsmanager 152 eingerichtet werden, um den zweiten Vorgang 150 über die drahtlose Schnittstelle 176 während der Durchführung des ersten Vorgangs 148 durch die Datenspeichervorrichtung 102 über die Schnittstelle der Zugriffsvorrichtung 172 auf die zweite Vorrichtung 182 zu übertragen. Alternativ oder zusätzlich kann der Vorgangsübertragungsmanager 152 eingerichtet werden, um zu bestimmen, dass eine Prozessorressource der Datenspeichervorrichtung 102 nicht verfügbar ist, um einen Vorgang zu verarbeiten, und um die Übertragung des Vorgangs als Reaktion auf das Bestimmen, dass die Prozessorressource nicht verfügbar ist, einzuleiten. Zum Beispiel kann der Vorgangsübertragungsmanager 152 eingerichtet werden, um die Durchführung des zweiten Vorgangs 150 auf die zweite Vorrichtung 182 unter Verwendung der drahtlosen Schnittstelle 176 als Reaktion auf die Nichtverfügbarkeit des Prozessors 144 zu übertragen, beispielsweise als Reaktion auf das Bestimmen, dass der Prozessor 144 damit beschäftigt ist, den ersten Vorgang 148 durchzuführen.
-
Alternativ oder zusätzlich kann die Durchführung eines „Hintergrund“-Vorgangs über die drahtlose Schnittstelle 176 auf die zweite Vorrichtung 182 übertragen werden, beispielsweise durch Übertragung einer oder mehrerer Aufgaben des zweiten Vorgangs 150, die „im Hintergrund“ in Bezug auf den ersten Vorgang 148 durchgeführt werden sollen. Unter bestimmten Umständen ermöglicht die Übertragung der einen oder der mehreren Aufgaben auf die zweite Vorrichtung 182 der Datenspeichervorrichtung 102, eine Unterbrechung des ersten Vorgangs 148 zu vermeiden, um die mit dem ersten Vorgang 148 verbundene Betriebslatenz zu verringern. In einem bestimmten Beispiel ist die Speichersteuerung 130 eingerichtet, um die Durchführung des zweiten Vorgangs 150 über die drahtlose Schnittstelle 176 zu übertragen, damit der Prozessor 144 den ersten Vorgang 148 ohne Unterbrechung durch den zweiten Vorgang 150 durchführen kann.
-
Zur weiteren Veranschaulichung kann der Vorgangsübertragungsmanager 152 die Durchführung des zweiten Vorgangs 150 über die drahtlose Schnittstelle 176 auf die zweite Vorrichtung 182 übertragen, beispielsweise durch das Senden der Daten 179 an die zweite Vorrichtung 182, wobei die Daten 179 den zweiten Vorgang 150 anzeigen (z. B. durch das Anzeigen eines Opcodes für den zweiten Vorgang 150). In einem bestimmten Beispiel schließt der zweite Vorgang 150 eine oder mehrere Hintergrundaufgaben ein, die während des ersten Vorgangs 148 durchzuführen sind, und die Speichersteuerung 130 ist eingerichtet, um die drahtlose Schnittstelle 176 zu verwenden, damit die zweite Vorrichtung 182 einen Lastausgleichsvorgang durchführen kann, der die Durchführung der einen oder der mehreren Hintergrundaufgaben des zweiten Vorgangs 150 während der Durchführung des ersten Vorgangs 148 durch den Prozessor 144 einschließt. Als veranschaulichendes Beispiel kann die eine oder die mehreren Hintergrundaufgaben das Aktualisieren einer Steuertabelle einschließen, die in den Daten 179 eingeschlossen ist, basierend auf einem Speicherbereinigungsvorgang, der am nichtflüchtigen Speicher 104 durchgeführt wird. In diesem Beispiel können die Daten 179 eine Steuertabelle einschließen.
-
Alternativ oder zusätzlich kann ein Vorgang auf die zweite Vorrichtung 182 übertragen werden, basierend auf einer Priorität des Vorgangs. Zur Veranschaulichung kann der erste Vorgang 148 einer ersten Priorität 138 zugeordnet werden, die eine zweite Priorität 140 überschreitet, die dem zweiten Vorgang 150 zugeordnet ist. Zur Veranschaulichung kann der erste Vorgang 148 einem Speicherzugriff entsprechen, der von der ersten Vorrichtung 180 über die Schnittstelle der Zugriffsvorrichtung 172 eingeleitet wird. Der Speicherzugriffsvorgang kann eine höhere Priorität aufweisen als der zweite Vorgang 150. In diesem Beispiel kann die Speichersteuerung 130 eingerichtet werden, um einen Speicherzugriffsbefehl von der ersten Vorrichtung 180 über die Schnittstelle der Zugriffsvorrichtung 172 zu empfangen, um den Speicherzugriffsvorgang (z. B. den ersten Vorgang 148) einzuleiten. Die Speichersteuerung 130 kann eingerichtet werden, um den zweiten Vorgang 150 auf die zweite Vorrichtung 182 als Reaktion auf das Empfangen des Speicherzugriffsbefehls zu übertragen (z. B. als Reaktion auf den ersten Vorgang 148, der den zweiten Vorgang 150 „anstößt“).
-
In einigen Implementierungen ist die Vergleichsschaltung 136 mit der Aufgabenwarteschlange 146 gekoppelt und eingerichtet, um auf die Aufgabenwarteschlange 146 zuzugreifen und zu bestimmen, dass die erste Priorität 138 die zweite Priorität 140 überschreitet. Der Vorgangsübertragungsmanager 152 kann mit der Vergleichsschaltung 136 gekoppelt und eingerichtet werden, um die Übertragung des zweiten Vorgangs 150 auf die zweite Vorrichtung 182 unter Verwendung der drahtlosen Schnittstelle 176 einzuleiten, basierend auf der ersten Priorität 138, die die zweite Priorität 140 überschreitet.
-
Alternativ oder zusätzlich ist der Vorgangsübertragungsmanager 152 in einigen Implementierungen eingerichtet, um eine Zielanzahl von Vorgängen (oder einen Zielumfang von Vorgängen) innerhalb der Aufgabenwarteschlange 146 zu erhalten (z. B. um eine „Overflow“-Bedingung in der Aufgabenwarteschlange 146 zu vermeiden). Als Reaktion auf eine Anzahl von Vorgängen, die durch die Aufgabenwarteschlange 146 angezeigt werden, die die Zielnummer (oder den Zielbereich) überschreiten, kann der Vorgangsübertragungsmanager 152 einen oder mehrere Vorgänge „entladen“, beispielsweise durch das „Entladen“ des zweiten Vorgangs 150 auf die zweite Vorrichtung 182 über die drahtlose Schnittstelle 176.
-
Alternativ oder zusätzlich kann der Vorgangsübertragungsmanager 152 eingerichtet werden, um einen Vorgang auf die zweite Vorrichtung 182 zu übertragen, um ein Echtzeitdebugging (oder nahezu in Echtzeit) durch die zweite Vorrichtung 182 (oder durch eine andere Vorrichtung) zu ermöglichen. Zum Beispiel können die Daten 179 eine Fehlerbedingung anzeigen, die mit dem Betrieb des nichtflüchtigen Speichers 104 verbunden ist, wie beispielsweise die Anzeige von einem oder mehreren fehlgeschlagenen Speicherzugriffsvorgängen auf den nichtflüchtigen Speicher 104. Die drahtlose Schnittstelle 176 kann eingerichtet werden, um die Daten 179 drahtlos an eine bestimmte Vorrichtung (z. B. die zweite Vorrichtung 182) in Verbindung mit einem Echtzeitdebuggingprozess zum Debuggen eines oder mehrerer der nichtflüchtigen Speicher 104 oder der Speichersteuerung 130 zu übertragen.
-
Alternativ oder zusätzlich kann die drahtlose Schnittstelle 176 eingerichtet werden, um die Daten 179 an die zweite Vorrichtung 182 zu senden, um die Wiederherstellung der Daten 179 beim Auftreten einer Fehlerbedingung im Zusammenhang mit dem nichtflüchtigen Speicher 104 zu ermöglichen. Zur Veranschaulichung kann der Vorgangsübertragungsmanager 152 eingerichtet werden, um eine Kopie der Daten 179 zu „sichern“, indem die Daten 179 über die drahtlose Schnittstelle 176 an die zweite Vorrichtung 182 gesendet werden. In diesem Fall kann der zweite Vorgang 150 einem Vorgang zum Speichern der Daten 179 entsprechen, und der Vorgangsübertragungsmanager 152 kann eingerichtet werden, um den zweiten Vorgang 150 auf die zweite Vorrichtung 182 zu übertragen, um eine Sicherung der Daten 179 durch die zweite Vorrichtung 182 einzuleiten.
-
In einigen Implementierungen ist die Datenspeichervorrichtung 102 eingerichtet, um die Annahme der Übertragung eines Vorgangs von der zweiten Vorrichtung 182 zu verlangen, bevor der Vorgang auf die zweite Vorrichtung 182 übertragen wird. Zur Veranschaulichung kann der Vorgangsübertragungsmanager 152 eine Anweisung an die drahtlose Schnittstelle 176 bereitstellen, um eine Anforderung 184 über die drahtlose Schnittstelle 176 an die zweite Vorrichtung 182 zu senden. Die drahtlose Schnittstelle 176 kann eine Nachricht 186 von der zweiten Vorrichtung 182 empfangen. Die Meldung 186 kann anzeigen, dass die zweite Vorrichtung 182 die Übertragung des Vorgangs akzeptiert oder dass die zweite Vorrichtung 182 die Übertragung des Vorgangs ablehnt. Die Annahme des Vorgangs durch die zweite Vorrichtung 182 kann einem Triggerereignis entsprechen, das den Vorgangsübertragungsmanager 152 veranlasst, den Vorgang über die drahtlose Schnittstelle 176 auf die zweite Vorrichtung 182 zu übertragen. Wenn die Nachricht 186 anzeigt, dass die zweite Vorrichtung 182 die Übertragung des Vorgangs ablehnt, kann der Vorgangsübertragungsmanager 152 einen oder mehrere andere Vorgänge durchführen. Zum Beispiel kann der Vorgangsübertragungsmanager 152 eine weitere Nachricht an eine dritte Vorrichtung senden, die die Übertragung des Vorgangs auf die dritte Vorrichtung fordert.
-
In einigen Implementierungen ist die drahtlose Schnittstelle 176 eingerichtet, um eine sichere drahtlose Verbindung von der Speichersteuerung 130 zu der zweiten Vorrichtung 182 bereitzustellen. Zum Beispiel kann die drahtlose Schnittstelle 176 eingerichtet werden, um die Daten 179 mit der Verschlüsselungsmaschine 134 zu verschlüsseln, bevor die Daten 179 an die zweite Vorrichtung 182 gesendet werden. Alternativ oder zusätzlich kann die Kommunikation mit einer Vorrichtung unter Verwendung eines Kennwortes 154 kennwortgeschützt sein. Zum Beispiel kann eine Nachricht, die von einer oder mehreren der ersten Vorrichtungen 180 oder der zweiten Vorrichtung 182 empfangen wird, ein Kennwort angeben, und die Datenspeichervorrichtung 102 kann das Kennwort mit dem Kennwort 154 vergleichen (z. B. zur Authentifizierung der ersten Vorrichtung 180 oder der zweiten Vorrichtung 182). In einigen Beispielen entspricht das Kennwort 154 einem WLAN-geschützten Schlüssel mit Zugriff 2 (Wi-Fi Protected Access 2 - WPA2).
-
Alternativ oder zusätzlich zur Verwendung der drahtlosen Schnittstelle 176 zur Übertragung eines Vorgangs kann die Datenspeichervorrichtung 102 eingerichtet werden, um die drahtlose Schnittstelle 176 zur Durchführung eines oder mehrerer anderer Vorgänge zu verwenden. Zum Beispiel kann die Datenspeichervorrichtung 102 eingerichtet werden, um die drahtlose Schnittstelle 176 als Hilfsschnittstelle zu verwenden, was den Datenverkehr an einer anderen Schnittstelle, wie der Schnittstelle der Zugriffsvorrichtung 172, reduzieren kann. Als veranschaulichendes Beispiel kann die drahtlose Schnittstelle 176 eingerichtet werden, um eine Aktualisierung 178 der Firmware 106 von der ersten Vorrichtung 180, von der zweiten Vorrichtung 182 oder von einer anderen Vorrichtung zu empfangen. In einigen Implementierungen wird die Aktualisierung 178 der Datenspeichervorrichtung 102 als Reaktion auf eine oder mehrere Fehlerbedingungen bereitgestellt, die durch die Daten 179 angezeigt werden (z. B. nach dem Debuggen der Firmware 106 basierend auf einer oder mehreren Fehlerbedingungen, die durch die Daten 179 angezeigt werden). Durch das Empfangen der Aktualisierung 178 der Firmware 106 über die drahtlose Schnittstelle 176 kann die Schnittstelle der Zugriffsvorrichtung 172 für andere Vorgänge verfügbar sein (z. B. kann die Schnittstelle der Zugriffsvorrichtung 172 für Lese- und Schreibvorgänge „freigegeben“ werden), was die Latenzzeit einer oder mehrerer Vorgänge reduzieren kann.
-
In einigen Implementierungen aktiviert die Datenspeichervorrichtung 102 die drahtlose Steuerung 190 als Reaktion auf das Empfangen eines Befehls 175 über die Schnittstelle der Zugriffsvorrichtung 172 (z. B. von der ersten Vorrichtung 180). Der Befehl 175 kann anzeigen, dass die Datenspeichervorrichtung 102 die drahtlose Steuerung 190 aktivieren soll (z. B. durch das Umschalten der drahtlosen Steuerung 190 von einem deaktivierten Zustand in einen betriebsbereiten Zustand). Der Befehl 175 kann ein proprietärer (oder „herstellerspezifischer“) Befehl sein. In einigen Implementierungen ist die erste Vorrichtung 180 eingerichtet, um den Befehl 175 an die Datenspeichervorrichtung 102 als Reaktion auf das Erkennen einer Fehlerbedingung bereitzustellen (z. B. als Reaktion auf einen Kommunikationsverlust mit der Datenspeichervorrichtung 102). Alternativ oder zusätzlich kann die erste Vorrichtung 180 eingerichtet werden, um den Befehl 175 an die Datenspeichervorrichtung 102 als Reaktion auf ein oder mehrere andere Ereignisse bereitzustellen.
-
Ein oder mehrere Gesichtspunkte von 1 können den Betrieb der Datenspeichervorrichtung 102 verbessern. Zum Beispiel kann die Verwendung der drahtlosen Schnittstelle 176 einen Lastausgleichsvorgang ermöglichen, der die Latenzzeit an der Datenspeichervorrichtung 102 reduziert oder vermeidet, wie beispielsweise durch die Aktivierung der Datenspeichervorrichtung 102, um eine Unterbrechung der Durchführung des ersten Vorgangs 148 durch den zweiten Vorgang 150 zu vermeiden.
-
Unter Bezugnahme auf 2 ist ein veranschaulichendes Beispiel eines Systems dargestellt und im Allgemeinen mit 200 bezeichnet. In einem bestimmten Beispiel schließt das System 200 eine oder mehrere Komponenten des Systems 100 von 1 ein. Zum Beispiel schließt das System 200 von 2 die Datenspeichervorrichtung 102 von 1 ein. Das System 200 schließt ferner die zweite Vorrichtung 182 ein.
-
Im Beispiel von 2 schließt die Datenspeichervorrichtung 102 die Schnittstelle der Zugriffsvorrichtung 172, den nichtflüchtigen Speicher 104, die drahtlose Steuerung 190 und den Vorgangsübertragungsmanager 152 ein. In einem bestimmten Beispiel schließt die Schnittstelle der Zugriffsvorrichtung 172 eine oder mehrere SCSI-Schnittstellen, SATA-Schnittstellen oder NVMe-Schnittstellen als veranschaulichende Beispiele ein. Der nichtflüchtige Speicher 104 kann zur Veranschaulichung einen Flash-Speicher oder einen magnetischen Speicher einschließen.
-
2 stellt auch dar, dass die Datenspeichervorrichtung 102 eine Hostschnittstellensteuerung 204 einschließen kann. Die Hostschnittstellensteuerung 204 kann mit der Schnittstelle der Zugriffsvorrichtung 172 gekoppelt werden. Die Hostschnittstellensteuerung 204 kann eingerichtet werden, um Vorgänge an der Schnittstelle der Zugriffsvorrichtung 172 zu steuern, beispielsweise durch das Senden und Empfangen von Kommunikationen an die zweite Vorrichtung 182 über die Schnittstelle der Zugriffsvorrichtung 172.
-
Die Datenspeichervorrichtung 102 schließt ferner einen oder mehrere Prozessoren ein, wie beispielsweise einen ersten Prozessor 208 und einen zweiten Prozessor 212. Als veranschaulichende Beispiele kann der erste Prozessor 208 eine erste Hauptprozesseinheit (CPU 0) und der zweite Prozessor 212 eine zweite Hauptprozesseinheit (CPU 1) einschließen. In einem bestimmten Beispiel entspricht der erste Prozessor 208 einer CPU der Schnittstelle der Zugriffsvorrichtung, die eingerichtet ist, um Vorgänge an der Schnittstelle der Zugriffsvorrichtung 172 zu steuern. Der zweite Prozessor 212 kann einer Speicherschnittstellen-CPU entsprechen, die eingerichtet ist, um Vorgänge im nichtflüchtigen Speicher 104 zu steuern. Einer oder beide der Prozessoren 208, 212 können dem Prozessor 144 von 1 entsprechen oder in diesem eingeschlossen sein.
-
Die Datenspeichervorrichtung 102 kann ferner einen Speicher 228 und einen Speicher 224 einschließen. Zum Beispiel kann der Speicher 228 für den ersten Prozessor 208 zugänglich sein und Daten und Anweisungen speichern, die dem ersten Prozessor 208 zur Verfügung stehen. Als anderes Beispiel kann der Speicher 224 für den zweiten Prozessor 212 zugänglich sein und Anweisungen und Daten speichern, die für den zweiten Prozessor 212 zur Verfügung stehen.
-
Die Datenspeichervorrichtung 102 kann ferner eine Mediensteuerung 216 einschließen. Die Mediensteuerung 216 kann mit dem nichtflüchtigen Speicher 104 gekoppelt werden. Die Mediensteuerung 216 kann eingerichtet werden, um einen oder mehrere Vorgänge im nichtflüchtigen Speicher 104 zu steuern.
-
Die Datenspeichervorrichtung 102 kann auch einen Systemspeicher 232 einschließen. In einem bestimmten Beispiel schließt der Systemspeicher 232 einen dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory - DRAM) ein. Die Datenspeichervorrichtung 102 kann optional ein Batteriesicherungsmodul 236 einschließen. Das Batteriesicherungsmodul 236 kann mit dem Systemspeicher 232 gekoppelt werden. Das Batteriesicherungsmodul 236 kann eingerichtet werden, um einer oder mehreren Komponenten der Datenspeichervorrichtung 102 Hilfsenergie bereitzustellen, beispielsweise im Falle eines Energieunterbrechungsereignisses.
-
Die Datenspeichervorrichtung 102 schließt ferner einen Systembus 220 ein. Der Systembus 220 ist mit bestimmten Komponenten der Datenspeichervorrichtung 102 gekoppelt. Zum Beispiel ist im Beispiel von 2 der Systembus 220 mit der Hostschnittstellensteuerung 204, mit dem ersten Prozessor 208, mit dem zweiten Prozessor 212, mit der Mediensteuerung 216 und mit dem nichtflüchtigen Speicher 104 gekoppelt. 2 veranschaulicht auch, dass der Systembus 220 mit dem Speicher 224, der drahtlosen Schnittstelle 176, dem Speicher 228, dem Systemspeicher 232 und dem Vorgangsübertragungsmanager 152 gekoppelt ist. In einem bestimmten Beispiel ist die drahtlose Steuerung 190 mit dem Systembus 220 gekoppelt und eingerichtet, um auf einen oder mehrere Speicher der Datenspeichervorrichtung 102 zuzugreifen (z. B. die Speicher 224, 228). In einigen Implementierungen kann die Zugriffsmöglichkeit eines Speichers auf die drahtlose Steuerung 190 durch einen Benutzer der Datenspeichervorrichtung 102 eingestellt werden.
-
Die zweite Vorrichtung 182 ist eingerichtet, um mit der Datenspeichervorrichtung 102 unter Verwendung einer oder mehrerer Kommunikationstechniken zu kommunizieren. Zum Beispiel ist die zweite Vorrichtung 182 eingerichtet, um mit der Datenspeichervorrichtung 102 über eine oder mehrere der Schnittstellen der Zugriffsvorrichtung 172, der drahtlosen Steuerung 190 oder einer anderen Schnittstelle zu kommunizieren. Im Beispiel von 2 schließt die zweite Vorrichtung 182 eine Antenne 242 ein, die eingerichtet ist, um mit der Antenne 192 zu kommunizieren, um so die Daten 179 von 1 zu empfangen.
-
Während des Betriebs kann die drahtlose Steuerung 190 über den Systembus 220 auf eine oder mehrere Komponenten der Datenspeichervorrichtung 102 zugreifen. Zum Beispiel kann die drahtlose Steuerung 190 eingerichtet werden, um auf einen oder mehrere der nichtflüchtigen Speicher 104, den Speicher 224 oder den Speicher 228 zuzugreifen.
-
Die Prozessoren 208, 212 können eingerichtet werden, um die Firmware 106 von 1 auszuführen, beispielsweise beim Abrufen von Anweisungen der Firmware 106 aus den Speichern 224, 228. In einem bestimmten Beispiel sehen die Anweisungen der Firmware 106 vor, dass die drahtlose Steuerung 190 als Standardzustand im Niedrigverbrauchszustand (z. B. deaktiviert oder im Ruhezustand) bleiben soll. In einem bestimmten Beispiel sehen die Anweisungen der Firmware 106 vor, dass die drahtlose Steuerung 190 als Reaktion auf einen bestimmten Befehl (z. B. den Befehl 175 von 1) aktiviert werden soll, der über die Schnittstelle der Zugriffsvorrichtung 172 empfangen wird (z. B. von der ersten Vorrichtung 180 von 1). Zur Veranschaulichung kann der Befehl ein „herstellerspezifischer“ Befehl sein, der von einem Hersteller der Datenspeichervorrichtung 102 bestimmt wird.
-
Nach Erhalt des Befehls kann die Datenspeichervorrichtung 102 die drahtlose Steuerung 190 aktivieren. In einigen Implementierungen authentifiziert die Datenspeichervorrichtung 102 die erste Vorrichtung 180 basierend auf dem Befehl vor dem Aktivieren der drahtlosen Steuerung 190, beispielsweise durch das Vergleichen eines durch den Befehl angegebenen Kennwortes mit dem Kennwort 154.
-
In einigen Implementierungen ist die Datenspeichervorrichtung
102 eingerichtet, um eine Speicherbereichsdefinitionstabelle
234 im Systemspeicher
232 zu erzeugen. Zum Beispiel kann die Speicherbereichsdefinitionstabelle
234 Speichergebiete der Datenspeichervorrichtung
102 angeben, die die Daten
179 speichern (z. B. vor der Übertragung der Daten
179 an die zweite Vorrichtung
182). In einem bestimmten Beispiel schließt der Vorgangsübertragungsmanager
152 einen Puffer
238 ein, der zum Speichern der Daten
179 eingerichtet ist (z. B. vor der Übertragung der Daten
179 an die zweite Vorrichtung
182). Alternativ oder zusätzlich kann der Puffer
238 einem logischen Puffer entsprechen, sodass sich der Puffer
238 ganz oder teilweise an Speicherplätzen im Systemspeicher
234 befinden kann. Ein veranschaulichendes Beispiel für die Speicherbereichsdefinitionstabelle
234 ist in Tabelle 1 dargestellt:
Tabelle 1
Nein. | Speicherbasisadresse | Größe | Kennung |
1 | 1A000000h | 1000h | 00h |
2 | 1A00F000h | 100h | 01h |
: | : | : | : |
9 | 2000A000h | 800h | mmh |
-
In Tabelle 1 zeigt die erste (äußerste linke) Spalte einen Indexwert (1, 2, .. n, wobei n eine positive ganze Zahl ist) an, der einem Speichergebiet (z. B. dem Puffer 238 oder dem Systemspeicher 232) zugeordnet ist. Die zweite Spalte von Tabelle 1 zeigt eine dem Speichergebiet zugeordnete Speicherbasisadresse an, und die dritte Spalte von Tabelle 1 zeigt eine dem Speichergebiet zugeordnete Datengröße an. Die vierte (äußerste rechte) Spalte von Tabelle 1 zeigt einen Identifikator an, der dem Speichergebiet zugeordnet ist.
-
In einigen Beispielen kommuniziert die Speichersteuerung 130 einen oder mehrere Gesichtspunkte der Speicherbereichsdefinitionstabelle 234 an die drahtlose Steuerung 190, sodass die drahtlose Steuerung 190 die Daten 179 aus dem Puffer 238 abrufen kann. Zum Beispiel kann die Speichersteuerung 130 eine Basisadresse und eine Größe eines Speichergebietes an die drahtlose Steuerung 190 kommunizieren, damit die drahtlose Steuerung 190 die Daten 179 aus dem Speichergebiet abrufen kann. In einigen Implementierungen werden ein oder mehrere Gesichtspunkte der Speicherbereichsdefinitionstabelle 234 an die zweite Vorrichtung 182 kommuniziert. Zum Beispiel können der zweiten Vorrichtung 182 die Basisadresse und die Größe bereitgestellt werden, damit die zweite Vorrichtung 182 virtuell auf die Daten 179 zugreifen kann.
-
In einigen Fällen greift die Datenspeichervorrichtung 102 auf die Speicherbereichsdefinitionstabelle 234 als Reaktion auf eine Anforderung der zweiten Vorrichtung 182 zu. Die Datenspeichervorrichtung 102 kann auf die Speicherbereichsdefinitionstabelle 234 zugreifen, um zu bestimmen, ob die Anforderung gültig ist. Zum Beispiel kann die Datenspeichervorrichtung 102 als Reaktion auf das Empfangen einer Anforderung von der zweiten Vorrichtung 182, die einen Speicherbereich der Datenspeichervorrichtung 102 angibt, auf die Speicherbereichsdefinitionstabelle 234 zugreifen, um zu bestimmen, ob die Anforderung gültig ist, wie beispielsweise durch das Bestimmen, ob eine Adresse der Anforderung innerhalb eines Adressbereichs des Puffers 238 liegt, der die Daten 179 speichert (z. B. basierend auf der Basisadresse und der Größe). Wenn die Anforderung gültig ist, kann die Datenspeichervorrichtung 102 angeforderte Daten (z. B. die Daten 179) an die zweite Vorrichtung 182 (z. B. vom Puffer 238 zur drahtlosen Schnittstelle 176) bereitstellen. Wenn die Anforderung ungültig ist, kann die Datenspeichervorrichtung 102 eine oder mehrere andere Vorgänge durchführen, beispielsweise durch das Bereitstellen einer Fehlermeldung an die zweite Vorrichtung 182. Im Zusammenhang mit dem Bereitstellen angeforderter Daten als Reaktion auf eine gültige Anforderung kann die Datenspeichervorrichtung 102 einen dem Puffer 238 zugeordneten Kopfzeiger erhöhen (z. B. um den „Kopf“ des Puffers 238 als Reaktion auf das Bereitstellen der angeforderten Daten an die zweite Vorrichtung 182 zu ändern).
-
In einigen Implementierungen werden ein oder mehrere Gesichtspunkte der Speicherbereichsdefinitionstabelle 234 als veranschaulichendes Beispiel an mehrere Vorrichtungen, wie beispielsweise an mehrere Datenspeichervorrichtungen eines Unternehmensspeichersystems, „verteilt“. Eine oder mehrere Techniken, die mit Bezug auf die Datenspeichervorrichtung 102 beschrieben werden, können von einer oder mehreren anderen Vorrichtungen des Unternehmensspeichersystems verwendet werden. In einem veranschaulichenden Beispiel wird eine Bitmap der verfügbaren Vorrichtungen des Unternehmensspeichersystems innerhalb des Unternehmensspeichersystems übertragen. Auf die Bitmap kann die Datenspeichervorrichtung 102 zugreifen, um eine verfügbare Vorrichtung für die drahtlose Kommunikation zu identifizieren (z. B. um die zweite Vorrichtung 182 zu identifizieren).
-
Ein oder mehrere Gesichtspunkte von 2 können den Betrieb der Datenspeichervorrichtung 102 verbessern. Zum Beispiel kann die Verwendung der drahtlosen Schnittstelle 176 es der zweiten Vorrichtung 182 ermöglichen, „virtuell“ auf die Daten 179 aus dem Puffer 238 zuzugreifen, was in bestimmten Fällen vorteilhaft sein kann, wenn die Schnittstelle der Zugriffsvorrichtung 172 besetzt oder außer Betrieb ist.
-
Unter Bezugnahme auf 3 ist ein veranschaulichendes Beispiel eines Verfahrens dargestellt und im Allgemeinen mit 300 bezeichnet. Das Verfahren 300 kann von einer ersten Datenspeichervorrichtung durchgeführt werden, die der Datenspeichervorrichtung 102 entsprechen kann. Das Verfahren 300 kann durchgeführt werden, um drahtlos mit einer zweiten Datenspeichervorrichtung, wie beispielsweise der zweiten Vorrichtung 182, zu kommunizieren.
-
Das Verfahren 300 schließt das Erkennen eines Triggerereignisses bei 302 an einer Speichersteuerung der ersten Datenspeichervorrichtung ein. Das Triggerereignis zeigt an, dass ein Vorgang von der ersten Datenspeichervorrichtung auf die zweite Datenspeichervorrichtung übertragen werden soll. Zur Veranschaulichung kann die Speichersteuerung 130 von 1 ein Triggerereignis erkennen, das anzeigt, dass ein Vorgang von der Datenspeichervorrichtung 102 auf die zweite Vorrichtung 182 übertragen werden soll. Das Erkennen des Triggerereignisses kann die Durchführung eines oder mehrerer Vorgänge einschließen, die in Bezug auf die 1 und 2 beschrieben sind. In einem bestimmten veranschaulichenden Beispiel schließt das Erkennen des Triggerereignisses das Empfangen der Nachricht 186 von der zweiten Vorrichtung 182 von 1 ein.
-
Das Verfahren 300 schließt ferner das Senden von mit dem Vorgang verbundenen Daten als Reaktion auf das Erkennen des Triggerereignisses an die zweite Datenspeichervorrichtung unter Verwendung einer drahtlosen Schnittstelle der ersten Datenspeichervorrichtung bei 304 ein. Zum Beispiel kann die Datenspeichervorrichtung 102 die Daten 179 über die drahtlose Schnittstelle 176 an die zweite Vorrichtung 182 senden.
-
Durch das Senden der mit dem Vorgang verbundenen Daten an die zweite Datenspeichervorrichtung können Funktionen wie Lastausgleich, Ausfallsicherung und Echtzeitdebugging unter Verwendung einer drahtlosen Out-of-Band-Kommunikation aktiviert werden, die die Verwendung der Schnittstelle der Zugriffsvorrichtung verhindert. Infolgedessen können Komplexitäten, die mit der physischen Unzugänglichkeit der ersten Datenspeichervorrichtung, Hardwareausfällen im Zusammenhang mit der In-Band-Kommunikation und einer erhöhten Menge an In-Band-Verkehr verbunden sind, reduziert oder vermieden werden.
-
Unter Bezugnahme auf 4 ist ein bestimmtes veranschaulichendes Beispiel eines Verfahrens dargestellt und im Allgemeinen mit 400 bezeichnet. Das Verfahren 400 kann von einer Datenspeichervorrichtung, wie beispielsweise von der Datenspeichervorrichtung 102, durchgeführt werden.
-
Das Verfahren 400 schließt das Empfangen eines Befehls zum Aktivieren der drahtlosen Kommunikation bei 404 ein. Zum Beispiel kann die Speichersteuerung 130 den Befehl 175 von der ersten Vorrichtung 180 über die Schnittstelle der Zugriffsvorrichtung 172 empfangen. Die Speichersteuerung 130 kann die drahtlose Steuerung 190 als Reaktion auf das Empfangen des Befehls 175 aktivieren.
-
Das Verfahren 400 schließt ferner das Empfangen eines Befehls zur Auswahl eines oder mehrerer Speichergebiete zum Puffern von Debugdaten vor der Übertragung unter Verwendung einer drahtlosen Verbindung ein und schließt ferner das Zuweisen von Identifikatoren zu jedem der einen oder mehreren Speichergebiete bei 406 ein. Zum Beispiel kann die Speichersteuerung 130 einen Befehl von der ersten Vorrichtung 180 über die Schnittstelle der Zugriffsvorrichtung 172 empfangen, um einen oder mehrere Speichergebiete der Datenspeichervorrichtung 102 auszuwählen, um die Daten 179 (vor der Übertragung der Daten 179) zu speichern, wie beispielsweise den Puffer 238. Der Puffer 238 kann eine Vielzahl von Speichergebieten aufweisen, und jeder Speichergebiet des Puffers 238, der die Daten 179 speichert, kann einem bestimmten Identifikator zugeordnet werden, wie in Tabelle 1 veranschaulicht.
-
Das Verfahren 400 schließt ferner das Empfangen eines Befehls zum Aktivieren der drahtlosen Übertragung der Debugdaten über die drahtlose Verbindung bei 408 ein. Zum Beispiel kann die Speichersteuerung 130 einen Befehl von der ersten Vorrichtung 180 über die Schnittstelle der Zugriffsvorrichtung 172 empfangen, um die Daten 179 an die erste Vorrichtung 180, an die zweite Vorrichtung 182 oder an eine andere Vorrichtung zu übertragen. Als Reaktion auf den Befehl kann der Vorgangsübertragungsmanager 152 die drahtlose Übertragung der Daten 179 ermöglichen, indem er beispielsweise bewirkt, dass die drahtlose Steuerung 190 auf die Daten 179 aus dem Puffer 238 zugreift, um die Übertragung der Daten 179 an die zweite Vorrichtung 182 zu ermöglichen.
-
Durch das Ermöglichen der drahtlosen Übertragung der Debugdaten können Funktionen wie Echtzeitdebugging unter Verwendung von drahtloser Out-of-Band-Kommunikation aktiviert werden, wodurch die Verwendung der Schnittstelle der Zugriffsvorrichtung vermieden wird. Infolgedessen kann das Debugging durchgeführt werden, während Schwierigkeiten im Zusammenhang mit der physischen Unzugänglichkeit der ersten Datenspeichervorrichtung und Hardwareausfälle im Zusammenhang mit der In-Band-Kommunikation umgangen werden.
-
Unter Bezugnahme auf 5 ist ein bestimmtes veranschaulichendes Beispiel eines Verfahrens dargestellt und im Allgemeinen mit 500 bezeichnet. Das Verfahren 500 kann an einer Datenspeichervorrichtung, wie beispielsweise an der Datenspeichervorrichtung 102, durchgeführt werden.
-
Das Verfahren 500 kann bei 502 eingeleitet werden. Zum Beispiel kann der Betrieb des ersten Prozessors 208 durch die Speichersteuerung 130 eingeleitet werden (z. B. durch das Aktivieren des ersten Prozessors 208 aus einem Ruhezustand).
-
Das Verfahren 500 schließt das Deaktivieren einer drahtlosen Steuerung bei 504 ein. Zum Beispiel kann die drahtlose Steuerung 190 durch die Speichersteuerung 130 deaktiviert werden.
-
Das Verfahren 500 schließt ferner das Bestimmen ein, ob ein Befehl empfangen wird, um die drahtlose Steuerung zu aktivieren und einen Speicherbereich zu definieren, aus dem Daten übertragen werden sollen, bei 506. Zum Beispiel kann die Speichersteuerung 130 bestimmen, ob der Befehl 175 von der ersten Vorrichtung 180 empfangen wird.
-
Als Reaktion auf das Bestimmen, dass der Befehl empfangen wird, schließt das Verfahren 500 ferner das Bestimmen ein, ob ein Kennwort bei 508 übereinstimmt. Zum Beispiel kann der Befehl 175 ein Kennwort einschließen, und die Speichersteuerung 130 kann das durch den Befehl 175 angegebene Kennwort mit dem Kennwort 154 vergleichen.
-
Als Reaktion auf das Bestimmen einer Kennwortübereinstimmung schließt das Verfahren 500 ferner das Erzeugen einer Speicherbereichsdefinitionstabelle im Systemspeicher bei 510 ein. Zum Beispiel kann die Speicherbereichsdefinitionstabelle 234 im Systemspeicher 232 erzeugt werden. Die Speicherbereichsdefinitionstabelle 234 kann Gebiete eines Speichers (z. B. den nichtflüchtigen Speicher 104, den Systemspeicher 232 oder den Puffer 238) angeben, die die Daten 179 speichern. Die Speichersteuerung 130 kann auch die drahtlose Steuerung aktivieren, beispielsweise durch das Aktivieren der drahtlosen Steuerung 190, und kann eine Basisadresse und Größe, die der Speicherbereichsdefinitionstabelle 234 zugeordnet ist, an die drahtlose Steuerung 190 kommunizieren.
-
Das Verfahren 500 schließt ferner das Bestimmen ein, ob ein Befehl zum Aktivieren einer kontinuierlichen Debugdatenübertragung über ein drahtloses Netzwerk bei 512 empfangen wird. In einem bestimmten Beispiel kann die erste Vorrichtung 180 die Speichersteuerung 130 anweisen, die Daten 179 über die drahtlose Schnittstelle 176 bereitzustellen, wie beispielsweise an die erste Vorrichtung 180, an die zweite Vorrichtung 182 oder an eine andere Vorrichtung.
-
Als Reaktion auf das Empfangen des Befehls bei 512 kann das Verfahren 500 ferner das Bestimmen einer Kennwortübereinstimmung bei 514 einschließen. Zum Beispiel kann die Speichersteuerung 130 ein durch den von der ersten Vorrichtung 180 empfangenen Befehl angegebenes Kennwort mit dem Kennwort 154 vergleichen, um zu bestimmen, ob das Kennwort mit dem Kennwort 154 übereinstimmt.
-
Als Reaktion auf das Bestimmen, dass das Kennwort übereinstimmt, schließt das Verfahren 500 ferner das Definieren eines Bereichs zum Speichern der Debugdaten, das Kommunizieren der Basisadresse und der Größe an die drahtlose Steuerung und das Erhöhen eines Kopfzeigers als Reaktion auf das Schreiben der Daten in den Bereich bei 516 ein. Zum Beispiel kann die Speichersteuerung 130 den Puffer 238 erstellen, um die Daten 179 zu speichern. Die Speichersteuerung 130 kann eine Basisadresse und Größe des Puffers 238 an die drahtlose Steuerung 190 kommunizieren und einen dem Puffer 238 zugeordneten Kopfzeiger als Reaktion auf das Schreiben der Daten 179 in den Puffer 238 erhöhen. Das Verfahren 500 kann bei 518 beendet werden.
-
Das Verfahren 500 ermöglicht eine sichere drahtlose Übertragung der Debugdaten in einem kontinuierlichen Übertragungsmodus. Infolgedessen kann das Debugging sicher durchgeführt werden, während Schwierigkeiten im Zusammenhang mit der physischen Zugänglichkeit, Hardwareausfälle im Zusammenhang mit der In-Band-Kommunikation mit der Datenspeichervorrichtung oder andere Faktoren, die das Debugging der Datenspeichervorrichtung behindern können, umgangen werden.
-
Unter Bezugnahme auf 6 ist ein bestimmtes veranschaulichendes Beispiel eines Verfahrens dargestellt und im Allgemeinen mit 600 bezeichnet. Das Verfahren 600 kann von einer Datenspeichervorrichtung, wie beispielsweise der Datenspeichervorrichtung 102, durchgeführt werden.
-
Das Verfahren 600 schließt das Aktivieren einer drahtlosen Steuerung bei 602 ein. Zum Beispiel kann der erste Prozessor 208 die drahtlose Steuerung 190 aktivieren, z. B. als Reaktion auf das Empfangen des Befehls 175.
-
Das Verfahren 600 schließt ferner das Bestimmen ein, ob der Zugriff auf einen Systemspeicher durch Initialisieren der Basisadresse einer Speicherbereichsdefinitionstabelle bei 604 aktiviert wird. Zum Beispiel kann der Zugriff auf den Systemspeicher 232 durch das Initialisieren einer Basisadresse der Speicherbereichsdefinitionstabelle 234 ermöglicht werden, die Bereiche des Systemspeichers 232 anzeigt, die die Daten 179 speichern.
-
Das Verfahren 600 schließt ferner als Reaktion auf den aktivierten Zugriff auf den Systemspeicher das Bestimmen ein, ob ein gepaarter drahtloser Host bei 606 verfügbar ist. Zum Beispiel kann der gepaarte drahtlose Host der zweiten Vorrichtung 182 entsprechen. Das Bestimmen, ob der gepaarte drahtlose Host verfügbar ist, kann das Senden einer „Ping“-Nachricht an die zweite Vorrichtung 182 unter Verwendung der drahtlosen Schnittstelle 176 einschließen, um festzustellen, ob die zweite Vorrichtung 182 verfügbar ist. In einigen Implementierungen sendet die Datenspeichervorrichtung 102 eine „Werbung“, die einen oder mehrere gepaarte drahtlose Hosts innerhalb der drahtlosen Kommunikationsreichweite der Datenspeichervorrichtung 102 sucht.
-
Das Verfahren 600 schließt ferner das Bestimmen ein, ob ein Befehl zur Übertragung von Debugdaten über ein drahtloses Netzwerk bei 608 empfangen wird. Zum Beispiel kann ein Befehl zur Übertragung der Daten 179 über ein drahtloses Netzwerk empfangen werden, das für die Datenspeichervorrichtung 102 über die drahtlose Schnittstelle 176 zugänglich ist. In einem bestimmten Beispiel werden die Daten 179 über das drahtlose Netzwerk in Echtzeit (oder nahezu in Echtzeit) an die zweite Vorrichtung 182 bereitgestellt. Die Daten 179 können mit einer „kontinuierlichen“ Technik (z. B. einer Streaming-Technik) auf Anfragebasis oder mit einer anderen Technik bereitgestellt werden.
-
Als Reaktion auf das Empfangen des Befehls werden bei 608 die Debugdaten von einem Debugpuffer bei 610 übertragen. Zum Beispiel können die Debugdaten, wie die Daten 179, aus dem Debugpuffer 238 oder den in der Speicherbereichsdefinitionstabelle 234 angegebenen Speicherplätzen übertragen werden.
-
Das Verfahren 600 schließt ferner das Bestimmen ein, ob eine Anforderung von einer Vorrichtung für Daten aus einem gültigen Speicherbereich bei 612 empfangen wird. Zum Beispiel kann die Datenspeichervorrichtung 102 eine Anforderung von der zweiten Vorrichtung 182 empfangen. Die Datenspeichervorrichtung 102 kann bestimmen, ob die Anforderung einen gültigen Speicherbereich anzeigt, der in der Speicherbereichsdefinitionstabelle 234 angegeben ist.
-
Als Reaktion auf das Empfangen des Befehls werden bei 612 Daten aus dem entsprechenden Speicherbereich bei 614 übertragen. Zum Beispiel können die Daten 179 von einem von der zweiten Vorrichtung 182 angegebenen Speicherbereich an die drahtlose Schnittstelle 176 zur Übertragung an die zweite Vorrichtung 182 über ein drahtloses Netzwerk bereitgestellt werden.
-
Das Verfahren 600 ermöglicht drahtlose Übertragung der Debugdaten in Echtzeitübertragung oder basierend auf empfangenen Anforderungen. Infolgedessen kann das Debugging durchgeführt werden, während Schwierigkeiten im Zusammenhang mit der physischen Zugänglichkeit, Hardwareausfälle im Zusammenhang mit der In-Band-Kommunikation mit der Datenspeichervorrichtung oder andere Faktoren, die das Debugging der Datenspeichervorrichtung behindern können, umgangen werden.
-
Unter Bezugnahme auf 7 ist ein bestimmtes veranschaulichendes Beispiel eines Verfahrens dargestellt und im Allgemeinen mit 700 bezeichnet. Das Verfahren 700 kann an einer Datenspeichervorrichtung, wie beispielsweise an der Datenspeichervorrichtung 102, durchgeführt werden.
-
Das Verfahren 700 schließt das Erkennen ein, ob einer oder mehrere Vorgänge erkannt werden, die ein Prozessor bei 702 durchführen soll. Zum Beispiel kann die Speichersteuerung 130 die Aufgabenwarteschlange 146 abfragen, um zu bestimmen, ob die Aufgabenwarteschlange 146 einen oder mehrere Vorgänge anzeigt, die an der Datenspeichervorrichtung 102 durchzuführen sind.
-
Das Verfahren 700 schließt ferner als Reaktion auf das Bestimmen, dass einer oder mehrere Vorgänge durchzuführen sind, unter 704 das Bestimmen ein, ob Prozessorressourcen für einen nächsten Vorgang unter 706 verfügbar sind. Zum Beispiel kann die Speichersteuerung 130 bestimmen, ob der Prozessor 144 für den nächsten Vorgang verfügbar ist. Wenn Prozessorressourcen für den nächsten Vorgang verfügbar sind, schließt das Verfahren 700 das Einleiten der Verarbeitung des nächsten Vorgangs bei 708 ein. Zum Beispiel, wenn Ressourcen des Prozessors 144 für die Durchführung des zweiten Vorgangs 150 verfügbar sind, kann der Prozessor 144 den zweiten Vorgang 150 durchführen.
-
Wenn keine Prozessorressourcen verfügbar sind, schließt das Verfahren 700 das Bestimmen ein, ob Prozessorressourcen einer drahtlos gekoppelten zweiten Vorrichtung zum Lastausgleich bei 710 verfügbar sind. Zum Beispiel kann die Speichersteuerung 130 als Reaktion auf das Bestimmen, dass Ressourcen des Prozessors 144 nicht verfügbar sind, die Anforderung 184 an die zweite Vorrichtung 182 senden, wie beispielsweise die Verwendung der drahtlosen Schnittstelle 176. In diesem Beispiel entspricht die drahtlos gekoppelte zweite Vorrichtung der zweiten Vorrichtung 182. Als Reaktion auf die Prozessorressourcen der zweiten Vorrichtung, die verfügbar sind, schließt das Verfahren 700 das Übertragen von Daten an die zweite Vorrichtung ein, um eine oder mehrere Aufgaben, die mit einem anderen Vorgang verbunden sind, bei 712 zu entladen. Zum Beispiel kann die Datenspeichervorrichtung 102 die Daten 179 an die zweite Vorrichtung 182 senden, um eine oder mehrere Aufgaben des zweiten Vorgangs 150 an die zweite Vorrichtung 182 zu übertragen.
-
Das Verfahren 700 ermöglicht einen Lastausgleich zwischen Datenspeichern, um Verarbeitungsengpässe in einem Multidatenspeichersystem zu reduzieren. Das drahtlose Entladen von Aufgaben, die anstehenden Vorgängen zugeordnet sind, ermöglicht einen erhöhten Speicherzugriffsdurchsatz ohne entsprechende Erhöhung des In-Band-Verkehrs oder der Ressourcennutzung im Vergleich zu einer Implementierung, bei der der Lastausgleich über In-Band-Kommunikation durchgeführt wird.
-
Unter Bezugnahme auf 8 ist ein bestimmtes veranschaulichendes Beispiel eines Verfahrens dargestellt und im Allgemeinen mit 800 bezeichnet. Das Verfahren 800 kann von einer Datenspeichervorrichtung, wie beispielsweise von der Datenspeichervorrichtung 102, durchgeführt werden.
-
Das Verfahren 800 schließt das Erkennen eines Fehlerereignisses bei 802 ein. Zum Beispiel kann das Erkennen des Fehlerereignisses das Bestimmen eines Kommunikationsverlustes mit einer Zugriffsvorrichtung, wie beispielsweise der ersten Vorrichtung 180, durch die Datenspeichervorrichtung 102 einschließen.
-
Das Verfahren 800 schließt ferner das Bestimmen ein, ob eine drahtlos gekoppelte zweite Vorrichtung für einen Ausfallsicherungsbetrieb bei 804 verfügbar ist. Ein Ausfallsicherungsbetrieb kann durchgeführt werden, um eine ausgefallene Vorrichtung durch eine andere Vorrichtung zu „ersetzen“, beispielsweise indem die zweite Vorrichtung 182 als Reaktion auf den Kommunikationsverlust mit der ersten Vorrichtung 180 einen oder mehrere Vorgänge für die Datenspeichervorrichtung 102 durchführt.
-
Als Reaktion darauf, dass die zweite Vorrichtung für die Ausfallsicherung verfügbar ist, schließt das Verfahren 800 ferner das Übertragen von Daten an eine zweite Vorrichtung ein, um den Ausfallsicherungsvorgang bei 806 einzuleiten. Zum Beispiel kann die Speichersteuerung 130 die Daten 179 über die drahtlose Schnittstelle 176 an die zweite Vorrichtung 182 senden, um den Ausfallsicherungsvorgang einzuleiten. Die Daten 179 können eine Vorrichtungskennung, einen Bereich gültiger Adressen, Dateisysteminformationen oder andere Daten der Datenspeichervorrichtung angeben, um es der zweiten Vorrichtung zu ermöglichen, in einer Ausfallsicherungskapazität zu arbeiten, und können auch einen oder mehrere Vorgänge angeben, die von der zweiten Vorrichtung 182 oder von der ersten Vorrichtung 180 für (oder „im Namen der“) die Datenspeichervorrichtung 102 durchzuführen sind.
-
Während des Ausfallsicherungsvorgangs schließt das Verfahren 800 ferner das Empfangen einer oder mehrerer Anweisungen von der zweiten Vorrichtung ein, die einer Anforderung einer Zugriffsvorrichtung an die ausgefallene Vorrichtung bei 808 entsprechen. Zum Beispiel kann die Datenspeichervorrichtung 102 die Anweisung 188 von der zweiten Vorrichtung 182 empfangen, beispielsweise über die drahtlose Schnittstelle 176. Die Anweisung 188 kann einer Speicherzugriffsvorrichtung auf den nichtflüchtigen Speicher 104 entsprechen, wie beispielsweise einer Anweisung zum Lesen von Daten aus dem nichtflüchtigen Speicher 104.
-
Das Verfahren 800 schließt ferner das Ausführen der einen oder mehreren Anweisungen von der zweiten Vorrichtung und das Übertragen der Ergebnisse der Ausführung der Anweisungen an die zweite Vorrichtung bei 810 ein. Zum Beispiel kann die Speichersteuerung 130 die Anweisung 188 ausführen, um das Ergebnis 189 zu erzeugen, beispielsweise durch das Lesen von Daten aus dem nichtflüchtigen Speicher 104. Die Datenspeichervorrichtung 102 kann das Ergebnis 189 der Ausführung der Anweisung 188 an die zweite Vorrichtung 182 unter Verwendung der drahtlosen Schnittstelle 176 übertragen.
-
Im Zusammenhang mit den beschriebenen Ausführungsformen schließt eine Vorrichtung Mittel (z. B. den nichtflüchtigen Speicher 104) zum Speichern von Daten ein und schließt ferner Mittel (z. B. die Speichersteuerung 130) zum Steuern von Vorgängen an den Mitteln zum Speichern von Daten ein. Die Mittel zum Steuern schließen Mittel (z. B. den Prozessor 144) zum Durchführen eines ersten Vorgangs (z. B. des ersten Vorgangs 148) und eines zweiten Vorgangs (z. B. des zweiten Vorgangs 150) ein. Die Einrichtung schließt ferner Mittel (z. B. die Schnittstelle der Zugriffsvorrichtung 172) zum Kommunizieren basierend auf einer drahtgebundenen Kommunikationstechnik mit einer ersten Vorrichtung (z. B. der ersten Vorrichtung 180) ein. Die Einrichtung schließt ferner Mittel (z. B. die drahtlose Schnittstelle 176) zum Kommunizieren basierend auf einer drahtlosen Kommunikationstechnik mit einer zweiten Vorrichtung (z. B. der zweiten Vorrichtung 182) und zum Übertragen von Daten (z. B. der dem zweiten Vorgang zugeordneten Daten 179) an die zweite Vorrichtung ein, um die Ausführung einer oder mehrerer Aufgaben des zweiten Vorgangs bei der zweiten Vorrichtung zu ermöglichen.
-
In einem bestimmten veranschaulichenden Beispiel ist das Mittel zum Steuern von Vorgängen eingerichtet, um die Durchführung des zweiten Vorgangs 150 drahtlos auf die zweite Vorrichtung 182 zu übertragen, um einen oder mehrere Ausfallsicherungsvorgänge, einen Fehleranalysevorgang, einen Lastausgleichsvorgang oder einen Firmware-Aktualisierungsvorgang einzuleiten. Der Firmware-Aktualisierungsvorgang kann über eine Out-of-Band-Schnittstelle durchgeführt werden. Zum Beispiel kann die Datenspeichervorrichtung 102 die Aktualisierung 176 der Firmware 106 über eine Out-of-Band-Schnittstelle (z. B. die drahtlose Schnittstelle 176) anstelle einer In-Band-Schnittstelle (z. B. die Schnittstelle der Zugriffsvorrichtung 172) empfangen. Durch das Empfangen der Aktualisierung 178 über die Out-of-Band-Schnittstelle kann die In-Band-Schnittstelle für andere Vorgänge verfügbar sein (z. B. kann die Schnittstelle der Zugriffsvorrichtung 172 für Lese- und Schreibvorgänge „freigegeben“ werden), was die Latenzzeit der Vorgänge reduzieren kann.
-
Obwohl verschiedene hierin dargestellte Komponenten als Blockkomponenten veranschaulicht und allgemein beschrieben werden, können diese Komponenten einen oder mehrere Mikroprozessoren, Zustandsmaschinen oder andere Schaltungen einschließen, die eingerichtet sind, um es diesen Komponenten zu ermöglichen, einen oder mehrere der hierin beschriebenen Vorgänge durchzuführen. Zum Beispiel können bestimmte Gesichtspunkte des Vorgangsübertragungsmanagers 152 physikalische Komponenten darstellen, wie Hardwaresteuerungen, Zustandsmaschinen, Logikschaltungen oder andere Strukturen, damit die Speichersteuerung 130 die Durchführung eines Vorgangs auf eine bestimmte Vorrichtung übertragen kann. In einem bestimmten Beispiel schließt der Puffer 238 einen Hardwarepuffer ein, wie beispielsweise einen FIFO-Hardwarepuffer.
-
Alternativ oder zusätzlich können bestimmte Gesichtspunkte des Vorgangübertragungsmanagers 152 unter Verwendung eines Mikroprozessors oder einer Mikrosteuerung implementiert werden. In einer bestimmten Ausführungsform wird ein oder mehrere Gesichtspunkte des Vorgangsübertragungsmanagers 152 unter Verwendung eines Prozessors implementiert, der Anweisungen (z. B. Firmware) ausführt, die im nichtflüchtigen Speicher 104 gespeichert sind. Alternativ oder zusätzlich können ausführbare Anweisungen, die vom Prozessor ausgeführt werden, an einem separaten Speicherort gespeichert werden, der nicht Teil des nichtflüchtigen Speichers 104 ist, wie beispielsweise in einem Nurlesespeicher (ROM), der in der Speichersteuerung 130 eingeschlossen sein kann. In einem bestimmten Beispiel ist der Vorgangsübertragungsmanager 152 eingerichtet, um Anweisungen auszuführen, um einen im Puffer 238 enthaltenen logischen Puffer zu erzeugen, wie beispielsweise einen im Puffer 238 enthaltenen logischen FIFO-Puffer (alternativ oder zusätzlich zu einem FIFO-Hardwarepuffer).
-
Die Datenspeichervorrichtung 102 kann mit einer oder mehreren Zugriffsvorrichtungen gekoppelt, verbunden oder eingebettet sein, wie beispielsweise in einem Gehäuse der ersten Vorrichtung 180. Zum Beispiel kann die Datenspeichervorrichtung 102 in die erste Vorrichtung 180 gemäß einer Konfiguration des Joint Electron Devices Engineering Council (JEDEC) Solid State Technology Association Universal Flash Storage (UFS) eingebettet werden. Zur weiteren Veranschaulichung kann die Datenspeichervorrichtung 102 in eine elektronische Vorrichtung (z. B. die erste Vorrichtung 180), wie beispielsweise ein Mobiltelefon, einen Computer (z. B. ein Laptop, ein Tablett oder ein Notebook), einen Musikplayer, einen Videoplayer, eine Spielvorrichtung oder -konsole, einen elektronischen Buchleser, einen persönlichen digitalen Assistenten (PDA), eine tragbare Navigationsvorrichtung oder eine andere Vorrichtung integriert werden, die einen internen nichtflüchtigen Speicher verwendet.
-
In einer oder mehreren anderen Implementierungen ist die Datenspeichervorrichtung 102 in einer tragbaren Vorrichtung implementiert, die eingerichtet ist, um selektiv mit einer oder mehreren externen Vorrichtungen, wie beispielsweise einer Hostvorrichtung, gekoppelt zu werden. Zum Beispiel kann die Datenspeichervorrichtung 102 von der ersten Vorrichtung 180 abnehmbar sein (d. h. „abnehmbar“ mit der ersten Vorrichtung 180 gekoppelt). Als Beispiel kann die Datenspeichervorrichtung 102 gemäß einer abnehmbaren Konfiguration des universellen seriellen Busses (USB) abnehmbar mit der ersten Vorrichtung 180 gekoppelt werden.
-
Die erste Vorrichtung 180 kann einem Mobiltelefon, einem Computer (z. B. einem Laptop, einem Tablett oder einem Notebook), einem Musikplayer, einem Videoplayer, einer Spielvorrichtung oder -konsole, einem elektronischen Buchleser, einem persönlichen digitalen Assistenten (PDA), einer tragbaren Navigationsvorrichtung, einer anderen elektronischen Vorrichtung oder einer Kombination derselben entsprechen. Die erste Vorrichtung 180 kann über eine Steuerung kommunizieren, die es der ersten Vorrichtung 180 ermöglichen kann, mit der Datenspeichervorrichtung 102 zu kommunizieren. Das erste Gerät 180 kann in Übereinstimmung mit einer Branchenspezifikation der JEDEC Solid State Technology Association betrieben werden, wie beispielsweise einer Spezifikation für eingebettete MultiMedia-Karten (eMMC) oder einer Spezifikation für die universelle Flash-Speicher- (UFS) Host-Controller-Schnittstelle. Als veranschaulichendes Beispiel kann die erste Vorrichtung 180 in Übereinstimmung mit einer oder mehreren anderen Spezifikationen betrieben werden, wie beispielsweise einer Spezifikation der sicheren digitalen Host-Steuerung (SD). Alternativ kann die erste Vorrichtung 180 mit der Datenspeichervorrichtung 102 gemäß einem anderen Kommunikationsprotokoll kommunizieren. Als veranschaulichende Beispiele kann die Datenspeichervorrichtung 102 in einigen Implementierungen in ein netzwerkfähiges Datenspeichersystem, wie beispielsweise ein Unternehmensdatensystem, ein NAS-System oder ein Cloud-Datenspeichersystem, integriert werden.
-
In einigen Implementierungen schließt die Datenspeichervorrichtung 102 ein Halbleiterlaufwerk (SSD) ein. Die Datenspeichervorrichtung 102 kann als eingebettetes Speicherlaufwerk (z. B. ein eingebettetes SSD-Laufwerk einer mobilen Vorrichtung), ein Unternehmensspeicherlaufwerk (ESD), eine Cloud-Speichervorrichtung, eine netzwerkfähige Speichervorrichtung (NAS) oder eine Client-Speichervorrichtung als veranschaulichende, nicht einschränkende Beispiele dienen. In einigen Implementierungen kann die Datenspeichervorrichtung 102 über ein Netzwerk mit der ersten Vorrichtung 180 gekoppelt werden. Zum Beispiel kann das Netzwerk ein Rechenzentrumsspeichersystemnetzwerk, ein Unternehmensspeichersystemnetzwerk, ein Speicherbereichsnetzwerk, ein Cloud-Speichernetzwerk, ein lokales Netzwerk (LAN), ein Weitverkehrsnetzwerk (WAN), das Internet und/oder ein anderes Netzwerk einschließen.
-
Zur weiteren Veranschaulichung kann die Datenspeichervorrichtung 102 eingerichtet werden, um mit der ersten Vorrichtung 180 als eingebetteter Speicher gekoppelt zu werden, beispielsweise in Verbindung mit einer eingebetteten MultiMedia-Karte (eMMC®) (Marke der JEDEC Solid State Technology Association, Arlington, Virginia) als veranschaulichendes Beispiel. Die Datenspeichervorrichtung 102 kann einer eMMC-Vorrichtung entsprechen. Als anderes Beispiel kann die Datenspeichervorrichtung 102 einer Speicherkarte entsprechen, wie beispielsweise einer sicheren digitalen (SD®) Karte, einer microSD®-Karte, einer miniSD™-Karte (Marke von SD-3C LLC, Wilmington, Delaware), einer MultiMediaCard™-Karte (MMC™) (Marke von JEDEC Solid State Technology Association, Arlington, Virginia) oder einer CompactFlash®-Karte (CF) (Marke von SanDisk Corporation, Milpitas, California). Die Datenspeichervorrichtung 102 kann in Übereinstimmung mit einer JEDEC-Branchenspezifikation betrieben werden. Zum Beispiel kann die Datenspeichervorrichtung 102 in Übereinstimmung mit einer JEDEC eMMC-Spezifikation, einer Spezifikation von einem JEDEC universellen Flash-Speicher (UFS), einer oder mehreren anderen Spezifikationen oder einer Kombination derselben betrieben werden.
-
Der nichtflüchtige Speicher 104 kann einen resistiven Direktzugriffsspeicher (ReRAM), einen Flash-Speicher (z. B ein NAND-Speicher, ein NOR-Speicher, ein Flashspeicher mit einer einstufigen Zelle (SLC), ein Flashspeicher mit mehreren Zellen (MLC), ein Speicher mit geteilter Bitleitung NOR (DINOR), ein AND-Speicher, eine Vorrichtung mit hohem kapazitivem Kopplungsverhältnis (HiCR), eine asymmetrische kontaktlose Transistor-Vorrichtung (ACT), oder ein anderer Flash-Speicher), einen löschbaren programmierbaren Nurlesespeicher (EPROM), einen elektrisch löschbaren programmierbaren Nurlesespeicher (EEPROM), einen Nurlesespeicher (ROM), einen einmaligen programmierbaren Speicher (OTP), einen anderen Speichertyp oder eine Kombination davon einschließen. Der nichtflüchtige Speicher 104 kann eine Halbleiterspeichervorrichtung einschließen.
-
Halbleiterspeichervorrichtungen schließen flüchtige Speichervorrichtungen ein, wie beispielsweise „DRAM“-Speichervorrichtungen (Dynamic Random Access Memory) oder „SRAM“-Speichervorrichtungen (Static Random Access Memory), nichtflüchtige Speicher wie „ReRAM“-Speicher (Resistive Random Access Memory), „MRAM“-Speicher (Magnetoresistive Random Access Memory), „EEPROM“-Speicher (Electrically Erasable Programmable Read Only Memory), Flash-Speicher (der auch als Untergruppe eines EEPROM angesehen werden kann), „FRAM“-Speicher (Ferroelectric Random Access Memory) und andere Halbleiterelemente, die Informationen speichern können. Jede Art von Speichervorrichtung kann unterschiedliche Konfigurationen aufweisen. Zum Beispiel können Flash-Speichervorrichtungen in einer NAND- oder NOR-Konfiguration eingerichtet sein.
-
Die Speichervorrichtungen können aus passiven und/oder aktiven Elementen in beliebigen Kombinationen gebildet sein. Als ein nicht einschränkendes Beispiel sei angeführt, dass passive Halbleiterspeicherelemente ReRAM-Vorrichtungselemente einschließen, die in einigen Ausführungsformen ein Speicherelement mit Widerstandsumschaltung, wie beispielsweise ein Anti-Fuse-, Phasenwechsel-Material usw. und optional ein Lenkelement, wie beispielsweise eine Diode usw., einschließen. Weiterhin sei als nicht einschränkendes Beispiel genannt, dass aktive Halbleiterspeicherelemente EEPROM- und Flash-Speichervorrichtungselemente einschließen, die in einigen Ausführungsformen Elemente mit einem Ladungsgebiet, wie beispielsweise ein Floating-Gate, leitende Nanopartikel oder ein Ladung speicherndes dielektrisches Material, einschließen.
-
Mehrere Speicherelemente können so eingerichtet sein, dass sie in Reihe geschaltet sind oder dass jedes Element einzeln zugänglich ist. Als nicht einschränkendes Beispiel enthalten Flash-Speichervorrichtungen in NAN D-Konfiguration (NAN D-Speicher) üblicherweise Speicherelemente, die in Reihe geschaltet sind. Ein NAND-Speicherarray kann so eingerichtet sein, dass das Array aus mehreren Speicherketten zusammengesetzt ist, in denen eine Kette aus mehreren Speicherelementen zusammengesetzt ist, die sich eine einzelne Bitleitung teilen und auf die als eine Gruppe zugegriffen wird. Alternativ können Speicherelemente so eingerichtet sein, dass jedes Element einzeln zugänglich ist, z. B. ein NOR-Speicherarray. NAND- und NOR-Speicherkonfigurationen sind beispielhaft, und Speicherelemente können anderweitig eingerichtet sein.
-
Die Halbleiterspeicherelemente, die innerhalb und/oder über einem Substrat angeordnet sind, können in zwei oder drei Dimensionen angeordnet sein, wie einer zweidimensionalen Speicherstruktur oder einer dreidimensionalen Speicherstruktur. In einer zweidimensionalen Speicherstruktur sind die Halbleiterspeicherelemente in einer einzelnen Ebene oder einer einzelnen Speichervorrichtungsebene angeordnet. Üblicherweise sind in einer zweidimensionalen Speicherstruktur Speicherelemente in einer Ebene (z. B. in einer x-z-Richtung-Ebene) angeordnet, die sich im Wesentlichen parallel zu einer Hauptfläche eines Substrats erstreckt, das die Speicherelemente trägt. Das Substrat kann ein Wafer sein, über oder in dem die Schicht der Speicherelemente gebildet ist, oder es kann ein Trägersubstrat sein, das nach dem Ausbilden an den Speicherelementen befestigt ist. Als ein nicht einschränkendes Beispiel, kann das Substrat einen Halbleiter wie Silizium einschließen.
-
Die Speicherelemente können auf der einzelnen Speichervorrichtungsebene in einem geordneten Array angeordnet sein, wie in einer Vielzahl von Zeilen und/oder Spalten. Jedoch können die Speicherelemente in nicht regelmäßigen oder nicht orthogonalen Konfigurationen angeordnet sein. Die Speicherelemente können jeweils zwei oder mehr Elektroden oder Kontaktleitungen, wie Bitleitungen und Wortleitungen, aufweisen.
-
Ein dreidimensionales Speicherarray ist so angeordnet, dass Speicherelemente mehrere Ebenen oder mehrere Speichervorrichtungsebenen belegen, wodurch eine Struktur in drei Dimensionen gebildet wird (d. h. in der x-, y- und z-Richtung, wo die y-Richtung im Wesentlichen senkrecht ist und die x- und z-Richtungen im Wesentlichen parallel zur Hauptoberfläche des Substrats verlaufen). Als ein nicht einschränkendes Beispiel kann eine dreidimensionale Speicherstruktur vertikal als ein Stapel von mehreren zweidimensionalen Speichervorrichtungsebenen angeordnet sein. Als weiteres nicht einschränkendes Beispiel kann ein dreidimensionales Speicherarray als mehrere vertikale Spalten (z. B. Spalten, die sich im Wesentlichen senkrecht zur Hauptfläche des Substrats erstrecken, d. h. in y-Richtung) angeordnet sein, 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 in einem dreidimensionalen NAND-Speicherarray die Speicherelemente miteinander gekoppelt sein, um eine NAND-Kette innerhalb einer einzelnen horizontalen (z. B. x-y) Speichervorrichtungsebenen zu bilden. Alternativ können die Speicherelemente miteinander gekoppelt sein, um eine vertikale NAND-Kette zu bilden, die über mehrere horizontale Speichervorrichtungsebenen verläuft. Andere dreidimensionale Konfigurationen können in Betracht gezogen werden, wobei einige NAND-Ketten Speicherelemente in einer einzelnen Speicherebene enthalten, während andere Ketten Speicherelemente enthalten, die sich über mehrere Speicherebenen erstrecken. Dreidimensionale Speicherarrays können auch als eine NOR-Konfiguration und als eine ReRAM-Konfiguration ausgelegt sein.
-
Üblicherweise werden in einem monolithischen dreidimensionalen Speicherarray ein oder mehrere Speichervorrichtungsebenen über einem einzigen Substrat gebildet. Gegebenenfalls kann das monolithische dreidimensionale Speicherarray auch eine oder mehrere Speicherschichten zumindest teilweise innerhalb des einzelnen Substrats aufweisen. Als ein nicht einschränkendes Beispiel, kann das Substrat einen Halbleiter wie Silizium einschließen. In einem monolithischen dreidimensionalen Array werden die Schichten, die jede Speichervorrichtungsebene des Arrays bilden, üblicherweise auf den Schichten der darunter liegenden Speichervorrichtungsebenen des Arrays gebildet. Jedoch können Schichten von benachbarten Speichervorrichtungsebenen eines monolithischen dreidimensionalen Speicherarrays gemeinsam genutzt werden oder Zwischenschichten zwischen Speichervorrichtungsebenen aufweisen.
-
Alternativ können zweidimensionale Arrays getrennt gebildet und dann zusammengepackt werden, um eine nicht monolithische Speichervorrichtung mit mehreren Speicherschichten zu bilden. Beispielsweise können nicht monolithische gestapelte Speicher konstruiert werden, indem Speicherebenen auf separaten Substraten gebildet werden und dann übereinander gestapelt werden. Die Substrate können vor dem Stapeln gedünnt oder von den Speichervorrichtungsebenen entfernt werden, aber da die Speichervorrichtungsebenen anfänglich über separaten Substraten gebildet werden, sind die resultierenden Speicherarrays keine monolithischen dreidimensionalen Speicherarrays. Weiterhin können mehrere zweidimensionale Speicherarrays oder dreidimensionale Speicherarrays (monolithisch oder nicht monolithisch) auf separaten Chips gebildet und dann zusammengepackt werden, um eine gestapelte Chip-Speichervorrichtung zu bilden.
-
Zugehörige Schaltungen sind üblicherweise für den Betrieb der Speicherelemente und für die Kommunikation mit den Speicherelementen erforderlich. Als nicht einschränkende Beispiele können Speichervorrichtungen Schaltungen aufweisen, die zum Steuern und Treiben von Speicherelementen verwendet werden, um Funktionen wie Programmieren und Lesen auszuführen. Diese zugehörige Schaltung kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Steuerung für Schreib-/Lesevorgänge des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.
-
Ein Fachmann wird erkennen, dass diese Offenbarung nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt ist, sondern alle relevanten Speicherstrukturen in dem Geist und Umfang der Offenbarung abdeckt, wie hier beschrieben und wie es von einem Fachmann verstanden wird. Die Veranschaulichungen der hierin beschriebenen Ausführungsformen sollen ein allgemeines Verständnis der verschiedenen Ausführungsformen bereitstellen. Andere Ausführungsformen können verwendet und aus der Offenbarung abgeleitet werden, sodass strukturelle und logische Substitutionen und Änderungen vorgenommen werden können, ohne vom Umfang der Offenbarung abzuweichen. Diese Offenbarung soll alle nachfolgenden Anpassungen oder Variationen verschiedener Ausführungsformen abdecken. Der Fachmann wird erkennen, dass solche Änderungen innerhalb des Schutzumfangs der vorliegenden Offenbarung liegen.
-
Der oben offenbarte Gegenstand ist als veranschaulichend und nicht einschränkend zu betrachten, und die beilegenden Patentansprüche sollen alle derartigen Änderungen, Verbesserungen und sonstigen Ausführungsformen abdecken, die innerhalb des Schutzumfangs der vorliegenden Offenbarung fallen. Der Umfang der vorliegenden Erfindung ist daher, soweit gesetzlich zulässig, durch die weitestgehende zulässige Auslegung der folgenden Patentansprüche und ihrer Äquivalente zu bestimmen und wird durch die vorstehende detaillierte Beschreibung nicht beschränkt oder eingeschränkt.