-
Erfindungsgebiet
-
Die
vorliegende Erfindung betrifft allgemein die Finalisierung von Halbleiterspeichern.
-
Hintergrund
-
Tragbare
Speichervorrichtungen und Speichermedien können bei einer Vielzahl von
Anwendungen verwendet werden. Eine Anwendung von tragbaren Medien
ist, als ein Archiv von gespeicherten Daten zu dienen. Zum Beispiel
können
einige Technologien mit optischen Medien, wie z. B. Compact-Disk-Recordable
(CD-R) oder Digital-Versatile-Disk-Recordable (DVD-R), ermöglichen,
Daten auf den Medien zu speichern, und die Medien können unter
Verwendung eines Finalisierungsvorgangs finalisiert werden. Nach
der Finalisierung können
zusätzliche
Daten nicht mehr auf der Disk gespeichert werden, und Daten können nicht
mehr von der Disk gelöscht
werden. In diesem Zustand, kann die finalisierte Disk zu Archivierungszwecken
verwendet werden.
-
Nicht-flüchtige Halbleiterspeichervorrichtungen,
wie z. B. auswechselbare Speicherkarten oder USB-Flash-Speichervorrichtungen
(USB: Universal Serial Bus), haben eine erhöhte Portabilität von Daten
und Softwareanwendungen ermöglicht. Nicht-flüchtige Halbleiterspeichervorrichtungen
können
in einer oder mehreren Betriebsweisen arbeiten, wie z. B. als ein
erneut beschreibbarer Speicher, welcher ermöglicht, dass an einer Speicherstelle
gespeicherte Daten überschrieben
oder gelöscht
werden, oder als ein einmal beschreibbarer und mehrfach auslesbarer
Speicher bzw. WORM-Speicher (WORM: Write-Once Read-Many), welcher es nicht ermöglicht,
nach dem Schreiben Daten von einer Speicherstelle zu löschen.
-
Zusammenfassung
-
Gemäß der vorliegenden
Erfindung werden ein Verfahren gemäß Anspruch 1 und eine Vorrichtung
gemäß Anspruch
6 bereitgestellt. Die abhängigen
Ansprüche
definieren Weiterbildungen der Erfindung.
-
Es
werden somit Systeme und Verfahren zur Finalisierung von Halbleiterspeicher
offenbart. Eine Halbleiterspeichervorrichtung, wie z. B. eine Flash-Speichervorrichtung
oder eine einmal programmierbare Speichervorrichtung bzw. OTP-Speichervorrichtung
(OTP: One-Time-Programmable), implementiert eine Finalisierungsfunktion,
um Änderungen
an in dem Speicher abgelegten Daten zu verhindern. Bei ihrer Ausführung kann
die Finalisierungsfunktion bewirken, dass in dem Speicher ein persistenter
Wert gesetzt wird, welcher einen finalisierten Status des Speichers
anzeigt. Nachdem der persistente Wert zum Anzeigen des finalisierten
Status gesetzt ist, werden nachfolgende Versuche, Daten in den Speicher
zu schreiben oder Daten aus dem Speicher zu löschen, verhindert, und die
Vorrichtung kann permanent anzeigen, dass sie einen Nur-Lese-Status
aufweist.
-
Kurzbeschreibung der Zeichnungen
-
1 ist
ein Blockdiagram eines ersten Ausführungsbeispiels eines Systems
zur Finalisierung eines Halbleiterspeichers;
-
2 ist
ein Blockdiagram eines zweiten Ausführungsbeispiels eines Systems
zur Finalisierung eines Halbleiterspeichers;
-
3 ist
ein Blockdiagram eines dritten Ausführungsbeispiels eines Systems
zur Finalisierung eines Halbleiterspeichers;
-
4 ist
ein Blockdiagram eines vierten Ausführungsbeispiels eines Systems
zur Finalisierung eines Halbleiterspeichers;
-
5 ist
ein allgemeines Diagram zur Veranschaulichung eines Ausführungsbeispiels
für die
Arbeitsweise eines Systems zur Finalisierung eines Halbleiterspeichers
vor und nach einem Finalisierungsbefehl;
-
6 ist
ein Flussdiagram für
ein Ausführungsbeispiel
eines Verfahrens zur Finalisierung eines Halbleiterspeichers;
-
7 ist
ein Blockdiagram für
ein erstes veranschaulichendes System, welches zur Finalisierung eines
Halbleiterspeichers verwendet werden kann; und
-
8 ist
ein Blockdiagram eines zweiten veranschaulichenden Systems, welches
zur Finalisierung eines Halbleiterspeichers verwendet werden kann.
-
Detaillierte Beschreibung
-
In 1 ist
ein veranschaulichendes Ausführungsbeispiel
eines Systems zur Finalisierung eines Halbleiterspeichers dargestellt
und allgemein mit 100 bezeichnet. Das System 100 beinhaltet
einen Host 102, welcher mit einer Datenspeichervorrichtung 104 kommuniziert.
Die Datenspeichervorrichtung 104 beinhaltet einen Controller 120,
welcher auf einer Controllerkomponente 160 ausgebildet
ist, und einen Halbleiterspeicher 130, welcher auf einer
Speicherkomponente 162 ausgebildet ist. Die Datenspeichervorrichtung 104 ist
dazu ausgestaltet, einen Finalisierungsbefehl 103 zu empfangen
und, in Reaktion auf den Finalisierungsbefehl 103, einen
Statusindikator auf einen Finalisiert-Wert zu setzen, um Schreibvorgänge an dem
Halbleiterspeicher 130 zu verhindern.
-
Bei
einem Ausführungsbeispiel
ist der Host 102 ein Computer, wie z. B. ein Personal-Computer (PC)
oder Notebook-Computer, eine tragbare Drahtlosvorrichtung, wie z.
B. ein Mobiltelefon oder ein persönlicher digitaler Assistent
(PDA: Personal Digital Assistent), eine Multimediavorrichtung, wie
z. B. ein Videoplayer oder eine Set-Top-Box-Vorrichtung, oder ein
beliebiger anderer Typ von Vorrichtung, welcher mit der Datenspeichervorrichtung 104 kommunizieren
kann. Bei einem veranschaulichenden Ausführungsbeispiel ist die Datenspeichervorrichtung 104 von
dem Host 102 entfernbar, wie z. B. ein Flash-Laufwerk (Flash-Drive)
oder eine entfernbare Speicherkarte. Bei einem weiteren veranschaulichenden
Ausführungsbeispiel
ist die Datenspeichervorrichtung 104 innerhalb des Hosts 102 implementiert,
z. B. als ein interner Speicher eines digitalen Musikabspielgeräts.
-
Bei
einem Ausführungsbeispiel
beinhaltet die Controllerkomponente 160 eine Host-Schnittstelle 110,
den mit der Host-Schnittstelle 110 gekoppelten
Controller 120 und eine mit dem Controller 120 gekoppelte
Speicherschnittstellenschaltung 112. Die Host-Schnittstelle 110 ermöglicht Kommunikation
mit dem Host 102, wie z. B., als veranschaulichende nicht
einschränkende
Beispiele, durch Verwendung eines USB-Protokolls (USB: Universal
Serial Bus) oder eines CF-Protokolls (CF: Compact Flash). Die Speicherschnittstellenschaltung 112 ermöglicht Kommunikation
mit der Speicherkomponente 162, wie z. B. über einen
parallelen Bus. Die Controllerkomponente 160 kann auch
ein erstes Register 140 beinhalten, in welchem ein Speichertypindikator 142 gespeichert
ist. Die Controllerkomponente 160 kann auch ein zweites
Register 150 beinhalten, welches einen Befehlsunterstützungsindikator 152 und
einen Schreibschutzstatusindikator 154 beinhaltet.
-
Bei
einem Ausführungsbeispiel
ist der Controller 120 dazu ausgestaltet, in Reaktion auf
den Empfang des Finalisierungsbefehls 103 einen Finalisierungsvorgang 122 durchzuführen. Der
Finalisierungsvorgang 122 kann bewirken, dass der Cont roller 120 einen
Statusindikator 128 auf einen Finalisiert-Wert setzt. Bei einem
Ausführungsbeispiel
kann ein „Indikator” ein Datenwert
sein, welcher an einer vorbestimmten Speicheradresse oder in einem
vorbestimmten Speicherfeld gespeichert ist und einen Status oder
Zustand darstellt. Zum Beispiel beinhaltet der Statusindikator 128 einen
an einer spezifizierten Speicherposition gespeicherten Wert, welcher dem
Controller 120 anzeigt, ob der Halbleiterspeicher 130 finalisiert
wurde. Der Statusindikator 128 kann in einem persistenten
Speicher 126 eines Statusregisters 124 gespeichert
sein. Das Setzen des Statusindikators 128 kann durchgeführt werden,
indem eine oder mehrere persistente Speicherzellen des persistenten
Speichers 126 auf einen logischen Wert programmiert werden,
welcher persistent gehalten wird, wie z. B. ein Wert, der eine logische
Eins darstellt. Das Statusregister 124 kann innerhalb des Controllers 120 integriert
sein oder für
den Controller 120 zugänglich
sein. Indem unter Verwendung des persistenten Speichers 126 ein
Finalisiert-Wert in dem Statusindikator 128 gespeichert
wird, kann, nachdem der Status Indikator 128 auf den Finalisiert-Wert
gesetzt wurde, der Statusindikator 128 nicht mehr auf einen
Nicht-Finalisiert-Wert
zurückgebracht
werden. Beispiele von persistenten Speicherzellen beinhalten eine
einmalig beschreibbare Speicherzelle oder einmal programmierbare
Speicherzelle (OTP-Speicherzelle)
oder eine erneut beschreibbare Speicherzelle, wie z. B. eine Flash-Zelle,
welche derart gesteuert ist, dass ein Löschen des gespeicherten Finalisiert-Werts
verhindert wird.
-
Bei
einem Ausführungsbeispiel
kann der Controller 120 dazu ausgestaltet sein, in Reaktion darauf,
dass die Datenspeichervorrichtung 104 eine Anfrage zum
Schreiben von Daten in den Halbleiterspeicher 130 der Speicherkomponente 162 oder
zum Löschen
von Daten aus dem Halbleiterspeicher 130 der Speicherkomponente 162 empfängt, einen
Wert des Statusindikators 128 zu bestimmen. Wenn der Statusindikator 128 den
Finalisiert-Wert aufweist, kann der Controller 120 dazu
ausges taltet sein, einen Zugriff zum Schreiben von Daten in den
Halbleiterspeicher 130 zu deaktivieren, wodurch die Durchführung von
Schreib- oder Löschvorgängen an
dem Halbleiterspeicher 130 verhindert wird. Im Ergebnis können Daten,
welche in dem Halbleiterspeicher 130 gespeichert sein können, wie
z. B. gespeicherte Daten 132, persistent in der Speicherkomponente 162 gespeichert
werden, und die Daten 132 sind über Befehle, welche von dem
Host 102 an die Datenspeichervorrichtung 104 übermittelt
werden, nicht veränderbar.
-
Im
Betrieb kann der Host 102 Datenlesebefehle und Datenschreibbefehle
an die Datenspeichervorrichtung 104 übermitteln. Zum Beispiel kann der
Host 102 Datenschreibbefehle übermitteln, um zu bewirken,
dass die Controllerkomponente 160 die gespeicherten Daten 132 in
den Halbleiterspeicher 130 schreibt. Der Host 102 kann
nachfolgend den Finalisierungsbefehl 103 ausgeben.
-
In
Reaktion auf den Empfang des Finalisierungsbefehls 103 kann
der Controller 120 den Statusindikator 128 auf
einen Finalisiert-Wert setzen. Der Controller 120 kann
darüber
hinaus wenigstens einen Wert eines Registers setzen, welches für den Host 102 zugänglich ist,
wie z. B. durch Anpassen des Speichertypindikators 142 von
einem Wert für „wiederbeschreibbar” (Wiederbeschreibbar-Wert),
einem Wert für „einmal
schreiben mehrfach lesen” (WORM-Wert)
oder einem Wert für „einmalig
programmierbar” (OTP-Wert)
auf einen Wert für „Nur-Lese-Typ-Speicher” (ROM-Typ-Wert).
Außerdem
kann der Controller 120 dazu ausgestaltet sein, den Befehlsunterstützungsindikator 152 anzupassen,
um anzuzeigen, dass Datenschreibevorgänge an dem Halbleiterspeicher 130 nicht
unterstützt
werden. Der Controller 120 kann darüber hinaus dazu ausgestaltet
sein, einen Wert des Schreibschutzindikators 154 anzupassen,
um anzuzeigen, dass der Halbleiterspeicher 130 schreibgeschützt ist.
Der Controller 120 kann eine oder mehrere interne Einstellungen
(nicht dargestellt) vornehmen, welche anzeigen, dass von dem Host 102 empfangene
Datenschreibbefehle oder Löschbefehle
abzublocken, zu verhindern oder anderweitig für den Halbleiterspeicher 130 unwirksam
zu machen sind.
-
Nach
Empfang des Finalisierungsbefehls 103 kann der Controller 120 Statusinformationen 105,
z. B. in Form eines Statusindikators, an den Host 102 übermitteln.
Die Statusinformationen 105 können eine Angabe beinhalten,
dass der Speichertyp des Halbleiterspeichers 130 ein Nur-Lese-Speichertyp
ist, dass der Halbleiterspeicher 130 Datenschreibvorgänge nicht
unterstützt,
dass der Halbleiterspeicher 130 schreibgeschützt ist,
oder eine Kombination der genannten Angaben beinhalten. Zum Beispiel
kann der Controller 120 bewirken, dass der Host 102 seine
Verbindung zu der Datenspeichervorrichtung 104 löst und wiederaufbaut,
so dass der Host 102 bei erneuter Verbindung mit der Datenspeichervorrichtung 104 aktualisierte
Werte des ersten Registers 140 und des zweiten Registers 150,
wie z. B. die Indikatoren 142, 152 und 154,
ausliest.
-
Obwohl
die Controllerkomponente 160 als das erste Register 140 und
das zweite Register 150 beinhaltend dargestellt ist, können bei
anderen Ausführungsbeispielen
der Speichertypindikator 152, der Befehlunterstützungsindikator 152,
der Schreibschutzindikator 154 oder eine beliebige Kombination davon
nicht in Registern der Controllerkomponente 160 enthalten
sein, sondern wenigstens ein solcher Indikator kann an anderen Stellen
gespeichert sein oder nach Bedarf berechnet werden, wie z. B., als veranschaulichende
nicht einschränkende
Beispiele, bei Bestimmung eines Wertes des Statusindikators 128 oder
in Reaktion auf eine Anfrage von dem Host 102.
-
Die
Datenspeichervorrichtung 104 kann daher als eine Archivierungsmedienvorrichtung
verwendet werden, indem Datenschreibvorgänge und Datenlöschvorgänge vor
Empfang des Finalisierungsbefehls 103 ermöglicht werden
und Datenschreibvorgänge
und Datenlöschvorgänge nach Empfang
des Finalisierungsbefehls 103 verhindert werden. Weil der
Statusindikator 128 persistent den Finalisiert-Wert speichert,
verbleibt die Da tenspeichervorrichtung 104 in dem finalisierten
Zustand, nachdem der Finalisierungsvorgang durchgeführt wurde.
In dem Halbleiterspeicher 130 gespeicherte Daten, wie z.
B. die gespeicherten Daten 132, können zuverlässig in dem Halbleiterspeicher 130 archiviert
werden, und ein Zustand des Halbleiterspeichers 130 kann
nicht weiter verändert
werden.
-
In 2 ist
ein zweites Ausführungsbeispiel eines
Systems zur Finalisierung eines Halbleiterspeichers dargestellt
und allgemein mit 200 bezeichnet. Das System 200 beinhaltet
einen Host 202, welcher mit einer Datenspeichervorrichtung 204 kommuniziert.
Die Datenspeichervorrichtung 204 beinhaltet eine Host-Schnittstelle 210,
einen Controller 220, eine Speicherschnittstellenschaltung 212 und
einen Halbleiterspeicher 230. Der Controller 220 und
der Halbleiterspeicher 230 sind in einem einzigen Halbleiterbauteil 260 integriert.
-
Der
Controller 220 ist dazu ausgestaltet, in Reaktion auf den
Empfang eines Finalisierungsbefehls 203 von dem Host 202 einen
Finalisierungsvorgang 222 zu implementieren. Der Controller 220 beinhaltet
darüber
hinaus ein Statusregister 224, welches eine oder mehrere
persistente Speicherzellen 226 beinhaltet, um wenigstens
einen Teil eines Wertes eines Statusindikators 228 persistent
zu speichern. Zum Beispiel kann das Statusregister 224 mehrere
Bits beinhalten, welche verschiedene Statusattribute der Datenspeichervorrichtung 204 anzeigen.
Wenigstens ein Bit des Statusregisters 224 kann dem Statusindikator 228 entsprechen,
wie z. B. ein bestimmtes Bit, welches einen einer logischen Null entsprechenden
Wert aufweist, um einen nicht finalisierten Status anzuzeigen, und
einen Wert einer logischen Eins aufweist, um einen finalisierten
Status anzuzeigen. Obwohl ein oder mehrere Bits des Statusregisters 224,
welche dem Finalisierungsstatus entsprechen, als logische Werte
in den persistenten Speicherzellen 226 gespeichert sein
können,
können andere
Bits des Statusindikators 228 oder andere Indikatoren nicht
persistent sein. Solche nicht persistenten Bits können in
erneut beschreibba ren Speicherzellen (nicht dargestellt) des Statusregisters 224, welche
programmierte Werte nicht persistent speichern, abgelegt sein.
-
Der
Controller 220 ist mit einem ersten Register 240 und
einem zweiten Register 250 gekoppelt. Das erste Register 240 kann
einen Speichertypindikator 224 beinhalten. Das zweite Register 250 kann
einen Befehlsunterstützungsindikator 252 und einen
Schreibschutzindikator 254 beinhalten. Bei anderen Ausführungsbeispielen
können
der Speichertypindikator 242, der Befehlsunterstützungsindikator 252,
der Schreibschutzindikator 254 oder eine beliebige Kombination
davon nicht in den Registern 240 und 250 gespeichert
sein, sondern anstelle dessen in dem Halbleiterspeicher 230 oder
dem Controller 220 gespeichert sein oder nach Bedarf berechnet
werden.
-
Im
Betrieb kann der Host 202 Befehle senden, um Datenlesevorgänge und
Datenschreibvorgänge
an dem Halbleiterspeicher 230 durchzuführen. Zum Beispiel kann der
Host 202 einen Befehl zum Schreiben von Daten, wie z. B.
zum Schreiben von gespeicherten Daten 232, in den Halbleiterspeicher 230 senden.
Der Host 202 kann den Finalisierungsbefehl 203 an
die Datenspeichervorrichtung 204 senden. In Reaktion auf
den Finalisierungsbefehl 203 kann der Controller 220 den
Statusindikator 228 auf einen Finalisiert-Wert setzen.
Das Setzen des Finalisiert-Werts kann beinhalten, dass eine oder
mehrere der persistenten Speicherzellen 226 auf einen logisch
hohen Wert gesetzt werden, aus welchem die persistenten Speicherzellen 262 nicht
von dem Controller 220 in einen logisch niedrigen Wert
zurückgebracht
werden können.
Zum Beispiel können
die persistenten Speicherzellen 226 einen einmal programmierbaren
Speicher beinhalten, welcher eine oder mehrere Fuse-Elemente oder
Anti-Fuse-Elemente verwendet, um einen Datenwert zu speichern, oder kann
wiederbeschreibbare Zellen beinhalten, wie z. B. Flash-Speicherzellen,
welche derart gesteuert sind, dass eine Änderung eines gespeicherten
Finalisiert-Werts auf einen Nicht-Finalisiert-Wert verhindert wird.
-
In
Reaktion auf den Empfang des Finalisierungsbefehls 203,
kann der Controller 220 auch Werte des Speichertypindikators 242,
des Befehlsunterstützungsindikators 252,
des Schreibschutzindikators 254 oder einer beliebigen Kombination
davon aktualisieren, um anzuzeigen, dass der Halbleiterspeicher 230 finalisiert
wurde und dass weitere Datenschreibvorgänge, Löschvorgänge oder andere Versuche zur Änderung
von Daten in dem Halbleiterspeicher 230 verhindert werden.
Zum Beispiel kann der Controller 220 dazu ausgestaltet
sein, dem Host 202 anzuzeigen, dass der Halbleiterspeicher 230 einen Nur-Lese-Typ aufweist, keine
Schreibbefehle unterstützt
und schreibgeschützt
ist, wie z. B. über
eine Statusinformationsmeldung 205. Die Datenspeichervorrichtung 204 kann
daher als eine Archivierungsmedienvorrichtung dienen, welche in
der Lage ist, in Reaktion auf den Finalisierungsbefehl 203 einen
Zustand des Halbleiterspeichers 230 und der gespeicherten
Daten 232 beizubehalten.
-
In 3 ist
ein drittes Ausführungsbeispiel eines
Systems zur Finalisierung eines Halbleiterspeichers dargestellt
und allgemein mit 300 bezeichnet. Das System 300 beinhaltet
einen Host 302, welcher mit einer Datenspeichervorrichtung 304 kommuniziert.
Die Datenspeichervorrichtung 304 beinhaltet eine Host-Schnittstelle 310,
einen Controller 320, ein oder mehrere Register 340 und
einen persistenten Speicher 330.
-
Bei
einem Ausführungsbeispiel
ist der persistente Speicher 330 dazu ausgestaltet, zu
ermöglichen,
dass Daten geschrieben werden, aber ermöglicht nicht, dass Daten gelöscht oder überschrieben werden.
Zum Beispiel kann der persistente Speicher 330 einen einmal
programmierbaren Speicher beinhalten, so dass, sobald ein Wert einer
logischen Eins in eine Speicherzelle geschrieben wird, die Speicherzelle
nicht mehr in einen Zustand einer logischen Null zurückgebracht
werden kann. Ein solches Beispiel kann eine Fuse-basierte oder Anti-Fuse-basierte Speicherzelle
beinhalten, z. B. eine Speicherzelle mit wenigstens einem Fuse-Element
und/oder Anti-Fuse-Element. Als ein weiteres Beispiel kann der persistente
Speicher 330 einen einmal beschreibbaren mehrfach auslesbaren
Speicher bzw. WORM-Speicher (WORM: Write-Once Read-Many) beinhalten. Der
WORM-Speicher kann dem Host 302 als wiederbeschreibbar
erscheinen. Jedoch können
einzelne Speicherzellen nicht wiederbeschreibbar sein. Anstelle
dessen können
Aktualisierungen an Dateien als zusätzliche Dateien in den Speicher
gespeichert werden, und entsprechende Dateisystemdaten können erneut
geschrieben oder aktualisiert werden, bis in dem persistenten Speicher 330 der
gesamte verfügbare
Speicherplatz aufgebraucht ist. Als noch ein weiteres Beispiel kann
der persistente Speicher 330 ein Flash-Speicher sein, bei
welchem ein Überschreiben
und Löschen
von Daten durch den Controller 320 verhindert werden.
-
Der
persistente Speicher 330 beinhaltet eine bestimmte Gruppe
von persistenten Speicherzellen 336. Die Gruppe von persistenten
Speicherzellen 336 beinhaltet einen Finalisierungsstatusindikator 328,
welcher ein oder mehrere Finalisierungsstatusbits 334 beinhalten
kann. Der persistente Speicher 330 kann auch gespeicherte
Daten 332 beinhalten.
-
Im
Betrieb reagiert der Controller 320 auf den Empfang eines
Finalisierungsbefehls 303, indem er einen Finalisierungsvorgang 322 durchführt. Die Durchführung des
Finalisierungsvorgangs 322 kann beinhalten, dass bei dem
wenigstens einen Finalisierungsstatusbit 334 des Statusindikators 328 in
der Gruppe von persistenten Speicherzellen 336 ein Finalisiert-Wert gesetzt wird.
Zusätzlich
kann der Controller 320 einen oder mehrere Statusinformationswerte
aktualisieren, wie z. B. einen Befehlsunterstützungswert, einen Speichertypinformationswert,
einen Schreibschutzstatuszustandswert oder eine beliebige Kombination
davon, und kann solche Informationen als Statusinformationen 305 an
den Host 302 zurückgeben.
-
In 4 ist
ein viertes Ausführungsbeispiel eines
Systems zur Finalisierung eines Halbleiterspeichers dargestellt
und allgemein mit 400 bezeichnet. Das System 400 beinhaltet
einen Host 402, welcher mit einer Datenspeichervorrichtung 404 kommuniziert.
Die Datenspeichervorrichtung 404 beinhaltet eine Host-Schnittstellencontrollerkomponente 460, welche über einen
Bus 464 mit einer Speicherkomponente 462 gekoppelt
ist. Bei einem Ausführungsbeispiel
beinhaltet die Host-Schnittstellencontrollerkomponente 460 eine
Host-Schnittstelle 410,
welche dazu ausgestaltet ist, Befehle und Daten von dem Host 402 zu
empfangen und Daten und andere Informationen an den Host 402 zu übermitteln.
Die Host-Schnittstellencontrollerkomponente 460 beinhaltet
auch einen Controller 420, welcher mit der Host-Schnittstelle 410 gekoppelt
ist und darüber
hinaus mit einer Speicherschnittstellenschaltung 412 gekoppelt
ist. Der Controller 420 kann auch mit einem oder mehreren
Registern 440 gekoppelt sein.
-
Bei
einem Ausführungsbeispiel
beinhaltet die Speicherschnittstellenschaltung 412 mehrere elektrische
Verbinder, welche mit dem Bus 464 gekoppelt sind. Zum Beispiel
kann der Bus 464 einen Bus mit einer Größe von 8 Bit, 16 Bit oder einer
anderen Größe beinhalten,
welcher dazu ausgestaltet ist, Daten und Befehle, wie z. B. einen
Finalisierungsbefehl 465, an die Speicherkomponente 462 zu übermitteln.
Der Bus 464 kann darüber
hinaus dazu ausgestaltet sein, Daten und andere Informationen, wie z.
B. einen Bestätigungsindikator
(nicht dargestellt) von der Speicherkomponente 462 an die
Speicherschnittstellenschaltung 412 zurückzugeben.
-
Bei
einem Ausführungsbeispiel
beinhaltet die Speicherkomponente 462 einen Halbleiterspeicher 430 und
eine Schnittstellensschaltung 468, welche mit dem Bus 464 gekoppelt
ist. Die Schnittstellenschaltung 468 ist dazu ausgestaltet, über den
Bus 464 Befehle und Daten zu empfangen und Statusinformationen
und andere Daten zurückzugeben,
indem bei dem Bus 464 elektrische Signale gesteuert werden.
Die Speicherkomponente 462 beinhaltet auch einen Controller 470,
welcher mit der Schnittstellenschaltung 468 gekoppelt ist
und welcher auch mit dem Halbleiterspeicher 430 gekoppelt
ist.
-
Der
Controller 470 kann dazu ausgestaltet sein, in Reaktion
auf den Empfang des Finalisierungsbefehls 465 von der Host-Schnittstellencontrollerkomponente 460 einen
Finalisierungsvorgang 472 durchzuführen. Zum Beispiel kann der
Controller 470, welcher bei einem Ausführungsbeispiel unter Verwendung
von kombinatorischen Schaltungen implementiert sein kann, den Finalisierungsvorgang 472 ausführen, um
den Halbleiterspeicher 430 zu finalisieren, wie z. B. durch
Setzen eines Finalisierungsstatusindikators 428, welcher
in einer oder mehreren Speicherzellen 426 des Halbleiterspeichers 430 gespeichert
ist. Indem der Finalisierungsstatusindikator 428 auf einen
Finalisiert-Wert gesetzt wird, können
in dem Halbleiterspeicher 430 gespeicherte Daten, wie z.
B. gespeicherte Daten 432, persistent in dem Halbleiterspeicher 430 gehalten
werden, und das Schreiben von zusätzlichen Daten in den Halbleiterspeicher 430 kann
verhindert werden.
-
Zur
Veranschaulichung, wenn der Controller 470 eine Datenschreibanforderung
oder Datenleseanforderung zum Zugriff auf den Halbleiterspeicher 430 empfängt, kann
der Controller 470 den Finalisierungsstatusindikator 428 abfragen.
Wenn bestimmt wurde, dass der Finalisierungsstatusindikator 428 einen
Finalisiert-Wert aufweist, kann der Controller 470 in Reaktion
darauf über
den Bus 464 eine negative Bestätigung oder einen Fehlerindikator
an die Host-Schnittstellencontrollerkomponente 460 zurückgeben.
Auf diese Weise kann die Speicherkomponente 462, welche
repräsentativ
für eine
oder mehrere Speicherkomponenten innerhalb der Datenspeichervorrichtung 404 sein
kann, individuell finalisiert werden und eine solche Finalisierung
kann innerhalb der Speicherkomponente 462 durchgeführt werden, und
nicht durch die Host-Schnittstellencontrollerkomponente 460.
-
In 5 ist
ein Ausführungsbeispiel
eines Systems zur Implementierung eines Finalisierungsbefehls in
einem Halbleiterspeicher dargestellt und allgemein mit 500 bezeichnet.
Eine Datenspeichervorrichtung 502 ist mit einem Host 520 kommunizierend
dargestellt. Die Datenspeichervorrichtung beinhaltet einen Controller 530 und
einen Speicher 532. Bei einem Ausführungsbeispiel ist die Datenspeichervorrichtung 502 die
Datenspeichervorrichtung 104 von 1, die Datenspeichervorrichtung 204 von 2,
die Datenspeichervorrichtung 304 von 3,
die Datenspeichervorrichtung 404 von 4 oder
eine beliebige Kombination davon.
-
Die
Datenspeichervorrichtung 502 beinhaltet einen persistenten
Speicher 504, welcher wenigstens einen Finalisierungsstatusindikator
aufweist, der einen Nicht-Finalisiert-Wert 506 speichert.
Zum Beispiel kann der Nicht-Finalisiert-Wert 506 ein Wert sein,
welcher einer binären
Null entspricht. Die Datenspeichervorrichtung 502 beinhaltet
auch einen Speichertypindikator, welcher einen Wert 508 speichert,
der einen Wert „beschreibbarer
Speicher”,
einen Wert „einmal
programmierbar” (OTP:
One-Time-Programmable), einen Wert „einmal schreiben mehrfach
lesen” (WORM:
Write-Once Read-Many) oder eine Kombination davon beinhaltet. Die
Datenspeichervorrichtung 502 beinhaltet einen Befehlsunterstützungsindikator,
welcher einen Wert „Schreiben unterstützt” 510 speichert.
Der Wert „Schreiben
unterstützt” 510 zeigt
an, dass die Datenspeichervorrichtung 502 auf das Schreiben
von Daten in den Speicher 532 gerichtete Schreibbefehle
unterstützt. Die
Datenspeichervorrichtung 502 beinhaltet auch einen Schreibschutzindikator,
welcher einen Wert „nicht
schreibgeschützt” 512 aufweist.
-
Wie
dargestellt kann die Datenspeichervorrichtung 502 einen
Statusindikator 521 an den Host 520 übermitteln,
welcher anzeigt, dass der Speicher 532 einen beschreibbaren
Status aufweist. In Reaktion auf den Statusindikator 521,
welcher den beschreibbaren Status anzeigt, kann der Host 520 einen
Datenschreibbefehl 523 an die Datenspeichervorrichtung 502 über mitteln,
um Daten in den Speicher 532 zu schreiben. In Reaktion
auf den Datenschreibbefehl 523 kann die Datenspeichervorrichtung 502 Daten
in den Speicher 532 schreiben und eine Bestätigung 525 an
den Host 520 senden.
-
Nach
Durchführung
eines Finalisierungsvorgangs, schematisch als ein Pfeil 522 dargestellt,
ist die Datenspeichervorrichtung 502 derart dargestellt, dass
sie einen Finalisiert-Wert 546 in dem den Finalisierungsstatusindikator
speichernden persistenten Speicher 504 speichert. Zum Beispiel
kann der Finalisiert-Wert 546 ein Wert sein, welcher einer
binären Eins
entspricht, was anzeigt, dass der Speicher 532 einen finalisierten
Status aufweist. Der Speichertyp kann einen Wert „nur Lesespeicher” (ROM: Read-Only
Memory) 548 speichern, welcher anzeigt, dass der Speicher 532 gelesen
werden kann, jedoch nicht beschreibbar ist. Der Befehlsunterstützungsindikator
kann einen Wert „Schreiben
nicht unterstützt” 550 beinhalten,
welcher anzeigt, dass Schreibbefehle bei dem Speicher 532 nicht
unterstützt
werden. Der Schreibschutzindikator kann einen Wert „schreibgeschützt” 552 speichern,
welcher anzeigt, dass der Speicher 532 schreibgeschützt ist.
-
Nach
dem Finalisierungsvorgang 522 verhindert die Datenspeichervorrichtung 502 bei
dem Speicher 532 weitere Datenschreibvorgänge. Außerdem beinhaltet
die Datenspeichervorrichtung 502 einen oder mehrere Indikatorwerte,
welche an eine Host-Vorrichtung übermittelt
werden können,
um der Hostvorrichtung anzuzeigen, dass bei dem Speicher 532 zusätzliche
Datenschreibvorgänge
nicht erlaubt sind. Zum Beispiel kann die Datenspeichervorrichtung 502 eine
Statusanzeigemeldung 527 an den Host 520 übermitteln,
welche anzeigt, dass der Status des Speichers 532 „nur lesen” ist. Der
Host 520 kann nach der Finalisierung einen Datenschreibbefehl 529 an
die Datenspeichervorrichtung 502 senden, woraufhin die
Datenspeichervorrichtung 502 eine Fehlermeldung 531 senden
kann.
-
In 6 ist
ein Flussdiagramm für
ein Ausführungsbeispiel
eines Verfahrens zur Finalisierung eines Halbleiterspeichers dargestellt
und allgemein mit 600 bezeichnet. Bei einem veranschaulichenden Ausführungsbeispiel
kann das Verfahren 600 durchgeführt werden von der Datenspeichervorrichtung 104 von 1,
der Datenspeichervorrichtung 204 von 2,
der Datenspeichervorrichtung 304 von 3,
der Datenspeichervorrichtung 404 von 4, der
Datenspeichervorrichtung 502 von 5 oder einer
beliebigen Kombination davon.
-
Bei 602 wird
ein Befehl zur Finalisierung von Daten in einer Datenspeichervorrichtung
empfangen, welche einen mit einem Halbleiterspeicher gekoppelten
Controller beinhaltet. Die Datenspeichervorrichtung beinhaltet darüber hinaus
einen Statusindikator zum Anzeigen eines Finalisierungsstatus des
Halbleiterspeichers. Zum Beispiel kann der Statusindikator bei dem
Controller vorgesehen sein, wie z. B. der Statusindikator 128 von 1,
oder bei dem Halbleiterspeicher vorgesehen sein, wie z. B. der Statusindikator 328 von 3.
-
Bei 604 wird
in Reaktion auf den Empfang des Befehls zur Finalisierung der Daten
in der Datenspeichervorrichtung der Statusindikator auf einen Finalisiert-Wert
gesetzt. Der Controller ist dazu ausgestaltet, Schreibvorgänge an dem
Halbleiterspeicher zu verhindern, wenn der Statusindikator den Finalisiert-Wert
aufweist. Der Controller kann auch dazu ausgestaltet sein, Löschvorgänge an dem
Halbleiterspeicher zu verhindern, wenn der Statusindikator den Finalisiert-Wert
aufweist. Somit kann in Reaktion darauf, dass der Statusindikator
auf den Finalisiert-Wert gesetzt wird, der Halbleiterspeicher in
einem finalisierten Zustand konserviert werden und kann als Archivierungsmedienspeicher
verwendet werden.
-
Bei
einem Ausführungsbeispiel
beinhaltet das Setzen des Statusindikators auf den Finalisiert-Wert
bei 606 ein Programmieren einer persistenten Speicherzelle
der Datenspeichervorrichtung. Die persistente Speicherzelle kann,
als nicht ein schränkende
Beispiele, eine einmal programmierbare Speicherzelle sein, welche
wenigstens einen Teil des Statusindikators als einen Logikwert speichert, eine
wiederbeschreibbare Speicherzelle sein, bei welcher nachfolgende
Schreibvorgänge
durch den Controller verhindert werden, oder ein anderer Typ von
Speicherzelle sein, welche dazu ausgestaltet ist, einen Wert trotz
nachfolgender Befehle zum Löschen oder Überschreiben
des Wertes zu speichern. Bei einem Ausführungsbeispiel befindet sich
die persistente Speicherzelle bei oder in dem Controller, wie z.
B. die persistenten Speicherzellen 126 von 1.
Bei einem weiteren Ausführungsbeispiel
befindet sich die persistente Speicherzelle bei oder in dem Halbleiterspeicher,
wie z. B. die persistenten Speicherzellen 336 von 3.
-
Bei
einem Ausführungsbeispiel
sind der Controller und der Halbleiterspeicher in einem einzigen
Halbleiterbauteil integriert. Zum Beispiel können der Controller und der
Halbleiterspeicher der Controller 220 und der Halbleiterspeicher 230 sein,
welche in dem Halbleiterbauteil 260 von 2 integriert
sind. Bei einem weiteren Ausführungsbeispiel
ist der Controller in einer Controllerkomponente ausgebildet und der
Halbleiterspeicher ist in einer Speicherkomponente ausgebildet.
Zum Beispiel kann die Controllerkomponente die Controllerkomponente 160 von 1 sein,
und die Speicherkomponente kann die Speicherkomponente 162 von 1 sein.
-
Bei
einem Ausführungsbeispiel
wird bei 608, in Reaktion auf den Empfang des Befehls zur
Finalisierung der Daten in dem Halbleiterspeicher, bei der Datenspeichervorrichtung
ein Speichertypindikator auf einen Wert gesetzt, welcher einen Nur-Lese-Speichertyp
anzeigt. Zum Beispiel kann der Speichertypindikator, als veranschaulichende
nicht einschränkende
Beispiele, der Speichertypindikator 142 von 1,
der Speichertypindikator 242 von 2 oder der
in 5 gezeigte Speichertypindikator mit dem Nur-Lese-Wert
(ROM-Wert) 548 sein. Ein Wert des Speichertypindikators
kann an eine Host vorrichtung übermittelt
werden, um der Hostvorrichtung anzuzeigen, dass der Halbleiterspeicher
vom Nur-Lese-Speichertyp ist, wie z. B. über Statusinformationen, welche
dem Host bei Verbindung oder Neuverbindung mit dem Host gesendet
werden.
-
Bei
einem Ausführungsbeispiel
wird bei 610, in Reaktion auf den Empfang des Befehls zur
Finalisierung der Daten in dem Halbleiterspeicher, bei der Datenspeichervorrichtung
ein Befehlsunterstützungsindikator
auf einen Wert gesetzt, welcher anzeigt, dass Datenschreibvorgänge an dem
Halbleiterspeicher nicht unterstützt
sind. Zum Beispiel kann der Befehlsunterstützungsindikator, als veranschaulichende
nicht einschränkende
Beispiele, der Befehlsunterstützungsindikator 152 von 1,
der Befehlsunterstützungsindikator 252 von 2 oder
der in 5 gezeigte Befehlsunterstützungsindikator mit dem Wert „Schreiben
nicht unterstützt” 550 sein.
Ein Wert des Befehlsunterstützungsindikators
kann an eine Hostvorrichtung übermittelt
werden, um der Hostvorrichtung anzuzeigen, dass die Datenspeichervorrichtung
Schreibvorgänge
an dem Halbleiterspeicher nicht unterstützt, wie z. B. über Statusinformationen,
welche dem Host bei Verbindung oder Neuverbindung mit dem Host gesendet
werden.
-
Bei
einem Ausführungsbeispiel
wird bei 612, in Reaktion auf den Empfang des Befehls zur
Finalisierung der Daten in dem Halbleiterspeicher, bei der Datenspeichervorrichtung
ein Schreibschutzindikator auf einen Wert gesetzt, welcher anzeigt,
dass der Halbleiterspeicher schreibgeschützt ist. Zum Beispiel kann
der Schreibschutzindikator, als veranschaulichende nicht einschränkende Beispiele,
der Schreibschutzindikator 154 von 1, der Schreibschutzindikator 254 von 2 oder
der in 5 gezeigte Schreibschutzindikator mit dem Wert „schreibgeschützt” 552 sein.
Ein Wert des Schreibschutzindikators kann an eine Hostvorrichtung übermittelt
werden, um der Hostvorrichtung anzuzeigen, dass der Halbleiterspeicher
schreibgeschützt
ist, wie z. B. über
Statusinformationen, welche dem Host bei Verbindung oder Neuverbindung
mit dem Host gesendet werden.
-
Bei
einem weiteren Ausführungsbeispiel
wird in Reaktion auf den Empfang einer Anfrage von einer Hostvorrichtung,
ein Wert des Statusindikators ausgelesen, und wenigstens eines von
einem Wert, welcher einen Speichertyp anzeigt, einem Wert, welcher anzeigt,
ob Datenschreibvorgänge
unterstützt
sind, oder einem Wert, welcher anzeigt, ob der Halbleiterspeicher
schreibgeschützt
ist, wird auf dem aus dem Statusindikator ausgelesenen Wert basierend
erzeugt. Als Ergebnis können
ein oder mehrere solche Werte basierend auf dem Statusindikator „bei Bedarf” bestimmt
werden, anstelle sie unmittelbar in Reaktion auf den Empfang des
Befehls zur Finalisierung der Daten in dem Halbleiterspeicher zu
setzen.
-
Bei
einem Ausführungsbeispiel,
bei welchem der Halbleiterspeicher einen Flash-Speicher beinhaltet,
wird optional bei 614 als Teil eines Finalisierungsvorgangs
wenigstens ein Zyklus eines Löschens
von Daten aus dem Flash-Speicher und eines erneuten Schreibens der
Daten in den Flash-Speicher durchgeführt. Zum Beispiel kann der
Halbleiterspeicher ein Flash-Speicher
sein, welcher eine verbesserte Beibehaltung von Daten in einer Speicherzelle
zeigt, nachdem mehrere Schreibvorgänge an der Speicherzelle durchgeführt wurden.
Als veranschaulichendes nicht einschränkendes Beispiel könnte der erste
jemals in der Speicherzelle gespeicherte Datenwert statistisch nicht
so lange beibehalten werden wie ein Datenwert, welcher aus einem
dritten Datenschreibvorgang in die Speicherzelle resultiert. Die Datenspeichervorrichtung
kann dazu ausgestaltet sein, eine Anzahl von Datenschreibvorgängen in Speicherzellen
zu verfolgen und, wenn die Anzahl von Datenschreibvorgängen zu
einer vorhergesagten Datenbeibehaltung führt, für welche eine Verbesserung
durch Ausführung
eines oder mehrerer zusätzlicher
Zyklen eines Löschens
und eines erneuten Schreibens der Daten in die Speicherzellen erwartet wird,
können
ein oder mehrere zusätzliche
Zyklen eines Lö schens
und eines erneuten Schreibens der Daten durchgeführt werden. Bei einem weiteren
Ausführungsbeispiel
kann es vorteilhaft sein, Daten, welche korrigierbare Fehler aufweisen,
in den Flash-Speicher zu schreiben, ohne die Fehler zu korrigieren,
um die Schreibleistung im normalen Betrieb zu verbessern. Bevor
der Speicher finalisiert wird, können
derartige Fehler in den gespeicherten Daten zeitgleich mit der Durchführung des
wenigstens einen zusätzlichen
Zyklus eines Löschens
und eines Programmierens der Daten korrigiert werden.
-
Bei
einem Ausführungsbeispiel
werden bei 616 ein oder mehrere aktualisierte Indikatorwerte
an den Host gesendet. Zum Beispiel können der Speichertypindikatorwert,
der Befehlsunterstützungswert, der
Schreibschutzwert, ein oder mehrere andere Werte oder eine beliebige
Kombination davon an den Host gesendet werden, um ein Ergebnis des
Finalisierungsvorgangs anzuzeigen. In einigen Fällen kann der Host ein oder
mehrere Register der Datenspeichervorrichtung bei Verbindung mit
der Vorrichtung auslesen, und die Datenspeichervorrichtung kann
bewirken, dass der Host die Verbindung löst und mit der Datenspeichervorrichtung
neu verbunden wird, so dass der Host aktualisierte Indikatorwerte
ausliest, welche in dem wenigstens einen Register gespeichert sind.
-
Nach
Veranlassung des Finalisierungsvorgangs können bei 618 Schreibvorgänge an den
Halbleiterspeicher verhindert werden. Zum Beispiel können an
den Host gesendete Indikatoren verhindern, dass der Host versucht,
Datenlöschvorgänge oder Datenschreibvorgänge an dem
Halbleiterspeicher durchzuführen.
Zusätzlich
oder als Alternative können
der Controller oder ein anderer interner Mechanismus der Datenspeichervorrichtung
verhindern, dass Löschvorgänge aus
dem Halbleiterspeicher oder Schreibvorgänge in den Halbleiterspeicher
ausgeführt
werden oder sich auf den Halbleiterspeicher auswirken.
-
Obwohl
das Verfahren 600 mit einer bestimmten Reihenfolge beschrieben
und veranschaulicht wurde, können
bei anderen Aus führungsbeispielen
dem Empfang des Befehls zur Finalisierung der Daten bei 602 nachfolgende
Vorgänge
in einer beliebigen anderen Reihenfolge ausgeführt werden. Außerdem können ein
oder mehrere Vorgänge
im Wesentlichen gleichzeitig oder wenigstens teilweise parallel
zueinander ausgeführt
werden. Weiterhin kann, obwohl ein Ausführungsbeispiel für das Verfahren 600 veranschaulicht
wurde, welches mehrere Vorgänge
beinhaltet, bei anderen Ausführungsbeispielen
das Verfahren einen oder mehrere der dargestellten Vorgänge nicht
beinhalten oder kann zusätzliche Vorgänge beinhalten.
-
In 7 zeigt
ein veranschaulichendes Ausführungsbeispiel
für ein
System, welches zur Finalisierung eines Halbleiterspeichers verwendet
werden kann und allgemein mit 700 bezeichnet ist. Das System 700 beinhaltet
eine Speichervorrichtung 702, welche eine Controllerkomponente 704 beinhaltet, die
mit einer Speicherkomponente 708 gekoppelt ist.
-
Bei
einem Ausführungsbeispiel
kann die Speichervorrichtung 702 die Datenspeichervorrichtung 104 von 1,
die Datenspeichervorrichtung 204 von 2,
die Datenspeichervorrichtung 304 von 3,
die Datenspeichervorrichtung 404 von 4,
die Datenspeichervorrichtung 502 von 5 oder
eine beliebige Kombination davon sein. Die Controllerkomponente 704 kann
eine Host-Schnittstellenschaltung 710, einen Controller 712 und
eine Speicherschnittstellenschaltung 714 beinhalten. Die Controllerkomponente 704 kann über einen
Bus 706 mit der Speicherkomponente 708 gekoppelt
sein, wie z. B., als veranschaulichendes nicht einschränkendes
Beispiel, ein paralleler Datenbus mit 8 Bit oder 16 Bit. Die Controllerkomponente 704 kann über die Host-Schnittstellenschaltung 710 Befehle
und Daten mit einem externen Host (nicht dargestellt) austauschen.
Der Controller 712 kann dazu ausgestaltet sein, auf von
der Host-Schnittstellenschaltung 710 empfangene Befehle
zu reagieren und/oder antworten, und kann auch dazu ausgestaltet
sein, über
die Speicherschnittstellenschaltung 714 Daten und Befehle
an die Speicherkomponente 708 zu senden und von dieser
zu empfangen.
-
Bei
einem Ausführungsbeispiel
beinhaltet die Speicherkomponente 708 eine Schnittstellenschaltung 720,
einen mit der Schnittstellenschaltung 720 gekoppelten Controller 730 und
ein dem Controller 730 zugängliches Speicherarray 740.
Die Speicherkomponente 708 kann eine Zeilendekoderschaltung 750 und
eine Spaltendekoderschaltung 752 beinhalten, welche Zugriff
auf Daten ermöglichen,
welche in wenigstens einer bestimmten Zeile und Spalte des Speicherarrays 740 gespeichert
sind, wie z. B. zum Auslesen eines Werts oder Schreiben eines Werts
in einer bestimmten Speicherzelle 742 bei einer Bitleitung
WLj und einer Wortleitung WLi.
Ein Cache-Register 760, ein Datenregister und ein Leseverstärker 762 können darüber hinaus
mit dem Speicherarray 740 gekoppelt sein und können verwendet werden,
um Daten, welche in das Speicherarray 740 geschrieben werden
sollen oder Daten, welche aus dem Speicherarray 740 ausgelesen
wurden, zu cachen bzw. vorübergehend
zu speichern. Bei einem Ausführungsbeispiel
kann das Speicherarray 740 einen Flash-Speicher beinhalten.
Bei einem Ausführungsbeispiel
kann es vorteilhaft sein, Daten, welche korrigierbare Fehler aufweisen,
ohne Korrektur der Fehler in den Flash-Speicher zu schreiben, so
dass im normalen Betrieb die Schreibleistung verbessert wird. Vor
Finalisierung des Speichers können
derartige Fehler in den gespeicherten Daten zeitgleich mit der Durchführung des
wenigstens einen zusätzlichen Zyklus
eines Löschens
und eines Programmierens der Daten korrigiert werden.
-
Bei
einem Ausführungsbeispiel
beinhaltet der Controller 730 einen Zwischenspeicher bzw.
Puffer 732 zum Speichern von Befehlen, Daten oder einer
beliebigen Kombination davon. Der Controller 730 kann auch
wenigstens ein Statusregister 734, eine Zustandsmaschinensteuerschaltung 736,
welche einen Finalisierungsbefehlzustand beinhaltet, eine Hochspannungsgeneratorschaltung 738 und eine
On-Chip-Adressdekoderschaltung 739 beinhalten. Der Controller 730 kann
verschaltet sein, um elektrische Signale an die Zeilendekoderschaltung 750,
an die Spaltendekoderschaltung 752, an das Cache-Register 760 sowie
an das Datenregister und den Leseverstärker 762 zu liefern.
Bei einem Ausführungsbeispiel
kann der Controller 730, welcher den wenigstens einen Puffer 732,
das Statusregister 734, die Zustandsmaschinensteuerschaltung 736,
die Hochspannungsgeneratorschaltung 738 und die On-Chip-Adressdekoderschaltung 739 beinhaltet,
im Zusammenhang mit der Schnittstellenschaltung 720 und
dem Speicherarray 740 wenigstens einen Teil des Verfahrens 600 von 6 auszuführen.
-
Bei
einem Ausführungsbeispiel
kann das Statusregister 437 des Controllers 730 einen
oder mehrere Indikatoren beinhalten, welche Werte speichern, wie
z. B. einen Wert „bestanden/nicht
bestanden” (P/F:
Pass/Fail) 742, einen Wert „beschäftigt/bereit” (B/R:
Busy/Ready) 744, einen Schreibschutzwert bzw. WP-Wert (WP:
Write Protect) 746 und einen Wert eines Finalisierungsindikators 748.
Zum Beispiel kann der Finalisierungsindikator 748 als veranschaulichende
nicht einschränkende
Beispiele, der Finalisierungsstatusindikator 328 von 3 oder der
Finalisierungsstatusindikator 428 von 4 sein. Das
Statusregister 734 kann für die Zustandsmaschinensteuerschaltung 736,
welche den Finalisierungsbefehlzustand beinhaltet, zugänglich sein.
-
Die
Zustandsmaschinensteuerschaltung 736 kann spezielle Hardware
und Schaltungen beinhalten, um einen Betrieb des Controllers 730 in
Reaktion auf einen oder mehrere empfangene Befehle und interne Zustände, wie
z. B. in dem Statusregister 734 dargestellt, zu steuern.
Die Zustandsmaschinensteuerschaltung 736 kann zusätzlich zu
dem Finalisierungsbefehlsstatus weitere Zustände beinhalten, wie z. B.,
als veranschaulichende nicht einschränkende Beispiele, einen Lesestatuszustand,
einen Datenschreibzustand oder einen Datenlesezustand. Zum Beispiel
kann, wenn die Zustandsmaschinensteuerschaltung 736 einen
Finalisierungsbefehl empfängt, wie
z. B. über
den Bus 706, die Zustandsmaschinensteuerschaltung 736 in
den Finalisierungsbefehlzustand übergehen,
was dazu führen
kann, dass der Finalisierungsindikator 748 auf einen Finalisiert-Wert gesetzt wird
und dass ein oder mehrere Werte anderer Indikatoren des Statusregisters 734 gesetzt
werden. Zum Beispiel kann bei einem Ausführungsbeispiel, bei welchem
die Speicherkomponente einen dedizierten Schreibschutzpin (nicht
dargestellt) aufweist, der Controller 730 nach Empfang
des Finalisierungsbefehls dauerhaft emulieren, dass der Schreibschutzpin
gesetzt ist.
-
Bei
einem Ausführungsbeispiel
kann die Hochspannungsgeneratorschaltung 738 auf die Zustandsmaschinensteuerschaltung 736 reagieren
und kann dazu ausgestaltet sein, eine Hochspannung zu erzeugen,
um Werte in das Speicherarray 740 zu programmieren oder
Werte daraus zu löschen.
Zum Beispiel kann das Speicherarray 740 ein Flash-Speicher
oder anderer Speicher sein, welcher über eine „hohe” Spannung, wie z. B. 5 Volt,
programmierbar oder löschbar
ist. Der Controller 730 kann auch die On-Chip-Adressdekoderschaltung 739 beinhalten, welche
Hardware und Logikschaltungen beinhalten kann, um Speicheradressinformationen
von der Controllerkomponente 704 zu empfangen und die Speicheradressinformationen
in spezifische Zeilen und Spalten zur Übermittlung an die Zeilendekoderschaltung 750 und
die Spaltendekoderschaltung 752 zu dekodieren.
-
Die
Schnittstellenschaltung 720 kann Datenbusverbinder 722,
einen mit den Datenbusverbindern 722 gekoppelten Ausgangstreiber 724,
Eingangs/Ausgangs-Puffer (I/O-Puffer) und Latch-Register 726 beinhalten. Die
I/O-Puffer und Latch-Register 726 können dazu ausgestaltet sein, über die Datenbusverbinder 722 empfangene
Daten oder über
die Datenbusverbinder 722 auf den Datenbus 706 zu
schreibende Daten zu speichern bzw. „latchen”. Der Datenbusverbinder 722 kann
physikalische elektrische Verbinder beinhalten, welche die Schnittstellenschaltung 720 mit
dem Datenbus 706 verbinden. Der Ausgangstreiber 724 kann
spezielle Schaltungen und elektrische Verbindungen bein halten, um
der Schnittstellenschaltung 720 zu ermöglichen, elektrische Signale über den
Bus 706 zu treiben. Bei einem Ausführungsbeispiel ist die Schnittstellenschaltung 720 derart
ausgestaltet, dass sie einem oder mehreren Buskommunikationsprotokollen oder
-standards entspricht.
-
In 8 ist
ein veranschaulichendes Ausführungsbeispiel
eines Systems dargestellt, welches zur Finalisierung eines Halbleiterspeichers
verwendet werden kann und allgemein mit 800 bezeichnet ist.
Das System 800 beinhaltet eine Speichervorrichtung 802,
welche eine Controllerkomponente 804 beinhaltet, die über einen
Bus 806 mit einer oder mehreren Speicherkomponenten, wie
z. B. einer repräsentativ
dargestellten Speicherkomponente 808, gekoppelt ist. Die
repräsentativ
dargestellte Speicherkomponente 808 beinhaltet eine Schnittstellenschaltung 890 zur
Kommunikation über
den Bus 806. Die Speicherkomponente 808 beinhaltet
auch einen Controller 892, welcher mit der Schnittstellenschaltung 890 gekoppelt
ist und welcher auch mit einem Speicher gekoppelt ist, wie z. B.
einem Speicherarray 894. Das Speicherarray 894 kann
einen oder mehrere Typen von Speichermedien beinhalten, wie z. B. einen
Flash-Speicher, einen einmal programmierbaren Speicher, anderen
Speicher oder eine beliebige Kombination davon. Bei einem Ausführungsbeispiel kann
die Speichervorrichtung 802 die Datenspeichervorrichtung 104 von 1,
die Datenspeichervorrichtung 204 von 2,
die Datenspeichervorrichtung 304 von 3,
die Datenspeichervorrichtung 404 von 4,
die Datenspeichervorrichtung 502 von 5 oder
beliebige Kombination davon sein.
-
Bei
einem Ausführungsbeispiel
beinhaltet die Controllerkomponente 804 eine Host-Schnittstellenschaltung 810,
welche mit einem DMA/Bus-Controller (DMA: Direct Memory Access,
Direktspeicherzugriff) 802 gekoppelt ist. Die Controllerkomponente 804 beinhaltet
auch eine Speicherschnittstellenschaltung 840, welche mit
dem DMA/Bus-Controller 820 gekoppelt ist. Ein Prozessorkern 830,
ein Wahlzugriffspeicher (RAM: Random Access Memory) 822 und
ein Nur-Lese-Speicher (ROM: Read Only Memory) 824 sind über einen
internen Bus mit dem DMA/Bus-Controller 820 gekoppelt.
-
Bei
einem Ausführungsbeispiel
beinhaltet die Host-Schnittstellenschaltung 810 Busverbinder 812,
welche mit Eingang/Ausgang-Puffern (I/O-Puffern) und Latch-Registern 814 gekoppelt
sind. Die Busverbinder 812 sind darüber hinaus mit einer Ausgangstreiberschaltung 816 gekoppelt.
Die Host-Schnittstellenschaltung 810 beinhaltet
auch einen Controller 818. Bei einem Ausführungsbeispiel arbeitet
die Host-Schnittstellenschaltung 810 entsprechend
einem USB-Protokoll (USB: Universal Serial Bus). Zum Beispiel kann
der Controller 818 programmiert sein, über die Busverbinder 812,
welche mit einem Bus gemäß dem USB-Protokoll
gekoppelt sind, Befehle und Daten von einer Host-Vorrichtung (nicht
dargestellt) zu empfangen. Der Controller 818 kann Prozessor-Hardware
beinhalten, welcher in einem internen Speicher, wie z. B. einem
Nur-Lese-Speicher
(nicht dargestellt), gespeicherte Befehle ausführt, um den Empfang und die
Bestätigung
von USB-Befehlen und Daten zu ermöglichen. Alternativ oder zusätzlich kann
die Host-Schnittstellenschaltung 810 dazu ausgestaltet
sein, andere Kommunikationsprotokolle zu unterstützen, wie z. B. ein SD-Protokoll
(SD: Secure Digital), ein SCSI-Protokoll (SCSI: Small Computer System
Interface), ein SPI-Protokoll (SPI: SCSI-Parallel Interface), ein CF-Protokoll
(CF: Compact Flash), ein oder mehrere andere Protokolle oder eine
beliebige Kombination davon.
-
Bei
einem Ausführungsbeispiel
beinhaltet der Prozessorkern 830 einen Befehlscache 832,
eine Lade/Speicher-Einheit 834, eine arithmetisch-logische
Einheit (ALU: Arithmetic Logic Unit) 826 und ein Register-File 838,
welches einen Finalisierungsindikator speichern kann. Der Prozessorkern 830 kann, als
ein veranschaulichendes nicht einschränkendes Beispiel, einen ARM-Kern
(ARM: Acorn RISC Maschine) beinhalten oder im Wesentlichen ähnlich zu einem
solchen arbeiten. Zum Beispiel kann der Prozessorkern 830 eine
RISC-Mikroarchitektur (RISC: Reduced Instruction Set Computer) unterstützen. Der
Prozessorkern 830 kann dazu ausgestaltet sein, Daten und
ausführbare
Instruktionen 826 über
die Lade/Speicher-Einheit 834 aus dem Nur-Lese-Speicher 824 abzurufen.
Die ausführbaren
Befehle 826 können
einen Finalisierungsbefehl 828 beinhalten, welcher dazu
ausgestaltet ist, einen Halbleiterspeicher, wie z. B. ein Speicherarray 894 in
der Speicherkomponente 808, zu finalisieren.
-
Alternativ
oder zusätzlich
können
wenigstens einige der ausführbaren
Befehle 826, einschließlich
des Finalisierungsbefehls 828, nicht in dem ROM 824,
sondern in dem Speicherarray 894 gespeichert sein. Die
ausführbaren
Befehle, einschließlich
des Finalisierungsbefehls 828, können aus dem Speicherarray 824 abgerufen
werden und in den RAM 822 gespeichert werden. Der Prozessorkern 830 kann
dazu ausgestaltet sein, die ausführbaren
Befehle, einschließlich
des Finalisierungsbefehls 828, zur Ausführung aus dem RAM 822 abzurufen.
-
Die
ausführbaren
Befehle 826, wie z. B. der Finalisierungsbefehl 828,
können
von der Lade/Speicher-Einheit 834 abgerufen werden und
in dem Befehlscache 832 gespeichert werden. Der Finalisierungsbefehl 828 in
dem Befehlscache 832 kann einem Scheduling bzw. einer Zeitablaufsteuerung
zugeführt
werden und einer oder mehreren Ausführungs-Pipelines, wie z. B.
einer Ausführungs-Pipeline,
welche die ALU 836 beinhaltet, zugeführt werden. Die ALU 836 kann
spezielle Schaltungen beinhalten, um arithmetische und logische
Operationen auszuführen,
wie z. B. Addition und Subtraktion, AND (Logisches Und), NOT (Logisches
Nicht), OR (Logisches Oder), XOR (Logisches Entweder-Oder), andere
arithmetische oder logische Operationen oder eine beliebige Kombination
davon.
-
Das
Register-File 838 kann mehrere Speicherzellen beinhalten,
welche dem Prozessorkern 830 einen Hochgeschwindigkeitszugriff
auf Daten zur Verwendung bei der Ausführung von Be fehlen bieten.
Eine oder mehrere Speicherzellen in dem Register-File 838 können der
Speicherung eines Statusindikators, wie z. B. der Finalisierungsstatusindikator, zugeordnet
sein. Der Finalisierungsbefehl 828 kann in einer Ausführungspipeline
ausgeführt
werden, was dazu führen
kann, dass der Finalisierungsindikator des Register-Files 838 auf
einen Finalisiert-Wert gesetzt wird. Zusätzliche Datenwerte, wie z.
B. Werte zum Anzeigen eines Speichertyps, eines Speicherschreibstatus
und eines Schreibschutzstatus, können
ebenfalls während
der Ausführung
des Finalisierungsbefehls 828 durch den Prozessorkern 830 gesetzt
werden.
-
Somit
kann bei einem Ausführungsbeispiel der
Prozessorkern 830 dazu programmiert sein, wenigstens einen
Teil des Verfahrens 600 von 6 auszuführen. Zum
Beispiel kann der Prozessorkern 830 dazu programmiert sein,
einen Hinweis zu empfangen, dass über die Host-Schnittstellenschaltung 810 ein
Finalisierungsbefehl empfangen wurde. Der Prozessorkern 830 kann
auch dazu programmiert sein, eine Registerschreibschaltung (nicht
dargestellt) zum Schreiben eines Wertes, wie z. B. ein oder mehrere
vorbestimmte Bitwerte oder Bytewerte, in das Registerfile 838 in
einer dem Finalisierungsindikator zugewiesenen Position anzusteuern,
um den Finalisierungsstatus anzuzeigen. Der Prozessorkern 830 kann
auch programmiert sein, zu bewirken, dass ein oder mehrere andere
Indikatoren in Reaktion auf den Empfang des Finalisierungsbefehls
aktualisiert werden, wie z. B. ein Speichertypindikator, ein Schreibschutzindikator,
ein Befehlsunterstützungsindikator,
ein oder mehrere andere Indikatoren oder eine beliebige Kombination
davon. Zum Beispiel können
der Indikator bzw. die Indikatoren in einem oder mehreren Registern
(nicht dargestellt) der Host-Schnittstellenschaltung 810 gespeichert
sein und können
von dem Controller 818 in Reaktion auf einen Registerschreibbefehl
des Prozessorkerns 830 geschrieben werden. Der Prozessorkern 830 kann darüber hinaus
dazu programmiert sein, Daten abzurufen, welche eine Anzahl von
Datenschreibvorgängen
wenigstens eines Teils des Speicherarrays 894 anzeigen,
und eine Anzahl von Lösch-Wiederbeschreib-Zyklen zur Durchführung an
dem Speicherarray 894 zu bestimmen, um die Datenbeibehaltung
in dem Speicherarray 894 zu verbessern.
-
Die
Speicherschnittstellenschaltung 840 kann Datenbusverbinder 842,
einen Ausgangstreiber 844, Eingang/Ausgang-Puffer und Latch-Register 846 sowie
eine ECC-Schaltung (ECC: Error Correcting Code, Fehlerkorrekturcode) 848 beinhalten.
Die Datenbusverbinder 842 können elektrische Verbinder
zur Ermöglichung
von elektrischer Signalausbreitung über den Bus 806 beinhalten.
Die I/O-Puffer und Latch-Register 846 können dazu ausgestaltet sein, Daten
zu speichern, welche über
den DMA/Bus-Controller 820 zur Übermittlung über den
Bus 806 empfangen werden, wobei elektrische Signale an
den Datenbusverbindern 842 verwendet werden, welche von
dem Ausgangstreiber 844 erzeugt werden. Außerdem oder
als Alternative können
die I/O-Puffer und Latch-Register 846 Datenwerte speichern,
welche durch elektrische Signale dargestellt werden, die an den
Datenbusverbindern 842 über
den Datenbus 806 empfangen werden, wie z. B. von der Schnittstellenschaltung 890 der
Speicherkomponente 808 erzeugte Signale.
-
Die
ECC-Schaltung 848 kann dedizierte Hardware und Schaltungen
beinhalten, welche dazu ausgestaltet sind, Operationen durchzuführen, wobei Daten
und den Daten entsprechende Fehlerkorrekturcodeinformationen, welche
als Ergebnis eines Speicherlesevorgangs aus der Speicherkomponente 808 empfangen
werden, verwendet werden, und kann logische oder arithmetische Operationen
ausführen,
um zu verifizieren, dass die empfangenen Daten nicht fehlerbehaftet
erfasst wurden. Zum Beispiel können
die empfangenen Daten einen Fehlerkorrekturcode darstellende zusätzliche
Bits beinhalten, welche basierend auf Werten der Daten bei Speicherung
in den Speicherarray 894 kodiert sein können. Verfälschung von einem oder mehreren
Bits der Daten oder einem oder mehreren Bits des Fehlerkorrekturcodes
kann durch die ECC-Schaltung 848 erfassbar sein.
-
Zum
Beispiel kann die Speicherschnittstellenschaltung 840 eine
Flash-Speicherschnittstelle beinhalten, und die ECC-Schaltung 848 kann
einem oder mehreren Flash-Fehlerkorrekturcodeprotokollen
entsprechen.
-
Obwohl
verschiedene hierin dargestellte Komponenten als Blockkomponenten
veranschaulicht und auf allgemeine Weise beschrieben wurden, können derartige
Komponenten einen oder mehrere Mikroprozessoren, Zustandsmaschinen
oder andere Schaltungen beinhalten, welche dazu ausgestaltet sind,
den beschriebenen Datenspeichervorrichtungen, wie z. B. der Datenspeichervorrichtung 104 von 1,
die Ausführung
der diesen Komponenten zugewiesenen besonderen Funktionen zu ermöglichen. Zum
Beispiel können
die Host-Schnittstelle 110 und/oder der Controller 120 von 1 physikalische Komponenten
darstellen, wie z. B. Controller, Zustandsmaschinen, Logikschaltungen
oder andere Strukturen, um der Datenspeichervorrichtung 104 zu ermöglichen,
Datenanfragen von einer Host-Vorrichtung
oder von anderen externen Vorrichtungen zur Finalisierung eines
Halbleiterspeichers der Datenspeichervorrichtung 104 zu
empfangen und darauf zu reagieren bzw. zu antworten.
-
Zum
Beispiel kann der Controller 120 von 1 unter
Verwendung eines Mikroprozessors oder Mikrocontrollers implementiert
sein, welcher dazu programmiert ist, auf den Finalisierungsbefehl 103 zu reagieren,
indem er einen Finalisiert-Wert in den Statusindikator 128 schreibt
und verhindert, dass nachfolgende Datenschreibbefehle oder Löschbefehle
an dem Halbleiterspeicher 130 ausgeführt werden. Bei einem Ausführungsbeispiel
beinhaltet der Controller 120 von 1 ausführbare Befehle,
welche von einem Prozessor ausgeführt werden, und die Befehle können in
dem Halbleiterspeicher 130 gespeichert sein. Alternativ
oder zusätzlich
können
ausführbare Befehle,
welche von dem Prozessor ausgeführt
werden, an einer separaten Speicherstelle abgelegt sein, welche
nicht Teil des Halbleiterspeichers 130 ist, wie z. B. in
einen (nicht darge stellten) Nur-Lese-Speicher (ROM) bei oder in
dem Controller 120.
-
Bei
einem Ausführungsbeispiel
kann die Datenspeichervorrichtung 104 eine tragbare Vorrichtung
sein, welche dazu ausgestaltet ist, selektiv mit einer oder mehreren
externen Vorrichtungen gekoppelt zu werden. Jedoch kann bei weiteren
Ausführungsbeispielen
die Datenspeichervorrichtung auch innerhalb einer oder mehrerer
Host-Vorrichtungen angebracht oder eingebettet sein, wie z. B. innerhalb eines
Gehäuses
einer tragbaren Kommunikationsvorrichtung. Zum Beispiel kann die
Datenspeichervorrichtung sich innerhalb eines geschlossenen Geräts befinden,
wie z. B. innerhalb eines drahtlosen Telefons, eines persönlichen
digitalen Assistenten (PDA), eines Spielgeräts oder einer Spielkonsole,
eines tragbaren Navigationsgeräts
oder einer anderen Vorrichtung, welches einen internen nicht flüchtigen Speicher
verwendet. Bei einem Ausführungsbeispiel beinhaltet
die Datenspeichervorrichtung 104 einen nicht flüchtigen
Speicher, wie z. B. einen Flash-Speicher, z. B. NAND-Flash-Speicher,
NOR-Flash-Speicher, MLC-Flash-Speicher
(MLC: Multi-Level Cell), DINOR-Flash-Speicher (DINOR: Divided Bit-Line NOR),
AND-Flash-Speicher, HiCR-Flash-Speicher (HiCR:
High Capacitive Coupling Ratio), ACT-Flash-Speicher (ACT: Asymmetrical Contactive Transistor)
oder andere Flash-Speicher, einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM),
einen elektrisch löschbaren
programmierbaren Nur-Lese-Speicher (EEPROM), einen Nur-Lese-Speicher
(ROM), einen einmal programmierbaren Speicher (OTP-Speicher) oder
einen beliebigen anderen Speichertyp.
-
Die
Darstellungen der hierin beschriebenen Ausführungsbeispiele sind dazu gedacht,
ein allgemeines Verständnis
der Struktur der verschiedenen Ausführungsbeispiele zu ermöglichen.
Die Darstellungen sollen nicht als eine vollständige Beschreibung aller Elemente
und Merkmale von Geräten
und Systemen, welche die hierin beschriebenen Strukturen oder Verfahren
nutzen, dienen. Viele weitere Ausführungsbeispiele können denjenigen
mit Kenntnissen der Technik anhand der Beschreibung ersichtlich
sein. Weitere Ausführungsbeispiele
können
genutzt werden und aus der Beschreibung abgeleitet werden, wie z.
B. durch strukturelle oder logische Ersetzungen oder Änderungen,
welche vorgenommen werden können,
ohne vom offenbarten Rahmen der Erfindung abzuweichen. Obwohl hierin
spezielle Ausführungsbeispiele
beschrieben und dargestellt wurden, versteht es sich, dass eine
spätere
Anordnung, welche dazu ausgestaltet ist, den gleichen oder einen ähnlichen
Zweck zu erfüllen,
anstelle der speziellen dargestellten Ausführungsbeispiele verwendet werden
kann. Diese Beschreibung ist dazu gedacht, jegliche und zukünftige Anpassungen
oder Variationen von verschiedenen Ausführungsbeispielen abzudecken.
Kombinationen der obigen Ausführungsbeispiele
oder andere hierin nicht speziell beschriebene Ausführungsbeispiele
werden denjenigen mit Kenntnissen der Technik anhand der Beschreibung
ersichtlich sein. Folglich sind die Beschreibung und die Figuren
als veranschaulichend und nicht einschränkend anzusehen.
-
In
der vorangegangen detaillierten Beschreibung können verschiedene Merkmale
zur Vereinfachung der Beschreibung zusammengruppiert oder in einem
einzigen Ausführungsbeispiel
beschrieben sein. Es versteht sich jedoch, dass die hierin beschriebenen
erfinderischen Konzepte nicht notwendigerweise alle die beschriebenen
Merkmale erfordern.