-
HINTERGRUND
-
Secure Digital nimmt sowohl Bezug auf ein nichtflüchtiges Speicherkartenformat, entwickelt von der Secure Digital Card Association (SDA) zur Verwendung in tragbaren Vorrichtungen wie Solid-State-Laufwerken (SSDs), als auch auf Protokolle zum Interagieren mit solchen Vorrichtungen. Secure Digital schließt gegenwärtig fünf Kartenfamilien ein, die in drei verschiedenen Größen verfügbar sind. Die fünf Familien sind die ursprüngliche Standard-Capacity (SDSC), die High-Capacity (SDHC), die eXtended-Capacity (SDXC), die Ultra-Capacity (SDUC) und die SDIO, die Ein- /Ausgabe-Funktionen mit Datenspeicherung kombiniert. Die drei Formfaktoren sind die ursprüngliche Größe, die Mini-Größe und die Mikro-Größe. Hierin nimmt der Ausdruck „Secure Digital-Betriebsmodus“ Bezug auf Protokolle zum Interagieren mit Secure Digital-Vorrichtungen vor der Einführung des NVMe-Betriebsmodus in neueren Vorrichtungen. Das NVMe-Protokoll/der NVMe-Betriebsmodus ist ein Kommunikationsstandard/Protokoll, das speziell für Sicherheitsspeicherungsvorrichtungen durch eine Vereinigung von Anbietern einschließlich Intel, Samsung, SanDisk, Dell und Seagate entwickelt wurde. Es arbeitet über den PCIe-Bus (daher das „Express“ im Namen), was es den Laufwerken ermöglicht, sich eher wie der schnelle nichtflüchtige Halbleiterspeicher zu verhalten, der sie in erster Linie sind, als wie die Festplatten, die sie imitieren.
-
Speichervorrichtungen, die den Secure-Digital-Betriebsmodus unterstützen, müssen Sperr- und Entsperroperationen zum Einschränken oder Zulassen eines Benutzermoduszugriffs auf von der Speichervorrichtung gespeicherte Daten unterstützen. Eine Hostvorrichtung, die sich mit einem Solid-State-Laufwerk verbindet, kann die Speichervorrichtung unter Verwendung eines Passworts sperren und die Speichervorrichtung später mit dem gleichen Passwort entsperren.
-
SDExpress ist ein neuerer Standard für Speichervorrichtungen. SDExpress-Speichervorrichtungen unterstützen sowohl das Secure Digital-Protokoll als auch das Non-Volatile Memory Express-Protokoll (NVMe-Protokoll). Nur ein Protokoll wird zu einem beliebigen gegebenen Zeitpunkt als das Betriebsprotokoll solcher Speichervorrichtungen ausgewählt, wobei die Auswahl während eines Power-On-Reset (Booten) der Speichervorrichtung erfolgt. Einer Hostvorrichtung wird der Zugriff auf gespeicherte Daten in Benutzermodus-Speicherblöcken der Speichervorrichtung verweigert, wenn die SDExpress-Speichervorrichtung im NVMe-Betriebsmodus gebootet wird, aber zuvor gesperrt war, während sie sich im Secure Digital-Betriebsmodus befand. Der Begriff „Benutzermodus“ nimmt Bezug auf einen Betriebsmodus, in dem ein autorisierter Benutzer einer Secure Digital-Speichervorrichtung (üblicherweise eine Person oder eine Anwendung, die mit der Vorrichtung über eine Hostvorrichtung interagiert) Daten lesen und/oder Daten auf (nicht verborgene oder „Benutzermodus-Speicherblöcke“ der Vorrichtung schreiben kann, je nach Berechtigungen.
-
1 veranschaulicht einen solchen Prozess 100 für ein Solid-State-Laufwerk 112. Das Solid-State-Laufwerk 112 wird zuerst in dem Secure Digital-Betriebsmodus 102 gebootet und dann gesperrt (SSD-Sperre 104). Optional kann die SSD-Sperre 104 physisches Ablösen des Solid-State-Laufwerks 112 von einer Hostvorrichtung beinhalten, z. B. Entfernen oder Auswerfen des Solid-State-Laufwerks 112 (SSD entfernen und erneut verbinden 106). Es ist jedoch nicht in allen Implementierungen notwendig, ein Solid-State-Laufwerk zu entfernen und erneut zu verbinden, um die Vorrichtung zu sperren. Als nächstes wird das Solid-State-Laufwerk 112 in dem NVMe-Betriebsmodus 108 gebootet. Da das Solid-State-Laufwerk 112 zuvor in dem Secure Digital-Betriebsmodus 102 gesperrt war, versagen zu diesem Zeitpunkt Datenlese- und -schreibbefehle an das Solid-State-Laufwerk 112 (Lese-/Schreibfehler 110).
-
Figurenliste
-
Um die Diskussion über ein bestimmtes Element oder eine bestimmte Handlung leicht zu identifizieren, nehmen die wichtigsten Ziffern in einem Bezugszeichen auf die Nummer der Figur Bezug, in der dieses Element zum ersten Mal eingeführt wird.
- 1 veranschaulicht einen Prozess 100, der einen Lese-/Schreibfehler in einem herkömmlichen Solid-State-Laufwerk verursacht.
- 2 veranschaulicht eine Sicherheitsdatenstruktur 200 gemäß einer Ausführungsform.
- 3 veranschaulicht einen Betriebsprozess 300 gemäß einer Ausführungsform.
- 4 veranschaulicht einen Betriebsprozess 400 gemäß einer Ausführungsform.
- 5 veranschaulicht einen Betriebsprozess 500 gemäß einer Ausführungsform.
- 6 veranschaulicht einen herkömmlichen CPRM-Lese- und -Schreibprozess 600, der einen Lese-/Schreibfehler in einem herkömmlichen Solid-State-Laufwerk verursacht.
- 7 veranschaulicht einen CPRM-Datenschreib- und -Datenleseprozess 700 gemäß einer Ausführungsform.
- 8 veranschaulicht einen CPRM-Datenschreib- und Datenleseprozess 800 gemäß einer Ausführungsform.
- 9 veranschaulicht eine LESE-Logik des CPRM-Inhalts im Secure Digital-Betriebsmodus 900 gemäß einer Ausführungsform.
- 10 veranschaulicht eine CPRM-Datenleselogik im NVMe-Betriebsmodus 1000 gemäß einer Ausführungsform.
- 11 ist ein Blockdiagramm einer beispielhaften Speichervorrichtung 1100.
-
DETAILLIERTE BESCHREIBUNG
-
Hierin beschrieben sind Mechanismen zum Entsperren einer Speichervorrichtung, die in dem NVMe-Betriebsmodus bootet und zuvor in dem Secure-Digital-Betriebsmodus gesperrt war. Abwärtskompatibilität wird ausschließlich mit Secure Digital-Modus-Hostvorrichtungen (z. B. Secure Digital-Speichervorrichtungen, die den NVMe-Betriebsmodus nicht unterstützen) gewahrt. Hostvorrichtungen und Endbenutzer können diese Mechanismen ausschließlich mit Secure Digital-Modus-Hostvorrichtungen sowie neueren SDExpress-Speichervorrichtungen verwenden.
-
Das ATA-Sicherheitsprotokoll ist ein Satz von Sicherheitsmerkmalen und Protokollen, die von seriellen ATA- oder SATA-kompatiblen Vorrichtungen verwendet werden. SATA ist eine Computerbusschnittstelle, die Host-Bus-Adapter mit Massenspeichervorrichtungen wie Solid-State-Laufwerken, Festplatten, optischen Laufwerken und Solid-State-Laufwerken verbindet. SATA-Hostadapter und -vorrichtungen kommunizieren über ein serielles Hochgeschwindigkeitskabel über zwei Leiterpaare.
-
Die Mechanismen verwenden die ATA-Sicherheitsmerkmale über das NVMe-Protokoll zum Entsperren der Speichervorrichtung, wenn eine SDExpress-Speichervorrichtung im NVMe-Betriebsmodus gebootet wird. Die Hostvorrichtung verwendet das ATA-Sicherheitsmerkmal unter Verwendung des gleichen Passworts, das sie für den Secure Digital-Betriebsmodus verwendet. Die Speichervorrichtung schließt eine Konvertierungslogik für das Passwort des Secure Digital-Modus in das Passwort des ATA-Sicherheitsmerkmals ein, die den Übergang vom Secure Digital-Betriebsmodus in den NVMe-Betriebsmodus ohne Beteiligung der Hostvorrichtung ermöglicht. Die Speichervorrichtung schließt auch Passwortblöcke in einem nichtflüchtigen Speicher ein, auf die nur durch eine Datensicherheitslogik zugegriffen werden kann.
-
Wenn die SDExpress-Speichervorrichtung das Solid-State-Laufwerk unter Verwendung eines Passworts im Secure Digital-Betriebsmodus sperrt, werden die Passwortlänge, das Passwort und der Sperrstatus in einem Sicherheitspasswortblock im NAND-Flashspeicher gespeichert. Der Sicherheitspasswortblock ist in Nicht-Benutzermodus-Speicherblöcken angeordnet und ist nicht zum Speichern von Benutzermodusdaten verfügbar.
-
Das NVMe-Protokoll unterstützt mehrere Sicherheitsprotokolle unter Verwendung von sicheren Datenlese- und -schreibbefehlen. Das ATA-Sicherheitsprotokoll kann ein solches Protokoll sein, das durch das NVMe-Protokoll unterstützt wird. Das ATA-Sicherheitsprotokoll unterstützt sowohl Benutzerpasswörter als auch Masterpasswörter. In einer Ausführungsform konvertiert die Passwortkonvertierungslogik eine Secure Digital-Sicherheitsdatenstruktur in ein Benutzerpasswort des ATA-Sicherheitsprotokolls. Die Passwortkonvertierungslogik wird während der NVMe-Betriebsmodusinitialisierung während des Bootens der SDExpress-Speichervorrichtung ausgelöst. Die Passwortkonvertierungslogik transformiert das Passwort durch Anhängen von Nullen, wenn die Passwortlänge im Secure Digital-Betriebsmodus kleiner als 32 Bytes ist. Die Passwortkonvertierungslogik liest die Passwortdetails des Secure Digital-Modus aus der sicheren Datenstruktur des Secure Digital-Modus, führt die Passwortkonvertierung durch und speichert das Ergebnis in der sicheren Datenstruktur des ATA-Modus. Sowohl die sichere Datenstruktur des Secure Digital-Modus als auch die sichere Datenstruktur des ATA-Modus sind in Nicht-Benutzermodus-Speicherblöcken eines nichtflüchtigen Speichers angeordnet, die während einer Benutzermodusverwendung des Solid-State-Laufwerks verborgen sind. Wenn die Hostvorrichtung nach der NVMe-Betriebsmodusinitialisierung den ATA-Entsperrbefehl sendet, um die Speichervorrichtung zu entsperren, liest der ATA-Sicherheitsprotokollhandler in der Speichervorrichtung das gespeicherte Passwort aus der sicheren Datenstruktur des ATA-Modus und vergleicht es mit dem von der Hostvorrichtung bereitgestellten Passwort. Wenn die Passwörter übereinstimmen, wird die Speichervorrichtung in den entsperrten Modus versetzt und Datenlese- und -schreibbefehle an Benutzermodus-Speicherblöcke werden erfolgreich sein.
-
Bezugnehmend auf 2 weist eine Sicherheitsdatenstruktur 200 reservierte Bits 202, Berechtigungsbits 204, ein Passwortlängenbyte 206 und ein Passwortbyte 208 auf.
-
Die reservierten Bits 202 und die Berechtigungsbits 204 können zusammen das erste Byte („Byte 0“) der Secure Digital-Sicherheitsdatenstruktur aufweisen. Die reservierten Bits 202 sind ein Secure Digital-Sicherheitsdatenstruktur-Standard. Diese vier Bits können auf „0“ gesetzt werden. Die Berechtigungsbits 204 können Operationen zum Löschen der Sicherheitsdatenstruktur, zum Sperren und/oder Entsperren der Sicherheitsdatenstruktur, zum Löschen des Passworts aus den Passwortbytes 208 und zum Einstellen des Passworts auf die Passwortbytes 208 einschließen. Der Status des Sperr-/Entsperrmerkmals der Berechtigungsbits 204 kann verwendet werden, um zu bestimmen, ob ein Passwort verwendet werden soll, wenn das Solid-State-Laufwerk mit einer Hostvorrichtung interagiert.
-
Das Passwortlängenbyte 206 weist Bits auf, um die Passwortlänge darzustellen. Das Passwortlängenbyte 206 kann das zweite Byte („Byte 1“) der Sicherheitsdatenstruktur 200 einschließen. Die Passwortlänge bestimmt die Anzahl der Passwortbytes 208. Die Passwortlänge kann eine Ganzzahl kleiner als oder gleich 32 sein. Das Passwortlängenbyte 206 kann verwendet werden, um zu bestimmen, ob eine Passwortkonvertierungslogik für das Passwort des Secure-Digital-Modus durchgeführt werden muss.
-
Die Passwortbytes 208 schließen eine Anzahl von Bytes ein, die der Passwortlänge entsprechen, die in dem Passwortlängenbyte 206 aufgewiesen ist. Die Passwortbytes 208 weisen die Passwortdaten auf. Die Passwortdaten können verwendet werden, um die Secure Digital-Speichervorrichtung aus dem entsperrten Status in einen gesperrten Status zu versetzen.
-
3 veranschaulicht eine Ausführungsform eines Betriebsprozesses 300 zwischen einer Hostvorrichtung 302 und einer SDExpress-Speichervorrichtung 304. Die SDExpress-Speichervorrichtung 304 schließt verborgene SD-Passwortblöcke 306 und verborgene ATA-Passwortblöcke 314 ein. Die verborgenen SD-Passwortblöcke 306 weisen eine Passwortlänge 308, Passwortdaten 310 und einen Sperrstatus 312 auf. Die verborgenen ATA-Passwortblöcke 314 weisen ATA-Passwortdaten 316 auf.
-
Die Hostvorrichtung 302 ist eine Vorrichtung, die in der Lage ist, sich mit der SDExpress-Speichervorrichtung 304 zu verbinden. Die Hostvorrichtung 302 kann ein persönlicher Computer, ein eingebetteter Computer (wie bei einem Automobil, autonomen Fahrzeug usw.), eine digitale Kamera, ein Camcorder, eine Videospielkonsole, ein Mobiltelefon usw. sein. Die Hostvorrichtung 302 kann auf die SDExpress-Speichervorrichtung 304 in einem Secure Digital-Betriebsmodus oder einem NVMe-Betriebsmodus zugreifen. Mehrere Hostvorrichtungen können auf die SDExpress-Speichervorrichtung 304 zugreifen. Jede Hostvorrichtung 302 kann den Secure Digital-Betriebsmodus, den NVMe-Betriebsmodus oder beide zu unterschiedlichen Zeiten verwenden. Die Hostvorrichtung 302 kann auch andere Modi nutzen. Zum Beispiel kann eine erste Hostvorrichtung auf die SDExpress-Speichervorrichtung 304 unter Verwendung des Secure Digital-Betriebsmodus zugreifen. Die erste Hostvorrichtung kann dann die SDExpress-Speichervorrichtung gemäß dem Secure Digital-Protokoll sperren. Die SDExpress-Speichervorrichtung 304 kann dann von der ersten Hostvorrichtung entfernt und mit einer zweiten Hostvorrichtung verbunden werden. Die zweite Hostvorrichtung kann dann versuchen, die SDExpress-Speichervorrichtung 304 gemäß einem ATA-Sicherheitsprotokoll über das NVMe-Protokoll zu entsperren. Mit anderen Worten, eine oder mehrere Hostvorrichtungen (dieselbe oder verschiedene) können versuchen, die SDExpress-Speichervorrichtung 304 unter Verwendung des NVMe-Betriebsmodus nach dem Sperren der SDExpress-Speichervorrichtung 304 unter Verwendung des Secure Digital-Protokolls zu entsperren.
-
Die SDExpress-Speichervorrichtung 304 kann Datenspeicherblöcke und verborgene Blöcke aufweisen, wie die verborgenen SD-Passwortblöcke 306 und die verborgenen ATA-Passwortblöcke 314. Die verborgenen SD-Passwortblöcke 306 und die verborgenen ATA-Passwortblöcke 314 können in demselben Speicherblock/in denselben Speicherblöcken oder in verschiedenen Speicherblöcken der SDExpress-Speichervorrichtung 304 angeordnet sein. Der Speicherort der verborgenen SD-Passwortblöcke 306 und der verborgenen ATA-Passwortblöcke 314 kann auf einer Speicherzuordnung auf der SDExpress-Speichervorrichtung 304 gespeichert werden, um auf diese verborgenen Blöcke zuzugreifen. Da die verborgenen SD-Passwortblöcke 306 und die verborgenen ATA-Passwortblöcke 314 verborgene Blöcke sind, können sie sich außerhalb der Benutzermodus-Speicherblöcke befinden. Die verborgen SD-Passwortblöcke 306 und die verborgenen ATA-Passwortblöcke 314 können verwendet werden, um den Zugriff auf die Benutzermodus-Speicherblöcke zu sperren oder zu entsperren. Wenn die Hostvorrichtung 302 versucht, auf die SDExpress-Speichervorrichtung 304 unter Verwendung des NVMe-Betriebsmodus zuzugreifen und die SDExpress-Speichervorrichtung 304 durch das Secure Digital-Protokoll gesperrt ist, kann die SDExpress-Speichervorrichtung 304 eine Initialisierungsphase durchlaufen. Diese Initialisierungsphase verwendet Passwortkonvertierungslogik zum Konvertieren der Passwortdaten 310 in die ATA-Passwortdaten 316. Die Initialisierungsphase kann enden, wenn die SDExpress-Speichervorrichtung 304 der Hostvorrichtung 302 anzeigt, dass die SDExpress-Speichervorrichtung 304 bereit ist, die Benutzermodus-Speicherblöcke zu verwenden.
-
Die verborgenen SD-Passwortblöcke 306 weisen die Passwortlänge 308, die Passwortdaten 310 und den Sperrstatus 312 auf. Die Passwortlänge 308 ist eine Angabe der Anzahl von Bytes der Passwortdaten 310. Die Passwortlänge 308 kann verwendet werden, um die Konvertierung der Passwortdaten 310 (des Secure Digital-Betriebsmodus) in die ATA-Passwortdaten 316 zu bestimmen.
-
Die Passwortdaten 310 sind ein Satz von Bytes, das Passwort des Secure Digital-Modus, der zum Entsperren und Sperren der SDExpress-Speichervorrichtung 304 in dem Secure Digital-Betriebsmodus verwendet wird. Während der Initialisierungsphase (z. B. Booting-Phase) des NVMe-Betriebsmodus, wenn die Hostvorrichtung 302 auf die SDExpress-Speichervorrichtung 304 zugreift, können die Passwortdaten 310 unter Verwendung der Passwortkonvertierungslogik in die ATA-Passwortdaten 316 konvertiert werden. Der Sperrstatus 312 bestimmt, ob die SDExpress-Speichervorrichtung 304 durch den Secure Digital-Betriebsmodus gesperrt oder entsperrt ist. Der Sperrstatus 312 kann ein Bit in den Berechtigungsbits der SDExpress-Speichervorrichtung 304 sein. Die Berechtigungsbits können in den verborgenen SD-Passwortblöcken 306 angeordnet sein. Wenn die SDExpress-Speichervorrichtung 304 entsperrt ist, kann die SDExpress-Speichervorrichtung 304 die Passwortkonvertierungslogik nicht verwenden. Wenn die SDExpress-Speichervorrichtung 304 gesperrt ist, kann die SDExpress-Speichervorrichtung 304 die Passwortkonvertierungslogik verwenden, wenn die Hostvorrichtung 302 versucht, auf die SDExpress-Speichervorrichtung 304 unter Verwendung des NVMe-Betriebsmodus zuzugreifen.
-
In anderen Ausführungsformen kann die Passwortkonvertierungslogik (später gezeigt, siehe 11) gestartet werden, um die Passwortdaten 310 des Passworts des Secure Digital-Modus in die ATA-Passwortdaten 316 zu transformieren, wenn die SDExpress-Speichervorrichtung 304 in dem Secure Digital-Betriebsmodus gesperrt ist, und das transformierte Passwort des ATA-Sicherheitsprotokolls kann zu diesem Zeitpunkt in den verborgenen ATA-Passwortblöcken 314 gespeichert werden.
-
Die verborgenen ATA-Passwortblöcke 314 weisen die ATA-Passwortdaten 316 auf. Die ATA-Passwortdaten 316 sind ein Satz von Bytes, das Passwort des NVMe-Betriebsmodus, der zum Bereitstellen des Zugriffs auf die Benutzermodus-Speicherblöcke der SDExpress-Speichervorrichtung 304 in dem NVMe-Betriebsmodus verwendet wird. Wenn die SDExpress-Speichervorrichtung 304 zuvor in dem Secure Digital-Betriebsmodus gesperrt wurde, können die ATA-Passwortdaten 316 eine Transformation der Passwortdaten 310 (d. h. des Passworts des Secure Digital-Modus) sein, die durch die Passwortkonvertierungslogik ausgeführt werden.
-
4 veranschaulicht eine Ausführungsform eines Betriebsprozesses 400, der auf eine Hostvorrichtung reagiert, die versucht, auf die SDExpress-Speichervorrichtung unter Verwendung eines NVMe-Betriebsmodus zuzugreifen. Der Sperrstatus des Secure Digital-Betriebsmodus wird gelesen (Block 402). Die Secure Digital-Sicherheitsdatenstruktur kann den Sperrstatus in einem Berechtigungsbit speichern und kann in einem verborgenen Passwortblock des Secure Digital-Modus angeordnet sein. Der Sperrstatus kann gesperrt oder entsperrt sein. Der Betriebsprozess 400 bestimmt dann, ob die SDExpress-Speichervorrichtung gesperrt ist (Entscheidungsblock 404). Wenn die SDExpress-Speichervorrichtung entsperrt ist, endet der Betriebsprozess 400 (z. B. durch Eintritt in einen Benutzermodus).
-
Wenn die SDExpress-Speichervorrichtung gesperrt ist (und nur dann), wird die Passwortlänge des Secure Digital-Betriebsmodus gelesen (Block 406). Die Secure Digital-Sicherheitsdatenstruktur kann die Passwortlänge speichern und in dem verborgenen Passwortblock bzw. den verborgenen Passwortblöcken des Secure Digital-Modus angeordnet sein. Die Passwortlänge kann eine Ganzzahl von Bytes sein, die kleiner als oder gleich 32 ist. Der Betriebsprozess 400 bestimmt, ob die Passwortlänge gleich 32 Bytes ist (Entscheidungsblock 408).
-
Wenn die Passwortlänge nicht 32 Bytes ist (und nur dann), wird das Passwort des Secure Digital-Modus gelesen (Block 410). Das Passwort des Secure Digital-Modus kann in den verborgenen Passwortblöcken des Secure Digital-Modus der Secure Digital-Sicherheitsdatenstruktur als die Passwortdaten gespeichert werden. Die Passwortlänge kann die Anzahl von Bytes bestimmen, die von der SDExpress-Speichervorrichtung gelesen werden. Nullen werden dann dem Passwort angefügt (Block 412). Die Anzahl der angefügten Nullen basiert auf der Passwortlänge. Das heißt, die Anzahl der angefügten Nullen ist die Differenz zwischen 32 und der Passwortlänge. Wenn zum Beispiel die Passwortlänge 8 Bytes ist, dann werden 24 Nullen an das Passwort angefügt. Das transformierte Passwort wird dann in verborgene Blöcke des NVMe-Betriebsmodus geschrieben (Block 414). Auf diese verborgenen Blöcke kann über das ATA-Sicherheitsprotokoll im NVMe-Betriebsmodus zugegriffen werden. Ein Passwort, das mit dem NVMe-Betriebsmodus kompatibel ist, wird somit in den verborgenen ATA-Passwortblöcken gespeichert (dies kann hierin als das Passwort des ATA-Sicherheitsprotokolls bezeichnet werden). Der Betriebsprozess 400 endet dann (z. B. gefolgt von Authentifizierung mit dem Passwort und Eintritt in den Benutzermodus).
-
Wenn die Passwortlänge 32 Bytes ist (und nur dann), wird das Passwort des Secure Digital-Modus gelesen (Block 416). Das Passwort des Secure Digital-Modus kann in den verborgenen Passwortblöcken des Secure Digital-Modus der Secure Digital-Sicherheitsdatenstruktur als die Passwortdaten gespeichert werden. Die Passwortlänge kann die Anzahl von Bytes bestimmen, die von der SDExpress-Speichervorrichtung gelesen werden. Das Passwort des Secure Digital-Modus wird dann in das Passwort des ATA-Sicherheitsprotokolls transformiert (Block 418). Das Passwort des NVMe-Betriebsmodus wird in die verborgenen ATA-Passwortblöcke geschrieben und als das Passwort des ATA-Sicherheitsprotokolls gespeichert. Der Betriebsprozess 400 endet dann.
-
In einigen Ausführungsformen sendet die SDExpress-Speichervorrichtung ein Steuersignal an die Hostvorrichtung, sobald der Betriebsprozess 400 endet. Das Steuersignal kann Zugriff auf die SDExpress-Speichervorrichtung bereitstellen oder Passwortinformationen anfordern, welche dann mit dem gespeicherten Passwort des ATA-Sicherheitsprotokolls (z. B. Benutzerauthentifizierung für den Eintritt in den Benutzermodus) verglichen werden.
-
Bezugnehmend auf 5 arbeitet ein Betriebsprozess 500 in einer Ausführungsform als Reaktion darauf, dass eine Hostvorrichtung versucht, auf die SDExpress-Speichervorrichtung unter Verwendung eines Secure Digital-Betriebsmodus zuzugreifen. Ein Sperrstatus des Secure Digital-Betriebsmodus wird gelesen (Block 502). Die Secure Digital-Sicherheitsdatenstruktur kann den Sperrstatus in einem Berechtigungsbit speichern und in einem verborgenen Passwortblock des Secure Digital-Modus angeordnet sein. Der Sperrstatus kann gesperrt oder entsperrt sein. Der Betriebsprozess 500 bestimmt dann, ob die SDExpress-Speichervorrichtung gesperrt ist (Entscheidungsblock 504). Wenn die SDExpress-Speichervorrichtung entsperrt ist, endet der Betriebsprozess 500.
-
Wenn die SDExpress Speichervorrichtung gesperrt ist, wird die Passwortlänge des Secure Digital-Betriebsmodus gelesen (Block 506). Die Secure Digital-Sicherheitsdatenstruktur kann die Passwortlänge speichern und in dem verborgenen Passwortblock des Secure Digital-Modus angeordnet sein. Die Passwortlänge kann eine Ganzzahl von Bytes sein, die kleiner als oder gleich 32 ist. Das Passwort des Secure Digital-Betriebsmodus wird gelesen (Block 508). Das Passwort des Secure Digital-Modus kann in den verborgenen SD-Blöcken der Secure Digital-Sicherheitsdatenstruktur als die Passwortdaten gespeichert werden. Die Passwortlänge kann die Anzahl von Bytes bestimmen, die von der SDExpress-Speichervorrichtung gelesen werden. Der Betriebsprozess 500 endet dann.
-
In einigen Ausführungsformen sendet die SDExpress-Speichervorrichtung ein Steuersignal an die Hostvorrichtung, sobald der Betriebsprozess 500 endet. Das Steuersignal kann Zugriff auf die SDExpress-Speichervorrichtung bereitstellen oder kann Passwortinformationen anfordern, welche dann mit dem gespeicherten Passwort des Secure Digital-Modus verglichen werden.
-
Content Protection for Recordable Media (CPRM) ist ein Verfahren des Urheberrechtsschutzes, das von Secure Digital-Speichervorrichtungen verwendet wird. Die CPRM-Patentschrift stellt einen Verschlüsselungs- und Wiedergabeschutz für den Inhalt bereit, der in einem Benutzerbereich einer Secure Digital-Betriebsmoduskarte gespeichert ist.
-
Wie zuvor beschrieben unterstützen die neueren SDExpress-Speichervorrichtungen sowohl das Secure Digital-Protokoll als auch das NVMe-Protokoll. Es kann nur ein Protokoll zum gleichen Zeitpunkt verwendet werden. Dies führt zu dem Problem, dass der Zugriff auf verschlüsselte Inhalte, die unter Verwendung von CPRM gespeichert sind, im Secure Digital-Betriebsmodus verweigert wird, wenn das Gerät anschließend im NVMe-Betriebsmodus gebootet wird. Das Problem wird in 7 veranschaulicht.
-
6 veranschaulicht einen herkömmlichen CPRM-Lese- und -Schreibprozess 600. In dem Secure Digital-Betriebsmodus liest das Solid-State-Laufwerk 112 einen Medienschlüssel aus dem Systembereich an Block 602 und schreibt den CPRM-Inhalt in den Benutzerbereich an Block 604. Das Solid-State-Laufwerk 112 wird gesperrt (Block 606) und/oder aus der Hostvorrichtung entfernt (Block 608) und in dem NVMe-Betriebsmodus an Block 610 neu gebootet, wobei zu diesem Zeitpunkt ein Lesefehler auftritt, wenn das Solid-State-Laufwerk 112 versucht, den Medieninhalt aus dem Benutzerbereich zu lesen (Block 612).
-
7 veranschaulicht einen erweiterten CPRM-Datenschreib- und Datenleseprozess 700 gemäß einer Ausführungsform. Unter Verwendung des CPRM-Datenschreib- und -Datenleseprozesses 700 liest das Solid-State-Laufwerk 112 einen Medienschlüssel aus dem Systembereich an Block 602, schreibt den CPRM-Inhalt in den Benutzerbereich an Block 604, wird gesperrt (Block 606) und/oder aus der Hostvorrichtung entfernt (Block 608), wie zuvor für den herkömmlichen CPRM-Lese- und Schreibprozess 600. Jedoch arbeitet das Solid-State-Laufwerk 112 nun gemäß dem CPRM-Datenschreib- und Datenleseprozess 800 von 8 und ist in der Lage, den verschlüsselten CPRM-Inhalt an Block 702 zu dekodieren.
-
Nun bezugnehmend auf 8 liest eine Ausführungsform des CPRM-Datenschreib- und Datenleseprozesses 800 im Überblick den Medienschlüssel aus dem Systembereich des Secure Digital-Betriebsmodus an Block 802, liest die Medienkennung aus dem Systembereich des Secure Digital-Betriebsmodus an Block 804, liest den verschlüsselten Titelschlüssel aus dem geschützten Bereich des Secure Digital-Betriebsmodus an Block 806 und liest den verschlüsselten Inhalt aus dem Benutzerbereich des NVMe-Betriebsmodus an Block 808.
-
Der CPRM-Datenschreib- und Datenleseprozess 700 und der CPRM-Datenschreib- und Datenleseprozess 800 können besser verstanden werden im Kontext von 9 und 10.
-
Der Medienschlüsselblock 914 und die Medienkennung 916 sind in dem Systemspeicherbereich 928 des Secure Digital-Betriebsmodus der Secure Digital-Speichervorrichtung 910 gespeichert. Die LESE-Logik des CPRM-Inhalts im Secure Digital-Betriebsmodus 900 verwendet sicher freigegebene SSD-Schlüssel 926, die zusammen mit dem Medienschlüsselblock 914 und der Medienkennung 916 von der Hostvorrichtung 912 verwendet werden, um den Medienschlüssel zu entschlüsseln (Block 902) und den eindeutigen Medienschlüssel zu erstellen (Block 904). Die Verschlüsselungs- und Entschlüsselungsprozesse, die diese Schlüssel verwenden, werden ausführlich in der CPRM-Patentschrift beschrieben und hier nicht wiederholt. Der verschlüsselte Titelschlüssel 920 wird aus dem geschützten Speicherbereich 930 des Secure Digital-Betriebsmodus unter Verwendung von sicherer Authentifizierung und Schlüsselaustausch (AKE) durch den SDD-RPMB-Handler 922 und den Hostvorrichtungs-RPMB-Handler 924 erhalten. Der generierte eindeutige Medienschlüssel wird verwendet, um den verschlüsselten Titelschlüssel 920 zu entschlüsseln (Block 906), und der entschlüsselte Titelschlüssel wird dann verwendet, um den verschlüsselten Inhalt 918 zu entschlüsseln (Block 908), der in dem Benutzerspeicherbereich 932 des Secure Digital-Betriebsmodus gespeichert ist. Authentifizierung und Schlüsselaustausch werden zum Lesen oder zum Schreiben auf den geschützten Bereich, unter Verwendung eines Sitzungsschlüssels, verwendet. Die Authentifizierung und der Schlüsselaustausch stellen einen Wiedergabeschutz für den verschlüsselten Titelschlüssel 920 sicher, der in dem geschützten Speicherbereich 930 gespeichert ist.
-
Noch detaillierter können die folgenden Interaktionen zwischen einer Secure Digital-Speichervorrichtung und einer Hostvorrichtung angeordnet sein, um verschlüsselten Inhalt 918, der in dem Benutzerspeicherbereich 932 einer Secure Digital-Vorrichtung gespeichert ist, zu LESEN:
- 1. Der Medienschlüsselblock 914 wird aus dem Systemspeicherbereich 928 unter Verwendung des Secure Digital-Betriebsmodusbefehls ACMD43 GELESEN.
- 2. Die Medienkennung 916 wird aus dem Systemspeicherbereich 928 unter Verwendung des Secure Digital-Betriebsmodusbefehls ACMD44 GELESEN.
- 3. Der verschlüsselte Titelschlüssel 920 wird aus dem geschützten Speicherbereich 930 durch Authentifizierung und Schlüsselaustausch unter Verwendung von Secure Digital-Betriebsmodusbefehlen für Authentifizierung, Schlüsselaustausch und sicherem LESEN GELESEN.
- 4. Der verschlüsselte Inhalt 918 wird aus dem Benutzerspeicherbereich 932 unter Verwendung von Benutzerbereich-LESE-Befehlen des Secure Digital-Betriebsmodus GELESEN.
-
Die CPRM-Datenleselogik im NVMe-Betriebsmodus 1000 von 10 veranschaulicht, wie die wiedergabeschützten Speicherblockmerkmale (RPMB-Merkmale) des NVMe-Protokolls genutzt werden können, um den verschlüsselten CPRM-Inhalt 918, der in dem Benutzerspeicherbereich 932 im Secure Digital-Betriebsmodus gespeichert ist, zu LESEN. CPRM-Inhalt des Secure Digital-Betriebsmodus durch eine SDExpress-Speichervorrichtung, die in dem NVMe-Betriebsmodus gebootet wurde.
-
Der LESE-Prozess des CPRM-Inhalts des Secure Digital-Betriebsmodus wird in dem NVMe-Betriebsmodus durch einen wiedergabegeschützten Speicherblockprozess ersetzt. Der Medienschlüsselblock 914, die Medienkennung 916 und der verschlüsselte Titelschlüssel 920 sind in getrennten wiedergabeschützten Speicherblockpartitionen der Secure Digital-Speichervorrichtung 910 gespeichert und sind nur einem wiedergabegeschützten CPRM-Speicherblockhandler (SDD-RPMB-Handler 1002) der Secure Digital-Speichervorrichtung 910 zugänglich. Ein ähnlicher Handler (Hostvorrichtungs-RPMB-Handler 1004) ist in der Hostvorrichtung 912 bereitgestellt. Eine vollständige Patentschrift der Verwendung von wiedergabeschützten Speicherblöcken in dem NVMe-Betriebsmodus ist in der entsprechenden öffentlichen Patentschrift verfügbar und wird hier nicht wiederholt.
-
Wie in 10 gezeigt, kann das wiedergabegeschützte Speicherblockmerkmal von Vorrichtungen, die in dem NVMe-Betriebsmodus betrieben werden, verwendet werden, um die Entschlüsselung des CPRM-Inhalts zu ermöglichen, der zuvor während des Secure Digital-Betriebsmodus gespeichert wurde. In dem NVMe-Betriebsmodus stellt der SDD-RPMB-Handler 1002 logische Zuordnungen von CPRM-Transaktionen des Secure Digital-Betriebsmodus den wiedergabeschützten Speicherblöcken RPMB-Ziel 1 Block 1006, RPMB-Ziel 2 Block 1008 und RPMB-Ziel 3 Block 1010 bereit. Diese wiedergabegeschützten Speicherblöcke stellen eine Authentifizierung und einen Wiedergabeschutz für den Medienschlüsselblock 914, die Medienkennung 916 und den verschlüsselten Titelschlüssel 920 bereit. Das Authentifizierungs- und Schlüsselaustauschmerkmal des CPRM des Secure Digital-Betriebsmodus ist in dem NVMe-Betriebsmodus durch den wiedergabegeschützten Speicherblock bereitgestellt, unter Verwendung einer Signaturprüfung wie HMAC-SHA256.
-
Die wiedergabeschützten Speicherblockauthentifizierungsschlüssel (sicher freigegebene RPMB-Schlüssel 1012) können in der Secure Digital-Speichervorrichtung 910 und/oder Hostvorrichtung 912 auf im Stand der Technik bekannte Weisen bereitgestellt werden, wie durch Programmieren in die Secure Digital-Speichervorrichtung 910 und/oder Hostvorrichtung 912 in einer gesicherten Fertigungsumgebung durch gegenseitige Übereinstimmung. Die sicher freigegebenen RPMB-Schlüssel 1012 können zusammen mit den durch CPRM sicher freigegebenen SSD-Schlüsseln 926 bereitgestellt werden.
-
Der wiedergabegeschützte Speicherblock ist in einer Ausführungsform ein reservierter Datenbereich im NAND-Speicher (FLASH-Speicher) der Hostvorrichtung 912. Der wiedergabegeschützte Speicherblock ist einem CPRM-spezifischen Speicherbereich des Secure Digital-Betriebsmodus zugeordnet. Der Speicherort dieser Bereiche ist dem SDD-RPMB-Handler 1002 der Secure Digital-Speichervorrichtung 910 und dem Hostvorrichtungs-RPMB-Handler 1004 der Hostvorrichtung 912 bekannt und nur dem SDD-RPMB-Handler 1002 direkt zugänglich.
- 1. Der SDD-RPMB-Handler 1002 ordnet das RPMB-Ziel 1 Block 1006 dem Systemspeicherbereich 928 zu, der den Medienschlüsselblock 914 im Secure Digital-Betriebsmodus speichert.
- 2. Der SDD-RPMB-Handler 1002 ordnet das RPMB-Ziel 2 Block 1008 dem Systemspeicherbereich 928 zu, der die Medienkennung 916 im Secure Digital-Betriebsmodus speichert.
- 3. Der SDD-RPMB-Handler 1002 ordnet das RPMB-Ziel 3 Block 1010 dem geschützten Speicherbereich 930 zu, der den verschlüsselten Titelschlüssel 920 im Secure Digital-Betriebsmodus speichert.
-
Somit ordnet der SDD-RPMB-Handler 1002 den LESE-Befehl des Medienschlüsselblocks 914 im NVMe-Betriebsmodus einem LESE-Vorgang aus dem RPMB-Ziel 1 Block 1006 zu, ordnet den LESE-Befehl der Medienkennung 916 im NVMe-Betriebsmodus einem LESE-Vorgang aus dem RPMB-Ziel 2 Block 1008 zu und ordnet den LESE-Befehl des verschlüsselten Titelschlüssels 920 im NVMe-Betriebsmodus einem LESE-Vorgang aus dem RPMB-Ziel 3 Block 1010 zu. Die Position dieser Zielblöcke kann durch den SDD-RPMB-Handler 1002 verdeckt werden.
-
Somit können die folgenden Transaktionen im NVMe-Betriebsmodus verwendet werden, um den verschlüsselten CPRM-Inhalt zu erhalten:
-
Der SDD-RPMB-Handler 1002 stellt die Speicherzuordnungs- und Befehls-Konvertierungslogik bereit, die vorstehend beschrieben ist. Der Hostvorrichtungs-RPMB-Handler 1004 verwendet die CPRM-Befehlslogik, die auf Secure Digital-Speichervorrichtungen standardmäßig ist. Der Hostvorrichtungs-RPMB-Handler 1004 interagiert mit dem SDD-RPMB-Handler 1002 und interagiert nicht direkt mit den wiedergabeschützten Speicherblöcken.
-
Das Verwenden dieser Mechanismen ermöglicht der Hostvorrichtung das Verwenden einer SDExpress-Speichervorrichtung, um den CPRM-Inhalt in dem NVMe-Betriebsmodus zu lesen, wenn dieser Inhalt in dem Secure Digital-Betriebsmodus verschlüsselt war, ohne Änderungen an den alten SDExpress-Patentschriften. Eine ältere Hostvorrichtung ohne den NVMe-Betriebsmodus kann verwendet werden, um den CPRM-Inhalt in dem Secure Digital-Betriebsmodus aufzuzeichnen, und eine andere Hostvorrichtung, die den NVMe-Betriebsmodus unterstützt, kann verwendet werden, um den aufgezeichneten Inhalt wiederzugeben, was zu Leistungsvorteilen führen kann aufgrund der höheren Leistung des NVMe-Betriebsmodus für Übertragungen von Daten mit hoher Bandbreite.
-
11 ist ein Blockdiagramm einer beispielhaften Speichervorrichtung 1100, die eine Secure Digital-Speichervorrichtung sein kann. Die Speichervorrichtung 1100 kann einen oder mehrere Speicherchips 1104 einschließen. Der Speicherchip 1104 schließt eine Speicherstruktur 1106 aus Speicherzellen ein, wie eine Anordnung von Speicherzellen, die hierin als Speicherarray bezeichnet wird, eine Adresssteuerung 1108 und Lese-/Schreibschaltungen 1132. Die Speicherstruktur 1106 ist durch Wortleitungen über einen Zeilendecoder 1130 und durch Bitleitungen über einen Spaltendecoder 1134 adressierbar. Die Lese-/Schreibschaltungen 1132 schließen mehrere Erfassungsblöcke SB1, SB2, ..., SBp (Erfassungsschaltkreis) ein und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. Üblicherweise ist eine Lese-/Schreibsteuerung 1122 in der gleichen Speichervorrichtung 1100 (z. B. einer entfernbaren Speichervorrichtung) wie der eine oder die mehreren Speicherchips 1104 eingeschlossen. Befehle und Daten werden zwischen der Hostvorrichtung 1136 und der Lese-/Schreibsteuerung 1122 über einen Datenbus 1120 und zwischen der Steuerung und dem einen oder den mehreren Speicherchips 1104 über Leitungen 1118 übertragen.
-
Die Speicherstruktur 1106 kann 2D (in einer einzigen Fertigungsebene ausgelegt) oder 3D (in mehreren Fertigungsebenen ausgelegt) sein. Die Speicherstruktur 1106 kann ein oder mehrere Arrays von Speicherzellen aufweisen, einschließlich eines 3D-Arrays. In einer Ausführungsform kann die Speicherstruktur 1106 eine monolithische dreidimensionale Speicherstruktur (3D-Array) aufweisen, in der mehrere Speicherebenen über (und nicht in) einem einzelnen Substrat, wie einem Wafer, ohne dazwischenliegende Substrate ausgebildet sind. Die Speicherstruktur 1106 kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Arrays von Speicherzellen ausgebildet ist, die über einen aktiven Bereich verfügen, der über einem Siliziumsubstrat angeordnet ist. Die Speicherstruktur 1106 kann sich in einem nichtflüchtigen Speicher mit Schaltkreisen befinden, die dem Betrieb der Speicherzellen zugeordnet sind, ganz gleich, ob sich der zugehörige Schaltkreis oberhalb oder innerhalb des Substrats befindet.
-
Die Adresssteuerung 1108 arbeitet mit den Lese-/Schreibschaltungen 1132 zusammen, um Speicheroperationen auf Speicherzellen der Speicherstruktur 1106 auszuführen, und schließt eine Zustandsmaschine 1110, einen Adressdecoder 1112, eine Temperatursteuerung 1138 und eine Leistungssteuerung 1116 ein. Die Zustandsmaschine 1110 stellt eine Steuerung von Speicheroperationen auf Chip-Ebene bereit. Ein Speicherbereichswahlschalter 1114 kann z. B. zum Programmieren von Parametern bereitgestellt sein, wie weiter unten beschrieben wird.
-
Der Adressdecoder 1112 stellt eine Adressschnittstelle zwischen der von der Hostvorrichtung oder einer Lese-/Schreibsteuerung 1122 verwendeten Adresse und der vom Zeilendecoder 1130 und Spaltendecoder 1134 verwendeten Hardwareadresse bereit. Die Leistungssteuerung 1116 steuert die Leistung und Spannungen, die den verschiedenen Steuerleitungen während der Speichervorgänge zugeführt werden. Die Leistungssteuerung 1116 und/oder Lese-/Schreibschaltungen 1132 können Treiber für Wortleitungen, Source-Gate-Auswahl-Transistoren (SGS-Transistoren), Drain-Gate-Auswahl-Transistoren (DGS-Transistoren), Bitleitungen, Substrate (in 2D-Speicherstrukturen), Ladepumpen und Quellleitungen einschließen. Die Leistungssteuerung 1116 kann daher verschiedene Erstspannungsgeneratoren (z. B. die Treiber) einschließen, um die hierin beschriebenen Spannungen zu erzeugen. Die Erfassungsblöcke können Bitleitungstreiber und Erfassungsverstärker in einem Ansatz einschließen.
-
In einigen Implementierungen können einige der Komponenten kombiniert werden. Bei verschiedenen Ausführungen können eine oder mehrere der Komponenten (allein oder in Kombination), die sich von der Speicherstruktur 1106 unterscheiden, als mindestens eine Steuerschaltung oder Steuerung betrachtet werden, die zur Durchführung der hierin beschriebenen Techniken eingerichtet ist. Beispielsweise kann eine Steuerschaltung eine beliebige oder eine Kombination aus Adresssteuerung 1108, Zustandsmaschine 1110, Adressdecoder 1112, Spaltendecoder 1134, Leistungssteuerung 1116, Steuerprozessor 1128, Fehlerkorrektureinheit 1102, Erfassungsblöcken SB1, SB2, ..., SBp, Lese-/Schreibschaltungen 1132, Lese-/Schreibsteuerung 1122 und so weiter einschließen.
-
Die Lese-/Schreibsteuerung 1122 kann einen Steuerprozessor 1128, Speichervorrichtungen (Speicher) wie den Nur-Lese-Speicher 1124 und den flüchtigen Speicher 1126 der Steuerung und andere in der Technik bekannte Funktionseinheiten aufweisen.
-
Die Speichervorrichtungen der Lese-/Schreibsteuerung 1122 können einen Code aufweisen, wie einen Satz von Anweisungen, und der Steuerprozessor 1128 ist betreibbar, um den Satz von Anweisungen auszuführen und Aspekte der hierin beschriebenen Funktionalität bereitzustellen, wie den Betriebsprozess 300, den Betriebsprozess 400 und den Betriebsprozess 500. Alternativ oder zusätzlich kann der Steuerprozessor 1128 auf den Code aus der Speicherstruktur 1106 zugreifen, wie auf einen reservierten Bereich von Speicherzellen in einer oder mehreren Wortleitungen.
-
Beispielsweise kann der Code von der Lese-/Schreibsteuerung 1122 verwendet werden, um auf die Speicherstruktur 1106 für Programmier- (Schreib-), Lese- und Rücksetzungsoperationen zuzugreifen. Der Code kann Bootcode und Steuercode (z. B. einen Satz von Anweisungen) einschließen. Der Bootcode ist eine Software, die die Lese-/Schreibsteuerung 1122 während eines Boot- oder Startprozesses initialisiert und der Lese-/Schreibsteuerung 1122 den Zugriff auf die Speicherstruktur 1106 ermöglicht. Der Code kann von der Lese-/Schreibsteuerung 1122 verwendet werden, um eine oder mehrere Speicherstrukturen zu steuern. In einer Ausführungsform ruft der Steuerprozessor 1128 beim Hochfahren den Bootcode aus dem Nur-Lese-Speicher 1124 oder der Speicherstruktur 1106 der Steuerung zur Ausführung ab, und der Bootcode initialisiert die Systemkomponenten und lädt den Steuercode in den flüchtigen Speicher 1126 der Steuerung. Sobald der Steuercode in den flüchtigen Speicher 1126 der Steuerung geladen ist, wird er durch den Steuerprozessor 1128 ausgeführt. Der Steuercode enthält Treiber zum Durchführen grundlegender Aufgaben, wie beispielsweise Steuern und Zuweisen von Speicher, Priorisieren der Verarbeitung von Befehlen und Steuern von Eingabe- und Ausgabeports.
-
In einigen Ausführungsformen kann die Lese-/Schreibsteuerung 1122 einen Passwortkonvertierer 1140 in der Speicherstruktur 1106 an einem festen Standort und zu einer festen Größe einrichten. In anderen Ausführungsformen, zum Beispiel um Wear-Leveling-Algorithmen zu implementieren, kann die Lese-/Schreibsteuerung 1122 den Standort und/oder die Größe des Passwortkonvertierers 1140 in der Speicherstruktur 1106 ändern. Die Größe oder der Standort des Passwortkonvertierers 1140 kann zum Beispiel nach einer Anzahl von Programmieroperationen auf die Speicherzellen in dem Passwortkonvertierer 1140 geändert werden, oder um Bereiche der Speicherstruktur 1106 mit hohen Konzentrationen von ungültigen (nicht zur Aufbewahrung markierten) Daten aufzuweisen.
-
Im Allgemeinen kann der Steuercode Anweisungen einschließen, um die hierin beschriebenen Operationen durchzuführen und die zuvor erörterten Steuersignale bereitzustellen. Der Steuercode kann einen Sequenzer implementieren, um das Timing (Start- und Stoppzeiten, Dauer, Abstand usw.) der verschiedenen hier beschriebenen Aktionen zu steuern.
-
In einer Ausführungsform ist die Hostvorrichtung 1136 eine Computervorrichtung (z. B. Laptop, Desktop, Smartphone, Tablet, Digitalkamera), die einen oder mehrere Prozessoren, eine oder mehrere prozessorlesbare Speichervorrichtungen (RAM, ROM, Flash-Speicher, Festplattenlaufwerk, Solid-State-Speicher) einschließt, die einen prozessorlesbaren Code (z. B. Software) zum Programmieren der Lese-/Schreibsteuerung 1122 speichern, um die hierin beschriebenen Verfahren auszuführen. Die Hostvorrichtung kann auch zusätzlichen Systemspeicher, eine oder mehrere Ein-/Ausgabeschnittstellen und/oder eine oder mehrere Ein-/Ausgabevorrichtungen in Kommunikation mit dem einem oder den mehreren Prozessoren sowie andere in der Technik bekannte Komponenten einschließen.
-
Der Speicherbereichswahlschalter 1114 kann ein nichtflüchtiger Speicher wie ein NAND-Flash-Speicher oder eines anderen Typs sein, der eine Speicherzuordnung oder eine Adresstranslationstabelle implementiert. Zugehörige Schaltkreise 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 über Schaltkreise verfügen, die zum Steuern und Treiben von Speicherelementen verwendet werden, um Funktionen wie Programmieren und Lesen auszuführen. Dieser zugehörige Schaltkreis kann sich auf demselben Substrat wie die Speicherelemente und/oder auf einem separaten Substrat befinden. Zum Beispiel kann eine Steuerung für Lese-/Schreiboperationen des Speichers auf einem separaten Steuerungschip und/oder auf demselben Substrat wie die Speicherelemente angeordnet sein.
-
Ein Fachmann wird erkennen, dass die offenbarten Techniken und Vorrichtungen nicht auf die beschriebenen zweidimensionalen und dreidimensionalen beispielhaften Strukturen beschränkt sind, sondern alle relevanten Speicherstrukturen in dem Geist und Umfang der Technologie abdecken, wie hier beschrieben und wie es von einem Fachmann verstanden wird.
-
Innerhalb dieser Offenbarung können verschiedene Elemente (die unterschiedlich als „Einheiten“, „Schaltungen“, andere Komponenten usw. bezeichnet werden können) als „eingerichtet“ beschrieben oder beansprucht werden, um eine oder mehrere Aufgaben oder Operationen auszuführen. Diese Formulierung-[Element] eingerichtet zum [Ausführen einer oder mehrerer Aufgaben]-wird hierin verwendet, um sich auf die Struktur zu beziehen (d. h. etwas Physisches, wie eine elektronische Schaltung). Genauer gesagt, wird diese Formulierung verwendet, um anzuzeigen, dass diese Struktur so angeordnet ist, um die eine oder mehreren Aufgaben während des Betriebs durchzuführen. Eine Struktur kann als „eingerichtet“ bezeichnet werden, um eine Aufgabe auszuführen, auch wenn die Struktur momentan nicht betrieben wird. Ein „Kreditverteilungsschaltkreis, der eingerichtet ist zum Verteilen von Guthaben auf eine Vielzahl von Prozessorkernen“, soll beispielsweise eine integrierte Schaltung abdecken, die über einen Schaltkreis zum Ausführen dieser Funktion während des Betriebs verfügt, auch wenn die betreffende integrierte Schaltung derzeit nicht verwendet wird (z. B. ist kein Netzteil daran angeschlossen). Somit nimmt ein Element, das als „eingerichtet zum“ Durchführen einer Aufgabe beschrieben oder rezitiert wird, auf etwas Physisches Bezug, wie eine Vorrichtung, eine Schaltung, einen Speicher zum Speichern von Programmanweisungen, die zum Durchführen der Aufgabe ausführbar sind usw. Diese Formulierung wird hierin nicht verwendet, um auf etwas Immaterielles hinzuweisen.
-
Der Ausdruck „eingerichtet zum“ bedeutet nicht „konfigurierbar zum.“ Ein unprogrammiertes FPGA zum Beispiel würde nicht als „eingerichtet zum“ Ausführen einer bestimmten Funktion betrachtet werden, obwohl es nach der Programmierung „konfigurierbar zum“ Ausführen dieser Funktion sein kann.
-
Das Rezitieren in den beiliegenden Ansprüchen, dass eine Struktur „eingerichtet“ ist zum Ausführen einer oder mehrerer Aufgaben, ist ausdrücklich dazu gedacht, 35 U.S.C. § 112(f) für dieses Anspruchselement nicht geltend zu machen. Dementsprechend sollten Ansprüche in dieser Anmeldung, die nicht anderweitig das Konstrukt „Mittel zum“ [Ausführen einer Funktion] enthalten, nicht gemäß 35 U.S.C. § 112(f) ausgelegt werden.
-
Wie hierin verwendet, wird der Ausdruck „basierend auf“ verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Ausdruck schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, eine Bestimmung kann ausschließlich auf bestimmten Faktoren oder auf den bestimmten Faktoren sowie anderen, nicht spezifizierten Faktoren basieren. Betrachten wir die Formulierung „A basierend auf B bestimmen“. Dieser Satz besagt, dass B ein Faktor ist, der zur Bestimmung von A verwendet wird oder der die Bestimmung von A beeinflusst. Dieser Satz schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor, wie beispielsweise C, basieren kann. Diese Formulierung gilt auch für eine Ausführungsform, in der A ausschließlich auf der Grundlage von B bestimmt wird. Wie hierin verwendet, ist die Formulierung „basierend auf“ gleichbedeutend mit der Formulierung „basierend zumindest teilweise auf.“
-
Wie hierin verwendet, beschreibt die Formulierung „als Reaktion auf“ einen oder mehrere Faktoren, die einen Effekt auslösen. Diese Formulierung schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren den Effekt beeinflussen oder anderweitig auslösen können. Das heißt, ein Effekt kann ausschließlich als Reaktion auf diese Faktoren oder als Reaktion auf die festgelegten Faktoren sowie andere, nicht festgelegte Faktoren auftreten. Betrachten wir die Formulierung „A als Reaktion auf B ausführen“. Dieser Satz besagt, dass B ein Faktor ist, der die Leistung von A auslöst. Dieser Satz schließt nicht aus, dass die Ausführung von A auch als Reaktion auf einen anderen Faktor, wie beispielsweise C, erfolgen kann. Diese Formulierung gilt auch für eine Ausführungsform, bei der A ausschließlich als Reaktion auf B ausgeführt wird.
-
Wie hierin verwendet, werden die Begriffe „erste/erster/erstes“, „zweite/zweiter/zweites“ usw. als Bezeichnungen für die anschließenden Substantive verwendet, und implizieren keine Art von Ordnung (z. B. räumlich, zeitlich, logisch usw.), sofern nicht anders angegeben. Beispielsweise können in einer Registerdatei mit acht Registern die Begriffe „erstes Register“ und „zweites Register“ verwendet werden, um auf zwei beliebige der acht Register Bezug zu nehmen, und nicht beispielsweise nur auf die logischen Register 0 und 1.
-
Bei der Verwendung in den Ansprüchen wird der Begriff „oder“ als inklusiv und nicht als exklusiv verwendet. Beispielsweise bedeutet die Formulierung „mindestens einer von x, y oder z“ einen von x, y und z sowie eine beliebige Kombination davon.
-
„Schaltkreis“ nimmt auf elektrische Schaltkreise mit mindestens einer diskreten elektrischen Schaltung Bezug, wobei der elektrische Schaltkreis mindestens eine integrierte Schaltung hat, wobei der elektrische Schaltkreis mindestens eine anwendungsspezifische integrierte Schaltung hat, wobei der Schaltkreis eine Universal-Rechenvorrichtung ausbildet, die durch ein Computerprogramm eingerichtet ist (z. B. einen Universalcomputer, der durch ein Computerprogramm eingerichtet ist, das zumindest teilweise Prozesse oder Vorrichtungen ausführt, die hierin beschrieben sind, oder einen Mikroprozessor, der durch ein Computerprogramm eingerichtet ist, das zumindest teilweise Prozesse oder Vorrichtungen ausführt, die hierin beschrieben sind), wobei der Schaltkreis eine Speichervorrichtung ausbildet (z. B. Formen von Direktzugriffsspeichern), oder wobei der Schaltkreis eine Kommunikationsvorrichtung ausbildet (z. B. ein Modem, einen Kommunikationsschalter oder eine optisch-elektrische Ausrüstung).
-
„Firmware“ nimmt Bezug auf Softwarelogik, die als prozessorausführbare Anweisungen in Nur-Lese-Speichern oder -Medien gespeichert sind.
-
„Hardware“ nimmt Bezug auf Logik, die als analoger oder digitaler Schaltkreis enthalten ist.
-
„Software“ nimmt Bezug auf Logik, die als prozessorausführbare Anweisungen in einem Maschinenspeicher (z. B. flüchtiger oder nichtflüchtiger Lese-/Schreibspeicher oder flüchtige oder nichtflüchtige Medien) implementiert sind.
-
„Logik“ nimmt Bezug auf Maschinenspeicherschaltkreise, nicht vorübergehende maschinenlesbare Medien und/oder Schaltkreise, die über ihr Material und/oder über ihre Material-Energie-Konfiguration Steuer- und/oder Verfahrenssignale und/oder Einstellungen und Werte (wie Widerstand, Impedanz, Kapazität, Induktivität, Strom-/Spannungswerte usw.) aufweisen, die angewendet werden können, um den Betrieb einer Vorrichtung zu beeinflussen. Magnetische Medien, elektronische Schaltungen, elektrischer und optischer Speicher (sowohl flüchtig als auch nichtflüchtig) und Firmware sind Beispiele für Logik. Logik schließt insbesondere reine Signale oder Software per se aus (schließt jedoch nicht Maschinenspeicher aus, die Software aufweisen und dadurch wichtige Konfigurationen ausbilden).