HINTERGRUND DER ERFINDUNG
Gebiet der Erfindung
Die Erfindung betrifft ein Verfahren und eine Vorrichtung zum Überwachen
von Daten eines nichtflüchtigen Speichers, dessen Speicherbereich in eine Vielzahl
von Blöcken unterteilt ist, den nichtflüchtigen Speicher, eine Speichereinrichtung
mit dem nichtflüchtigen Speicher, und ein Datenverarbeitungssystem.
Beschreibung des verwandten Standes der Technik
Typisch bei einer externen Speichereinrichtung, die in einer Datenverarbeitungsvorrichtung,
wie beispielsweise einem Personal-Computer oder einer digitalen Standbildkamera,
verwendet wird, ist eine externe Speichereinrichtung mit einem Flash-Speicher versehen.
Bei der externen Speichereinrichtung, die mit dem Flash-Speicher versehen
ist, ist der Speicherbereich in mehrere Blöcke aufgeteilt, und wird der Datenbereich
auf der Blockbasis überwacht. Jeder Block ist die Einheit eines Löschens
von Daten. Das heißt, dass bei einem Löschen von Daten der die Daten enthaltende
Block in seiner Gesamtheit initialisiert wird, so dass die in dem Block gespeicherten
Daten in einem Stück gelöscht werden.
Falls bei einer solchen externen Speichereinrichtung die Daten in
einem Block gespeichert werden, wird jedem derartigen Block eine einmalige logische
Adresse zugewiesen, welcher unter Verwendung dieser logischen Adresse überwacht
wird.
Die in der externen Speichereinrichtung gespeicherten Daten werden
üblicherweise auf einer Dateibasis in der externen Speichereinrichtung gespeichert.
Falls eine einzige Datei über mehrere Blöcke hinweg gespeichert ist, wird
für diese Blöcke eine Verknüpfungsinformation benötigt. Folglich
wird dann, wenn die einzige Datei in den mehreren Blöcken gespeichert ist,
wird die logische Adresse des nächsten Blocks, die als die Verknüpfungsadresse
bezeichnet wird, in jedem der Blöcke gespeichert, in welchen die Datei gespeichert
ist.
Bisher wird bei dieser Art der externen Speichereinrichtung die Verarbeitung
zum Untersuchen, ob es irgendeinen Fehler in dem Speicherbereich gibt, oder die
Verarbeitung zum Verbergen von Fehlern, die aufgetreten sind, jedes Mal ausgeführt,
wenn die externe Speichereinrichtung gebootet wird. In der folgenden Erklärung
wird diese Verarbeitung als die Fehlererfassungs- und Korrektur-Verarbeitung bezeichnet.
Üblicherweise ist die Fehlererfassungs- und Korrektur-Verarbeitung diejenige
zeitaufwendige Verarbeitung, die eine relativ große Last mit sich bringt. Daher
leidet die konventionelle externe Speichereinrichtung an einem Nachteil dahingehend,
dass sie aufgrund der Fehlererfassungs- und Korrektur-Verarbeitung nicht schnell
gebootet werden kann.
Es sei angenommen, dass bei der externen Speichereinrichtung, in welcher
der Datenbereich auf der Blockbasis überwacht wird, die Daten neu geschrieben
werden, oder die in dem Block gespeicherten Daten aktualisiert werden, und dass
in einem solchen Fall die Leistungsversorgung plötzlich unterbrochen wird oder
die externe Speichereinrichtung erzwungen aus der Datenverarbeitungseinrichtung
entfernt wird. In diesem Fall können Zustände der Art entstehen, in welcher
mehrere Blöcke mit derselben logischen Adresse nebeneinander bestehen können,
oder in welchem es keinen durch die Verknüpfungsadresse angegebenen Block gibt.
Diese Zustände werden nachstehend jeweils als der Zustand des Fehlers der logischen
Adresse oder der Zustand des Fehlers der Verknüpfungsadresse bezeichnet. In
einem solchen Fall kann die externe Speichereinrichtung nicht wie gewöhnlich
verwendet werden, wobei die Datei zufällig mit einem unerwarteten Block verknüpft
ist.
Die konventionelle externe Speichereinrichtung verfügt jedoch
nicht über die Funktion des Erfassens von logischen Fehlern oder Verknüpfungsfehlern,
um die Fehler korrekt zu verbergen. Das Ergebnis ist das, dass wenn die Leistungsversorgung
plötzlich unterbrochen wird oder die externe Speichereinrichtung erzwungen
aus der Datenverarbeitungseinrichtung entfernt wird, die externe Speichereinrichtung
ab einer solchen Zeit nicht länger wie gewöhnlich verwendbar ist.
Darüber hinaus offenbart die Druckschrift EP
0 887 732 A ein Verfahren zum Handhaben von Defektdaten gemäß
dem Oberbegriff der Patentansprüche 1 und 8.
Ferner bezieht sich die Druckschrift EP
0 887 735 A auf eine allgemeine Speicherverwaltung für einen Flash-Speicher.
KURZBESCHREIBUNG DER ERFINDUNG
In Anbetracht des vorstehend aufgezeigten Standes der Technik liegt
der Erfindung als eine Aufgabe zugrunde, ein Verfahren und eine Vorrichtung zum
Überwachen von Daten eines nichtflüchtigen Speichers, dessen Speicherbereich
in eine Vielzahl von Blöcke aufgeteilt ist, bereitzustellen.
Erfindungsgemäß wird diese Aufgabe durch eine Datenverwaltungsvorrichtung,
wie in Patentanspruch 1 definiert, und durch ein Datenverwaltungsverfahren,
wie in Patentanspruch 8 definiert, gelöst.
Vorteilhafte Weiterbildungen sind Gegenstand der beigefügten
abhängigen Patentansprüche.
In Übereinstimmung mit der vorstehend beschriebenen Erfindung
werden die verteilten Verwaltungsinformationen als die Verwaltungsinformationen
für die jeweiligen Blöcke in dem redundanten Bereich jeder Seite gespeichert,
werden die gesamten Verwaltungsinformationen bzw. Anhäufungsverwaltungsinformationen,
die in jedem Block gespeicherte Daten überwachen, als Ganzes in Zuordnung zu
den verteilten Verwaltungsinformationen in einem nichtflüchtigen Speicher gespeichert,
wird zur Zeit des Bootens überprüft, ob die gesamten Verwaltungsinformationen
wirksam oder gültig sind, werden die Daten auf der Grundlage der gesamten Verwaltungsinformationen
überwacht, wenn die gesamten Verwaltungsinformationen wirksam sind, und werden
die Daten auf der Grundlage der verteilten Verwaltungsinformationen überwacht,
wenn die gesamten Verwaltungsinformationen nicht wirksam sind. Das heißt, dass
die gesamten Verwaltungsinformationen in den meisten Fällen wirksam sind und
zum Booten verwendet werden können, wodurch ein rasches Booten der Speichereinrichtung
ermöglicht wird.
KURZE BESCHREIBUNG DER ZEICHNUNGEN
1 zeigt die Gesamtkonfiguration eines die Erfindung
verkörpernden Systems.
2 ist ein Blockdiagramm, das die Konfiguration einer
die Erfindung verkörpernden Speicherkarte zeigt.
3 ist eine perspektivische Ansicht einer die Erfindung
verkörpernden Speicherkarte.
4A bis 4C zeigen die Konfiguration
eines Speicherbereichs einer die Erfindung verkörpernden Speicherkarte.
5 zeigt die Konfiguration der verteilten Verwaltungsinformationen.
6 zeigt die Konfiguration der zusätzlichen Verwaltungsinformationen.
7 zeigt die Art und Weise des Aufbauens der gesamten
Verwaltungsinformationen aus den verteilten Verwaltungsinformationen jedes Blocks.
8 zeigt die Konfiguration der gesamten Verwaltungsinformationen.
9 zeigt eine Umwandlungstabelle.
10 zeigt eine Verknüpfungstabelle.
11 stellt ein Ablaufdiagramm dar, das die Abfolge von
Betriebsabläufen bei dem Booten einer Speicherkarte zeigt.
12 stellt ein Ablaufdiagramm dar, das die Abfolge von
Betriebsabläufen bei einer Datenaktualisierungsverarbeitung zeigt.
13 stellt ein Ablaufdiagramm dar, das die Abfolge von
Betriebsabläufen bei dem Beenden der Verarbeitung zeigt.
14 stellt ein Ablaufdiagramm dar, das die Abfolge von
Betriebsabläufen bei dem Schreiben einer Datei mit einer bekannten Größe
in eine Speicherkarte zeigt.
15 stellt ein Ablaufdiagramm dar, das die Abfolge von
Betriebsabläufen bei dem Schreiben einer Datei mit einer unbekannten Größe
in eine Speicherkarte zeigt.
16A bis 16C sind darstellende
Ansichten, die in konkretes Beispiel der Dateiaktualisierungsverarbeitung zeigen.
17 stellt ein Ablaufdiagramm dar, das die Abfolge von
Betriebsabläufen der Dateiaktualisierungsverarbeitung zeigt.
18 zeigt eine Fehlererfassungstabelle.
19 zeigt ein konkretes Beispiel von Block-zu-Block-Kopplungszuständen.
20A bis 20E zeigen den
Verarbeitungsablauf, falls die Block-zu-Block-Kopplungszustände wie in
19 gezeigt sind, als ein Beispiel einer Kopplungsadresse-Fehlererfassung.
21 ist ein Ablaufdiagramm, das den Aufbau der gesamten
Verwaltungsinformationen und die Verarbeitung der Fehlererfassung und der Korrektur
zeigt.
22, fortsetzend von 21,
ist ein Ablaufdiagramm, das den Aufbau der gesamten Verwaltungsinformationen und
der Verarbeitung der Fehlererfassung und der Korrektur zeigt.
23, fortsetzend von 22,
ist ein Ablaufdiagramm, das den Aufbau der gesamten Verwaltungsinformationen und
die Verarbeitung der Fehlererfassung und der Korrektur zeigt.
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
Nunmehr auf die Zeichnungen Bezug nehmend, werden bestimmte bevorzugte
Ausführungsbeispiele der Erfindung im Einzelnen erklärt.
1. Konfiguration des Gesamtsystems
1 zeigt die Gesamtkonfiguration eines Systems gemäß
einem Ausführungsbeispiel der Erfindung. Dieses System besteht aus einer Datenverarbeitungsvorrichtung
1 als einem hostseitigen System, und einer Speicherkarte 2 als
einer externen Speichereinrichtung, die mit der Datenverarbeitungsvorrichtung
1 über eine serielle Schnittstelle verbunden ist.
Die Datenverarbeitungsvorrichtung 1 beinhaltet eine zentrale
Verarbeitungseinheit (CPU) 3, einen internen Speicher 4, eine
Hilfs-Speichereinrichtung 5 und eine serielle Schnittstellenschaltung
6, die miteinander über einen Bus 7 verbunden sind. Die Datenverarbeitungsvorrichtung
1 liest ein Programm aus, das in beispielsweise der Hilfs-Speichereinrichtung
5 gespeichert ist, um das Programm mittels der CPU 3 auszuführen,
unter Verwendung des internen Speichers 4 als einem Arbeitsbereich. Zu
dieser Zeit werden Daten mit der Speicherkarte 2 über die serielle
Schnittstellenschaltung 6 ausgetauscht.
Es besteht keine Beschränkung für die in dem erfindungsgemäßen
System verwendete Datenverarbeitungsvorrichtung 1. Das heißt, die
Erfindung kann auf eine breite Vielzahl von Datenverarbeitungsvorrichtungen angewandt
werden, wie beispielsweise auf einen Personal-Computer, eine digitalen Standbildkamera
oder eine digitalen Videokamera.
Die Datenverarbeitungsvorrichtung 1 und die Speicherkarte
2 sind über eine serielle Schnittstelle miteinander verbunden, speziell
durch zumindest drei Datenleitungen SCLK, Zustand und DIO. Das heißt, die Datenverarbeitungsvorrichtung
1 und die Speicherkarte 2 sind zumindest über eine erste
Datenleitung SCLK miteinander verbunden, welche Taktsignale bei der Datenübertragung
überträgt, eine zweite Datenleitung Zustand verbunden, die Zustandssignale
bei der Datenübertragung überträgt, und eine dritte Datenleitung
DIO verbunden, die seriell in die Speicherkarte 2 geschriebene Daten oder
aus der Speicherkarte 2 gelesene Daten überträgt, so dass ein
Datenaustausch über diese Leitungen zwischen der Datenverarbeitungsvorrichtung
1 und der Speicherkarte 2 ausgeführt wird.
Der Datenaustausch zwischen der Datenverarbeitungsvorrichtung
1 und der Speicherkarte 2 wird üblicherweise im Hinblick
auf eine Datei ausgeführt, die aus einen Vorspann und realen Daten besteht,
als einer Einheit. In dem Dateivorspann sind beispielsweise die Informationen gespeichert,
die bei dem Zugreifen auf eine Datei notwendig sind, und die Informationen, die
in dem in der Datenverarbeitungsvorrichtung 1 ausgeführten Programm
benötigt werden.
2. Struktur der Speicherkarte
Bezug nehmend auf 2 besteht die Speicherkarte
2 aus einer Steuereinrichtung 11, bestehend aus einem so genannten
Steuer-IC, und einem Flash-Speicher 12, der durch die Steuereinrichtung
11 überwacht wird.
Die Steuereinrichtung 11 beinhaltet eine Seriell/Parallel-Parallel/Seriell-Schnittstellenablaufsteuerung
13, die nachstehend als eine S/P-P/S-Schnittstellenablaufsteuerung
13 bezeichnet wird, zur Seriell/Parallel-Parallel/Seriell-Umwandlung, eine
Flash-Speicher-Schnittstellenablaufsteuerung 14, die sich um die Schnittstelle
zu dem Flash-Speicher 12 kümmert, einen Seitenpuffer 15 zur
vorübergehenden Speicherung von zwischen der S/P-P/S-Schnittstellenablaufsteuerung
13 und der Flash-Speicher-Schnittstellenablaufsteuerung 14 ausgetauschten
Daten, eine Fehlerkorrekturschaltung 16 zur Fehlerkorrektur, und einen
Befehlsgenerator 17 zum Erzeugen beispielsweise eines Steuerbefehls zum
Steuern des Zugriffs auf den Flash-Speicher 12. Die Steuereinrichtung
11 beinhaltet darüber hinaus ein Konfigurations-ROM 18, in
dem beispielsweise die Versionsinformationen der Speicherkarte 2 oder eine
Vielzahl der Attributinformationen gespeichert sind, und einen Oszillator
19 zum Liefern von Taktsignalen, wie sie für den Betrieb der jeweiligen
Schaltungen benötigt werden.
Die S/P-P/S-Schnittstellenablaufsteuerung 13 ist über
zumindest die vorstehend erwähnten drei Datenleitungen SCLK, Zustand und DIO
mit der seriellen Schnittstellenschaltung 6 der Datenverarbeitungsvorrichtung
1 verbunden, um Daten über diese Datenleitungen SCLK, Zustand, und
DIO mit der Datenverarbeitungsvorrichtung 1 auszutauschen. Das heißt,
die S/P-P/S-Schnittstellenablaufsteuerung 13 wandelt die von dem Seitenpuffer
15 gesendeten parallelen Daten in serielle Daten um, welche serielle Daten
an die serielle Schnittstellenschaltung 6 der Datenverarbeitungsvorrichtung
1 gesendet werden. Die S/P-P/S-Schnittstellenablaufsteuerung
13 wandelt darüber hinaus die von der seriellen Schnittstellenschaltung
6 der Datenverarbeitungsvorrichtung 1 gesendeten Daten in parallele
Daten um, welche an den Seitenpuffer 15 gesendet werden.
Die seriellen Daten werden zwischen der S/P-P/S-Schnittstellenablaufsteuerung
13 und der Datenverarbeitungsvorrichtung 1 über die dritte
Datenleitung DIO unter Verwendung der Taktsignale übertragen, die von der Datenverarbeitungsvorrichtung
1 über die erste Datenleitung SCLK zur Synchronisation gesendet werden.
Die Arten der über die zweite Datenleitung Zustand ausgetauschten seriellen
Daten können mittels auf der zweiten Datenleitung Zustand
übertragenen Zustandssignalen unterschieden werden. Die Arten der seriellen
Daten können beispielhaft durch Daten, die in zum Beispiel den Flash-Speicher
12 zu schreiben sind, durch Daten, die aus dem Flash-Speicher
12 ausgelesen wurden, oder durch Steuerdaten zum Steuern des Betriebs der
Speicherkarte 2 dargestellt sein. Das Zustandssignal wird darüber
hinaus zum Angeben des Zustands der Speicherkarte 2 verwendet. Der Zustand
der Speicherkarte 2, der durch das Zustandssignal angegeben wird, kann
beispielhaft durch einen Zustand, in welchem die Speicherkarte 2 in irgendeine
Verarbeitung involviert ist und keine Daten entgegennehmen kann, die von der Datenverarbeitungsvorrichtung
1 zugeführt werden, und einen Zustand, in welchem die Verarbeitung
auf der Seite der Speicherkarte 2 beendet wurde und die Speicherkarte
2 auf eine Datenzufuhr von der Datenverarbeitungsvorrichtung
1 wartet, dargestellt sein.
Falls die von der Datenverarbeitungsvorrichtung 1 gesendeten
Daten Steuerdaten zum Steuern des Betriebs der Speicherkarte 2 sind, sendet
die S/P-P/S-Schnittstellenablaufsteuerung 13 die Steuerdaten an einen Befehlsgenerator
17.
Der Befehlsgenerator 17 erzeugt einen Steuerbefehl zum Steuern
des Zugriffs auf den Flash-Speicher 12, auf der Grundlage der von der Datenverarbeitungsvorrichtung
1 über die S/P-P/S-Schnittstellenablaufsteuerung 13 gesendeten
Steuerdaten, um den Steuerbefehl an die Flash-Speicher-Schnittstellenablaufsteuerung
14 zu übertragen. Die Flash-Speicher-Schnittstellenablaufsteuerung
14 schreibt Daten in den Flash-Speicher 12 oder liest Daten aus
diesem auf der Grundlage des Steuerbefehls, wie später im Einzelnen erklärt
werden wird.
Mit diesem Befehlsgenerator 17 ist ein Schalter
20 zum Verhindern eines unbeabsichtigten Löschens verbunden. Falls
dieser Schalter 20 zum Verhindern eines unbeabsichtigten Löschens
eingeschaltet ist, erzeugt der Befehlsgenerator 17 keinen Steuerbefehl,
welcher in den Flash-Speicher 12 geschriebene Daten löschen wird,
und zwar auch dann, wenn Steuerdaten, die das Löschen der in den Flash-Speicher
12 geschriebenen Daten befehlen, von der Datenverarbeitungsvorrichtung
1 gesendet werden. Das heißt, dass die Speicherkarte 2 durch
diesen Schalter 20 zum Verhindern eines unabsichtlichen Löschens zwischen
einem Zustand, in welchem die in dem Flash-Speicher 12 gesicherten Daten
nicht gelöscht werden können, und dem Zustand, in welchem die in dem Flash-Speicher
12 gesicherten Daten gelöscht werden können, umgeschaltet wird.
Der zwischen der S/P-P/S-Schnittstellenablaufsteuerung 13
und der Flash-Speicher-Schnittstellenablaufsteuerung 14 angeordnete Seitenpuffer
15 ist ein so genannter Pufferspeicher und hält vorübergehend
die zwischen der S/P-P/S-Schnittstellenablaufsteuerung 13 und der Flash-Speicher-Schnittstellenablaufsteuerung
14 ausgetauschten Daten.
Das heißt, dass die von der S/P-P/S-Schnittstellenablaufsteuerung
13 an die Flash-Speicher-Schnittstellenablaufsteuerung 14 gesendeten
Daten zunächst von der S/P-P/S-Schnittstellenablaufsteuerung 13 an
den Seitenpuffer 15 gesendet werden, wo sie vorübergehend gespeichert
werden. Zu dieser Zeit wird ein Fehlerkorrekturcode durch die Fehlerkorrekturschaltung
16 an die in den Seitenpuffer 15 gespeicherten Daten angefügt.
Die Daten mit dem daran angefügten Fehlerkorrekturcode werden von dem Seitenpuffer
15 zu der Flash-Speicher-Schnittstellenablaufsteuerung 14 im Hinblick
auf eine voreingestellte Seite (zum Beispiel wird jede Seite durch 512 Bytes gebildet)
als einer Einheit gesendet.
Alternativ werden die von der Flash-Speicher-Schnittstellenablaufsteuerung
14 an die S/P-P/S-Schnittstellenablaufsteuerung 13 gesendeten
Daten zunächst von der Flash-Speicher-Schnittstellenablaufsteuerung
14 an den Seitenpuffer 15 für eine vorübergehende Speicherung
in diesem gesendet. Zu dieser Zeit werden die in dem Seitenpuffer 15 gespeicherten
Daten durch die Fehlerkorrekturschaltung 16 fehlerkorrigiert. Die fehlerkorrigierten
Daten werden von dem Seitenpuffer 15 an die S/P-P/S-Schnittstellenablaufsteuerung
13 im Hinblick auf eine voreingestellte Seite als einer Einheit gesendet.
Die Flash-Speicher-Schnittstellenablaufsteuerung 14 schreibt
Daten in dem Flash-Speicher 12 von dem Befehlsgenerator 17 oder
liest Daten aus diesem aus, unter der Steuerung eines Steuerbefehls von dem Befehlsgenerator
17. Das heißt, die Flash-Speicher-Schnittstellenablaufsteuerung
14 liest Daten aus dem Flash-Speicher 12 aus, um Daten über
den Seitenpuffer 15 an die S/P-P/S-Schnittstellenablaufsteuerung
13 auszusenden. Alternativ empfängt die Flash-Speicher-Schnittstellenablaufsteuerung
14 Daten von der S/P-P/S-Schnittstellenablaufsteuerung 13 über
den Seitenpuffer 15, wie vorstehend beschrieben wurde, auf der Grundlage
des Steuerbefehls von dem Befehlsgenerator 17, um die Daten in dem Flash-Speicher
12 zu schreiben.
In dem Konfigurations-ROM 18 sind beispielsweise die Versionsinformationen
und eine Vielzahl der Attributinformationen der Speicherkarte 2 gespeichert.
Die in dem Konfigurations-ROM-18 gespeicherten Informationen werden so
verwendet, wie sie bedarfsweise durch den Befehlsgenerator 17 über
die S/P-P/S-Schnittstellenablaufsteuerung 13 ausgelesen werden. Das heißt,
der Befehlsgenerator 17 liest die in dem Konfigurations-ROM-18
gespeicherten Informationen bedarfsweise aus, um Einstellungen
verschiedenartiger Arten, die für die Speicherkarte 2 geeignet sind,
auf der Grundlage der so ausgelesenen Informationen zu bewirken.
Wenn die in den Flash-Speicher 12 geschriebenen Daten als
serielle Daten von der Datenverarbeitungsvorrichtung 1 über die drei
Datenleitungen SCLK, Zustand und DIO an die Speicherkarte 2 gesendet werden,
wandelt die S/P-P/S-Schnittstellenablaufsteuerung 13 die seriellen Daten
in parallele Daten um, welche dann an den Seitenpuffer 15 gesendet werden.
Die von der S/P-P/S-Schnittstellenablaufsteuerung 13 gesendeten Daten werden
dann vorübergehend in dem Seitenpuffer 15 gespeichert. Zu dieser Zeit
wird ein Fehlerkorrekturcode durch die Fehlerkorrekturschaltung 16 an die
in dem Seitenpuffer 15 gespeicherten Daten angefügt. Die Daten mit
dem daran angefügten Fehlerkorrekturcode werden für jede voreingestellte
Seiteneinheit an die Flash-Speicher-Schnittstellenablaufsteuerung 14 ausgesendet.
Die Flash-Speicher-Schnittstellenablaufsteuerung 14 schreibt von dem Seitenpuffer
15 gesendete Daten unter einem Steuerbefehl von dem Befehlsgenerator
17 in den Flash-Speicher 12. Durch die vorstehende Verarbeitung
werden die von der Datenverarbeitungsvorrichtung 1 gesendeten Daten in
den Flash-Speicher 12 geschrieben.
Bei dem Auslesen von Daten aus der vorstehend beschriebenen Speicherkarte
2 werden Daten durch die Flash-Speicher-Schnittstellenablaufsteuerung
14 unter einem Steuerbefehl von dem Befehlsgenerator 17 aus dem
Flash-Speicher 12 ausgelesen. Die Flash-Speicher-Schnittstellenablaufsteuerung
14 sendet aus dem Flash-Speicher 12 ausgelesene Daten an den Seitenpuffer
15 aus. Die von der Flash-Speicher-Schnittstellenablaufsteuerung
14 gesendeten Daten werden vorübergehend in dem Seitenpuffer
15 gespeichert. Die in dem Seitenpuffer 15 gespeicherten Daten
werden durch die Fehlerkorrekturschaltung 16 fehlerkorrigiert. Die fehlerkorrigierten
Daten werden im Hinblick auf eine voreingestellte Seite als einer Einheit an die
S/P-P/S-Schnittstellenablaufsteuerung 13 ausgesendet. Die S/P-P/S-Schnittstellenablaufsteuerung
13 wandelt die von dem Seitenpuffer 15 gesendeten Daten in serielle
Daten um, welche darin über die vorstehend erwähnten drei Datenleitungen
SCLK, Zustand und DIO an die Datenverarbeitungsvorrichtung 1 gesendet werden.
Durch die vorstehende Verarbeitung werden die aus dem Flash-Speicher 12
ausgelesenen Daten an die Datenverarbeitungsvorrichtung 1 ausgesendet.
Bei dem Schreiben oder Auslesen von Daten werden nicht nur aus dem
Flash-Speicher 12 ausgelesene oder in diesen geschriebene Daten ausgetauscht,
sondern werden Steuerdaten, die zum Steuern des Austauschs verwendet werden, von
der Datenverarbeitungsvorrichtung 1 an die S/P-P/S-Schnittstellenablaufsteuerung
13 der Speicherkarte 2 gesendet. Die Steuerdaten werden von der
S/P-P/S-Schnittstellenablaufsteuerung 13 an den Befehlsgenerator
17 gesendet. Auf der Grundlage der von der S/P-P/S-Schnittstellenablaufsteuerung
13 gesendeten Steuerdaten erzeugt der Befehlsgenerator 17 einen
Steuerbefehl, welcher den Zugriff auf den Flash-Speicher 12 steuert. Dieser
Steuerbefehl wird an die Flash-Speicher-Schnittstellenablaufsteuerung
14 gesendet, welche Flash-Speicher-Schnittstellenablaufsteuerung auf den
Flash-Speicher 12 zugreift, um die Daten zu schreiben oder auszulesen,
auf der Grundlage des Steuerbefehls.
Indessen kann die Speicherkarte 2 nicht nur mit den vorstehend
erwähnten drei Datenleitungen SCLK, Zustand und DIO versehen sein, sondern
darüber hinaus mit einer Verdrahtung zum Zuführen der Spannung oder mit
einer Reserveverdrahtung, welche üblicherweise nicht verwendet wird. Die
2 und 3 zeigen einen Fall,
in dem vier Leiter VSS1, VSS2, VCC und INT als Leiter für die Leistungsversorgungsleitungen
und drei Reserveleitungen RSV1, RSV2 und RSV3 für die Speicherkarte
2 zusätzlich zu den drei Datenleitungen SCLK, Zustand und DIO, die
vorstehend beschrieben wurden, bereitgestellt sind.
3. Aussehen der Speicherkarte
Bezug nehmend auf 3 wird nachstehend
das bestimmte äußere Profil der vorstehend beschriebenen Speicherkarte
2 erklärt.
Die Speicherkarte 2 besteht aus einem Gehäuse
21 aus beispielsweise einem Kunstharz, mit einer rechteckförmigen,
ebenen Form, ausgestaltet als ein dünnwandiges, kartenförmiges Gehäuse,
und der vorstehend erwähnten Steuereinrichtung 11 oder dem vorstehend
erwähnten Flash-Speicher 12, die darin eingeschlossen sind. Diese
Speicherkarte wird so wie sie ist in die Datenverarbeitungsvorrichtung
1, die einen Lademechanismus zum Laden der Speicherkarte 2 in
diese beinhaltet, geladen.
Das vorderseitige Ende des Gehäuses 21 der Speicherkarte
2 ist mit einem hervorstehenden ausgeschnittenen Abschnitt 22
und zehn Ausnehmungen 23 in diesem hervorstehenden ausgeschnittenen Abschnitt
22 ausgebildet. Innerhalb dieser Ausnehmungen 23 sind Anschlüsse
für eine externe Verbindung bereitgestellt, welche mit Verbindungsanschlüssen
der Datenverarbeitungsvorrichtung 1 verbunden werden, wenn die Speicherkarte
2 in Position auf der Ladeeinrichtung der Datenverarbeitungsvorrichtung
1 geladen wird. Das heißt, die vorliegende Speicherkarte
2 beinhaltet zehn Anschlüsse 24a bis 24j als Anschlüsse
zur externen Verbindung, genauer ausgedrückt, drei Anschlüsse
24b, 24d und 24h für die Datenleitungen,
vier Leistungsversorgungsanschlüsse 24a, 24f, 24i,
24j, und drei Reserveanschlüsse 24c, 24e und
24g.
Auf der oberen Oberfläche des Gehäuses 21 der Speicherkarte
2 ist ein Element 25 zum Verhindern eines unabsichtlichen Löschens
angebracht. Dieses Element 25 zum Verhindern eines unabsichtlichen Löschens
steht mit dem Schalter 20 zum Verhindern eines unabsichtlichen Löschens,
der in dem Gehäuse 21 untergebracht ist, in Eingriff, so dass der
Schalter 20 zum Verhindern eines unabsichtlichen Löschens durch Verschieben
des Elements 25 zum Verhindern eines unabsichtlichen Löschens eingeschaltet
oder ausgeschaltet werden kann.
Um zu verhindern, dass die Speicherkarte 2 von der Datenverarbeitungsvorrichtung
1 gelöst wird, wird bei dem Laden der Speicherkarte 2 in
Position auf die Datenverarbeitungsvorrichtung 1 eine bogenförmige
erste Verriegelungsausnehmung 26 auf einer Längsseite des Gehäuses
20 ausgebildet, während eine rechteckförmige zweite Verriegelungsausnehmung
27 auf der gegenüberliegenden Längsseite derselben ausgebildet
ist. Wenn die Speicherkarte 2 in Position auf der Ladeeinrichtung der Datenverarbeitungsvorrichtung
1 geladen ist, stehen die Verriegelungsausnehmungen mittels der Ladeeinrichtung
der Datenverarbeitungsvorrichtung 1 in Eingriff.
Die in 3 gezeigte Speicherkarte
2 ist lediglich darstellend für eine externe Speichereinrichtung gemäß
der vorliegenden Erfindung. Das heißt, dass die vorliegende Erfindung auf eine
externe Speichereinrichtung einer beliebigen geeigneten äußeren Form angewandet
werden kann, ohne Abhängigkeit von einer beliebigen bestimmten äußeren
Form der Speichereinrichtung.
4. Struktur des Speicherbereichs
Nun wird die Struktur des Speicherbereichs des Flash-Speichers
12, der auf der vorstehend beschriebenen Speicherkarte 2 geladen
ist, erklärt.
Der Speicherbereich des Flash-Speichers 12 ist in mehrere
Blöcke als Datenlöscheinheiten unterteilt, wie in 4A
gezeigt ist. Diese Blöcke sind in Bootblöcke, in welchen Bootdaten zu
speichern sind, als Daten, die von der Datenverarbeitungsvorrichtung 1
bei dem Booten der Speicherkarte 2 geschrieben werden, und in Datenblöcke,
in welche optionale Daten zu schreiben sind, klassifiziert. Jeder Block ist mit
einer intrinsischen physikalischen Adresse versehen. Diese Blöcke sind Datenlöscheinheiten,
während sie die kleinsten Einheiten für die Dateiverwaltung sind. Das
heißt, eine einzige Datei wird in einem oder in mehreren Blöcken gespeichert,
während ein einzelner Block nicht von mehreren Dateien verwendet werden kann.
Jeder Block besteht aus mehreren Bits, die in der Lage sind, zwei
Zustände '0' oder '1' anzunehmen. In dem anfänglichen Zustand sind alle
Bits '1', und eine Bitbasierte Änderung ist nur von '1' auf '0' möglich.
Das heißt, dass bei den Schreiben von aus '1' und '0' bestehenden Daten Bits
für '1' unverändert beibehalten werden, während Bits für '0'
von '1' auf '0' geändert werden.
Falls einmal geschriebene Daten gelöscht werden, wird eine Initialisierungsverarbeitung
als Ganzes ausgeführt, auf der Blockbasis, um alle Bits des Blocks auf '1'
zu setzen. Dieses löscht die Daten, die in den Block geschrieben sind, als
Ganzes, so dass der Block erneut in dem Zustand ist, in dem das Datenschreiben möglich
ist.
Indessen muss bei dem Ändern von '0' auf '1' die Initialisierungsverarbeitung
als Ganzes auf der Blockbasis ausgeführt werden, um alles Bits des Blocks auf
'1' zu setzen. Andererseits ist eine Änderung von '1' nach '0' möglich,
ohne auf die blockbasierte, insgesamte Initialisierungsverarbeitung zurückzugreifen.
In der folgenden Erklärung wird in Änderung von '1' auf '0', ohne auf
die blockbasierte, insgesamte Initialisierungsverarbeitung zurückzugreifen
als 'Überschreiben' bezeichnet.
Es wird angemerkt, dass die vorliegende Erfindung nicht nur auf einen
Flash-Speicher anwendbar ist, in welchem die jeweiligen Bits nur zwei Zustände
annehmen können (ein so genannter bivalenter Flash-Speicher), sondern auch
auf einen Flash-Speicher, in welchem die jeweiligen Bits drei oder mehr Zustände
annehmen können (ein so genannter multivalenter Flash-Speicher).
Jeder Block des Flash-Speichers 12 besteht aus mehreren Seiten,
von denen jede als eine Datenschreib- oder Datenauslese-Einheit wirkt, wie in
4B gezeigt ist. Das heißt, dass bei dem Schreiben
von Daten in diesen Flash-Speicher 12 von dem Seitenpuffer 15
auf der Seitenbasis gesendete Daten durch die Flash-Speicher-Schnittstellenablaufsteuerung
14, erneut auf der Seitenbasis, in den Flash-Speicher 12 geschrieben
werden. Bei dem Auslesen von Daten aus dem Flash-Speicher 12 werden die
Daten auf der Seitenbasis durch die Flash-Speicher-Schnittstellenablaufsteuerung
14 ausgelesen und dann an den Seitenpuffer 15 gesendet.
Jede Seite hat einen Datenbereich und einen redundanten Bereich. Der
Datenbereich ist ein Bereich, in welchem optionale Daten zu schreiben sind, während
der redundante Bereich ein Bereich ist, in welchem die zum Überwachen der in
den Datenbereich geschriebenen Daten notwendigen Informationen zu speichern sind.
Im Einzelnen werden die so genannten verteilten Verwaltungsinformationen
in dem redundanten Bereich der führenden Seite eines Blocks als die zum Überwachen
des Blocks notwendigen Informationen gespeichert, wie in 4C
gezeigt ist. In den redundanten Bereichen der zweiten und der nachfolgenden Seiten
des Blocks werden als Reserve-verteilte Verwaltungsinformationen dieselben verteilten
Verwaltungsinformationen wie die in dem redundanten Bereich der führenden Seite
gespeicherten gespeichert. In den redundanten Bereichen der letzten Seite werden
jedoch nicht die verteilten Verwaltungsinformationen, sondern die so genannten zusätzlichen
Verwaltungsinformationen als die zusätzlichen Informationen, die jenseits des
Vermögens der verteilten Verwaltungsinformationen sein können, gespeichert.
Auf diese Art und Weise werden die verteilten Verwaltungsinformationen
in dem redundanten Bereich jedes Blocks in diesem Flash-Speicher 12 gespeichert.
Die verteilten Verwaltungsinformationen sind die Informationen zum Überwachen
des Blocks, in welchem die verteilten Verwaltungsinformationen gespeichert worden
sind. Durch diese verteilten Verwaltungsinformationen ist es möglich, beispielsweise
die Informationen dahingehend zu erhalten, ob der in Frage stehende Block der führende
Block in der Datei ist, oder die Informationen zu erhalten, die eine Blockverknüpfung
anzeigen, falls eine Datei aus mehreren Blöcken besteht. Diese verteilten Verwaltungsinformationen
werden nachfolgenden im Einzelnen erklärt werden.
In dieser Speicherkarte 2 werden die verteilten Verwaltungsinformationen
der jeweiligen Blöcke gesammelt, um die so genannten gesamten Verwaltungsinformationen
als die Informationen zum Überwachen des gesamten Flash-Speichers zu erzeugen,
um die gesamten Verwaltungsinformationen als eine Datei in den Flash-Speicher
12 zu speichern.
Üblicherweise werden die zum Zugreifen auf jeden Block notwendigen
Informationen durch die gesamten Verwaltungsinformationen erhalten. Das heißt,
dass bei dem Austauschen von Daten zwischen der Datenverarbeitungsvorrichtung
1 und der Speicherkarte 2 die Datenverarbeitungsvorrichtung
1 die gesamten Verwaltungsinformationen aus der Speicherkarte
2 ausliest und eine Verwaltungstabelle in dem internen Speicher
4 formuliert, um auf der Grundlage dieser Verwaltungstabelle auf die Speicherkarte
2 zuzugreifen. Dies ermöglicht einen schnelleren Datenzugriffsvorgang,
weil keine Notwendigkeit zum Zugreifen auf die in jedem Block gespeicherten verteilten
Verwaltungsinformationen bei jedem Datenzugriffsvorgang besteht.
5. Verteilte Verwaltungsinformationen
Die verteilten Verwaltungsinformationen werden nun im Einzelnen erklärt.
Die verteilten Verwaltungsinformationen sind die Informationen zum
Überwachen des Blocks, in welchem die verteilten Verwaltungsinformationen gespeichert
worden sind, und sind in einen 16 Byte großen redundanten Bereich geschrieben.
Im Einzelnen bestehen die verteilten Verwaltungsinformationen aus einem 1 Byte langen
Möglich/Nicht-Möglich-Kennzeichen, einem 1 Byte langen Blockkennzeichen,
einem 4 Bit langen Letzte-Kennzeichen, einem 4 Bit langen Referenzkennzeichen, einem
1 Byte langen Verwaltungskennzeichen, einer 2 Byte langen logischen Adresse, einer
2 Byte langen Verknüpfungsadresse, einem 3 Byte großen Reservebereich,
einem 2 Byte langen Fehlerkorrekturkennzeichen für die verteilten Verwalturigsinformationen,
und einem 3 Byte langen Fehlerkorrekturcode für Daten, wie in 5
gezeigt ist.
Das Möglich/Nicht-Möglich-Kennzeichen ist ein Kennzeichen
zum Anzeigen, ob der in Frage stehende Block sich in dem verwendbaren Zustand oder
in dem nicht verwendbaren Zustand befindet. Im Einzelnen gibt das Kennzeichen die
Zustände 'verwendbar' und "nicht verwendbar' an. 'Verwendbar' gibt an, dass
der in Frage stehende Block sich in dem verwendbaren Zustand befindet, während
'nicht verwendbar' angibt, dass der in Frage stehende Block sich in dem nicht verwendbaren
Zustand befindet. Falls zum Beispiel ein nicht behebbarer Fehler in dem Block erzeugt
worden ist, wird dieses Möglich/Nicht-Möglich-Kennzeichen auf 'nicht verwendbar'
gesetzt, und zeigt somit an, dass der in Frage stehende Block nicht verwendbar ist.
Das Blockkennzeichen ist ein Kennzeichen, das den Zustand des Blocks
anzeigt. Im Einzelnen gibt es die vier Zustände von 'noch nicht verwendet,
'verwendet an dem führenden Ende', 'verwendet und 'noch nicht gelöscht'
an. Der Zustand 'noch nicht verwendet' gibt an, dass der Block noch nicht verwendet
oder gelöscht ist, sich in den initialisierten Zustand (wobei alle Bits '1'
sind) befindet, derart, dass Daten sofort geschrieben werden können. Der Zustand
'verwendet an dem führenden Ende' gibt an, dass der in Frage stehende Block
an dem führenden Ende einer Datei benutzt wird. Indessen ist in einem Bootblock,
in dem Bootdaten gespeichert sind, das Blockkennzeichen das 'verwendet an dem führenden
Ende'-Kennzeichen. Der Zustand 'verwendet' gibt an, dass der in Frage stehende Block
anderweitig als an dem führenden Ende einer Datei verwendet wird. Falls das
Blockkennzeichen 'verwendet ist, gibt dieses an, dass der in Frage stehende Block
ausgehend von einem anderen Block gekoppelt ist. Der Zustand 'noch nicht gelöscht'
gibt an, dass die in den in Frage stehenden Block geschriebenen
Daten ungültig geworden sind. Falls zum Beispiel Daten gelöscht werden,
wird das Blockkennzeichen auf 'noch nicht gelöscht' gesetzt, und wenn eine
bestimmte Zeittoleranz vorhanden ist, wird der Block, dessen Blockkennzeichen 'noch
nicht gelöscht' ist, gelöscht. Dies gewährleistet effiziente Löschverarbeitungsbetriebsabläufe.
Das Letzte-Kennzeichen ist ein Kennzeichen, das angibt, ob eine Datei
zum Ende gekommen ist oder nicht. Im Einzelnen gibt dieses Kennzeichen die beiden
Zustände von 'Block fortgesetzt' und 'Blockende' an. Der Zustand 'Block fortgesetzt'
gibt an, dass eine in dem in Frage stehenden Block gespeicherte Datei nicht zu Ende
ist und sich zu einem anderen Block fortsetzt. Der Zustand 'Blockende' gibt an,
dass der Block der letzte Block ist. Das heißt, dass der Zustand 'Blockende'
angibt, dass die in dem Block gespeicherte Datei mit diesem Block zu einem Ende
kommt.
Das Referenzkennzeichen ist ein Kennzeichen zum Spezifizieren der
Referenz zu den zusätzlichen Informationen. Im Einzelnen gibt das Kennzeichen
die beiden Zustände 'es gibt keine Referenzinformationen' und 'es gibt Referenzinformationen'
an. Der Zustand 'es gibt keine Referenzinformationen' gibt an, dass es keine wirksamen
zusätzlichen Verwaltungsinformationen in dem redundanten Bereich der letzten
Seite des Blocks gibt, während der Zustand 'es gibt Referenzinformationen'
angibt, dass es die wirksamen zusätzlichen Verwaltungsinformationen in dem
redundanten Bereich der letzten Seite des Blocks gibt.
Das Verwaltungskennzeichen ist ein Kennzeichen, das beispielsweise
die Attribute eines Blocks angibt. Zum Beispiel gibt das Verwaltungskennzeichen
an, ob der in Frage stehende Block ein nur lesbarer Block oder ein Block, welcher
auch wiederbeschreibbar ist, ist. Dieses Verwaltungskennzeichen gibt ebenfalls an,
ob der Block ein Bootblock oder ein Datenblock ist.
Die logische Adresse gibt buchstäblich die logische Adresse des
Blocks an. Der Wert der logischen Adresse wird bedarfsweise in dem Fall des Neuschreibens
von Daten aktualisiert. Indessen ist der Wert der logischen Adresse so festgelegt,
dass derselbe Wert derselben logischen Adresse nicht von mehreren Blöcken zur
gleichen Zeit besessen wird.
Indessen muss dann, wenn in einen Flash-Speicher Daten in denselben
Block neu geschrieben bzw. zurückgeschrieben werden müssen, zunächst
ein Blocklöschen ausgeführt werden, wie vorstehend diskutiert wurde. Es
gibt jedoch eine obere Grenze für die zulässige Anzahl von möglichen
Löschungen, so dass es erforderlich ist, die Anzahl von Blocklöschungen
auf einen möglichst kleinen Wert zu reduzieren. Folglich werden bei dem Aktualisieren
von Daten eines gegebenen Blocks neue Daten in einem anderen Block geschrieben,
ohne neue Daten unter Verwendung des gegebenen Blocks neu zu schreiben. In diesem
Fall wird das Blockkennzeichen des Blocks, in welchem Daten gespeichert waren, auf
'noch nicht gelöscht' gesetzt, um anzuzeigen, dass die in den in Frage stehenden
Block gespeicherten Daten ungültig geworden sind. Falls bei dieser Speicherkarte
2 die Daten auf diese Art und Weise aktualisiert wurden, wird die logische
Adresse, welche dynamisch geändert werden kann, jedem Block zugewiesen, getrennt
von der in jedem Block voreingestellten physikalischen Adresse, so dass die den
Block angebende Adresse, in dem die in Frage stehenden Daten gespeichert sind, derselbe
sein wird, auf eine Art und Weise derart, dass der Block, in dem die Daten gespeichert
sind, durch diese logische Adresse repräsentiert wird.
Die Verknüpfungsadresse gibt die logische Adresse eines mit dem
in Frage stehenden Block verknüpften Blocks an. Das heißt, dass dann,
wenn es eine Fortsetzung zu einer in einem Block gespeicherten Datei gibt, derart,
dass die Datei sich zu einem anderen Block fortsetzt, der Wert der logischen Adresse
des nächsten Blocks, in welchem die Fortsetzung der Datei gespeichert ist,
als die Verknüpfungsadresse festgelegt wird.
Der Fehlerkorrekturcode für die verteilten Verwaltungsinformationen
ist ein Fehlerkorrektur-Kennzeichen für Daten in den verteilten Verwaltungsinformationen,
welche in den Bereich des Verwaltungskennzeichens, der logischen Adresse, der Verknüpfungsadresse
und der Reserve geschrieben wurden. Indessen sind das Möglich/Nicht-Möglich-Kennzeichen,
das Blockkennzeichen, das Letzte-Kennzeichen und das Referenzkennzeichen nicht der
Gegenstand der Fehlerkorrektur durch den Fehlerkorrekturcode für die verteilten
Verwaltungsinformationen. Demzufolge können das Möglich/Nicht-Möglich-Kennzeichen,
das Blockkennzeichen, das Letzte-Kennzeichen und das Referenzkennzeichen neu geschrieben
werden, ohne den Fehlerkorrekturcode für die verteilten Verwaltungsinformationen
zu aktualisieren.
Der Fehlerkorrekturcode für Daten ist der Fehlerkorrekturcode
für Daten, die in den Datenbereich der Seite geschrieben sind, in dem der Fehlerkorrekturcode
für Daten gespeichert ist.
Der Fehlerkorrekturcode für die verteilten Verwaltungsinformationen
und der Fehlerkorrekturcode für Daten werden von der Fehlerkorrekturschaltung
16, die in der Speicherkarte 2 angeordnet ist, verwendet. Demzufolge
kann zur Fehlerkorrektur unter Verwendung dieser Fehlerkorrekturcodes eine beliebige
optionale Technik verwendet werden, welche nicht von der Datenverarbeitungsvorrichtung
1 abhängt, sondern von der Speicherkarte 2 abhängt.
6. Zusätzliche Verwaltungsinformationen
Die zusätzlichen Verwaltungsinformationen sind die Informationen,
die in dem 16 Byte großen redundanten Bereich der letzten Seite des Blocks
gespeichert sind, und umfassen die zusätzlichen Informationen, die außerhalb
des Vermögens der verteilten Verwaltungsinformationen sein können.
Im Einzelnen bestehen die zusätzlichen Verwaltungsinformationen
aus einem 1 Byte langen Möglich/Nicht-Möglich-Kennzeichen, einem 1 Byte
langen Blockkennzeichen, einem 4 Bit langen Letzte-Kennzeichen, einem 4 Bit langen
Referenzkennzeichen, einer 1 Byte langen Unterscheidungszahl, einer 2 Byte langen
effektiven Datengröße, einem 5 Byte großen Reservebereich, einem
2 Byte langem Fehlerkorrekturkennzeichen für die zusätzlichen Verwaltungsinformationen,
und einem 2 Byte langem Fehlerkorrekturcode für Daten, wie in 6
gezeigt ist.
Das Möglich/Nicht-Möglich-Kennzeichen, das Blockkennzeichen,
das Letzte-Kennzeichen, das Referenzkennzeichen, der Reservebereich und der Fehlerkorrekturcode
für Daten sind dieselben wie diejenigen der verteilten Verwaltungsinformationen.
Der Fehlerkorrekturcode für die zusätzlichen Verwaltungsinformationen
ist äquivalent zu dem Fehlerkorrekturcode für die verteilten Verwaltungsinformationen
in den verteilten Verwaltungsinformationen, und ist der Fehlerkorrekturcode für
Daten, die in die Unterscheidungszahl, die effektive Datengröße und den
Reservebereich der zusätzlichen Verwaltungsinformationen geschrieben sind.
Die Unterscheidungszahl und die effektive Datengröße sind
in den zusätzlichen Verwaltungsinformationen als die zusätzlichen Informationen
enthalten, die außerhalb des Vermögens der verteilten Verwaltungsinformationen
sein können.
Die Unterscheidungszahl ist die Information zur Fehlerverarbeitung,
und ihr Wert wird jedes Mal dann inkrementiert, wenn Blockdaten neu geschrieben
werden. Diese Unterscheidungszahl wird zum Unterscheiden der zeitlichen Abfolge
von Daten verwendet, die in mehrere Blöcke mit derselben logischen Adresse
geschrieben sind, falls irgendein Fehler aufgetreten ist und diese mehreren Blöcke
zur selben logischen Adresse gelangt sind. Für diese Unterscheidungszahl wird
ein 1 Byte großer Bereich verwendet, und sie hat einen Wertebereich von '0'
bis '255', wobei der Anfangswert '0' ist. Falls die Unterscheidungszahl 255 überschritten
hat, wird sie auf '0' zurückgesetzt. Sollte es mehrere Datenblöcke derselben
logischen Adresse geben, ist der Datenblock mit dem kleineren Wert der Unterscheidungszahl
der gültige welche. Falls jedoch in dem Fall von Bootblöcken mehrere Reserve-Bootblöcke
vorhanden sind, haben die Unterscheidungszahlen dieser Bootblöcke normalerweise
denselben Wert. Falls in gewissen ungewöhnlichen Zuständen diese Bootblöcke
verschiedene Werte haben, sind die Bootblöcke mit größeren Unterscheidungswerten
die gültigen welchen.
Die effektive Datengröße gibt die Größen der effektiven
Daten in dem Block an. Das heißt, dass dann, wenn es irgendeinen freien Abschnitt
in dem Datenbereich eines gegebenen Blocks gibt, ein Wert, der die Größe
von in den Datenbereich geschriebenen Daten angibt, in der effektiven Datengröße
festgelegt wird. In diesem Fall wird das Referenzkennzeichen der verteilten Verwaltungsinformationen
auf 'es gibt Referenzinformationen' gesetzt. Falls es keinen freien Abschnitt in
dem Datenbereich des Blocks gibt, wird '0xffff' in dem effektiven Datenbereich als
ein Wert festgelegt, der angibt, dass es in dem Datenbereich keinen freien Abschnitt
gibt.
Die verteilten Verwaltungsinformationen und die zusätzlichen
Verwaltungsinformationen, die vorstehend beschrieben wurden, werden jedes Mal dann,
wenn Blockdaten aktualisiert werden, auf die neuesten Informationen aktualisiert.
7. Gesamte Verwaltungsinformationen
Die gesamten Verwaltungsinformationen bzw. Anhäufungsverwaltungsinformationen
werden nun im Einzelnen erklärt. Die gesamten Verwaltungsinformationen sind
die Informationen, die beim Sammeln der verteilten Verwaltungsinformationen der
jeweiligen Informationen erzeugt wurden, wie vorstehend beschrieben wurde, und werden
als eine Datei in dem Flash-Speicher 12 gespeichert. Das heißt, dass
eine Datei der gesamten Verwaltungsinformationen als die Informationen zum kollektiven
Überwachen der jeweiligen Blöcke aus den verteilten Verwaltungsinformationen
der jeweiligen Blöcke gebildet wird, wie in 7
gezeigt ist, und in einem Datenbereich eines voreingestellten Blocks gespeichert
wird. Indessen können die gesamten Verwaltungsinformationen in einem Block
oder in mehreren Blöcken gespeichert sein. Die Datenverarbeitungsvorrichtung
1 gewinnt üblicherweise die Informationen, wie sie zum Zugreifen auf
jeweilige Blöcke benötigt werden, durch diese gesamten Verwaltungsinformationen.
Das heißt, dass dann, wenn die gesamten Verwaltungsinformationen,
die für die Speicherkarte 2 wirksam sind, als eine Datei in der Speicherkarte
2 gespeichert sind, die Datenverarbeitungsvorrichtung 1 eine Datei
der gesamten Verwaltungsinformationen ausliest, um die so ausgelesene Datei in den
internen Speicher 4 zu speichern, um eine Verwaltungstabelle zum
Überwachen der Speicherkarte 2 zu formulieren. Indessen ist die physikalische
Adresse des Blocks, in dem der führende Teil der Datei der gesamten Verwaltungsinformationen
gespeichert ist, in den Bootdaten enthalten, so dass die Datenverarbeitungsvorrichtung
1 auf die Datei der gesamten Verwaltungsinformationen auf der Grundlage
dieser physikalischen Adresse zugreift.
Bezug nehmend auf 8 beinhalten diese
gesamten Verwaltungsinformationen einen Vorspann für die gesamten Verwaltungsinformationen,
eine Bitmap-Tabelle, die den Zustand der jeweiligen Blöcke zeigt, eine Umwandlungstabelle
zum Umwandeln der spezifizierten logischen Adresse in die physikalische Adresse,
bei dem Zugreifen auf den Block, und eine Verknüpfungstabelle, die den zu einem
gegebenen Block nächsten Block angibt.
In der Bitmap-Tabelle sind die Informationen gespeichert, die aus
den verteilten Verwaltungsinformationen für jeden Block extrahiert wurden,
wie beispielsweise ein Möglich/Nicht-Möglich-Kennzeichen, ein Blockkennzeichen,
ein Letzte-Kennzeichen, ein Referenzkennzeichen und ein Verwaltungskennzeichen.
Bezug nehmend auf 9 ist die Umwandlungstabelle
eine Tabelle, die die der logischen Adresse zugeordnete physikalische Adresse angibt.
Ein Bereich, in welchem die physikalische Adresse zu speichern ist, ist zwei Byte
pro Eintrag groß. Falls diese Umwandlungstabelle aus dieser Umwandlungstabelle
erzeugt wird, werden die logische Adresse, die in die verteilten Verwaltungsinformationen
eines Zielblocks geschrieben ist, und die physikalische Adresse des Blocks in der
entsprechenden Position der Tabelle eingetragen. Falls die logische Adresse nicht
verwendet wird, wird die entsprechende physikalische Adresse auf '0xffff' gesetzt.
Bezug nehmend auf 10 gibt die Verknüpfungstabelle
Verknüpfungsadressen für die physikalischen Adressen an. Der Bereich,
in welchem die Verknüpfungsadressen zu speichern sind, ist zwei Bytes pro Eintrag
groß. Wenn diese Verknüpfungstabelle aus den verteilten Verwaltungsinformationen
erzeugt wird, wird die Verknüpfungsadresse, die in die verteilten Verwaltungsinformationen
des Zielblocks geschrieben ist, geprüft, und wird die Verknüpfungsadresse
des Blocks in die entsprechende Position der Tabelle eingetragen.
8. Abfolge von Betriebsabläufen bei dem Booten der Speicherkarte
Nun wird die Abfolge von Betriebsabläufen bei dem Booten der
Speicherkarte 2 unter Bezugnahme auf das Ablaufdiagramm von 11
erklärt.
Bei dem Booten der Speicherkarte 2 liest die Datenverarbeitungsvorrichtung
1 in einem Schritt S1 in 11 Bootdaten aus
einem Bootblock der Speicherkarte 2 ein. Die Datenverarbeitungsvorrichtung
1 schreitet dann zu einem Schritt S2 fort.
In diesem Schritt S2 prüft die Datenverarbeitungsvorrichtung
1, um zu erkennen, dass das Einlesen der Bootdaten aus dem Bootblock normal
ausgeführt worden ist. Falls die Bootdaten normal eingelesen worden sind, schreitet
die Datenverarbeitungsvorrichtung 1 zu einem Schritt S3 fort. Andernfalls
schreitet die Datenverarbeitungsvorrichtung 1 zu einem Schritt S8 fort.
In dem Schritt S3 ermittelt die Datenverarbeitungsvorrichtung
1 auf der Grundlage der eingelesenen Bootdaten, ob die Speicherkarte in
die Datenverarbeitungsvorrichtung 1 eingesetzt ist oder nicht. Falls die
Speicherkarte 2 in die Datenverarbeitungsvorrichtung 1 eingesetzt
ist, schreitet die Datenverarbeitungsvorrichtung 1 zu einem Schritt S4
fort. Andernfalls schreitet die Datenverarbeitungsvorrichtung 1 zu einem
Schritt S8 fort.
In dem Schritt S4 liest die Datenverarbeitungsvorrichtung
1 die gesamten Verwaltungsinformationen aus der Speicherkarte
2 ein. Indessen ist die physikalische Adresse des Blocks, in dem die gesamten
Verwaltungsinformationen gespeichert sind, in den Bootdaten spezifiziert. Die Datenverarbeitungsvorrichtung
1 schreitet dann zu einem Schritt S5 fort.
In diesem Schritt S5 prüft die Datenverarbeitungsvorrichtung
1, um zu sehen, ob die wirksamen gesamten Verwaltungsinformationen wie
regelmäßig eingelesen worden sind oder nicht. Falls die wirksamen gesamten
Verwaltungsinformationen wie regelmäßig eingelesen worden sind, schreitet
die Datenverarbeitungsvorrichtung 1 zu einem Schritt S6 fort. Andernfalls
schreitet die Datenverarbeitungsvorrichtung 1 zu einem Schritt S7 fort.
In dem Schritt S6 veranlasst die Datenverarbeitungsvorrichtung
1, dass die eingelesenen gesamten Verwaltungsinformationen in dem internen
Speicher 4 gespeichert werden, um die Verwaltungstabelle zum Überwachen
der Speicherkarte 2 zu formulieren.
Die vorstehend beschriebene Verarbeitung vervollständigt die
Initialisierungsverarbeitung bei dem Anlaufen der Speicherkarte 2, so dass
die Speicherkarte 2 nun verwendet werden kann.
Falls in dem Schritt S5 verifiziert wird, dass die wirksamen gesamten
Verwaltungsinformationen nicht normal eingelesen worden sind, schreitet die Datenverarbeitungsvorrichtung
1 zu dem Schritt S7 fort, wie vorstehend beschrieben
wurde. In dem Schritt S7 liest die Datenverarbeitungsvorrichtung 1 die
verteilten Verwaltungsinformationen der jeweiligen Blöcke aus, um die gesamten
Verwaltungsinformationen zu rekonstruieren. Die gesamten Verwaltungsinformationen
werden in dem internen Speicher 4 expandiert, um die Verwaltungstabelle
zum Überwachen der Speicherkarte 2 zu formulieren. Die vorstehende
Verarbeitung vervollständigt die Initialisierungsverarbeitung bei dem Anlaufen
der Speicherkarte 2, so dass die Speicherkarte 2 nun verwendbar
ist.
Falls in dem Schritt S2 ermittelt wird, dass ein Fehler bei dem Einlesen
der Bootdaten produziert worden ist, oder falls in dem Schritt S3 ermittelt wird,
dass die Speicherkarte 2 nicht in die Datenverarbeitungsvorrichtung
1 eingesetzt ist, schreitet die Datenverarbeitungsvorrichtung
1 zu dem Schritt S8 fort, wie vorstehend beschrieben wurde.
Es ist dann, wenn die Speicherkarte 2 nicht verwendbar ist,
dass die Datenverarbeitungsvorrichtung 1 zu dem Schritt S8 fortschreitet.
Daher führt in diesem Schritt S8 die Datenverarbeitungsvorrichtung
1 eine voreingestellte Fehlerverarbeitung durch, wie beispielsweise das
Anzeigen einer Nachricht 'nicht verwendbar', um die Bootverarbeitung für die
Speicherkarte 2 zu beenden.
9. Handhaben einer Gesamtverwaltungsverarbeitung bei einer Datenaktualisierungsverarbeitung
Jedes Mal dann, wenn die Datenverarbeitungsvorrichtung 1
die Verarbeitung des Schreibens von Daten in die Speicherkarte 2 oder des
Löschens der Daten aus derselben durchführt, aktualisiert die Datenverarbeitungsvorrichtung
1 nebenbei die Verwaltungstabelle, die in dem internen Speicher
4 gehalten wird, in eine Übereinstimmung mit dem tatsächlichen
Zustand der Speicherkarte 2, das heißt, in eine Übereinstimmung
mit den Inhalten der verteilten Verwaltungsinformationen. Die Verarbeitung des Schreibens
von Daten in die oder des Löschens der Daten aus der Speicherkarte
2 wird nachstehend als 'Datenaktualisierungsverarbeitung' bezeichnet. Andererseits
werden die gesamten Verwaltungsinformationen, die als eine Datei in der Speicherkarte
2 gespeichert sind, nicht bei jeder Datenverarbeitungsoperation aktualisiert,
sondern Änderungsinhalte derselben werden insgesamt zu einem geeigneten Zeitpunkt
aktualisiert.
Im Allgemeinen gibt es eine obere Grenze für die Anzahl möglicher
Neuschreibvorgänge für den Flash-Speicher 12. Durch Ausführen
des Neuschreibens der gesamten Verwaltungsinformationen als Ganzes, und kollektiv
in einem mehr oder weniger großem Ausmaß, kann die Anzahl von Neuschreibvorgängen
des Blocks, in dem die gesamten Verwaltungsinformationen gespeichert sind, verringert
werden, wodurch die Lebensdauer der Speicherkarte 2 verlängert wird.
Es wird angemerkt, dass vor dem Datenaktualisieren eine Ungültigmachung
der Datei der in der Speicherkarte 2 gespeicherten gesamten Verwaltungsinformationen
erfolgen muss, um die Integrität der verteilten Verwaltungsinformationen und
der gesamten Verwaltungsinformationen nicht zu beeinträchtigen. Bei der Datenaktualisierung
werden die verteilten Verwaltungsinformationen eines verarbeiteten Blocks gleichzeitig
aktualisiert. Die Inhalte der gesamten Verwaltungsinformationen werden jedoch nicht
gleichzeitig aktualisiert, so dass daher die verteilten Verwaltungsinformationen
und die gesamten Verwaltungsinformationen nicht miteinander übereinstimmen.
Folglich wird in einem solchen Fall die Datei der gesamten Verwaltungsinformationen,
die in der Speicherkarte 2 gespeichert ist, ungültig gemacht.
Im Einzelnen verifiziert bei der Aktualisierung der Daten die Datenverarbeitungsvorrichtung
1 in einem Schritt S11 in 12, ob die in der
Speicherkarte 2 gespeicherten gesamten Verwaltungsinformationen gültig
sind oder nicht. Falls die gesamten Verwaltungsinformationen bereits ungültig
sind, schreitet die Datenverarbeitungsvorrichtung 1 direkt zu der Datenaktualisierung
fort. Falls demgegenüber die gesamten Verwaltungsinformationen gültig
sind, schreitet die Datenverarbeitungsvorrichtung 1 zu einem Schritt S12
fort.
In dem Schritt S12 macht die Datenverarbeitungsvorrichtung
1 die gesamten Verwaltungsinformationen ungültig. Im Einzelnen wird
das Blockkennzeichen des Blocks, in dem die Datei der gesamten Verwaltungsinformationen
gespeichert ist, auf 'noch nicht gelöscht' gesetzt, oder wird der Block einer
Löschverarbeitung unterzogen, um die Daten zu löschen. Nach dem Ungültigmachen
der gesamten Verwaltungsinformationen schreitet die Datenverarbeitungsvorrichtung
1 zu der Datenaktualisierungsverarbeitung fort.
Die Datei der gesamten Verwaltungsinformationen, die in der Speicherkarte
2 gespeichert ist, wird während der Datenaktualisierungsverarbeitung
ungültig gemacht. Die Inhalte der Verwaltungstabelle, die in dem internen Speicher
4 der Datenverarbeitungsvorrichtung 1 gespeichert ist, werden
jedoch von Zeit zu Zeit aktualisiert, um zu allen Zeiten den neuesten Zustand beizubehalten.
Die Datenverarbeitungsvorrichtung 1 überwacht üblicherweise die
jeweiligen Blöcke auf der Grundlage dieser Verwaltungstabelle.
Die gesamten Verwaltungsinformationen, die während der Datenaktualisierungsverarbeitung
ungültig gemacht wurden, werden zu einem geeigneten Zeitpunkt
neu in die Speicherkarte 2 geschrieben, um erneut gültige Daten zu
sein. Der geeignete Zeitpunkt hier bedeutet beispielsweise den Zeitpunkt, wenn die
Verwendung der Speicherkarte 2 zu einem Ende gekommen ist und die Leistungsversorgung
ausgeschaltet wird, den Zeitpunkt, zu dem ein Zugriff auf die Speicherkarte
2 für länger als eine voreingestellte Zeit nicht erfolgte, oder
den Zeitpunkt, wenn für länger als eine vorbestimmte Zeit kein Datenneuschreibvorgang
ausgeführt worden ist.
Im Einzelnen wird die in 13 gezeigte
Ende-Verarbeitung ausgeführt, bevor die Verwendung der Speicherkarte
2 zu einem Ende gekommen ist, um die Leistungsversorgung auszuschalten,
um die gesamten Verwaltungsinformationen wirksam zu machen.
Bei dieser Ende-Verarbeitung verifiziert die Datenverarbeitungsvorrichtung
1 zunächst, ob die in der Speicherkarte 2 gespeicherten gesamten
Verwaltungsinformationen gültig sind oder nicht. Falls die gesamten Verwaltungsinformationen
gültig sind, wird die Verarbeitung direkt beendet. Falls die gesamten Verwaltungsinformationen
gültig sind, geht die Verarbeitung zu einem Schritt S22 über.
In dem Schritt S22 verifiziert die Datenverarbeitungsvorrichtung
1 zunächst, ob der Block, in dem die gesamten Verwaltungsinformationen
gespeichert sind, gelöscht worden ist oder nicht. Falls die Datei gelöscht
worden ist, geht die Verarbeitung zu einem Schritt S23 über, und andernfalls
geht die Verarbeitung zu einem Schritt S24 über.
In dem Schritt S23 löscht die Datenverarbeitungsvorrichtung
1 den Block, in dem die Datei der gesamten Verwaltungsinformationen gespeichert
ist. Die Datenverarbeitungsvorrichtung 1 schreitet dann zu einem Schritt
S24 fort.
In dem Schritt S24 schreibt die Datenverarbeitungsvorrichtung
1 die gesamten Verwaltungsinformationen in die Speicherkarte
2. Die Datenverarbeitungsvorrichtung 1 formuliert darüber
hinaus eine Datei der neuen gesamten Verwaltungsinformationen auf der Grundlage
der Inhalte der Verwaltungstabelle, die in dem internen Speicher 4 gehalten
wird, und schreibt die Datei der neuen gesamten Verwaltungsinformationen in die
Speicherkarte 2. Dies bewirkt, dass die wirksamen gesamten Verwaltungsinformationen,
die den neuesten Zustand der Speicherkarte 2 angeben, in der Speicherkarte
2 gespeichert werden.
Das Vorstehende vervollständigt die Ende-Verarbeitung derart,
dass die wirksamen gesamten Verwaltungsinformationen nun in der Speicherkarte
2 gespeichert worden sind.
10. Schreiben einer neuen Datei
Nun wird die Abfolge von Betriebsabläufen bei dem Schreiben einer
neuen Datei in die Speicherkarte 2 erklärt. Die Abfolge von Betriebsabläufen
bei dem Schreiben einer Datei in die Speicherkarte 2 unterscheidet sich
in Abhängigkeit davon, ob die Dateigröße von Anfang an bekannt war
oder nicht.
10-1 Der Fall, in dem die Datei Größe von Anfang an bekannt war.
Falls die Dateigröße von Anfang an bekannt war, wird, wann
immer die Daten der Datei in einen neuen Block geschrieben werden, geprüft,
ob die Daten in dem in Frage stehenden Block untergebracht werden können oder
nicht. Falls die Daten nicht in dem Block untergebracht werden können, wird
die logische Adresse des nächsten folgenden Blocks beschafft, werden die Daten
in den Datenbereich geschrieben, und werden die verteilten Verwaltungsinformationen
geschrieben, mit der logischen Adresse des nächsten folgenden Blocks als der
Verknüpfungsadresse. Zu dieser Zeit wird das Letzte-Kennzeichen auf 'Blockfortsetzung'
gesetzt. Falls andererseits die Daten in dem Block untergebracht werden können,
wird der Bruchteilszahlabschnitt der Daten, das heißt, der freie Bereich des
Datenbereichs, auf '0xffff' gesetzt. Zu dieser Zeit wird das Letzte-Kennzeichen
auf 'letzter Block' gesetzt, und wird die effektive Datengröße in die
zusätzlichen Verwaltungsinformationen geschrieben.
Die Abfolge von Betriebsabläufen des Schreibens der Datei, deren
Größe von Anfang an bekannt war, in die Speicherkarte 2, wird
im Einzelnen unter Bezugnahme auf das in 14 gezeigte
Ablaufdiagramm erklärt. In dem in 14 gezeigten
Ablaufdiagramm und in den in den 15 und 17
gezeigten Ablaufdiagrammen ist die Untersuchung des Schalters 20 zum Verhinderns
des unabsichtlichen Löschens der Speicherkarte 2 oder die Verarbeitung,
falls irgendein Fehler aufgetreten ist, weggelassen.
Bei dem Schreiben einer Datei, deren Größe von Anfang an
bekannt war, in die Speicherkarte 2 stellt die Datenverarbeitungsvorrichtung
1 in einem Schritt S31 reale in die Speicherkarte 2 geschriebene
Daten und einen Vorspann für die realen Daten bereit. Anders ausgedrückt
stellt die Datenverarbeitungsvorrichtung 1 in dem Schritt S31 eine in den
Datenbereich der Speicherkarte 2 zu schreibende Datei bereit. Die Informationen
über die Dateigröße ist in dem Dateivorspann enthalten. Die Datenverarbeitungsvorrichtung
1 schreitet dann zu einem Schritt S32 fort.
In dem Schritt S32 setzt die Datenverarbeitungsvorrichtung
1 das Blockkennzeichen des Blocks, in dem die Datei zuerst
gespeichert ist, auf 'an dem führenden Ende verwendet'. Die Datenverarbeitungsvorrichtung
1 beschafft dann die freie logische Adresse, bevor sie zu einem Schritt
S34 fortschreitet.
In dem Schritt S33 holt die Datenverarbeitungsvorrichtung
1 eine freie physikalische Adresse, bevor sie zu einem Schritt S34 fortschreitet.
In dem Schritt S34 prüft die Datenverarbeitungsvorrichtung
1, um zu erkennen, ob die Datei in den verarbeiteten Block untergebracht
werden kann oder nicht. Falls die Datei nicht in dem Block untergebracht werden
kann, und es eine Fortsetzung der Datei gibt, schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S35 fort, und falls die Datei in dem Block untergebracht
werden kann und es keine Fortsetzung der Datei gibt, schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S36 fort.
In dem Schritt S35 beschafft die Datenverarbeitungsvorrichtung
1 die logische Adresse des nächsten folgenden Blocks und legt diese
logische Adresse als die Verknüpfungsadresse fest. Die Datenverarbeitungsvorrichtung
1 schreitet dann zu dem nächsten Schritt S37 fort.
In dem Schritt S36 setzt die Datenverarbeitungsvorrichtung
1 das Letzte-Kennzeichen auf 'letzter Block', während sie die Verknüpfungsadresse
auf '0xffff' setzt, bevor sie zu einem Schritt S37 fortschreitet.
In dem Schritt S37 formuliert die Datenverarbeitungsvorrichtung
1 die verteilten Verwaltungsinformationen, die zu dem Block gehören,
der verarbeitet wird, auf der Grundlage von beispielsweise den Informationen wie
in den Schritten bis zu dem gegenwärtigen Schritt festgelegt, bevor sie zu
einem Schritt S38 fortschreitet.
In dem Schritt S38 schreibt die Datenverarbeitungsvorrichtung
1 sequenzielle Daten in den Block, der verarbeitet wird, auf der Seitenbasis.
Falls die Datei nicht in dem Block, der verarbeitet wird, untergebracht werden kann,
werden 1-Block-Daten auf der Seitenbasis geschrieben. Falls die Datei in dem Block,
der verarbeitet wird, untergebracht werden kann, werden nur benötigte Seiten
der Daten auf der Seitenbasis beschrieben. Indessen handelt es ich um Daten einer
neu geschriebenen Datei und die verteilten Verwaltungsinformationen, die in dem
Schritt S37 erzeugt wurden, die in den Block geschrieben werden. Die Datenverarbeitungsvorrichtung
1 schreitet dann zu einem Schritt S39 fort.
In dem Schritt S39 prüft die Datenverarbeitungsvorrichtung
1, um zu erkennen, ob die Gesamtheit von Daten der Datei in die Speicherkarte
2 geschrieben worden ist oder nicht. Falls das Schreiben nicht beendet
worden ist, und es noch zu schreibende Daten gibt, kehrt die Verarbeitung zu dem
Schritt S33 zurück, um die Verarbeitung zu wiederholen. Falls das Schreiben
zu einem Ende gekommen ist, geht die Verarbeitung zu einem Schritt S40 über.
In dem Schritt S40 verifiziert die Datenverarbeitungsvorrichtung
1, ob die geschriebenen Daten in einem Block teilweise zu einem Ende gekommen
sind. Falls die geschriebenen Daten in einem Block teilweise zu einem Ende gekommen
sind, schreitet die Datenverarbeitungsvorrichtung 1 zu einem Schritt S41
fort, und falls Daten bis hin zu dem Ende des Blocks gespeichert worden sind, kommt
die Verarbeitung zu einem Ende.
In dem Schritt S41 schreibt die Datenverarbeitungsvorrichtung
1 die effektive Datengröße in die zusätzlichen Verwaltungsinformationen,
die in dem redundanten Bereich der letzten Seite gespeichert sind. Das heißt,
die Datenverarbeitungsvorrichtung 1 schreibt einen Wert, der die Größe
von Daten angibt, die in den Datenbereich des Blocks geschrieben wurden, in den
der letzte Teil der Datei gespeichert ist, in die zusätzlichen Verwaltungsinformationen
des Blocks, als effektive Datengröße.
Das Vorstehende vervollständigt die Verarbeitung des Schreibens
in die Speicherkarte 2 der Datei, deren Größe von Anfang an bekannt
war.
10-2 Der Fall, in welchem die Dateigröße nicht bekannt war
Falls die Dateigröße nicht im Voraus bekannt war, wird die
logische Adresse des nächsten folgenden Blocks immer beschafft, und zu einem
Zeitpunkt, an dem die Daten zu einem Ende gekommen sind, wird das Letzte-Kennzeichen
des letzten Blocks durch Überschreiben gesetzt. Die verteilten Verwaltungsinformationen
und die zusätzlichen Verwaltungsinformationen werden auf eine Art und Weise
ähnlich zu einem Fall festgelegt, in dem die Dateigröße von Anfang
an bekannt ist.
Bezug nehmend auf das Ablaufdiagramm von 15
wird nun die Abfolge von Betriebsabläufen zum Schreiben der Datei, deren Größe
am Anfang nicht bekannt ist, im Einzelnen erklärt.
Bei dem Schreiben der Datei, deren Größe nicht von Anfang
an bekannt ist, formuliert die Datenverarbeitungsvorrichtung 1 in einem
Schritt S51 einen vorläufigen Vorspann einer in die Speicherkarte
2 geschriebenen Datei. Da die Dateigröße in dieser Stufe nicht
bekannt ist, sind die Informationen über die Dateigröße in dem vorläufigen
Vorspann nicht enthalten. Die Datenverarbeitungsvorrichtung 1 schreitet
dann zu einem Schritt S52 fort.
In diesem Schritt S52 setzt die Datenverarbeitungsvorrichtung
1 das Blockkennzeichen des Blocks, in dem die Datei anfänglich gespeichert
wird, auf 'an dem führenden Ende verwendet'. Die Datenverarbeitungsvorrichtung
1 beschafft darüber hinaus eine freie logische Adresse, bevor sie
zu einem Schritt S53 fortschreitet.
In dem Schritt S53 stellt die Datenverarbeitungsvorrichtung
1 in die Speicherkarte 2 geschriebene Daten bereit, bevor sie
zu einem Schritt S54 fortschreitet.
In dem Schritt S54 verifiziert die Datenverarbeitungsvorrichtung
1, ob es irgendwelche in die Speicherkarte 2 zu schreibende Daten
gibt oder nicht. Falls die Daten nicht erschöpft sind, und übrig bleiben,
schreitet die Datenverarbeitungsvorrichtung 1 zu einem Schritt S55 fort.
Falls die Daten erschöpft sind und nicht übrig bleiben, schreitet die
Datenverarbeitungsvorrichtung 1 zu einem Schritt S61 fort.
In dem Schritt S55 holt die Datenverarbeitungsvorrichtung
1 eine freie physikalische Adresse, bevor sie zu einem Schritt S56 fortschreitet.
In dem Schritt S56 beschafft die Datenverarbeitungsvorrichtung
1 die logische Adresse des nächsten folgenden Blocks, und setzt diese
logische Adresse als die Verknüpfungsadresse, bevor sie zu einem Schritt S57
fortschreitet.
In dem Schritt S57 formuliert die Datenverarbeitungsvorrichtung
1 die verteilten Verwaltungsinformationen für den verarbeiteten Block
auf der Grundlage der Informationen, wie sie in den Schritten bis hin zu dem gegenwärtigen
Schritt festgelegt wurden, bevor sie zu einem Schritt S58 fortschreitet.
In dem Schritt S58 schreibt die Datenverarbeitungsvorrichtung
1 sequentiell Daten auf der Seitenbasis in den Block, der verarbeitet wird.
Falls eine Datei in dem Block, der verarbeitet wird, nicht untergebracht werden
kann, wird ein Block von Daten auf der Seitenbasis geschrieben. Falls eine Datei
in dem Block, der verarbeitet wird, untergebracht werden kann, werden nur benötigte
Seiten der Daten auf der Seitenbasis geschrieben. Indessen handelt es sich um die
Daten einer neu geschriebenen Datei und die in dem Schritt S57 erzeugten verteilten
Verwaltungsinformationen, die in diesem Schritt S58 in den Block geschrieben werden.
Die Datenverarbeitungsvorrichtung 1 schreitet dann zu einem Schritt S59
fort.
In diesem Schritt S59 verifiziert die Datenverarbeitungsvorrichtung
1, ob die geschriebenen Daten teilweise in den Datenbereich des Blocks
zu einem Ende gekommen sind oder nicht. Falls Daten bis hin zu dem Ende des Datenbereichs
gespeichert sind, kehrt die Verarbeitung zu dem Schritt S53 zurück, um die
Verarbeitung zu wiederholen. Falls Daten in dem Datenbereich teilweise erschöpft
sind, geht die Verarbeitung zu einem Schritt S60 über.
In dem Schritt S60 schreibt die Datenverarbeitungsvorrichtung
1 die effektive Datengröße in die zusätzlichen Verwaltungsinformationen,
die in dem redundanten Bereich der letzten Seite des Blocks, der verarbeitet wird,
gespeichert sind. Das heißt, die Datenverarbeitungsvorrichtung 1 schreibt
einen Wert, der die Größe von in den Datenbereich des Blocks, in dem der
letzte Teil der Datei gespeichert ist, geschriebenen Daten angibt, als die effektive
Datengröße in die zusätzlichen Verwaltungsinformationen des in Frage
stehenden Blocks. Die Datenverarbeitungsvorrichtung 1 schreitet dann zu
einem Schritt S61 fort.
In diesem Schritt S61 setzt die Datenverarbeitungsvorrichtung
1 das Letzte-Kennzeichen des Blocks, der verarbeitet wird, auf durch Überschreiben
auf 'letzter Block', bevor sie zu einem Schritt S62 fortschreitet.
In dem Schritt S62 aktualisiert die Datenverarbeitungsvorrichtung
1 den Dateivorspann. Das heißt, dass, da die Dateigröße
in dieser Stufe klar geworden ist, die Datenverarbeitungsvorrichtung 1
neu einen Vorspann formuliert, einschließlich der Dateigrößeninformation,
um den vorstehend erwähnten vorläufigen Vorspann auf den neuen Vorspann
einschließlich der Dateigrößeninformation neu zu schreiben.
Das Vorstehende vervollständig die Verarbeitung des Schreibens
der Datei, deren Größe im Voraus nicht bekannt war, in die Speicherkarte
2.
11. Dateiaktualisierung
Die Verarbeitungsabfolge bei dem Aktualisieren der in der Speicherkarte
2 gespeicherten Datei wird nun erklärt.
Bei der Dateiaktualisierung wird die logische Adresse, welche dieselbe
ist wie die des Blocks, dessen Daten neu zu schreiben sind, einem anderen Block
zugeteilt, und werden neue Daten in den in Frage stehenden Block geschrieben. Der
Block, in den alte Daten geschrieben sind, wird zu dieser Zeit, ohne geöffnet
zu werden, gehalten, bis die Dateiaktualisierungsverarbeitung zu einem Ende kommt.
Dieses ermöglicht, dass der Voraktualisierungszustand der Datei wiederhergestellt
werden kann, selbst wenn angenommen wird, dass eine Fehlfunktion während der
Dateiaktualisierungsverarbeitung aufgetreten ist.
Ein bestimmtes Beispiel der Abfolge von Betriebsabläufen zum
Aktualisieren einer Datei wird nun unter Bezugnahme auf
16 erklärt.
Es wird angenommen, dass das führende Ende der Datei in einem
Block der logischen Adresse '1' gespeichert ist, ein nächster Abschnitt der
Datei in einem Block der logischen Adresse '2' gespeichert ist, und ein weiterer
nächster Abschnitt derselben in einem Block der logischen Adresse '3' gespeichert
ist, wie in 16A gezeigt ist. Es wird darüber hinaus
angenommen, dass die Unterscheidungszahl des Blocks mit der logischen Adresse '1'
'6' ist, die Unterscheidungszahl des Blocks mit der logischen Adresse '2' '4' ist,
und die Unterscheidungszahl des Blocks mit der logischen Adresse '3' '1' ist.
Es wird ferner angenommen, dass in einem derartigen Zustand, die Daten
des Blocks der logischen Adresse '2' neu geschrieben werden. In einem solchen Fall
wird die logische Adresse '2' einem anderen freien Block zugeteilt, und werden neue
Daten in diesem Block geschrieben, wie in 16B gezeigt
ist. Für die Unterscheidungszahl des Blocks, in welchem neue Daten zu schreiben
sind, wird ein Wert '5' entsprechend der Unterscheidungszahl des Blocks, in welchen
neue Daten zu schreiben sind, und welche um Eins inkrementiert ist, festgelegt.
In dieser Stufe existieren zwei Blöcke mit derselben logischen
Adresse. Die Daten, die in einem dieser zwei Blöcke gespeichert sind, der eine
größere Unterscheidungszahl trägt, sind neue Daten, und die Daten,
die in dem anderen Block gespeichert sind, der eine kleinere Unterscheidungszahl
trägt, sind alte Daten.
Wenn das Schreiben neuer Daten regelmäßig zu einem Ende
gekommen ist, wird der Block mit den darin geschriebenen alten Daten gelöscht,
wie in 16C gezeigt ist. Es wird angemerkt, dass einfach
das Blockkennzeichen des in Frage stehenden Blocks auf 'noch nicht gelöscht'
gesetzt wird, ohne den Block, in dem die alten Daten geschrieben sind, zu löschen,
wobei der Block später zu einem geeigneten Zeitpunkt gelöscht wird.
Nun auf das Ablaufdiagramm von 17 Bezug
nehmend, wird die vorstehend beschriebene Abfolge von Betriebsabläufen im Einzelnen
erklärt.
Bei dem Aktualisieren einer Datei wählt die Datenverarbeitungsvorrichtung
1 in einem Schritt S71 einen zu aktualisierenden Block, bevor sie zu dem
nächsten Schritt S72 fortschreitet.
In diesem Schritt S72 liest die Datenverarbeitungsvorrichtung
1 die Unterscheidungszahl des zu aktualisierenden Blocks aus und legt einen
dieser Unterscheidungszahl entsprechenden Wert, der um Eins inkrementiert ist, als
die Unterscheidungszahl des Blocks fest, in welchen neue Daten zu schreiben sind.
Die Datenverarbeitungsvorrichtung 1 legt darüber hinaus einen Wert
gleich der logischen Adresse des Blocks, der aktualisiert wird, als eine logische
Adresse des Blocks, in welchem neue Daten zu schreiben sind, fest, bevor sie zu
dem nächsten Schritt S73 fortschreitet.
In diesem Schritt S73 stellt die Datenverarbeitungsvorrichtung
1 neue Daten, die in den Block zu schreiben sind, bereit, bevor sie zu
dem nächsten Schritt S74 fortschreitet.
In diesem Schritt S74 holt die Datenverarbeitungsvorrichtung
1 eine freie physikalische Adresse, bevor sie zu dem nächsten Schritt
S75 fortschreitet.
In diesem Schritt S75 verifiziert die Datenverarbeitungsvorrichtung
1, ob die Datenänderungen alle abgeschlossen worden sind oder nicht.
Falls die Datenänderungen nicht abgeschlossen worden sind, geht die Verarbeitung
zu einem Schritt S76 über, und andernfalls geht die Verarbeitung zu einem Schritt
S79 über.
In dem Schritt S76 beschafft die Datenverarbeitungsvorrichtung
1 die logische Adresse des nächsten folgenden Blocks und legt diese
logische Adresse als die Verknüpfungsadresse fest, bevor sie zu dem nächsten
Schritt S77 fortschreitet.
In dem Schritt S77 formuliert die Datenverarbeitungsvorrichtung
1 die verteilten Verwaltungsinformationen, die zu einem Block gehören,
in welchem neue Daten zu schreiben sind, auf der Grundlage von zum Beispiel den
Information wie in den Schritten bis hin zu dem gegenwärtigen Schritt festgelegt,
bevor sie zu dem nächsten Schritt S78 fortschreitet.
In diesem Schritt S78 schreibt die Datenverarbeitungsvorrichtung
1 sequenzielle neue Daten auf der Seitenbasis in den Block der in dem Schritt
S74 geholten physikalischen Adresse. Falls die Datei in dem Block, der verarbeitet
wird, nicht untergebracht werden kann, werden Ein-Block-Daten auf der Seitenbasis
geschrieben. Falls die Datei in dem Block, der verarbeitet wird, untergebracht werden
kann, werden nur benötigte Seiten der Daten auf der Seitenbasis geschrieben.
Indessen handelt es sich um Daten einer neuen Datei und die verteilten Verwaltungsinformationen,
die in dem Schritt S77 erzeugt wurden, die in den Block geschrieben werden. Nach
diesem Schritt S78 kehrt die Verarbeitung zu dem Schritt S73 zurück, um die
Verarbeitung zu wiederholen.
In dem Schritt S79 prüft die Datenverarbeitungsvorrichtung
1, um zu erkennen, ob eine Verknüpfungsadresse für den Block,
welcher als Letztes aktualisiert wurde, festgelegt worden ist oder nicht. Falls
die Verknüpfungsadresse nicht festgelegt worden ist, schreitet
die Datenverarbeitungsvorrichtung 1 zu einem Schritt S80 fort, und falls
die Verknüpfungsadresse festgelegt worden ist, schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S81 fort.
In dem Schritt S80 setzt die Datenverarbeitungsvorrichtung
1 das Letzte-Kennzeichen des Blocks, in welchen neue Daten als Letztes
geschrieben wurden, auf 'letzter Block', bevor sie zu dem nächsten Schritt
S81 fortschreitet.
In dem Schritt S81 setzt die Datenverarbeitungsvorrichtung
1 den Wert der Verknüpfungsadresse, wie in dem Block, welcher als
letzter aktualisiert wurde, festgelegt, in die Verknüpfungsadresse des Blocks,
in welchen als Letztes neue Daten geschrieben wurden. Die Datenverarbeitungsvorrichtung
1 schreitet dann zu einem Schritt S82 fort.
In diesem Schritt S82 aktualisiert die Datenverarbeitungsvorrichtung
1 den Dateivorspann. Das heißt, dass, da eine Möglichkeit besteht,
dass sich die Dateigröße geändert hat, aufgrund der Dateiaktualisierung,
ein Vorspann einschließlich der Information über die neue Dateigröße
neu erzeugt wird, um den Dateivorspann zu aktualisieren. Die Datenverarbeitungsvorrichtung
1 schreitet dann zu einem Schritt S83 fort.
In diesem Schritt S83 löscht die Datenverarbeitungsvorrichtung
1 den Block, in den alte Daten geschrieben waren. Es wird angemerkt, dass
einfach das Block-Kennzeichen des in Frage stehenden Blocks auf 'noch nicht gelöscht'
gesetzt wird, ohne den Block, in den die alten Daten geschrieben sind, zu löschen,
wobei der Block später zu einem geeigneten Zeitpunkt gelöscht wird.
Das Vorstehende vervollständigt die Dateiaktualisierungsverarbeitung.
12. Fehlererfassungs- und Korrektur-Verarbeitung
Falls in dem vorstehenden beschriebenen System die Leistungsversorgung
plötzlich ausgeschaltet wird, oder falls die Speicherkarte 2 erzwungen
aus der Datenverarbeitungsvorrichtung 1 entnommen wurde, wenn eine neue
Datei in die Speicherkarte 2 geschrieben wird oder eine in der Speicherkarte
2 gespeicherte Datei aktualisiert wird, ist es wahrscheinlich, dass mehrere
Blöcke mit derselben logischen Adresse nebeneinander existieren (logischer
Adressfehler), oder dass es keinen durch die Verknüpfungsadresse spezifizierten
Block gibt (Verknüpfungsadressfehler).
Folglich werden in dem erfindungsgemäßen System eine Fehlererfassungs-
und Korrektur-Verarbeitung zum Erfassen und Korrigieren des logischen Adressfehlers
oder des Verknüpfungsadressfehlers bei dem Aufbau der gesamten Verwaltungsinformationen
ausgeführt. Diese Fehlererfassungs- und Korrektur-Verarbeitung wird nachstehend
erklärt.
12-1 Fehlererfassungstabelle
In dem erfindungsgemäßen System werden die logischen Adressfehler
oder die Verknüpfungsadressfehler bei dem Aufbau der gesamten Verwaltungsinformationen
erfasst. Als die zum Erfassen der Verknüpfungsadressfehler verwendete Tabelle
wird eine Fehlererfassungstabelle verwendet. Die Fehlererfassungstabelle wird nur
zum Erfassen der Verknüpfungsadressfehler verwendet, und wird vorübergehend
in dem internen Speicher 4 der Datenverarbeitungsvorrichtung
1 beschafft. Der für die Fehlererfassungstabelle bereitgestellte Bereich
wird nach dem Ende der Fehlererfassungs- und Korrektur-Verarbeitung freigegeben.
Bezug nehmend auf 18 ist die Fehlererfassungstabelle
eine Tabelle mit einem 1 Bit großen Bereich, der den Verknüpfungszustand
der jeweiligen Blöcke angibt. Anders ausgedrückt ist die Fehlererfassungstabelle
eine Ein-Bit-für-Einen-Eintrag-Tabelle, wobei jeder Eintrag den Verknüpfungszustand
der logischen Adresse durch '0' oder '1' repräsentiert. Falls es N Blöcke
gibt, die verarbeitet werden, nimmt diese Fehlererfassungstabelle einen Bereich
von N/8 Bytes ein.
Bei dieser Fehlererfassungstabelle haben die Werte, die die Verknüpfungszustände
der jeweiligen Blöcke zeigen, wenn die gesamten Verwaltungsinformationen aufgebaut
werden, andere Bedeutungen als diejenigen dann, wenn der Aufbau der gesamten Verwaltungsinformationen
zu einem Ende gekommen ist.
Falls dann, wenn die gesamten Verwaltungsinformationen aufgebaut werden,
der den Kopplungszustand angebende Wert '0' ist, gibt dieses an, dass sich der Eintrag
in einem normalen Zustand befindet, oder gibt an, dass die dem Eintrag entsprechende
logische Adresse nicht durch die Verknüpfungsadresse eines anderen Blocks bis
hin zu dem verarbeiteten Block spezifiziert wird. In diesem Fall kann der den Kopplungszustand
angebende Wert mit fortschreitender Verarbeitung '1' werden, so dass es nicht definiert
ist, ob ein Verknüpfungsfehler besteht oder nicht.
Falls dann, wenn die gesamten Verwaltungsinformationen aufgebaut werden,
der den Kopplungszustand angebende Wert '1' ist, gibt dieses an, dass die logische
Adresse, die dem Eintrag entspricht, durch die Verknüpfungsadresse eines anderen
Blocks bis hin zu dem verarbeiteten Block spezifiziert wird, aber nicht der physikalischen
Adresse entspricht. In einem derartigen Zustand kann der den Kopplungszustand
angebende Wert mit fortschreitender Verarbeitung '0' werden, so dass es unbestimmt
ist, ob ein Verknüpfungsadressfehler besteht oder nicht.
Falls andererseits der den Verknüpfungszustand angebende Wert
in der Stufe '1' ist, in der der Aufbau der gesamten Verwaltungsinformationen zu
einem Ende gekommen ist, gibt ein derartiger Zustand an, dass auch obwohl die dem
Eintrag entsprechende logische Adresse als die Verknüpfungsadresse spezifiziert
wird, die entsprechende physikalische Adresse fehlt.
Folglich gibt dieser Zustand einen Verknüpfungsadressfehler an.
Falls der den Verknüpfungszustand angebende Wert in der Stufe
'0' ist, in der der Aufbau der gesamten Verwaltungsinformationen zu einem Ende gekommen
ist, gibt ein derartiger Zustand an, dass die Verknüpfung, die zu der logischen
Adresse passt, die dem Eintrag entspricht, in dem normalen Zustand ist.
12-2 Erfassung eines Verknüpfungsadressfehlers
Ein bestimmtes Beispiel der Erfassung des Verknüpfungsadressfehlers,
der unter Verwendung der vorstehend beschriebenen Fehlererfassungstabelle ausgeführt
wird, wird nachstehend erklärt.
Es wird zum Beispiel angenommen, dass bei einem Block mit einer physikalischen
Adresse '10' die logische Adresse '1' ist, und die Verknüpfungsadresse '3'
ist, und bei einem Block mit einer physikalischen Adresse '17' die logische Adresse
'3' ist, und die Verknüpfungsadresse '2' ist. Es wird darüber hinaus angenommen,
dass es keinen Block mit der logischen Adresse '2' gibt.
Falls die Verarbeitung des Wiederaufbauens der gesamten Verwaltungsinformationen
zu dieser Zeit ausgeführt wird, wird eine Verknüpfungsadresse-Fehlererfassung
bei dem Wiederaufbau der gesamten Verwaltungsinformationen ausgeführt, wie
in 20 gezeigt ist.
Es wird angenommen, dass in der anfänglichen Stufe die Werte
der Fehlererfassungstabelle für die logischen Adressen '1', '2' und '3' alle
der anfängliche Wert '0' sind, wie in 20A gezeigt
ist, dass die Umwandlungstabelle der gesamten Verwaltungsinformationen sämtlich
von dem anfänglichen Wert '0xffff' ist, und dass es keinen in die Verknüpfungstabelle
der gesamten Verwaltungsinformationen eingegebenen Wert gibt.
Die Informationen des Blocks mit der logischen Adresse '1' werden
dann gelesen. Der Wert der Umwandlungstabelle, entsprechend zu der logischen Adresse
'1', ist der Wert der physikalischen Adresse des Blocks der logischen Adresse '1',
das heißt, '10'. Der Wert der Verknüpfungstabelle für die logische
Adresse '1' ist der Wert der Verknüpfungsadresse des Blocks der logischen Adresse
'1', das heißt '3'.
Der durch den Wert der Verknüpfungstabelle spezifizierte Eintrag
der logischen Adresse '3', entsprechend zu der logischen Adresse '1', wird überprüft.
Da dem Eintrag der logischen Adresse '3' kein physikalischer Block zugewiesen ist,
wird der Wert der Fehlerkorrekturtabelle, entsprechend zu der logischen Adresse
'3', auf '1' gesetzt, wie in 20C gezeigt ist. Der Wert
der Umwandlungstabelle entsprechend zu der logischen Adresse '3' ist der Wert der
logischen Adresse der Quelle der Verknüpfung, das heißt '1'.
Die Informationen des Blocks der logischen Adresse '3' mit dem Wert
der Fehlererfassungstabelle von '1' wird gelesen. Der Block mit der logischen Adresse
'3' ist vorhanden, und die Informationen desselben können wie regelmäßig
gelesen werden. Daher ist der Wert der Fehlererfassungstabelle, entsprechend zu
der logischen Adresse '3', '0', wie in 20D gezeigt
ist. Der Wert der Umwandlungstabelle, entsprechend zu der logischen Adresse '3',
ist der Wert der physikalischen Adresse des Blocks mit der logischen Adresse '3',
das heißt '17'. Der Wert der Verknüpfungstabelle, entsprechend zu der
logischen Adresse '3', ist der Wert der Verknüpfungsadresse des Blocks mit
der logischen Adresse '3', das heißt, '2'.
Dann wird der Eintrag der logischen Adresse '2', angegeben durch den
Wert der Verknüpfungstabelle, entsprechend zu der logischen Adresse '3', überprüft.
Da dem Eintrag der logischen Adresse '2' kein physikalischer Block zugewiesen ist,
ist der Wert der Fehlererfassungstabelle, entsprechend zu der logischen Adresse
'2', '1', wie in 20E gezeigt ist. Der Wert der Umwandlungstabelle,
entsprechend zu der logischen Adresse '2', ist der Wert der logischen Adresse der
Verknüpfungsquelle, das heißt, '3'.
Es wird dann versucht, die Informationen des Blocks der logischen
Adresse '2' mit dem Wert der Fehlererfassungstabelle von '1' einzulesen. Da des
jedoch keinen Block mit der logischen Adresse von '2' gibt, wird in dieser Stufe
ersichtlich, dass ein Verknüpfungsadressfehler aufgetreten ist.
12-3 Fehlerkorrekturverarbeitung
In dem System der vorliegenden Erfindung wird die Fehlerkorrekturverarbeitung
für den logischen Adressfehler wie folgt ausgeführt:
Sollte der logische Adressfehler erzeugt worden sein, werden die
Blöcke mit derselben logischen Adresse geprüft. Falls es nur einen vollständigen
Block gibt, wird der vollständige Block gehalten, und werden die verbleibenden
Blöcke ungültig gemacht.
Falls es mehrere vollständige Blöcke mit derselben logischen
Adresse (mit Ausnahme des Bootblocks) gibt, werden die Unterscheidungszahlen miteinander
verglichen, und wird der Block mit der kleineren Unterscheidungszahl gehalten. Indessen
wird dann, falls die Unterscheidungszahl eines der Blöcke '255' ist, wobei
die Unterscheidungszahl eines anderen '0' ist, der Block mit der Unterscheidungszahl
von '255' ausgewertet.
Es wird angemerkt, dass dann, wenn es mehrere Blöcke mit derselben
logischen Adresse gibt, der Unterschied der Unterscheidungszahlen derselben üblicherweise
1 ist. Falls diese Bedingung nicht erfüllt ist, wird die manuelle Wiederherstellungsbetriebsart
bzw. der manuelle Wiederherstellungsmodus festgelegt, anstelle dessen, dass die
Systemseite eine automatische Fehlerkorrekturverarbeitung ausführt.
Falls in dem System der vorliegenden Erfindung der Verknüpfungsadressfehler
aufgetreten ist, wird eine beliebige geeignete Fehlerkorrekturverarbeitung in Übereinstimmung
mit der die Speicherkarte 2 benutzenden Anwendungssoftware oder mit in
der Speicherkarte 2 gespeicherten Daten ausgeführt. Im Einzelnen wird
in wünschenswerter Weise die nachstehend als ein Beispiel wiedergegebene Fehlerkorrekturverarbeitung
ausgeführt.
Das heißt, dass ein neuer Block als ein durch die letzte Verknüpfungsadresse
angegebener Block belegt wird. Eingelesene Daten werden bis zu einer Seite fortgesetzt,
deren Daten der letzten Seite korrekt gelesen werden können, und Daten bis
zu der Seite werden in einen neuen Block kopiert. Das Letzte-Kennzeichen des neuen
Blocks wird auf 'letzter Block' gesetzt. Diese Fehlerkorrektur ist insbesondere
wünschenswert, falls die Zieldaten derartige Daten sind, welche auch teilweise
bedeutungsvoll sind, wie beispielsweise Musikdaten.
12-4 Aufbau der gesamten Verwaltungsinformationen und Fehlerkorrekturverarbeitung
Es ist dann der Fall, wenn irgendeine Fehlfunktion während der
Dateiaktualisierungsverarbeitung aufgetreten ist, dass physikalische Adressfehler
oder Verknüpfungsadressfehler in dem System gemäß der vorliegenden
Erfindung produziert werden. In dem vorliegenden System werden die in der Speicherkarte
2 gespeicherten gesamten Verwaltungsinformationen vor der Dateiaktualisierungsverarbeitung
ungültig gemacht, wie vorstehend beschrieben wurde. Folglich sind dann, wenn
physikalische Adressfehler oder Verknüpfungsadressfehler erzeugt werden, die
gesamten Verwaltungsinformationen ungültig. Falls die gesamten Verwaltungsinformationen
ungültig sind, wird die Verarbeitung des erneuten Prüfens der verteilten
Verwaltungsinformationen der Gesamtheit der Blöcke zum Wiederaufbauen der gesamten
Verwaltungsinformationen bei dem nächsten Booten der Speicherkarte
2 notwendigerweise ausgeführt.
Folglich wird in dem vorliegenden System Aufmerksamkeit auf die Tatsache
gerichtet, dass, bei dem Wiederaufbauen der gesamten Verwaltungsinformationen, die
Gesamtheit der Blöcke erneut geprüft wird, und die Fehlererfassungs- und
Korrektur-Verarbeitung zu dieser Zeit gleichzeitig ausgeführt wird. Anders
ausgedrückt, besteht keine Wahrscheinlichkeit, dass die physikalischen Adressfehler
oder die Verknüpfungsadressfehler erzeugt werden, wenn die gesamten Verwaltungsinformationen
gültig sind, so dass keine Fehlererfassungs- und Korrektur-Verarbeitung zu
dieser Zeit ausgeführt wird. Das heißt, dass mit diesem Verfahren die
Fehlererfassungs- und Korrektur-Erfassung nur dann ausgeführt wird, wenn die
gesamten Verwaltungsinformationen wieder aufgebaut werden. Durch Verfahren derart
ist es unnötig, auf die Speicherkarte 2 redundant zur Fehlererfassung
und Korrektur zuzugreifen, so dass die Speicherkarte 2 rasch gebootet werden
kann.
Diese Fehlererfassungs- und Korrektur-Verarbeitung wird durch die
folgende Abfolge von Betriebsabläufen ausgeführt:
- (1) Die Umwandlungstabelle des internen Speichers 4 der Datenverarbeitungsvorrichtung
1 wird in ihrer Gesamtheit auf '0xffff' initialisiert. Ein Bereich der
Fehlererfassungstabelle wird in dem internen Speicher 4 bereitgestellt,
und die Fehlererfassungstabelle in ihrer Gesamtheit wird auf '0' initialisiert.
- (2) Die Verarbeitung geht zu dem führenden Ende des Blocks über.
- (3) Die verteilten Verwaltungsinformationen werden aus dem Block eingelesen,
und die Bitmap-Tabelle wird unter Verwendung der verteilten Verwaltungsinformationen
aufgebaut. Falls das 'Möglich/Nicht Möglich'-Kennzeichen 'nicht verwendbar'
anzeigt, oder falls das Blockkennzeichen 'noch nicht benutzt' oder 'noch nicht gelöscht'
ist, geht die Verarbeitung zu dem nächsten Block über, um die Verarbeitung
zu wiederholen, wenn die Formulierung der Bitmap-Tabelle zu einem Ende gekommen
ist.
- (4) Die logische Adresse des Blocks, die nachstehend als eine logische Adresse
A bezeichnet wird, und die Verknüpfungsadresse derselben, die nachstehend als
logische Adresse B bezeichnet wird, werden geprüft.
- (5) Falls die logische Adresse A '0xffff' ist, geht die Verarbeitung
zu dem nächsten Block über und kehrt zu (3) zurück, um die Verarbeitung
zu wiederholen.
- (6) Die Spalte der logischen Adresse A der Fehlererfassungstabelle wird geprüft.
Falls die Spalte der logischen Adresse A der Fehlererfassungstabelle '1' ist, wird
sie auf '0' neu geschrieben, und die physikalische Adresse des Blocks der logischen
Adresse A wird in die Spalte der logischen Adresse A der Fehlererfassungstabelle
geschrieben. Falls die Spalte der logischen Adresse A der Fehlererfassungstabelle
'0' ist, wird die Spalte der logischen Adresse A der Umwandlungstabelle geprüft.
Falls der Wert der logischen Adresse A der Umwandlungstabelle '0xffff' ist, wird
die physikalische Adresse des Blocks der logischen Adresse A in diese geschrieben.
Falls ein anderer Wert als '0xffff' bereits als der Wert der logischen Adresse A
der Umwandlungstabelle eingetragen wurde, gibt dieses an, dass der logische Adressfehler
aufgetreten ist, so dass eine Fehlerkorrekturverarbeitung für den logischen
Adressfehler ausgeführt wird.
- (7) Der Wert der logischen Adresse B wird in die Spalte der logischen Adresse
A der Verknüpfungstabelle eingetragen.
- (8) Es wird geprüft, ob das Letzte-Kennzeichen 'letzter Block' ist. Falls
das Letzte-Kennzeichen 'letzter Block' ist, ist die Verknüpfungsadresse ungültig.
Folglich geht die Verarbeitung zu dem nächsten Block über und kehrt zu
(3) zurück, um die Verarbeitung zu wiederholen.
- (9) Dann wird unter Verwendung der Umwandlungstabelle geprüft, ob die physikalische
Adresse der logischen Adresse B entspricht oder nicht. Falls der Wert der logischen
Adresse B der Umwandlungstabelle sich von '0xffff' unterscheidet, entspricht die
physikalische Adresse der logischen Adresse B. Falls demgegenüber der Wert
der logischen Adresse B der Umwandlungstabelle '0xffff' ist, entspricht die physikalische
Adresse nicht der logischen Adresse B in den Stufen bis bin zu der gegenwärtigen
Stufe. In diesem Fall wird '1' in die Spalte der logischen Adresse B der Fehlerkorrekturtabelle
geschrieben, zur selben Zeit, zu der der Wert der logischen Adresse A in die Spalte
der logischen Adresse B der Umwandlungstabelle eingetragen wird. Dann geht die Verarbeitung
zu dem nächsten Block über, um zu (3) zurückzukehren, um die Verarbeitung
zu wiederholen.
Obwohl der Wert der logischen Adresse B der Umwandlungstabelle '0xffff' ist, ist
es in einer Stufe, in der die Verarbeitung nur zu einem mittleren Teil des Blocks
fortgeschritten ist, nicht klar, ob die physikalische Adresse wirklich der logischen
Adresse B entspricht oder nicht. Das heißt, dass die physikalische Adresse
nicht wirklich der logischen Adresse B entsprechen kann, oder dass ein entsprechender
Block mit fortschreitender Verarbeitung erscheinen kann.
- (10) Nachdem die Verarbeitung für die Gesamtheit der Blöcke erfolgte,
wird Bezug auf die Fehlerkorrekturtabelle genommen. Die physikalische Adresse entspricht
nicht der logischen Adresse, deren Wert der Fehlerkorrekturtabelle '1' ist. Das
heißt, dass ein Verknüpfungsadressfehler aufgetreten ist. Da die logische
Adresse des Blocks der Quelle der Verknüpfung in der Umwandlungstabelle gespeichert
ist, wird diese logische Adresse dazu verwendet, den Quellblock zu spezifizieren,
um eine korrekte Fehlerkorrekturverarbeitung auszuführen. Indessen wird auf
die Fehlerkorrektur folgend der Wert der Fehlerkorrekturtabelle auf '0' gesetzt,
und wird der entsprechende Wert der Umwandlungstabelle auf '0xffff' gesetzt.
Bei dem Aufbau der gesamten Verwaltungsinformationen wird in dem System
gemäß der vorliegenden Erfindung die Fehlererfassungs- und Korrektur-Verarbeitung
ausgeführt, wie vorstehend beschrieben wurde. Ein bestimmtes Verfahren zum
Aufbauen der gesamten Verwaltungsinformationen und der Fehlererfassungs- und Korrektur-Verarbeitung
wird nun genauer unter Bezugnahme auf die Ablaufdiagramme der 21
bis 23 erklärt.
Hierbei werden I, A, B, C, D und T(I) als Variablen verwendet, und
wird N als eine Konstante verwendet. Die Variable I ist eine Variable, in welche
eine physikalische Adresse eingetragen wird, die Variable A ist eine Variable, in
welche eine logische Adresse eingetragen wird, die Variable B ist eine Variable,
in welche eine Verknüpfungsadresse eingetragen wird, die Variablen C, D sind
Variablen, in welche die Werte der Unterscheidungszahlen eingetragen werden, und
die Variable T(I) ist eine Variable, die den Wert der Fehlererfassungstabelle entsprechend
zu der logischen Adresse 'I' angibt. Die Konstante N ist eine Konstante, die die
Gesamtanzahl von Blöcken angibt.
Bei dem Aufbauen der gesamten Verwaltungsinformationen initialisiert
die Datenverarbeitungsvorrichtung 1 in einem Schritt S101 von
21 die Umwandlungstabelle, um alle Werte auf '0xffff'
zu setzen. Die Datenverarbeitungsvorrichtung 1 schreitet dann zu einem
Schritt S102 fort.
In diesem Schritt S102 initialisiert die Datenverarbeitungsvorrichtung
1 die Fehlererfassungstabelle und setzt alle Werte auf '0', bevor sie zu
einem Schritt S103 fortschreitet.
In dem Schritt S103 ersetzt die Datenverarbeitungsvorrichtung
1 '0' in der Variablen I, bevor sie zu einem Schritt S104 fortschreitet.
In dem Schritt S104 liest die Datenverarbeitungsvorrichtung
1 die verteilten Verwaltungsinformationen des Blocks
der physikalischen Adresse 'I' aus der Speicherkarte 2 ein, bevor sie zu
einem Schritt S105 fortschreitet.
In dem Schritt S105 nimmt die Datenverarbeitungsvorrichtung
1 Bezug auf das Möglich/Nicht-Möglich-Kennzeichen der verteilten
Verwaltungsinformationen, wie in dem Schritt S104 gelesen, um zu verifizieren, ob
der Block der physikalischen Adresse 'I' verwendbar ist oder nicht. Falls der Block
verwendbar ist, schreitet die Datenverarbeitungsvorrichtung 1 zu einem
Schritt S106 fort, und andernfalls schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S129 fort.
In dem Schritt S106 nimmt die Datenverarbeitungsvorrichtung
1 auf das Blockkennzeichen der verteilten Verwaltungsinformationen wie
in dem Schritt S104 gelesen Bezug, um zu prüfen, ob der Block der physikalischen
Adresse in Verwendung ist oder nicht. Im Einzelnen wird geprüft, ob das Blockkennzeichen
'an dem führenden Ende verwendet' oder 'verwendet' ist. Falls das Blockkennzeichen
'an dem führenden Ende verwendet' oder 'verwendet' ist, und der Block in Verwendung
ist, schreitet die Datenverarbeitungsvorrichtung 1 zu einem Schritt S107
fort, und falls der Block nicht in Verwendung ist, schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S129 fort.
In dem Schritt S107 fügt die Datenverarbeitungsvorrichtung
1 die zu dem Block der physikalischen Adresse 'I' gehörenden Informationen
zu der Bitmap-Tabelle hinzu, bevor sie zu einem Schritt S108 fortschreitet.
In dem Schritt S108 ersetzt die Datenverarbeitungsvorrichtung
1 die logische Adresse des Blocks der physikalischen Adresse 'I' in die
Variable A, während sie die Verknüpfungsadresse des Blocks der physikalischen
Adresse 'I' in die Variable B ersetzt. Die Datenverarbeitungsvorrichtung
1 schreitet dann zu einem Schritt S109 fort.
In dem Schritt S109 verifiziert die Datenverarbeitungsvorrichtung
1, ob der Wert von A '0xffff' ist oder nicht. Falls der Wert von A nicht
'0xffff' ist, schreitet die Datenverarbeitungsvorrichtung 1 zu einem Schritt
S110 fort, und falls er '0xffff' ist, schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S120 von 22 fort.
In dem Schritt S110 prüft die Datenverarbeitungsvorrichtung
1 den Wert der logischen Adresse 'A' der Fehlererfassungstabelle, bevor
sie zu einem Schritt S111 fortschreitet.
In dem Schritt S111 verifiziert die Datenverarbeitungsvorrichtung
1, ob der Wert der logischen Adresse 'A' der Fehlererfassungstabelle '1'
ist oder nicht. Falls er '1' ist, schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S112 fort, und andernfalls schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S130 fort.
In dem Schritt S112 schreibt die Datenverarbeitungsvorrichtung
1 den Wert der logischen Adresse 'A' der Fehlererfassungstabelle auf '0'
neu, bevor sie zu einem Schritt S113 fortschreitet.
In dem Schritt S113 schreibt die Datenverarbeitungsvorrichtung
1 die Variable 'I' (das heißt, den physikalischen Block 'I') in eine
Spalte der logischen Adresse 'A' der Umwandlungstabelle, bevor sie zu einem Schritt
S114 fortschreitet.
In dem Schritt S114 schreibt die Datenverarbeitungsvorrichtung
1 die Variable 'B' (das heißt, den Verknüpfungsblock 'B') in
eine Spalte der logischen Adresse 'A' der Verknüpfungstabelle, bevor sie zu
einem Schritt S115 fortschreitet.
In dem Schritt S115 verifiziert die Datenverarbeitungsvorrichtung
1, ob das Letzte-Kennzeichen 'letzter Block' ist oder nicht. Falls das
Letzte-Kennzeichen nicht 'letzter Block' ist, schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S160 fort, und andernfalls schreitet die Datenverarbeitungsvorrichtung
1 zu dem Schritt S120 fort.
In dem Schritt S116 prüft die Datenverarbeitungsvorrichtung
1 auf den Wert der Umwandlungstabelle entsprechend zu der logischen Adresse
'B', bevor sie zu einem Schritt S117 fortschreitet.
In dem Schritt S117 verifiziert die Datenverarbeitungsvorrichtung
1, ob der Wert der Umwandlungstabelle entsprechend zu der logischen Adresse
'B' '0xffff' ist. Falls er '0xffff' ist, schreitet die Datenverarbeitungsvorrichtung
zu einem Schritt S118 fort, und andernfalls schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S120 von 22 fort.
In dem Schritt S118 schreibt die Datenverarbeitungsvorrichtung
1 die Spalte der logischen Adresse 'B' der Fehlerkorrekturtabelle auf '1'
neu, bevor sie zu einem Schritt S119 fortschreitet.
In dem Schritt S119 schreibt die Datenverarbeitungsvorrichtung
1 die logische Adresse 'A' in eine Spalte der logischen Adresse 'B' der
Fehlerkorrekturtabelle, bevor sie zu dem Schritt S120 von 22
fortschreitet.
In dem Schritt S120 von 22 vergleicht
die Datenverarbeitungsvorrichtung 1 den Wert der Variablen I mit dem Wert
der Konstanten N, die die Anzahl der gesamten Anzahl von Blöcken spezifiziert.
Mit Ausnahme von 1 < N schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S121 fort, und schreitet dann, wenn
1 < N ist, die Datenverarbeitungsvorrichtung 1 zu einem Schritt S128
fort.
In dem Schritt S121 ersetzt die Datenverarbeitungsvorrichtung
1 '0' in die Variable I, bevor sie zu einem Schritt S122 fortschreitet.
In dem Schritt S122 verifiziert die Datenverarbeitungsvorrichtung
1, ob die Variable T(I), die den Wert der logischen Adresse 'I' der Fehlerkorrekturtabelle
spezifiziert, '1' ist, oder nicht. Falls er nicht '1' ist, schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S123 fort, und falls er '1' ist, schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S125 fort.
In dem Schritt S123 vergleicht die Datenverarbeitungsvorrichtung
1 den Wert der Variablen I mit dem Wert der Konstanten N, der die Gesamtanzahl
von Blöcken angibt. Falls I = N, kommt die Verarbeitung zu einem Ende. Mit
Ausnahme von I = N geht die Verarbeitung zu einem Schritt S124 über.
In dem Schritt S124 inkrementiert die Datenverarbeitungsvorrichtung
1 den Wert der Variablen I um Eins. Die Datenverarbeitungsvorrichtung
1 kehrt dann zu dem Schritt S122 zurück, um die Verarbeitung zu wiederholen.
Falls in dem Schritt S122 die Variable T(I) '1' ist, schreitet die
Datenverarbeitungsvorrichtung 1 zu dem Schritt S125 fort. Es ist dann der
Fall, wenn der Verknüpfungsadressfehler aufgetreten ist, dass die Datenverarbeitungsvorrichtung
1 zu dem Schritt S125 fortschreitet. Somit führt in diesem Schritt
S125 die Datenverarbeitungsvorrichtung 1 eine voreingestellte Fehlerkorrekturverarbeitung
für Verknüpfungsadressfehler durch. Hierbei führt die Datenverarbeitungsvorrichtung
1 eine korrekte Fehlerkorrekturverarbeitung in Abhängigkeit von beispielsweise
in der Speicherkarte 2 gespeicherten Daten oder der die Speicherkarte
2 verwendenden Anwendungssoftware durch. Bei Beendigung der Fehlerkorrekturverarbeitung
schreitet die Datenverarbeitungsvorrichtung 1 zu einem Schritt S126 fort.
In dem Schritt S126 setzt die Datenverarbeitungsvorrichtung
1 den Wert der logischen Adresse der Fehlererfassungstabelle auf '0', bevor
sie zu einem Schritt S127 fortschreitet.
In dem Schritt S27 schreibt die Datenverarbeitungsvorrichtung
1 die Spalte der logischen Adresse 'I' der Umwandlungstabelle auf '0xffff'
neu. Die Datenverarbeitungsvorrichtung 1 schreitet dann zu dem Schritt
S123 fort, um die vorstehende Verarbeitung durchzuführen.
Falls in dem Schritt S120 I < N, schreitet die Datenverarbeitungsvorrichtung
1 zu dem Schritt S128 fort, wie vorstehend beschrieben wurde. Es ist dann
der Fall, wenn das Auslesen der verteilten Verwaltungsinformationen für die
Gesamtheit der Blöcke nicht zu einem Ende gekommen ist, dass die Datenverarbeitungsvorrichtung
1 zu dem Schritt S128 fortschreitet. In diesem Schritt S128 inkrementiert
die Datenverarbeitungsvorrichtung 1 den Wert der Variablen I um 1 und kehrt
dann zu dem Schritt S104 von 21 zurück, um die
Verarbeitung zu wiederholen.
Falls der Block der physikalischen Adresse 'I' in dem Schritt S105
von 21 nicht verwendbar ist, oder falls der Block der
physikalischen Adresse 'I' in den Schritt S106 nicht in Verwendung ist, schreitet
die Datenverarbeitungsvorrichtung 1 zu dem Schritt S129 fort, wie vorstehend
beschrieben wurde.
In dem Schritt S129 fügt die Datenverarbeitungsvorrichtung
1 die zu dem Block der physikalischen Adresse 'I' gehörenden Informationen
zu der Bitmap-Tabelle hinzu. Die Datenverarbeitungsvorrichtung schreitet dann zu
dem Schritt S120 von 22 fort, um die vorstehende Verarbeitung
auszuführen.
Falls in dem Schritt S111 von 21 der
Wert der logischen Adresse 'A' der Fehlererfassungstabelle nicht '1' war, schreitet
die Datenverarbeitungsvorrichtung zu dem Schritt S130 fort, wie vorstehend beschrieben
wurde. In diesem Schritt S130 prüft die Datenverarbeitungsvorrichtung
1 auf den Wert der logischen Adresse 'A' der Umwandlungstabelle, bevor
sie zu einem Schritt S131 fortschreitet.
In diesem Schritt S131 prüft die Datenverarbeitungsvorrichtung
1, um zu erkennen, ob der Wert der logischen Adresse 'A' der Umwandlungstabelle
'0xffff' ist. Falls er '0xffff' ist, schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S113 fort, um die vorstehende Verarbeitung auszuführen,
und andernfalls schreitet die Datenverarbeitungsvorrichtung 1 zu einem
Schritt S132 von 23 fort.
Es ist dann, wenn der logische Adressfehler erzeugt wird, derart,
dass es zwei Blöcke mit der logischen Adresse 'A' gibt, dass die Datenverarbeitungsvorrichtung
1 zu dem Schritt S132 von 23 fortschreitet.
Folglich liest in dem Schritt S132 die Datenverarbeitungsvorrichtung 1
die Unterscheidungszahlen von zwei Blöcken mit der logischen Adresse 'A' aus.
Falls die Datenverarbeitungsvorrichtung 1 die Unterscheidungszahl eines
der Blöcke ausgelesen hat, wird der Wert in die Variable C ersetzt. Falls die
Datenverarbeitungsvorrichtung 1 die Unterscheidungszahl des anderen Blocks
ausgelesen hat, wird der Wert in die Variable B ersetzt. Die Datenverarbeitungsvorrichtung
1 schreitet dann zu einem Schritt S133 fort.
In dem Schritt S133 verifiziert die Datenverarbeitungsvorrichtung
1, ob die Unterscheidungszahl in dem Schritt S132 wie regelmäßig
ausgelesen wurde oder nicht. Falls nur die in die Variable C ersetzte Unterscheidungszahl
ausgelesen wurde, schreitet die Datenverarbeitungsvorrichtung 1 zu einem
Schritt S134 fort, und andernfalls schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S137 fort.
In dem Schritt S134 setzt die Datenverarbeitungsvorrichtung
1 das Blockkennzeichen des Blocks entsprechend zu der Variablen D auf 'noch
nicht gelöscht', bevor sie zu einem Schritt S135 fortschreitet.
In dem Schritt S135 prüft die Datenverarbeitungsvorrichtung
1, um zu erkennen, ob die Verarbeitung des Schritts S134, das heißt,
die Verarbeitung des Setzens des Blockkennzeichens des Blocks entsprechend zu der
Variablen D auf 'noch nicht gelöscht', erfolgreich war. Falls die Verarbeitung
erfolgreich war, kehrt die Datenverarbeitungsvorrichtung 1 zu dem Schritt
S113 von 21 zurück, um die vorstehende Verarbeitung
auszuführen. Falls die Verarbeitung nicht erfolgreich war, schreitet die Datenverarbeitungsvorrichtung
zu einem Schritt S136 fort.
In dem Schritt S136 setzt die Datenverarbeitungsvorrichtung
1 das 'Möglich/Nicht-Möglich-Kennzeichen' des Blocks entsprechend
zu der Variablen D auf 'nicht verwendbar'. Die Datenverarbeitungsvorrichtung
1 kehrt dann zu dem Schritt S113 von 21 zurück,
um die vorstehende Verarbeitung auszuführen.
In dem Schritt S137 verifiziert die Datenverarbeitungsvorrichtung
1, ob das Auslesen der Unterscheidungszahl in dem Schritt S132 wie regelmäßig
ausgeführt wurde. Falls nur die Unterscheidungszahl, die in die Variable D
ersetzt wurde, ausgelesen wurde, geht die Verarbeitung zu einem Schritt S138 über,
und geht andernfalls die Verarbeitung zu einem Schritt S141 über.
In dem Schritt S138 setzt die Datenverarbeitungsvorrichtung
1 das Blockkennzeichen des Blocks entsprechend zu der Variablen C auf 'noch
nicht gelöscht', bevor sie zu einem Schritt S139 fortschreitet.
In dem Schritt S139 prüft die Datenverarbeitungsvorrichtung
1, um zu erkennen, ob die Verarbeitung des Schritts S138, das heißt,
die Verarbeitung des Setzens des Block-Kennzeichens des Blocks entsprechend zu der
Variablen C auf 'noch nicht gelöscht', erfolgreich war. Falls die Verarbeitung
erfolgreich war, kehrt die Datenverarbeitungsvorrichtung 1 zu dem Schritt
S113 von 21 zurück, um die vorstehende Verarbeitung
auszuführen. Falls die Verarbeitung nicht erfolgreich war, schreitet die Datenverarbeitungsvorrichtung
1 zu einem Schritt S140 fort.
In dem Schritt S140 setzt die Datenverarbeitungsvorrichtung
1 das 'Möglich/Nicht-Möglich-Kennzeichen' des Blocks entsprechend
zu der Variablen C auf 'nicht verwendbar. Die Datenverarbeitungsvorrichtung
1 kehrt dann zu dem Schritt S113 von 21 zurück,
um die vorstehende Verarbeitung auszuführen.
In dem Schritt S141 verifiziert die Datenverarbeitungsvorrichtung
1, ob das Auslesen der Unterscheidungszahl in dem Schritt S132 wie regelmäßig
ausgeführt wurde. Falls sowohl die in die Variable C ersetzte Unterscheidungszahl
als auch die in die Variable D ersetzte Unterscheidungszahl wie regelmäßig
ausgelesen wurden, schreitet die Verarbeitung zu einem Schritt S142 fort. Falls
beide nicht lesbar waren, geht die Verarbeitung auf eine manuelle Wiederherstellungsbetriebsart
zum Durchführen einer geeigneten manuellen Verarbeitung, die zur Fehlerkorrektur
notwendig ist, über.
In dem Schritt S142 vergleicht die Datenverarbeitungsvorrichtung
1 den Wert der Variablen C mit einem Wert entsprechend zu dem Wert der
Variablen D plus 1. Falls diese Werte gleich sind, schreitet die Datenverarbeitungsvorrichtung
1 zu dem Schritt S134 fort, um die vorstehende Verarbeitung auszuführen,
und geht andernfalls die Verarbeitung zu einer manuellen Wiederherstellungsbetriebsart
zum Ausführen einer geeigneten manuellen Verarbeitung, die zur Fehlerkorrektur
notwendig ist, über.
Mit der vorstehenden Verarbeitung wird die Fehlererfassungs- und Korrektur-Verarbeitung
gleichzeitig mit dem Wiederaufbau der gesamten Verwaltungsinformationen ausgeführt,
so dass es nicht notwendig ist, verschwenderisch auf die Speicherkarte
2 zuzugreifen, um die Fehlererfassungs- und Korrektur-Verarbeitung auszuführen.
Das heißt, dass mit dem System der vorliegenden Erfindung keine Fehlererfassungs-
Korrektur-Verarbeitung ausgeführt wird, falls der Datenschreibvorgang zu einem
Ende wie regelmäßig gekommen ist und die wirksamen gesamten Verwaltungsinformationen
auf die Speicherkarte 2 zurückgeschrieben worden sind.
Somit wird mit dem System der vorliegenden Erfindung keine unnötige
Erfassung/Korrektur ausgeführt, so dass die Zugriffseffizienz auf die Speicherkarte
2 erhöht wird. Insbesondere kann, da die Fehlererfassungs- und Korrektur-Verarbeitung
gleichzeitig mit dem Vorgang des Aufbauens der gesamten Verwaltungsinformationen
aus den verteilten Verwaltungsinformationen ausgeführt wird, das Zugreifen
auf die Speicherkarte 2 minimiert werden.
Darüber hinaus wird bei dem System der vorliegenden Erfindung
die Unterscheidungszahl jedem Block der Speicherkarte 2 zugewiesen und
dazu verwendet, mit dem logischen Adressfehler umzugehen, so dass die Datenaktualisierungsverarbeitung
sicher ausgeführt werden kann. Das heißt, dass auch
unter der Annahme, dass irgendwelche Fehler während einer Dateiaktualisierungsverarbeitung
erzeugt werden, so dass es mehrere Blöcke mit derselben logischen Adresse gibt,
können Daten vor der Aktualisierungsverarbeitung durch Verwenden der Unterscheidungszahl
wiederhergestellt werden. Ferner kann bei dem System der vorliegenden Erfindung
der Verknüpfungsadressfehler durch Verwenden der Fehlererfassungstabelle erfasst
werden, während der Block ohne Verknüpfungsbestimmung ebenfalls erfasst
werden kann.