-
QUERVERWEIS AUF ZUGEHÖRIGE ANMELDUNGEN
-
Die vorliegende Anmeldung basiert auf der am 19. Juni 2014 eingereichten japanischen Patentanmeldung mit der Nummer
2014-126658 auf deren Offenbarung vollinhaltlich Bezug genommen wird.
-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung betrifft eine Speichervorrichtung mit einem Flash-Speicher.
-
HINTERGRUND
-
Ein Flash-Speicher wird in Kommunikationsinstrumenten, AV(audiovisuellen)-Instrumenten und anderen Instrumenten in unterschiedlichen Gebieten verwendet. Daten in einem Flash-Speicher werden in Blockeinheiten gelöscht, was eine Gruppe von mehreren Speicherzellen ist. In manchen Fällen können sich demnach eine Schreibeinheitgröße und eine Löscheinheitgröße voneinander unterscheiden. Beispielsweise wird ein Schreiben in Einheiten eines Blocks, der mehrere Bytes aufweist, ausgeführt, während ein Löschen in Einheiten eines Blocks ausgeführt wird, der mehrere zehn Bytes bis mehrere Kilobytes aufweist.
-
Aufgrund einer Eigenschaft, dass ein Flash-Speicher nicht überschrieben werden kann, werden Daten zusätzlich in einen Block auf sequenzielle Weise für Datenverwaltungszwecke geschrieben. In so einem Fall, wenn beispielsweise ein Block als ein Ergebnis wiederholten zusätzlichen Beschreibens des Blocks gefüllt ist, wird ein nicht belegter Block (ein leerer Block) durch Löschen von Daten von einem Block außer dem gefüllten Block zum Zweck des Kopierens valider Daten vorbereitet (diese Verarbeitung wird nachfolgend als die Umorganisierungsverarbeitung bezeichnet).
-
Während der Ausführung der Umorganisierungsverarbeitung werden eine Datenlöschverarbeitung und eine Kopierverarbeitung intensiv bezüglich der Blöcke ausgeführt. Eine Verarbeitungslast für das gesamte Speichersystem, das einen Flash-Speicher aufweist, kann zunehmen. Somit ist es wahrscheinlich, dass Zugriff auf Daten während der Umorganisierungsverarbeitung blockiert wird.
-
Eine vorhergehend beispielsweise in Patentdokument 1 vorgeschlagene Speichervorrichtung führt die Umorganisierungsverarbeitung in einem Bereitschaftszustand aus, in dem kein Zugriff geschieht. Wird auf Daten während der Umorganisierungsverarbeitung zugegriffen, unterbricht die Speichervorrichtung die Umorganisierungsverarbeitung und nimmt dann die Umorganisierungsverarbeitung ausgehend von der Beendigung des Zugriffs auf. Auf diese Weise reduziert die Speichervorrichtung die Möglichkeit eines Zugriffs auf Daten, die während der Umorganisierungsverarbeitung blockiert werden.
-
Die Erfinder der vorliegenden Anmeldung haben das Folgende herausgefunden. Die Speichervorrichtung, die in Patentdokument 1 vorgeschlagen wird, muss die Umorganisierungsverarbeitung selbst ausführen. Demnach, wenn eine Zeitperiode, in der eine Verarbeitungslast aufgrund der Umorganisierungsverarbeitung zunimmt, länger wird, kann sich eine Gesamtsystemleistung verschlechtern.
-
LITERATUR DES STANDS DER TECHNIK
-
PATENTLITERATUR
-
- Patentdokument 1: JP 5162846 B2
-
ÜBERBLICK ÜBER DIE ERFINDUNG
-
Es ist eine Aufgabe der vorliegenden Offenbarung eine Speichervorrichtung, eine Flash-Speicher-Steuervorrichtung und ein Programm bereitzustellen, die eine Zunahme einer Verarbeitungslast unterdrücken können.
-
Gemäß einem Aspekt der vorliegenden Offenbarung beinhaltet eine Speichervorrichtung: einen Flash-Speicher, der mehrere Blöcke beinhaltet, wobei ein Löschen von Daten in Blockeinheiten und ein Schreiben von Daten in Einheiten kleiner als der Block ausgeführt wird; und einen Steuerabschnitt, der die in dem Block geschriebenen Daten liest und die Daten in den Block schreibt.
-
Der Flash-Speicher in der Speichervorrichtung beinhaltet mindestens einen Blocksatz, der n Stücke der Blöcke einschließlich BR1–BRN aufweist (n ist eine Ganzzahl größer oder gleich 2).
-
Ein Schreibdatum und ein Schreib-Flag können in jeden der Blöcke BRi geschrieben werden können, die in dem Blocksatz beinhaltet sind (i ist eine Ganzzahl zwischen 1 und n). Die Schreibdaten werden gemäß einer Anfrage von einer Hostvorrichtung geschrieben. Das Schreib-Flag gibt an, dass die Schreibdaten in einen Zielblock BRj geschrieben wurden, der jedem der Blöcke BRi des Blocksatzes vorab zugeordnet ist (j ist eine Ganzzahl von 1 bis n und nicht i und variiert bezüglich einem Wert von i).
-
Gemäß einer Schreibanfrage neuer Schreibdaten von der Hostvorrichtung führt der Steuerabschnitt eine Löschverarbeitung, eine erste Schreibverarbeitung und eine zweite Schreibverarbeitung aus. Die Löschverarbeitung löscht die Daten einschließlich der Schreibdaten und des Schreib-Flags, die in einem Block BRl geschrieben sind (I ist eine Ganzzahl von 1 bis n), der Block BRl ist als der Block festgelegt, in den Schreibdaten nachfolgend auf einen Block BRk zu schreiben sind (k ist eine Ganzzahl von 1 bis n), der Block BRk ist der Block, in den die Schreibdaten als Letztes geschrieben wurden, unter den Blöcken, die in dem Blocksatz beinhaltet sind. Die erste Schreibverarbeitung schreibt die neuen Schreibdaten in den Block BRl. Die zweite Schreibverarbeitung schreibt das Schreib-Flag in einen Block BRm, für den der Block BRl als der Zielblock zugeordnet ist.
-
Bei Empfang einer Schreibanfrage von der Hostvorrichtung löscht die Speichervorrichtung Daten, die in einem Block in einem Blocksatz geschrieben sind, die am frühesten geschrieben wurden, und schreibt dann neue Schreibdaten in den Block.
-
Welcher Block zu löschen oder zu beschreiben ist, kann durch Überprüfen eines Schreib-Flags jedes Blocks bestätigt werden, das ein Bestandteil eines Blocksatzes ist. Der Grund ist, dass Bedingungen, unter denen Schreib-Flags in dem Blocksatz geschrieben sind, sich abhängig davon ändern, welcher Block als Letztes beschrieben wurde.
-
Demzufolge erfordert die Speichervorrichtung keine Kopierverarbeitung, die während einer Umorganisierungsverarbeitung auszuführen ist. Es kann möglich sein, eine Verarbeitungslastzunahme, die durch die Umorganisierungsverarbeitung verursacht wird, zu unterdrücken, das heißt, das Auftreten eines Overheads zu unterdrücken. Es kann möglich sein, eine Verschlechterung einer Gesamtsystemleistung und eine Verzögerung bei einer Antwort auf einen Datenzugriff zu unterdrücken, die durch das Auftreten des Overheads verursacht werden.
-
Gemäß einem weiteren Aspekt der vorliegenden Erfindung beinhaltet eine Flash-Speicher-Steuervorrichtung: einen Steuerabschnitt, der Daten, die in einem Block mehrerer Blöcke, die in einem Flash-Speicher beinhaltet sind, liest und den Block mit Daten beschreibt, wobei ein Löschen der Daten in Blockeinheiten ausgeführt wird und ein Schreiben der Daten in Einheiten ausgeführt wird, die kleiner als der Block sind; und einen Festlegungsabschnitt, der mindestens einen Blocksatz beinhaltet, der n Stücke der Blöcke BR1–BRn aufweist, die in den Flash-Speicher beinhaltet sind (n ist eine Ganzzahl größer gleich 2).
-
Der Steuerabschnitt führt eine erste Schreibverarbeitung und eine zweite Schreibverarbeitung aus. Die erste Schreibverarbeitung schreibt Schreibdaten, die in einen Block BRi zu schreiben sind, der in dem Blocksatz beinhaltet ist, gemäß einer Anfrage von einer Hostvorrichtung (i ist eine Ganzzahl von 1 bis n). Die zweite Schreibverarbeitung schreibt ein Schreib-Flag, um dem Block BRi anzugeben, dass ein Schreiben der Schreibdaten in einen Zielblock BRj ausgeführt wurde, der dem Block BRi, der in dem Blocksatz beinhaltet ist, vorab zugeordnet ist (j ist eine Ganzzahl von 1 bis n ist und nicht i und variiert mit einem Wert von i).
-
Gemäß einer Schreibanfrage neuer Schreibdaten von der Hostvorrichtung führt der Steuerabschnitt eine Löschverarbeitung, die erste Schreibverarbeitung und die zweite Schreibverarbeitung aus. Die Löschverarbeitung löscht die Daten einschließlich der Schreibdaten und des Schreib-Flags, die in einem Block BRl geschrieben sind (I ist eine Ganzzahl von 1 bis n), wobei der Block BRl als ein Block festgelegt ist, in den die Schreibdaten nachfolgend auf einen Block BRk zu schreiben sind (k ist eine Ganzzahl von 1 bis n), der Block BRk ein Block, in den die Schreibdaten als Letztes geschrieben wurden, unter den Blöcken, die in dem Blocksatz beinhaltet sind. Die erste Schreibverarbeitung wird bezüglich des Blocks BRl ausgeführt. Die zweite Schreibverarbeitung wird bezüglich des Blocks BRm ausgeführt, für den der Block BRl als der Zielblock zugeordnet ist.
-
Wie im Fall der Speichervorrichtung erfordert die Flash-Speicher-Steuervorrichtung keine Kopierverarbeitung, die während einer Umorganisierungsverarbeitung auszuführen ist. Es kann möglich sein, eine Verarbeitungslastzunahme, die durch die Umorganisierungsverarbeitung verursacht wird, zu unterdrücken, das heißt, das Auftreten eines Overheads unterdrücken. Somit kann es möglich sein, eine Verschlechterung einer Gesamtsystemleistung und eine Verzögerung bei einer Antwort auf einen Datenzugriff zu unterdrücken, die durch das Auftreten des Overheads verursacht werden.
-
Gemäß einem weiteren Aspekt der vorliegenden Offenbarung wird ein Programm bereitgestellt, das einem Computer ermöglicht, als ein Steuerabschnitt und Festlegungsabschnitt für die Flash-Speicher-Steuervorrichtung zu funktionieren.
-
Gemäß dem Programm kann es für den Computer möglich sein, als die Flash-Speicher-Steuervorrichtung zu funktionieren.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die vorstehenden und weiteren Aspekte, Merkmale und Vorteile der vorliegenden Offenbarung werden aus der nachfolgenden detaillierten Beschreibung in Zusammenschau mit den Zeichnungen ersichtlicher.
-
Es zeigen:
-
1 ein Blockschaltbild, das eine Gesamtkonfiguration einer Speichervorrichtung illustriert;
-
2 ein schematisches Diagramm, das illustriert, wie Schreibsteuerung für einen Flash-Speicher ausgeführt wird;
-
3 ein schematisches Diagramm, das einen Speicherbereich eines Blocks illustriert;
-
4 ein Ablaufdiagramm, das eine Sequenz einer Datenschreibverarbeitung illustriert;
-
5 ein schematisches Diagramm, das eine Sequenz von Datenschreiben in einem Blocksatz illustriert;
-
6 ein schematisches Diagramm, das eine Sequenz von Datenschreiben in einem Blocksatz illustriert;
-
7 ein Ablaufdiagramm, das eine Sequenz einer Datenwiederherstellungsverarbeitung illustriert;
-
8A ein schematisches Diagramm, das eine Sequenz von Datenwiederherstellung in einem Blocksatz illustriert;
-
8B ein schematisches Diagramm, das eine Sequenz von Datenwiederherstellung in einem Blocksatz illustriert;
-
9 ein Diagramm, das Statuskombinationen einzelner Blöcke und Prozeduren, die in der Datenwiederherstellungsverarbeitung ausgeführt werden, illustriert;
-
10 ein schematisches Diagramm, das eine Sequenz von Datenschreiben in einem Blocksatz in einem modifizierten Beispiel illustriert.
-
BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Ausführungsformen der vorliegenden Offenbarung werden mit Bezug auf die Zeichnungen geschrieben.
-
(Ausführungsform)
-
(1) Gesamtkonfiguration
-
1 ist ein Blockschaltbild, das eine Gesamtkonfiguration einer Speichervorrichtung 1 mit einem Flash-Speicher illustriert. Die Speichervorrichtung 1 beinhaltet eine CPU 11, ein RAM 13, ein ROM 15, einen Flash-Controller 17 und eine Eingabe-/Ausgabeschnittstelle (I/O) 19 und einen Flash-Speicher 21. Die Speichervorrichtung 1 überträgt und empfängt Daten durch einen internen BUS 23. Eine Energieversorgung 25 versorgt die vorstehenden Komponenten mit elektrischer Energie.
-
Die Speichervorrichtung 1 konfiguriert einen Teil eines Informationsverarbeitungssystems, das in einem Fahrzeug zur Verwendung angebracht ist. In Antwort auf eine Zugriffs (Schreiben oder Lesen von Daten)-Anfrage von einer Tür-ECU eines Fahrzeugs, die ein Beispiel einer Hostvorrichtung 3 ist, erlangt die Speichervorrichtung 1 Daten, die die Anzahl von Türöffnungen/-schließungen von der Tür-ECU angeben, und speichert die erlangten Daten. Es ist zu beachten, dass unterschiedliche andere ECUs des Fahrzeugs als die Hostvorrichtung 3 verwendet werden können. Offensichtlich muss die Speichervorrichtung 1 nicht in einem Fahrzeug zur Verwendung angebracht sein. Unterschiedliche Informationsverarbeitungsvorrichtungen außer der fahrzeuggebundenen Vorrichtung können als die Eigenvorrichtung 3 verwendet werden.
-
Die CPU 11 stellt integrierte Steuerung der Speichervorrichtung 1 gemäß mehreren Programmen 15a (ein Flashtreibersoftwareprogramm und mehrere Anwendungssoftwareprogramme) bereit, die in dem ROM 15 gespeichert sind. Gemäß einer Zugriffsanfrage von der Hostvorrichtung 3 bezüglich des Flash-Speichers 21 steuert die CPU 11 ein Datenschreiben in den Flash-Speicher 21 und ein Datenlesen von dem Flash-Speicher 21.
-
Der Einfachheit halber werden Daten, die in den Flash-Speicher 21 gemäß einer Anfrage von der Hostvorrichtung 3 geschrieben werden, als Schreibdaten bezeichnet. Die Schreibdaten können gemäß einer Anfrage von der Hostvorrichtung 3 gelesen werden. Eine Hostvorrichtung, die eine Anfrage für ein Schreiben tätigt, muss nicht identisch zu einer Hostvorrichtung sein, die eine Anfrage für ein Lesen tätigt.
-
Das RAM 13 ist ein Arbeitsbereich, der durch die CPU 11 verwendet wird. Das RAM 13 funktioniert ebenso als ein Puffer, der temporär Schreibdaten, die von dem Flash-Speicher 21 gelesen werden, und Schreibdaten, die in den Flash-Speicher 21 zu schreiben sind, speichert.
-
Der Flash-Controller 17 führt beispielsweise eine Schreibverarbeitung, eine Leseverarbeitung oder eine Löschverarbeitung bezüglich des Flash-Speichers 21 basierend auf einer Anweisung von der CPU 11 aus.
-
Der Flash-Speicher 21 hat 1.024 Blöcke 31, die jeweils eine minimale Löscheinheit repräsentieren.
-
Jeder der Blöcke 31 ist ein relativ kleiner Block, der durch 32 Bytes ausgebildet ist. Eine minimale Datenspeichereinheit für zusätzliches Schreiben ist zwei Byte. Da die Anzahl von Blöcken 1.024 ist, ist der gesamte Speicherbereich 32 Kilobyte groß. Im Übrigen sind die Speicherkapazität und Schreibgröße der Blöcke 31 und die Anzahl von Blöcken 31, die in dem Flash-Speicher 21 beinhaltet sind, nicht auf das Vorstehende beschränkt.
-
Ein Verfahren einer Schreibsteuerung, die für den Flash-Speicher 21 der vorliegenden Ausführungsform ausgeführt wird, wird gemäß 2 beschrieben. 2 illustriert schematisch die Blöcke 31.
-
Der Flash-Speicher 21 beinhaltet mehrere Blocksätze 37, von denen jeder drei Blöcke 31 (BR1–BR3, einschließlich BR1, BR2 und BR3) beinhaltet. Die Blöcke BR1–BR3 sind so gekennzeichnet, um die Blöcke 31 in einem Blocksatz 37 zu identifizieren. Die mehreren Blocksätze 37 beinhalten jeweils Blöcke BR1–BR3.
-
Jeder Block BRi (i ist eine Ganzzahl von 1 bis 3) in einem Blocksatz 37 beinhaltet einen Datenabschnitt 33 und einen Flag-Abschnitt 35. Der Datenabschnitt 33 ist ein Speicherbereich, in den die Schreibdaten geschrieben werden können. Der Flag-Abschnitt 35 ist ein Speicherbereich, in den ein Schreib-Flag und ein Löschen-in-Verarbeitung-Flag geschrieben werden kann.
-
Das Schreib-Flag gibt an, das Schreiben von Schreibdaten in einem Zielblock BRj (j ist eine Ganzzahl, die durch Addieren von 1 zum Rest erlangt wird, der durch Teilen von i durch 3 erlangt wird) ausgeführt wurde, der vorab einen Block BRi zugeordnet ist, der in einem Blocksatz 37 beinhaltet ist. Das Löschen-in-Verarbeitung-Flag gibt an, dass eine Löschverarbeitung zum Löschen von Daten gestartet wurde, die in dem Zielblock BRl geschrieben sind (kann nachfolgend einfach als ein Zielblock bezeichnet werden). Das Schreib-Flag und das Löschen-in-Verarbeitung-Flag können nachfolgend als ein Verwaltungs-Flag bezeichnet werden.
-
Bezüglich des Zielblocks BRj ist j eine Ganzzahl von 1 bis n und ist nicht i. Dies kennzeichnet, dass Blöcke in einem Blocksatz jeweils als ein Zielblock für einen anderen Block in dem Blocksatz zugeordnet sind.
-
Bei einem spezifischen Beispiel eines Zielblocks kann die Variable j eine Ganzzahl sein, die durch Addieren von 1 zu dem Rest erlangt wird, der durch Teilen von i + a durch n erlangt wird. Im Übrigen ist a eine Ganzzahl von 0 bis n–2. In anderen Worten ist a eine Ganzzahl zwischen 0 und n–2 oder ist eine Ganzzahl nicht kleiner als 0 und nicht größer als n–2.
-
In der vorliegenden Ausführungsform wird die Beziehung zwischen den Blöcken durch Verwenden von Variablen wie beispielsweise i, j, k, l, m, p und q erläutert. Jedoch werden numerische Werte selbst zu Erläuterungszwecken verwendet. Es ist alles richtig, sofern die einzelnen Blöcke im Wesentlichen unter Verwendung der vorstehenden Variablen erläutert werden.
-
Informationen über einen Zielblock BRj, der durch ein Verwaltungs-Flag angegeben ist, das in einem Block BRi geschrieben ist, werden beschrieben.
-
Wie durch Pfeile für einen Blocksatz 37, der IDx aufweist, angegeben ist, der in 2 illustriert ist, repräsentiert ein Verwaltungs-Flag, das in dem Flag-Abschnitt 35 eines Blocks BRi geschrieben ist, Informationen bezüglich eines Zielblocks (in anderen Worten überwacht das Verwaltungs-Flag, das in dem Fleckabschnitt 35 eines Blocks BRi geschrieben ist, den Status des Zielblocks BRj). Das Verwaltungs-Flag, das Informationen bezüglich eines spezifischen Typblocks BRj angibt, kann in dem Block BRi geschrieben sein. Dieses Schema ist geplant, so dass sequentielle Rotation zyklisch ausgeführt wird.
-
Wie in 3 illustriert ist, beinhaltet der Block 31 einen Datenbereich als den Flag-Abschnitt 35, in dem das Schreib-Flag (F) und das Löschen-in-Verarbeitung-Flag (M) zu schreiben sind. Informationen bezüglich Schreibdaten in einem Zielblock sind durch eine Kombination der vorstehenden Flags (des Schreib-Flags und des Löschen-in-Verarbeitung-Flags) angegeben. Der Block 31 kann als eine Eigenschaft nicht umgeschrieben werden. Demnach Ist es unmöglich nur die Flags zu aktualisieren. Jeder Block ist eine minimale Löscheinheit. Demnach löscht Löschen von Daten, die in einem Block gespeichert sind, ebenso das Flag.
-
Die Informationen, die durch ein Verwaltungs-Flag angegeben sind, können drei unterschiedliche Zustände repräsentieren: einen Anfangszustand, einen Löschen-in-Verarbeitung-Zustand und einen „Geschrieben”-Zustand. Der Anfangszustand (kann nachfolgend durch „-” angegeben sein), ist ein Zustand, in dem kein Verwaltungs-Flag geschrieben ist. Der Löschen-in-Verarbeitung-Zustand ist ein Zustand, in dem eine Zielblocklöschverarbeitung gestartet ist, aber Schreiben von Schreibdaten noch nicht vervollständigt ist. Der Geschrieben-Zustand ist ein Zustand, in dem das Schreiben der Schreibdaten in einen Zielblock abgeschlossen ist.
-
Insbesondere, wenn M = leer und F = leer (der Ausdruck „leer” ist ein Anfangswert in einem Zustand, in dem ein Blocklöschen durch den Flash-Controller 17 ausgeführt wird) gilt, gilt der „-”-Zustand. In einer Situation, in der nur das Löschen-in-Verarbeitung-Flag (M) geschrieben ist, das heißt, wenn M = nicht leer und F = leer gilt, gilt der Löschen-in-Verarbeitung-Zustand.
-
In einer Situation, in der das Löschen-in-Verarbeitung-Flag (M) und das Schreib-Flag (F) beide geschrieben sind, das heißt, wenn M = nicht leer und F = nicht leer gilt, gilt der Geschrieben-Zustand. Es ist zu beachten, dass ein Verwaltungs-Flag durch mindestens eine Schreibeinheit jeweils aus M und F, das heißt, eine Gesamtheit von vier Bytes (zwei Bytes + zwei Bytes) angegeben sein kann.
-
Gemäß 2 wird jeder Blocksatz 37 mit einer ID versehen. Drei Blöcke 31, die einem Blocksatz 37 beinhaltet sind, sind mit der ID verknüpft. In 2 existieren beispielsweise Blocksätze 37 mit einer ID1 bis IDx. Jeder Blocksatz 37 beinhaltet drei Blöcke 31.
-
Drei Blöcke 31 existieren in einem Blocksatz 37. Demnach existieren ebenso drei Datenabschnitte 33. Die Hostvorrichtung 3 handhabt einen Blocksatz 37 als einen Speicherbereich, in dem Schreibdaten die gleiche Größe wie ein Block 31 haben, geschrieben werden können. Basierend auf ID-Informationen, die in einer Schreib- oder Leseanfrage von der Hostvorrichtung 3 beinhaltet sind, identifiziert die CPU 11 einen Blocksatz 37 und führt dann ein Schreiben von Schreibdaten oder Lesen von Schreibdaten bezüglich einem der Blöcke 31 in dem Blocksatz 37 aus.
-
Eine Konversationstabelle (nicht dargestellt) speichert die Beziehung zwischen Identifikationsinformationen bezüglich jedes Blocks 31 (ID-Informationen über einen Blocksatz 37, zu dem jeder Block 31 gehört und Informationen zum Identifizieren jedes Blocks in dem Blocksatz) und der physikalischen Adresse jedes Blocks 31. Die Beziehung zwischen den Identifikationsinformationen und der physikalischen Adresse können abhängig von beispielsweise dem Status von Blöcken variabel sein.
-
(2) Durch CPU 11 ausgeführte Verarbeitung
-
(2.1) Datenschreibverarbeitung
-
Eine Sequenz einer Datenschreibverarbeitung, die durch die CPU 11 zum Schreiben von Daten in einen Blocksatz 37 ausgeführt wird, wird mit Bezug auf das Ablaufdiagramm von 4 beschrieben.
-
Bei S1 bestimmt die CPU 11, ob eine Aktualisierungsanfrage erzeugt wird. Insbesondere, wenn die CPU 11 eine Datenschreibanfrage von der Hostvorrichtung 3 empfängt, das heißt, wenn ein Schreibzugriff getätigt wird, bestimmt die CPU 11, dass eine Aktualisierungsanfrage erzeugt wird.
-
Bei S2 sucht die CPU 11 nach einem Blocksatz 37, der mit einer ID (beispielsweise IDx) der bei S1 erzeugten Aktualisierungsanfrage verknüpft ist. Da ID-Informationen in einem Datenschreibanfragebefehl von der Hostvorrichtung 3 beinhaltet sind, sucht die CPU 11 nach einem Blocksatz 37 mit einer ID, die durch die ID-Informationen angegeben ist. Alternativ kann der Befehl ohne die ID-Informationen ausgebildet werden. In so einem alternativen Fall kann die CPU 11 nach einem Blocksatz mit einer vorbestimmten ID auf der Basis des Typs einer Schreibanfrage suchen (der Typ der Hostvorrichtung oder der Typ von Schreibdaten).
-
Bei S3 identifiziert die CPU 11 einen Block 31, der am frühesten in den Blocksatz 37, der bei S2 abgerufen wird, aktualisiert wurde. Ein am frühesten aktualisierter Block, das heißt ein Block, in den die Schreibdaten am Frühesten geschrieben wurden, kann durch Überprüfen der Verwaltungs-Flags, die in all den Blöcken 31 geschrieben sind, die in dem Blocksatz 37 beinhaltet sind, identifiziert werden.
-
In 5 und 6 illustriert ein Zustand (i) einen normalen Zustand, in dem keine Aktualisierungsanfrage erzeugt wird, und Zustände (ii) bis (vi) illustrieren eine Änderung gemäß einem Ablauf einer Zeit ausgehend von dem Zustand (i). Zeichnungen, die durch die gleichen Bezugszeichen (i)–(vi) in 5 und 6 gekennzeichnet sind, repräsentieren die gleichen Zustände. In den Zeichnungen geben schattierte Abschnitte an, dass Daten vorliegen, und weiße Abschnitte geben an, dass keine Daten vorliegen.
-
In dem Zustand (i) von 5 geben Verwaltungs-Flags, die in die Blöcke BR1 und BR2 geschrieben sind, den „Geschrieben”-Zustand an und das Verwaltungs-Flag, das in dem Block BR3 geschrieben ist, gibt den „-”-Zustand an. Ein Block mit dem Verwaltungs-Flag, das „-” angibt, ist ein Block, der am Letzten aktualisiert wurde, das heißt, ein Block, in den Schreibdaten als Letztes geschrieben wurden. Der Block BR1, der turnusgemäß auf den Block BR3 folgt, der als Letztes aktualisiert wurde, ist ein Block, der am Frühesten (das heißt ein Block, in dem ein Schreiben von Schreibdaten folgend auf den Block BR3 auszuführen ist) aktualisiert wurde. Der Grund, warum die vorstehende Bestimmung getätigt werden kann, wird später beschrieben.
-
Zur Erläuterung werden die nachfolgenden Verarbeitungsschritte mit Bezug auf die in 5 und 6 illustrierten Zustände beschrieben.
-
Bei S4 wird das Verwaltungs-Flag, das in dem Block BR2 geschrieben ist, zu Löschen-in-Verarbeitung aktualisiert, wie in dem Zustand (ii) von 5 angegeben ist. Insbesondere wird das Löschen-in-Verarbeitung-Flag (M) wie in dem Zustand (ii) von 6 angegeben geschrieben, so dass M = nicht leer gilt.
-
Bei S5 werden Daten, die in dem Block BR1 gespeichert sind, gelöscht, wie in einem Zustand (ii) von 5 und 6 angegeben ist. Der Block BR1 ist ein Zielblock für das in dem Block BR3 geschriebene Verwaltungs-Flag. Da Schreibdaten und ein Verwaltungs-Flag in dem Block BR1 gespeichert sind, werden sie gelöscht.
-
Bei S6 werden Daten in den Block BR1 geschrieben. Insbesondere werden neue Schreibdaten geschrieben, wie in einem Zustand (iv) von 5 und 6 angegeben ist. Da kein Verwaltungs-Flag beziehungsweise da noch kein Verwaltungs-Flag geschrieben ist, wird eine „-” markierung angegeben.
-
Bei S7 wird das Verwaltungs-Flag, das in dem Block BR3 geschrieben ist, zu „geschrieben” aktualisiert, wie in einem Zustand (v) von 5 angegeben ist. Insbesondere wird das Schreib-Flag (F), wie in dem Zustand (v) von 6 angegeben ist, geschrieben, so dass F = nicht leer gilt.
-
Ausgehend von einer Vervollständigung der vorstehenden Schritte schließt die Datenschreibverarbeitung zum Schreiben von Daten in einen Blocksatz mit IDx ab. Wie vorstehend beschrieben ist, wenn Daten in dem Zustand (ii) gelöscht werden, wird das Verwaltungs-Flag des Blocks BR1 in den Anfangszustand („-”) versetzt. Dies ermöglicht es, zu bestimmen, dass der Block mit dem Verwaltungs-Flag, das „-” angibt, ein Block ist, in den neue Daten zuletzt beziehungsweise als Letztes geschrieben wurden. Ferner werden der Block BR1, der Block BR2, der Block BR3, der Block BR1 und so weiter turnusmäßig in der angegebenen Reihenfolge geschrieben. Demnach, wenn der Block BR1 als letztes aktualisiert wurde, kann bestimmt werden, dass der Block BR2 am Frühesten aktualisiert wurde.
-
In der nächsten Datenschreibverarbeitung werden Daten in den Block BR2 geschrieben. Ausgehend vom Abschluss der Datenschreibverarbeitung wird der Block BR2 in den Zustand (vi) versetzt.
-
Für richtige Datenverwaltung ist wichtig, dass die Verarbeitung zum Ändern des Verwaltungs-Flags bei S7 in „geschrieben”, nämlich das Schreiben des Schreib-Flags (F) normal abgeschlossen wird. Demnach ist es denkbar, dass möglicherweise ein Halteabschnitt zum Halten einer Spannung während der Schreibperiode des Schreib-Flags (F) enthalten ist. Beispielsweise kann ein Kondensator als der Halteabschnitt verwendet werden. Alternativ kann jedoch eine andere Einrichtung zu Spannungshaltezwecken verwendet werden.
-
Wenn beispielsweise kein Verwaltungs-Flag in irgendeinem Block 31 in einem Blocksatz 37, nachdem der Flash-Speicher 21 initialisiert ist, existiert, werden Daten in einem Block 31 gelöscht, um Schreibdaten in irgendeinen der Blöcke 31 zu schreiben. Zusätzlich wird ein Verwaltungs-Flag, das „geschrieben” angibt, in einen anderen Block 31 geschrieben. Dies stellt sicher, dass nur der Block 31, in den die Schreibdaten geschrieben sind, ein Block wird, der ein Verwaltungs-Flag aufweist, das „-” angibt. Demnach kann die vorstehend beschriebene Schreibverarbeitung ausgeführt werden, wenn die nächste Schreibanfrage erzeugt wird.
-
(2.2) Datenwiederherstellungsverarbeitung
-
Eine Sequenz einer Datenwiederherstellungsverarbeitung, die durch die CPU 11 ausgeführt wird, wird gemäß dem Ablaufdiagramm von 7 beschrieben. Die Datenwiederherstellungsverarbeitung startet zu einer Zeit, wenn eine Wiederherstellung von einem Energieverlust erreicht wird, das heißt, zu einer Zeit, wenn Energiezufuhr wieder eingeschaltet wird, um die Vorrichtung zu starten und der CPU 11 zu erlauben, die Datenwiederherstellungsverarbeitung auszuführen.
-
Bei S11 bestätigt die CPU 11 jedes der Verwaltungs-Flags der Blöcke 31 in den Blocksätzen 37, die mit allen IDs verknüpft sind.
-
Bei S12 wird bestimmt, ob ein Verwaltungs-Flag, das „Löschen-in-Verarbeitung” angibt, existiert oder nicht, basierend auf dem Ergebnis der Bestätigung bei S11. Wie vorstehend erwähnt ist, gibt das Verwaltungs-Flag „Löschen-in-Verarbeitung” in einem Fall an, wenn für das Löschen-in-Verarbeitung-Flag (M) = nicht leer gilt und für das Schreib-Flag (F) = leer gilt. Das heißt, S12 erfasst einen Block (einen Block, der Löschen-in-Verarbeitung angibt), in dem das Schreib-Flag nicht geschrieben ist, sondern das Löschen-in-Verarbeitung-Flag geschrieben ist. Existiert kein derartiges Verwaltungs-Flag (S12: Nein), das heißt, kein Block, der Löschen-in-Verarbeitung angibt, ist erfasst, endet die Datenwiederherstellungsverarbeitung ohne Ausführen irgendeines weiteren Verarbeitungsschrittes, da es denkbar ist, dass all die Blocksätze 37 in einem normalen Zustand sind.
-
Wenn im Gegensatz ein Verwaltungs-Flag, das Löschen-in-Verarbeitung angibt, bei S12 existiert (S12: Ja), das heißt, wenn der Block, der Löschen-in-Verarbeitung angibt, erfasst ist, werden S13 und Nachfolgende ausgeführt, da es denkbar ist, dass eine Datenschreibverarbeitung in einem Zustand (vii) bis zu einem Zustand (ix) von 8a unterbrochen wird. Die Zustände vii) bis ix) von 8a sind in dem gleichen Verwaltungs-Flag-Status wie die Zustände (ii) bis (iv) von 5 Zur Erläuterung werden die folgenden Verarbeitungsschritte mit Bezug auf die in 8a und 8b illustrierten Zustände beschrieben.
-
Bei S13 werden Daten in einem Zielblock BR1 wie in einem Zustand (x) von 8b illustriert gelöscht. Der Zielblock BR1 wird durch ein Verwaltungs-Flag überwacht, das in einem Block BR3 geschrieben ist und „Löschen-in-Verarbeitung” angibt.
-
Bei S14 wird Datenwiederherstellung erreicht, wie in einem Zustand (xi) von 8b illustriert ist. Die Datenwiederherstellung wird durch Beschreiben jüngster Daten des Blocksatzes 37 in dem Zielblock BR1 erreicht, von dem die Daten bei S13 gelöscht wurden. Im Übrigen sind die jüngsten bzw. letzten Daten, die Schreibdaten, die in dem Block BR3, in dem das Verwaltungs-Flag, das Löschen-in-Verarbeitung angibt, geschrieben ist, geschrieben sind.
-
Bei S15 wird das in dem Block BR3 geschriebene Verwaltungs-Flag zu „geschrieben” aktualisiert, wie in einem Zustand (xii) von 8b illustriert ist. Insbesondere wird das Schreib-Flag (F) in den Block BR3 geschrieben. Die Datenwiederherstellungsverarbeitung schließt dann ab.
-
Indessen, wenn bei S12 bestimmt wird, dass das Verwaltungs-Flag, das Löschen-in-Verarbeitung angibt, existiert, ist eine derartige Situation nicht auf in 8a und 8b illustrierte Fälle beschränkt, sondern kann durch eine in 9 dargestellte Tabelle repräsentiert sein. Hinsichtlich der Kombinationen von Zuständen, die in der Tabelle von 9 angegeben sind, repräsentiert F den „Geschrieben”-Zustand, in dem das Schreib-Flag (F) und das Löschen-in-Verarbeitung-Flag (B) beide geschrieben sind, und M repräsentiert den „Löschen-in-Verarbeitung”-Zustand, in dem nur das Löschen-in-Verarbeitung-Flag (M) geschrieben ist.
-
Bei Zustandsnummern 1, 5 und 9, die normale Zustände sind, wird die Datenwiederherstellungsverarbeitung nicht ausgeführt. In den anderen Zuständen, das heißt, in denen M existiert, werden S13 bis S15 ausgeführt, um Schreibdaten wiederherzustellen.
-
Bei Zustandsnummern 3, 7 und 11, existieren zwei M. Wie in 5 und 6 illustriert ist, kann ein Zustand, in denen zwei Verwaltungs-Flags, die Löschen-in-Verarbeitung angeben, existieren, nicht wahrscheinlich aus einer erwarteten Sequenz entstehen. Jedoch, wenn die Energiezufuhr unterbrochen wird, während ein Block 31 gelöscht wird, werden Daten instabil, so dass ein M-Zustand fälschlicherweise auftritt, wenn beispielsweise nur das Schreib-Flag (M) gelöscht wird. Demnach ist ein Zustand, in dem zwei M existieren, ebenso in der Tabelle angegeben.
-
(2.3) Datenleseverarbeitung
-
Wenn eine Datenleseanfrage von der Hostvorrichtung 3 empfangen wird, das heißt, wenn ein Lesezugriff getätigt wird, überprüft die CPU 11 die Verwaltungs-Flags, die in all die Blöcke 31 in einem Blocksatz 37, der durch die Datenleseanfrage gekennzeichnet ist, geschrieben sind, und erfasst einen Block, in dem das Schreib-Flag nicht geschrieben ist und das Verwaltungs-Flag den „-”-Zustand angibt. Die CPU 11 liest dann Schreibdaten, die in den erfassten Block geschrieben sind, und gibt die Schreibdaten an die Hostvorrichtung 3 aus.
-
Hierbei kann die Hostvorrichtung 3 ein Computersystem sein, das Fahrzeuginformationen beispielsweise von der Speichervorrichtung 1 erlangt. Nämlich muss die Hostvorrichtung 3, die eine Schreibanfrage für Schreibdaten an die Speichervorrichtung 1 abgibt, nicht identisch zur Hostvorrichtung 3 sein, die eine Schreibdatenleseanfrage bezüglich der Schreibdaten, die in dem Flash-Speicher 21 der Speichervorrichtung 1 geschrieben sind, abgibt.
-
(3) Vorteile
-
Die Speichervorrichtung 1 gemäß der vorliegenden Ausführungsform beinhaltet den Flash-Speicher 21 mit mehreren Blöcken 31, in denen Löschen von Daten in Einheiten eines Blocks ausgeführt wird und Schreiben von Daten in Einheiten ausgeführt wird, die kleiner als der Block sind. Die CPU 11 (entspricht einem Beispiel eines Steuerabschnitts) steuert den Flash-Controller 17, um Daten, die in den Blöcken 31 geschrieben sind, zu lesen und Daten in die Blöcke 31 zu schreiben.
-
Mindestens ein Blocksatz 37 in dem Flash-Speicher 21 festgelegt. Der Blocksatz 37 beinhaltet n Blöcke BR1 bis BRn (n = 3 in der vorliegenden Ausführungsform). Insbesondere legt die CPU (entspricht einem Beispiel eines Festlegungsabschnitts) die einzelnen Blöcke 31 als einen Blocksatz 37 auf der Basis der Konversationstabelle fest, die die Beziehung zwischen den Identifikationsinformationen über jeden Block 31 und der physikalischen Adresse jedes Blocks 31 angibt.
-
Schreibdaten, die die Daten sind, die gemäß einer Anfrage von der Hostvorrichtung 3 zu schreiben sind, und das Schreib-Flag, das angibt, dass die Schreibdaten in dem Zielblock BRj geschrieben sind (j ist eine Ganzzahl, die durch Addieren von 1 zum Rest erlangt wird, der durch Teilen von i durch n erlangt wird), kann in die Blöcke BRi (i ist eine Ganzzahl von 1 bis n) geschrieben werden, die in dem Blocksatz 37 beinhaltet sind.
-
Gemäß einer Schreibanfrage für neue Schreibdaten von der Hostvorrichtung 3 führt die CPU 11 eine Löschverarbeitung (S5), eine erste Schreibverarbeitung (S6) und eine zweite Schreibverarbeitung (S7) aus. Die Löschverarbeitung (S5) wird ausgeführt, um Daten einschließlich Schreibdaten und eines Schreib-Flags zu löschen, die in einem Block BRl geschrieben sind (l ist eine Ganzzahl von 1 bis n), der als der Block festgelegt ist, in den Schreibdaten nachfolgend auf einem Block BRk zu schreiben sind (k ist eine Ganzzahl von 1 bis n), der ein Block 31 ist, in den Schreibdaten als Letztes von den Blöcken geschrieben wurde, die in dem Blocksatz 37 beinhaltet sind. Die erste Schreibverarbeitung (S6) wird ausgeführt, um neue Schreibdaten in den Block BRl zu schreiben. Die zweite Schreibverarbeitung (S7) wird ausgeführt, um ein Schreib-Flag in einen Block BRm zu schreiben, für den der Block BRl als ein Zielblock zugeordnet ist.
-
In der vorliegenden Ausführungsform ist die Variable I des Blocks BRl insbesondere eine Ganzzahl, die durch Addieren von 1 zu dem Rest erlangt wird, der durch Teilen von k durch n erlangt wird.
-
Der Block BRn ist ein Block, für den der vorhergehend erwähnte „Block, der als Nächstes zu beschreiben ist” als ein Zielblock zugeordnet wird.
-
Wenn neue Schreibdaten in den Blocksatz 37 geschrieben werden, löscht die Speichervorrichtung 1 gemäß der vorliegenden Ausführungsform in einem Block 31 geschriebene Daten, der am frühesten von den Blöcken beschrieben wurde, die in dem Blocksatz 37 beinhaltet sind, und schreibt die neuen Schreibdaten in diesen Block 31.
-
Somit muss im Vergleich zu einer herkömmlichen Speichervorrichtung, die eine Kopierverarbeitung zum Kopieren von Daten in einen anderen Block während einer Umorganisierungsverarbeitung ausführen muss, die Speichervorrichtung 1 die Kopierverarbeitung während der Umorganisierungsverarbeitung nicht ausführen. Es kann möglich sein, eine Verarbeitungslastzunahme aufgrund der Umorganisierungsverarbeitung zu unterdrücken, das heißt, das Auftreten eines Overheads zu unterdrücken. Es kann möglich sein, die Degradierung der Gesamtsystemleistung zu unterdrücken und eine Verzögerung in Antwort auf Datenzugriff zu unterdrücken, die durch das Auftreten des Overheads verursacht werden.
-
Welcher Block zu löschen oder zu beschreiben ist, kann durch Überprüfung der Verwaltungs-Flags von den Blöcken bestätigt werden, die in dem Blocksatz 37 beinhaltet sind. In der vorliegenden Ausführungsform ist ein Block, der turnusmäßig auf einen Block folgt, in den kein Verwaltungs-Flag geschrieben ist, zu löschen und zu beschreiben.
-
Gemäß einer Datenleseanfrage von der Hostvorrichtung 3 führt die CPU 11 eine Leseverarbeitung zum Lesen von Schreibdaten aus, die einem Block BRk geschrieben sind, in dem Schreibdaten als Letztes geschrieben wurden. Demnach kann es möglich sein, die letzten beziehungsweise jüngsten Daten an die Hostvorrichtung 3 auszugeben.
-
Die Speichervorrichtung 1 gemäß der vorliegenden Ausführungsform kann das Löschen-in-Verarbeitung-Flag in jeden der Blöcke BRl, die in dem Blocksatz 37 beinhaltet sind, schreiben, um anzugeben, dass die Löschverarbeitung bezüglich des Zielblocks BRj gestartet ist.
-
Wenn eine Löschverarbeitung bezüglich des Blocks BRl gemäß einer Schreibanfrage neuer Schreibdaten von der Hostvorrichtung 3 gestartet wird, führt die CPU 11 eine dritte Schreibverarbeitung (S4) zum Schreiben des Löschen-in-Verarbeitung-Flags in den Block BRm aus, führt die Löschverarbeitung (S5) bezüglich des Blocks BRl nach der dritten Schreibverarbeitung aus, führt eine erste Schreibverarbeitung (S6) bezüglich des Blocks BRl nach der Löschverarbeitung aus und führt eine zweite Schreibverarbeitung (S7) bezüglich des Blocks BRm nach der ersten Schreibverarbeitung aus.
-
Somit kann es für die Speichervorrichtung 1 gemäß der vorliegenden Ausführungsform möglich sein, den Fortschritt einer Verarbeitung zu erkennen, die gemäß einer Schreibanfrage von der Hostvorrichtung ausgeführt wird, durch Überprüfen des Löschen-in-Verarbeitung-Flags und des Schreib-Flags. Insbesondere kann es, wenn nur das Löschen-in-Verarbeitung-Flag geschrieben ist, möglich sein, zu bestimmen, dass eine Schreibverarbeitung in Bearbeitung ist, und wenn das Löschen-in-Verarbeitung-Flag und das Schreib-Flag beide geschrieben sind, kann es möglich sein, zu bestimmen, dass eine Schreibverarbeitung abgeschlossen ist.
-
Wird bestimmt, während keine Schreibverarbeitung ausgeführt wird, dass eine Schreibverarbeitung in Bearbeitung ist, kann es möglich sein, dass eine Schreibverarbeitung möglicherweise nicht richtig abgeschlossen wird. In so einem Fall kann es möglich sein, die Anwesenheit möglicherweise abnormaler Daten durch Erfassen eines Blocks, in dem eine Schreibverarbeitung nicht richtig abgeschlossen ist, zu bestimmen.
-
Wird eine Energiezufuhr erneut eingeschaltet, erfasst die CPU 11 (entspricht einem Beispiel eines Erfassungsabschnitts) in der Speichervorrichtung 1 gemäß der vorliegenden Ausführungsform einen Block 31 (entspricht einem Beispiel eines Blocks, der Löschen-in-Verarbeitung angibt), in dem das Schreib-Flag nicht geschrieben, jedoch das Löschen-in-Verarbeitung-Flag geschrieben ist (S11, S12).
-
Wenn der Block, der der Block ist, der Löschen-in-Verarbeitung angibt, erfasst wird und der erfasste Block als ein Block BRp angenommen wird (p ist eine Ganzzahl von 1 bis 3), führt die CPU 11 eine Verarbeitung (S13) zum Löschen von Daten einschließlich Schreibdaten, Schreib-Flag und Löschen-in-Verarbeitung-Flag, die in einem Block BRq geschrieben sind, aus, der ein Zielblock für den Block BRP ist, schreibt Schreibdaten, die in einem Block geschrieben sind, der in einem Blocksatz beinhaltet ist und ein anderer als der Block BRq ist, in den Block BRq (S14) und führt eine zweite Schreibverarbeitung (S15) bezüglich des Blocks BRp aus. In der vorliegenden Ausführungsform werden die Schreibdaten, die in dem Block geschrieben sind, der Löschen-in-Verarbeitung angibt, das heißt, die letzten Schreibdaten in den Block BRq bei S14 geschrieben.
-
Wird Energiezufuhr erneut eingeschaltet, bestimmt die Speichervorrichtung 1 gemäß der vorliegenden Ausführungsform, ob ein Block, dessen Verwaltungs-Flag Löschen-in-Verarbeitung angibt, existiert. Existiert ein derartiger Block, bewegt die Speichervorrichtung 1 Schreibdaten, die einem Block geschrieben sind, in dem das Verwaltungs-Flag geschrieben ist, das Löschen-in-Verarbeitung angibt, zu einem Zielblock. Demzufolge kann es, sogar wenn eine Schreibverarbeitung aufgrund eines Energieverlustes unterbrochen wird, möglich sein zu verhindern, dass die Schreibdaten selbst verloren gehen, obwohl neue Schreibdaten, die durch die unterbrochene Schreibverarbeitung geschrieben werden, nicht erlangt werden können.
-
Ferner, da der vorstehend beziehungsweise die vorstehend beschriebene Verarbeitung ausgeführt wird, wenn die Energiezufuhr erneut eingeschaltet wird, ist die Wahrscheinlichkeit, dass abnormale Daten verwendet werden, gering. Dies stellt erhöhte Zuverlässigkeit bereit.
-
Bei S14 können Schreibdaten, die in einem Block außer dem Block BRq geschrieben sind (ein Block, der Löschen-in-Verarbeitung angibt) in den Block BRq geschrieben werden. Jedoch, wenn die Schreibdaten, die in dem Block BRp geschrieben sind, wie vorstehend erwähnt verwendet werden, kann es möglich sein, Schreibdaten, die später in dem Block BRq geschrieben werden, wiederherzustellen.
-
(Weitere Ausführungsformen)
-
Während eine Ausführungsform der vorliegenden Offenbarung vorstehend beschrieben wurde, ist die vorliegend Offenbarung nicht auf die vorstehend beschriebene Ausführungsform beschränkt. Die vorliegende Offenbarung kann in unterschiedlichen anderen Ausführungsformen implementiert sein, solange sie innerhalb den technischen Umfang der vorliegenden Offenbarung fallen.
-
In der Ausführungsform ist eine Konfiguration, dass der Blocksatz 37 drei Blöcke 31 beinhaltet, beispielhaft dargestellt. Der Blocksatz kann zwei oder mehr Blöcke beinhalten und die Anzahl von Blöcken, die in dem Blocksatz beinhaltet ist, ist nicht auf drei beschränkt.
-
Wenn der Blocksatz 37 zwei Blöcke 31 beinhaltet, wird die Unterbrechung einer Schreibverarbeitung mit niedrigerer Genauigkeit erfasst als wenn der Blocksatz 37 drei oder mehr Blöcke 31 beinhaltet. Der Grund wird nachfolgend beschrieben.
-
Wenn die Löschverarbeitung, die für den Zielblock BRl bei S5 ausgeführt wird, aufgrund beispielsweise eines Energieverlustes nachdem das Verwaltungs-Flag des Blocks BRk zu Löschen-in-Verarbeitung bei S4 von 4 aktualisiert ist, unterbrochen wird, wird möglicherweise nur das Schreib-Flag (F) des Blocks BRl gelöscht, ohne das Löschen-in-Verarbeitung-Flag (M) zu löschen. In so einem Fall gibt das Verwaltungs-Flag, das in den Block BRi geschrieben ist, Löschen-in-Verarbeitung an.
-
Wenn der Blocksatz 37 in dem vorstehenden Fall zwei Blöcke beinhaltet, gibt das Verwaltungs- beziehungsweise geben die Verwaltungs-Flags, die in den zwei Blöcken geschrieben sind, Löschen-in-Verarbeitung an. Somit ist es schwierig zu bestimmen, welcher Block normale Daten hat.
-
Wenn der Blocksatz 37 drei oder mehr Blöcke 31 beinhaltet, gibt das Verwaltungs-Flag mindestens eines Blocks 31 „geschrieben” an. Somit kann ein Block, dessen Verwaltungs-Flag sich von „geschrieben” zu Löschen-in-Verarbeitung ändert, wenn die Blöcke in einer turnusmäßigen Sequenz überprüft werden, als ein Block bestimmt werden, der letzte Daten speichert, die vor einer unterbrochenen Schreibverarbeitung erlangt werden beziehungsweise wurden.
-
In der vorstehend beschriebenen Ausführungsform wird angenommen, dass ein Schreib-Flag, das in den Blöcke BRl zu schreiben ist, die in einem Blocksatz 37 beinhaltet sind, angibt, dass ein Schreiben von Schreibdaten in einem Zielblock BRj ausgeführt wird (j ist eine Ganzzahl, die durch Addieren von 1 zu dem Rest erlangt wird, der durch Teilen von i durch n erlangt wird).
-
Jedoch ist der Zielblock BRj nicht auf die vorstehende Regel beschränkt. Alternativ kann j eine Ganzzahl von 1 bis n sein, ist anders als i und variiert mit dem Wert I. Wird dieses Schema eingesetzt, wird jeder der Blöcke, die in dem Blocksatz beinhaltet sind, als ein Zielblock für einen anderen Block, der in dem Blocksatz beinhaltet ist, zugeordnet. Dies ermöglicht es, den Schreibstatus jedes Blocks zu bestimmen.
-
Bezüglich des Zielblocks BRj kann j eine Ganzzahl sein, die durch Hinzufügen von 1 zu dem Rest erlangt wird, der durch Teilen von i + a durch n erlangt wird. Hierbei ist a eine Ganzzahl von 0 bis n–2. In der vorstehend beschriebenen Ausführungsform gilt a = 0. Ein Verfahren zur Bereitstellung einer Schreibsteuerung für einen Flash-Speicher, wenn a = 1 gilt, wird mit Bezug auf 10 beschrieben.
-
Der Flash-Speicher beinhaltet mehrere Blocksätze 37a, die jeweils fünf Blöcke 31a (BR1 bis BR5 beinhalten). Jeder Block beinhaltet einen Datenabschnitt 33a und einen Flag-Abschnitt 35a.
-
In einem Zustand (i) von 10, geben die Verwaltungs-Flags, die in dem Block BR3 und dem Block BR4 geschrieben sind, „-” an. Das nächste Datenschreiben ist dem Block BR5 auszuführen. Ein Block, für den der Block BR5 als ein Zielblock zugeordnet ist, das heißt ein Block, in den ein Verwaltungs-Flag, das den Block BR5 überwacht, zu schreiben ist, ist der Block BR3. Das letzte Schreiben wurde in dem Block BR4 ausgeführt.
-
Wenn ein Schreiben auszuführen ist, wird das Verwaltungs-Flag, das in den Block BR3 geschrieben ist, als Erstes zu Löschen-in-Verarbeitung aktualisiert, wie in einem Zustand (ii) angegeben ist. Als nächstes werden Daten, die in dem Block BR5 gespeichert sind, gelöscht, wie in einem Zustand (iii) angegeben ist. Der Block BR5 ist ein Zielblock für das Verwaltungs-Flag, das in den Block BR3 geschrieben ist. Anschließend werden neue Schreibdaten geschrieben, wie in einem Zustand (iv) angegeben ist. Da das Verwaltungs-Flag noch nicht geschrieben ist, wird der „-”-Zustand angegeben.
-
Das Verwaltungs-Flag, das in dem Block BR3 geschrieben ist, wird dann zu „geschrieben” aktualisiert, wie in einem Zustand (v) angegeben ist. Ausgehend vom Vervollständigen der vorstehenden Schritte, schließt die Datenschreibverarbeitung für den Blocksatz ab. In dem Zustand (v) das nächste Datenschreiben in dem Block BR1 auszuführen, ein Block, für den der Block BR1 als ein Zielblock zugeordnet ist, ist der Block BR4 und das letzte Schreiben wurde in dem Block BR5 ausgeführt.
-
Wenn, wie vorstehend beschrieben ist, der Block BRj derart ist, dass j eine Ganzzahl ist, die durch Addieren von 1 zu dem Rest erlangt wird, der durch Teilen von i + a durch n erlangt wird, kann ein Schreiben sequentiell in den Blöcken ausgeführt werden, die in dem Blocksatz beinhaltet sind.
-
In der vorstehend beschriebenen Ausführungsform wird das Vervollständigen eines Datenschreibens unter Verwendung des Löschen-in-Verarbeitung-Flags und des Schreib-Flags bestimmt. Die Datenwiederherstellungsverarbeitung wird ausgeführt, wenn das Datenschreiben nicht vervollständigt ist. Alternativ muss das Löschen-in-Verarbeitung-Flag nicht verwendet werden und die Datenwiederherstellungsverarbeitung muss nicht ausgeführt werden. Wird eine derartige Alternative adaptiert, kann ein Zeitpunkt, bei dem Schreibdaten in dem Block BRl geschrieben werden, entweder früher oder später als ein Zeitpunkt sein, bei dem das Schreib-Flag in dem Block BRm geschrieben wird.
-
In der vorstehend beschriebenen Ausführungsform überprüft die CPU11 für einen Block, dessen Verwaltungs-Flag „Löschen-in-Verarbeitung” angibt, zu einer Zeit, bei der eine Energiezufuhr wieder eingeschaltet wird. Jedoch muss eine derartige Überprüfung nicht zu einer Zeit ausgeführt werden, bei der Energiezufuhr wieder eingeschaltet wird, sondern kann bei unterschiedlichen anderen Zeitpunkten ausgeführt werden. Ein Verwaltungs-Flag, das Löschen-in-Verarbeitung angibt, wird während des Zeitintervalls zwischen dem Moment, bei dem die dritte Schreibverarbeitung (S4) startet, und dem Moment, bei dem die zweite Schreibverarbeitung (S7) abschließt, erzeugt, sogar wenn eine Schreibverarbeitung nicht unterbrochen wird. Demzufolge ist es denkbar, dass die vorstehend erwähnte Überprüfung bei einer Zeit ausgeführt wird, die außerhalb des vorstehenden Zeitintervalls ist.
-
In der vorstehend beschriebenen Ausführungsform kann die Anzahl n von Blöcken, die in einem Blocksatz 37 beinhaltet sind, von einem Blocksatz 37 zum nächsten variieren. Beispielsweise kann ein Blocksatz 37, der mit ID 1 verknüpft ist, so konfiguriert sein, dass n = 3 gilt, und ein Blocksatz 37, der mit ID 2 verknüpft ist, kann so konfiguriert sein, dass n = 5 gilt.
-
Ferner muss der Blocksatz beziehungsweise müssen die Blocksätze bezüglich der Beziehung zwischen beispielsweise BRi, BRj und BRk nicht ähnlich beziehungsweise gleich zueinander sein. Die Blocksätze können sich voneinander in einer derartigen Beziehung unterscheiden. Beispielsweise können der Blocksatz 37, der mit ID1 verknüpft ist, und der Blocksatz 37, der mit ID 2 verknüpft ist, beide so konfiguriert sein, dass n = 5 gilt, Schreibsteuerung kann für den Blocksatz 37, der mit ID 1 verknüpft ist, ausgeübt werden, so dass die Variable a = 1 ist, wie in 10 angegeben ist, und Schreibsteuerung kann für den Blocksatz 37, der mit ID 2 verknüpft ist, ausgeübt werden, so dass die Variable a = 0 ist.
-
Die Hostvorrichtung 3 muss nicht außerhalb der Speichervorrichtung 1 existieren. Alternativ kann die Hostvorrichtung 3 in der Speichervorrichtung 1 beinhaltet sein. Ferner kann die Speichervorrichtung 1 als die Hostvorrichtung funktionieren. Insbesondere kann die CPU11 eine Verarbeitung ausführen, die keine Beziehung zur Steuerung des Flash-Speichers 21 hat, um Schreibdaten zu erlangen oder zu erzeugen und die Schreibdaten in den Flash-Speicher 21 zu schreiben, oder kann geschriebene Schreibdaten lesen und die Schreibdaten für eine andere Verarbeitung verwenden.
-
Die vorstehend beschriebenen Funktionen, die in der Speichervorrichtung 1 enthalten sind, können durch eine Flash-Speichervorrichtung implementiert sein, die die CPU 11, das RAM13, das ROM 15, den Flash-Controller 17 und die Eingabe-Ausgabe-Schnittstelle (I/O) 19 beinhaltet.
-
Die vorstehend beschriebenen Funktionen, die in der Speichervorrichtung 1 enthalten sind, können durch einen Computer implementiert werden, der durch ein Programm betrieben wird.
-
Das Programm ist durch eine Sequenz von Anweisungen ausgebildet, die zur Computerverarbeitung geeignet sind. Das Programm kann beispielsweise in einem ROM oder RAM, die in den Computer eingebaut sind, gespeichert werden, und in den Computer zur Verwendung geladen werden oder kann in den Computer durch unterschiedliche Speichermedien oder eine Kommunikationsleitung zur Verwendung geladen werden.
-
Beispielsweise können eine CD-ROM, eine DVD-ROM oder eine andere optische Scheibe, eine magnetische Scheibe und ein Halbleiterspeicher als das vorstehend erwähnte Speichermedium verwendet werden, das das Programm in den Computer lädt.
-
Es ist zu beachten, dass ein Ablaufdiagramm oder die Verarbeitung des Ablaufdiagramms in der vorliegenden Anmeldung mehrere Schritte (ebenso als Abschnitte bezeichnet) beinhaltet, von denen jeder beispielsweise als S1 repräsentiert ist. Ferner kann jeder Schritt in mehrere Unterschritte unterteilt werden, während mehrere Schritte zu einem einzelnen Schritt kombiniert werden können.
-
Während unterschiedliche Ausführungsformen, Konfigurationen und Aspekte einer Speichervorrichtung, einer Flash-Speicher-Steuervorrichtung und eines Programms beispielhaft dargestellt wurden, sind die Ausführungsformen, Konfigurationen und Aspekte der vorliegenden Offenbarung nicht auf diese beschränkt. Beispielsweise sind Ausführungsformen, Konfigurationen und Aspekte, die aus einer angemessenen Kombination technischer Elemente erlangt werden, die in unterschiedlichen Ausführungsformen, Konfigurationen und Aspekten offenbart sind, ebenso innerhalb des Umfangs der Ausführungsformen, Konfigurationen und Aspekten gemäß der vorliegenden Offenbarung beinhaltet.