-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft im Allgemeinen Computersystem-Massenspeichervorrichtungen.
Insbesondere betrifft die vorliegende Erfindung eine Plattenlaufwerk-Controllerschaltung
und ein Verfahren zum Prüfen
und Verwalten defekter und/oder unerwünschter Sektoren auf einer
Platte.
-
Kurzbeschreibung des Stands
der Technik
-
Computersysteme
umfassen oft ein Host-System und eine oder mehrere periphere Speichervorrichtungen,
welche Daten speichern und/oder bereitstellen. Eine Art einer peripheren
Speichervorrichtung ist ein Festplattenlaufwerk. Ein Festplattenlaufwerk
besteht typischerweise aus wenigstens einer Magnetscheibe (zusammengefasst
als die "Platte" bezeichnet), welche
durch einen Motor gedreht wird, einem Betätigungselement, das einen Wandler an
verschiedene Stellen über
der Platte bewegt, einem Mikroprozessor, einem Plattenlaufwerk-Controller
("Controller") und verschiedenen
weiteren elektrischen Schaltungen. Der Controller ist typischerweise eine
integrierte Schaltung, welche in eine gedruckten Leiterplatte innerhalb
des Plattenlaufwerks eingebaut ist. Der Mikroprozessor kann physikalisch
in der oder außerhalb
der integrierten Controllerschaltung eingebettet sein.
-
Der
Controller steuert (unter der Steuerung des Mikroprozessors) üblicherweise
die Operationen des Plattenlaufwerks, einschließlich der Handhabung der Daten
aus dem Host-Computer ("Host"-System) oder einfach "Host", die auf einer Platte
während
eines Schreibvorgangs zu speichern sind, und das Zurückgeben
von Daten an einen anfordernden Host-Computer während eines Lesevorgangs. Der Controller
wird dazu verwendet, Daten von der Plattenoberfläche auszulesen und an diese
zu senden. Der Controller codiert üblicherweise die Daten so,
dass sie erfolgreich auf die und von der Platte übertragen werden können.
-
Die
Platte beinhaltet oft rotierende Magnetscheiben, welche Daten speichern.
Daten können auf
die Platte oder von der Platte eine beliebige Anzahl von Malen geschrieben
oder gelesen werden, und die Daten bleiben intakt, nachdem das Plattenlaufwerk
abgeschaltet ist. Eine Magnetscheibe kann zwei beschreibbare Oberflächen aufweisen.
Jede beschreibbare Oberfläche
speichert Daten auf als Spuren bezeichneten konzentrischen Ringen.
Die Anzahl der Spuren kann von Platte zu Platte variieren. Die Spuren
sind radial in Sektoren unterteilt, welche die kleinste beschreibbare/lesbare
Einheit einer Spur sind. Die Anzahl von Sektoren kann pro Spur variieren
und kann von Platte zu Platte variieren, da Plattenhersteller unterschiedlich
dicke Plattenkonfigurationen haben können. Es können 200 oder mehr Sektoren
pro Spur vorhanden sein. Jeder Sektor enthält Daten, Information über den
Sektor und Synchronisationsinformation.
-
Es
gibt zwei allgemeine Arten von Defekten, weiche auf einer Magnetscheibe
auftreten können: Herstellungsdefekte
und gewachsene Defekte. Herstellungsdefekte sind während der
Herstellung auftretende und detektierte Defekte. Wenn Platten in
der Fabrik während
der Herstellung formatiert werden, ermittelt ein Fabrikalgorithmus,
welche Sektoren zu Beginn defekt sind und erzeugt eine Liste von
Sektoradressen aller detektierten Herstellungsdefekte. Die Prozedur
der Aufzeichnung von Herstellungsdefekten kann von Platte zu Platte
unterschiedlich und für jeden
Plattenhersteller einzigartig sein. Der Fabrikalgorithmus speichert
die Liste der Herstellungsdefektadressen auf der Platte des Plattenlaufwerks
entweder als physikalische Adressen oder logische Blockadressen
abhängig
von der durch den Hersteller definierten Implementation seines Plattenlaufwerks. Das
Plattenlaufwerk verwendet die Liste, um "Überspringen" durchzuführen, was
für jeden
Sektor mit einem Herstellungsdefekt bedeutet, dass die Adresse (entweder
die physikalische oder logische, abhängig von der vom Hersteller
definierten Implementation, des nächsten zu lesenden oder zu
beschreibenden Sektors logisch von der Adresse des letzten guten Sektors
aus inkrementiert wird. Somit liest oder beschreibt während des
Plattenlaufwerkbetriebs das Plattenlaufwerk keinen Sektor mit einem
Herstellungsdefekt, da die Adresse dieses Sektors bis zu dem nächsten guten
Sektor inkrementiert wurde.
-
Der
andere allgemeine Typ von Defekten sind die so genannten gewachsenen
Defekte, welche nach der Herstellung auftreten und/oder detektiert werden.
Gewachsene Defekte umfassen Sektoren, welche das Plattenlaufwerk
als unlesbar oder unbenutzbar ermittelt, wie z.B. während eines
Formatierungsvorgangs. Gewachsene Defekte werden detektiert und
typischerweise aufgezeichnet, wenn ein Sektor gelesen wird, aber
der Prozess kann sich von der durch den Hersteller definierten Implementation unterscheiden.
Die Daten aus jedem Sektor mit einem gewachsenen Defekt werden einem
defektfreien Sektor neu zugeordnet.
-
Wie
bei den Herstellungsdefekten werden die Stellen der gewachsenen
Defekte und deren neu zugeordneten Sektoradressen typischerweise
auf der Platte abhängig
von der durch den Hersteller definierten Implementation entweder
als physikalische oder logische Adressen gespeichert. Die Stellen
der gewachsenen Defekte können
von der Platte jedes Mal, wenn das Plattenlaufwerk eingeschaltet
wird, an einen Arbeitsspeicher (RAM) übertragen werden. Einige Plattenlaufwerk-Controller
enthalten ein oder mehrere Register, welche verwendet werden, um kurzzeitig
die Adressen defekter Sektoren zu speichern, die während eines
aktuellen Lese- oder Schreibvorgangs zu überspringen oder neu zuzuordnen
sind.
-
Ein
bekannter Plattencontroller ist in
US
5 500 848 beschrieben.
-
Dieses
System weist vorab bei einer Herstellerplattenformatierung Reservesektoren
zu, um Platz zur Verschiebung von Daten in dem Falle einer Aufdeckung
eines Defektes anschließend
an die anfängliche
Plattenformatierung bereitzustellen. Alle Sektoren einer Spur, die
einem entdeckten Defekt folgen, werden den Reservesektoren zusammen
mit dem defekten Sektor neu zugeordnet.
-
Zusammenfassung der Erfindunag
-
Ein
Nachteil bei einigen Plattenlaufwerk-Controllern ist die eingeschränkte Anzahl
von Registern in dem Plattenlaufwerk-Controller, welche zur Identifizierung
defekter Sektoren auf einer zu überspringenden
oder neu zuzuordnenden Spur während
eines Lese- oder
Schreib-Vorgangs zugeordnet sind. Die Anzahl der Register beschränkt die Gesamtanzahl
defekter Sektoren, die während
eines Lese- oder Schreib-Vorgangs übersprungen oder neu zugeordnet
werden können.
In einigen Plattenlaufwerken kann die Anzahl von Defekten auf einer speziellen
Spur größer als
die Anzahl verfügbarer Register
sein, die zum Identifizieren auf einer Spur verwendet werden. Das
Hinzufügen
von mehr Registern würde
das Hinzufügen
von mehr Gattern erfordern, was die Kosten der Herstellung des Plattenlaufwerk-Controllers
erhöht.
-
Zusätzlich zu
der Erhöhung
der Fertigungskosten besteht ein weiterer Nachteil der Hinzufügung von
mehr Registern in dem Versuch, im Voraus abzuschätzen, wie viele Register ausreichend
sind, um alle Defekte einer speziellen Spur einer speziellen Platte
zu verwalten. Unterschiedliche Platten können unterschiedliche Anzahlen
von Sektoren pro Spur und eine unterschiedliche Anzahl von Spuren
enthalten. Ferner kann, wenn sich die Plattentechnologie verbessert,
die Anzahl der Sektoren pro Spur zunehmen, was zu mehr zu verwaltenden,
zu überspringenden
und/oder neu zuzuordnenden defekten Sektoren durch den Plattenlaufwerk-Controller
führt.
-
Eine
Lösung
besteht in der Unterteilung der Defektverwaltungsvorgang in mehrere
Teile, da der Controller nur eine bestimmte Anzahl von defekten Sektoren
für einen
gegebenen Lese- oder Schreib-Vorgang (auf der Basis der eingeschränkten Anzahl
von Registern) überspringen
kann. Wenn jeder Teil einer mehrteiligen Defektverwaltungsvorgangs
eine spezielle Anzahl defekter Sektoren übersprungen oder neu zugeordnet
hat, können
dann genug Register vorhanden sein, um die meisten oder alle Defekte
auf einer speziellen Spur zu verwalten. Jedoch verlängert die
Unterteilung des Defektverwaltungsvorgangs in mehrere Teile die
Zeit des gesamten Defektverwaltungsvorgangs und verschlechtert das
Verhalten des Plattenlaufwerks. Ein wichtiges Ziel bei derzeitigen
Plattenlaufwerken besteht in der Minimierung der Zeitspanne für Lese-
und Schreibvorgänge.
-
Die
vorliegende Erfindung betrifft eine Plattenlaufwerk-Controllerschaltung
und ein Verfahren zur Verfolgung defekter und/oder unerwünschter Sektoren
auf einer Platte und das Überspringen
derartiger defekter oder unerwünschter
Sektoren während
Lese- oder Schreib-Vorgängen
gemäß Definition
in den abhängigen
Ansprüchen
1 und 9. Die vorliegende Erfindung erkennt und nutzt den Vorteil
der Tatsache, dass defekte Sektoren sich tendenziell in unmittelbarer
Nähe zueinander
befinden und oft zusammen in Gruppen zusammenhängender oder aufeinander folgender
Sektoren gefunden werden. Der Plattenlaufwerk-Controller der vorliegenden
Erfindung verwendet "Übersprungbereichprüfregister" oder "Übersprungprüfregister", welche die Stellen von Bereichen aufeinander
folgender defekter Sektoren speichern können.
-
Indem
die Information über
defekte Sektoren innerhalb des Controllers als Bereiche defekter
Sektoren gespeichert wird, kann die vorliegende Erfindung die Größe der Register
und/oder der benötigten Registerlogik
reduzieren, um die Defekte zu verfolgen. Alternativ kann die vorliegende
Erfindung (gegenüber
früheren
Konstruktionen) die Anzahl von defekten Sektoren vergrößern, die
während
eines Lese- oder Schreibvorgangs ohne eine erhebliche Vergrößerung der
Registerlogik verwaltet werden können.
-
Ferner
ermöglichen,
da das Plattenlaufwerk dafür
konfiguriert ist, Daten auf einer Spur kontinuierlich Sektor für Sektor
zu lesen oder zu schreiben, die Übersprungsbereichprüfregister
der Steuerung schnell die defekten Sektoren in Gruppen anstelle von
einzelnen Einheiten zu überspringen.
Somit reduziert die Plattenlaufwerk-Controllerschaltung und das
Verfahren der vorliegenden Erfindung das Problem der Hinzufügung von
mehr Registern, indem versucht wird, abzuschätzen, wie viele Register mehr benötigt werden,
und indem der Defektverwaltungsvorgang in mehrere Teile unterteilt
wird.
-
Verschiedene
Plattenlaufwerkhersteller können
unterschiedliche Defektverwaltungsverfahren verwenden. Jedes von
einer Vielfalt bekannter Defektverwaltungsverfahren kann mit der
vorliegenden Erfindung verwendet werden. Eine Ausführungsform ermöglicht dem
Host-System auch bestimmte unerwünschte
Sektoren während
eines Lese- oder Schreibvorgangs zu überspringen oder zu maskieren.
Diese Sektoren sind nicht defekt, sind aber von dem Host-System
während
eines speziellen Lese- oder Schreibvorgangs nicht gewünscht.
-
Spezifische
Aspekte der vorliegenden Erfindung werden im Detail in den beigefügten unabhängigen und
abhängigen
Ansprüchen
beschrieben.
-
Kurzbeschreibung der Zeichnungen
-
1 stellt
ein Host-System und ein Plattenlaufwerk gemäß einer Ausführungsform
der Erfindung dar und stellt ein mit dem Plattenformatierer verbundenes
Host-System dar.
-
2A stellt
ein Beispiel einer Spur auf einer Platte und zwei Übersprungregister
dar.
-
2B stellt
ein Beispiel einer Spur und eine Konfiguration eines Übersprungbereichprüfregisters in
dem Plattenlaufwerk von 1 dar.
-
3 stellt
eine Konfiguration eines Satzes von Übersprungbereichprüfregistern
in dem Plattenlaufwerk von 1 dar.
-
4 stellt
eine Konfiguration einer durch das Plattenlaufwerk von 1 verwendeten
Bitmap dar.
-
5 stellt
eine Konfiguration eines von dem Plattenlaufwerk von 1 durchgeführten Ablaufsteuer-
bzw. Zustandsmaschinenverfahrens dar.
-
6 stellt
ein Beispiel einer Spur auf einer Platte und einen Satz von Übersprungbereichprüfregistern
von 3 dar.
-
7 stellt
eine Konfiguration eines von dem Plattenlaufwerk von 1 durchgeführten Firmware-Verfahrens
dar.
-
Detaillierte Beschreibung
der bevorzugten Ausführungsformen
-
Es
wird hierin eine bevorzugte Ausführungsform
der vorliegenden Erfindung beschrieben, welche veranschaulichen
und nicht den Schutzumfang der Erfindung einschränken soll. 1 stellt
ein Plattenlaufwerk 2 gemäß einer Ausführungsform
der Erfindung dar. Das Plattenlaufwerk 2 ist zusammen mit einem
Host-System (Host 5) dargestellt, welches beispielsweise
ein Personal Computer (PC) sein kann. Das Plattenlaufwerk 2 weist
eine Plattenlaufwerk-Controllerschaltung (Controller) 15,
einen Host-Schnittstellenport 10, einen Plattenport 27,
einen lokalen oder Plattenlaufwerk-Mikroprozessor (Mikroprozessor) 20,
einen Mikroprozessorport 22, einen Datenpufferport 75,
einen Nur-Lese-Speicher (ROM) 70,
einen Arbeitsspeicher (RAM) 60 und einen Datenpuffer 60 auf.
Der Plattenlaufwerk-Controller 15 liest und schreibt Daten
auf eine Platte 25.
-
Der
Host-Schnittstellenport 10 kann beispielsweise ein Small
Computer Standard Interface-(SCSI)-Port, ein Advance Technology
Attachment-(ATA)-Bus-Port oder ein Fibre Channel Port sein. Der
Mikroprozessor 20 ist bevorzugt ein Allzweckmikrocontroller
und kann entweder physikalisch innerhalb des Controllers 15 oder
außerhalb
des Controllers 15 eingebettet sein. Der Datenpuffer 80 kann
sich entweder innerhalb oder außerhalb
des Controllers 15 befinden. Der ROM 70 speichert
eine ausführbare
Firmware 65, welche beim Booten in den RAM 60 kopiert
und durch den Mikroprozessor 20 ausgeführt werden kann. Alternativ
kann der ROM 70 einen Satz von Befehlen zum Herunterladen
von Firmware von der Platte 25 zu dem RAM speichern.
-
Der
RAM 60 speichert eine Defektliste 62, welche von
der Platte 25 oder irgendeiner anderen geeigneten Stelle
durch die Firmware 65 bei dem Bootvorgang geladen wird.
Die Defektliste 62 kann eine Haupt-Liste aller Herstellungsfehler
und gewachsenen Fehler für
die gesamte Platte 25 sein. Alternativ kann in einer weiteren
Konfiguration die Defektliste 62 in den RAM 60 durch
die Firmware 65 zu Beginn jeder Lese- oder Schreibvorgang
geladen werden. In dieser Konfiguration kann die Defektliste 62 ein
Abschnitt der Haupt-Liste aller Fertigungsfehler oder gewachsenen
Fehler für
die gesamte Platte 25 sein. In dieser Konfiguration kann
die Firmware 65 einen Teil der Haupt-Liste auf einer Spur-für-Spur-Basis
oder einer Zonen-für-Zonen-Basis
(abhängig
von der durch den Hersteller definierten Implementation) nach Bedarf
durch einen Lese- oder Schreibbefehl laden.
-
In
der dargestellten Ausführungsform
von 1 weist der Plattenlaufwerk-Controller 15 eine Mikroprozessorschnittstelle 40,
eine Datenfluss-Controller 35, eine Puffer-Controller 45,
ein Fehlerkorrekturcode-(ECC)-Modul 50, einen Plattenformatierer 30 und
eine Host-Schnittstellen-Controller 55 auf.
Die Host-Schnittstellen-Controller 25 kann aus einem SCSI-Controller
oder einem SCSI Prozessor, einem ATA Prozessor oder einem Fibre
Chanel Schnittstellenmanager bestehen. Der Puffer-Controller 45 enthält wenigstens
einen logischen Blockadressen-(LBA)-Zähler 47, welcher einem
Lese- oder Schreibvorgang zugeordnete logische Blockadressen der
Sektoren zählt.
-
Der
Plattenformatierer 30 umfasst eine Hauptzustandsmaschine 90,
einen Sektorimpulsgenerator 92, ein Gatter 95 mit
logischer UND-Funktion, eine Befehlszustandsmaschine 102,
eine Übersprungprüfzustandsmaschine 100 und
einen Satz von Übersprungprüfregistern 105.
Die Plattenformatierregister umfassen ein Plattenformatier-Steuerregister 100,
ein SEC_REQ-Register 103 und ein SEC_CNT-Register 104.
Alter nativ können
in weiteren Konfigurationen weitere Schaltungsarchitekturen verwendet
werden, um die offenbarten Funktionen zu implementieren.
-
Controller und Mikroprozessor
für den
allgemeinen Betrieb
-
Der
allgemeine Betrieb des Platenlaufwerk-Controllers 14 und
des Mikroprozessors 20 wird unter Bezugnahme auf die 1 und 7 beschrieben. 7 stellt
eine Konfiguration eines durch das Plattenlaufwerk 2 von 1 durchgeführten Firmwareverfahrens
dar. In einem Prozessblock 700 von 7 empfängt und
verarbeitet das Plattenlaufwerk 2 einen Lese- oder Schreibbefehl
von dem Host-System 5. Insbesondere initiiert der Host 5 einen
Plattenlaufwerksvorgang, indem er einen Lese- oder Schreibbefehl
an den Host-Schnittstellen-Controller 55 des
Plattenlaufwerk-Controllers 15 sendet. Der Mikroprozessor 20 liest
den Lese- oder Schreibbefehl aus dem Host-Schnittstellen-Controller 55. Der
Lese- oder Schreibbefehl startet bei einer ausgewählten logischen
Blockadresse und kann mehr als nur eine Spur beinhalten.
-
In
einem Prozessblock 702 führt der Mikroprozessor 20 Firmware 65 aus,
welche zu die lesende oder beschreibende Spuren) identifiziert.
Die Firmware 65 wandelt oder übersetzt die logischen Blockadressen
des Lese- oder Schreibbefehls in spezifische physikalische Sektorstellen
(Adressen), die auf der Platte 25 zu lesen oder zu schreiben
sind. Die Übersetzung
ist durch die Herstellerimplementation seines Plattenlaufwerks definiert.
-
In
einem Prozessblock 704 erzeugt die Firmware 65 eine
Liste innerhalb der identifizierten Spuren) zu überspringenden Sektoren des
Lese- oder Schreibvorgangs. Um diese Liste zu erzeugen, kann die
Firmware 65 eine dem Lese- oder Schreibbefehl und der Defektliste 62 aus
der Platte 25 zugeordnet Bitmap, falls vorhanden, (wie
z.B. die in 4 dargestellte) verwenden. Wie
vorstehend beschrieben, kann die von der Firmware 65 verwendete
Defektliste 62 eine Haupt-Liste aller Herstellungsfehler
und gewachsenen Fehler auf der Platte 25 oder ein Teil
der Haupt-Liste sein.
-
In
einem Prozessblock 706 wandelt die Firmware 65 die
Liste 62 der zu überspringenden
Sektoren in ein geeignetes Format zum Laden der Übersprungbereichprüfregister 105 um.
Dieses beinhaltet beispielsweise eine Kombination aufeinander folgender
Ad ressen von defekten Sektoren in eine Startadresse und in einen
Bereich (oder Länge)
aufeinander folgender Adressen defekter Sektoren. Somit wird die
Defektliste 62 zu einer kondensierten oder komprimierten
Liste umgewandelt. Die Firmware 65 verwendet die Defektliste 62 auch,
um ein Neuzuordnungsbit (das in das Neuzuordnungsbit 162 des Übersprungprüfregistersatzes 170 zu
laden ist) für durch
den Lese- oder Schreibbefehl spezifizierte Sektoren mit gewachsenen
Defekten zu erzeugen.
-
In
einem Prozessblock 708 lädt die Firmware 65 alle
erforderlichen Steuerparameter zum Ausführen des Befehls in die geeigneten
Register des Controllers 15, wie z.B. das Plattenformatierer-Steuerregister 101,
das SEC_REQ-Register 103, das SEC_CNT-Register 104 und die Übersprungregister 105.
Für die Übersprungprüfregisterkonfiguration
von 3 lädt
die Firmware 65 die vier Felder 162-168 nach
Bedarf.
-
Einer
der Zwecke der Steuerparameter besteht darin, zu spezifizieren,
welche physikalischen Sektoren und welche Spuren beschrieben oder
gelesen werden. Das SEC_REQ-Register 103 enthält zu Beginn
die Startadresse oder Adresse des ersten Sektors (Adresse des niedrigsten
physikalischen Sektors), welche durch Ausführen eines Lese- oder Schreibbefehls
von dem Host-System 5 identifiziert wird. Das SEC_CNT-Register 104 spezifiziert
am Anfang die Gesamtanzahl der durch den Lese- oder Schreibbefehl
identifizierten Sektoren und spezifiziert während des Verlaufs des Vorgangs
die Anzahl der zu verarbeitenden verbleibenden Sektoren.
-
Nachdem
die Register 101, 103, 104 und 105 geladen
sind, gibt die Firmware 65 einen Lese- oder Schreibbefehl
an den Plattenformatierer 30 gemäß Darstellung in einem Prozessblock 710 aus.
Der Plattenformatierer 30 führt bevorzugt den Befehl automatisch
ohne weitere Intervention durch den Mikroprozessor 20 aus.
Der Sektorimpulsgenerator 92 erzeugt einen Startbefehlssektorimpuls (CMD_START_SP)
für das
Gatter 95 mit der logischen UND-Funktion. Der CMD_START_SP
identifiziert den ersten spezifizierten Sektor ID, SEC_REQ. Der
Sektorimpulsgenerator 99 sendet auch den CMD_START_SP an
die Übersprungprüfzustandsmaschine 100.
-
Die Übersprungprüfzustandsmaschine 100 ermittelt,
ob der in dem SEC_REQ-Register 103 gespeicherte Wert sich
auf einen zu überspringenden Sektor
bezieht. Die Übersprungprüfzustandsmaschine 100 erzeugt
ein Ausgangssignal, welches in das Und- Gatter 95 zusammen mit dem
Signal CMD_START_SP aus dem Sektorimpulsgenerator 92 eingegeben
wird. Wenn der Ausgang der Übersprungprüfzustandsmaschine 100 "niedrig" ist, wird der Sektor übersprungen.
Wenn das Ausgangssignal der Übersprungprüfzustandsmaschine 100 "hoch" ist, wird der Sektor
dann nicht übersprungen.
Das Ausgangssignal des Und-Gatters 95 wird in die Hauptzustandsmaschine 90 eingegeben.
-
Die Übersprungprüfzustandsmaschine 100 prüft auch
defekte Sektoren unter Verwendung der Inhalte der Übersprungprüfregister 105.
Die Übersprungprüfzustandsmaschine 100 stoppt
den Vorgang, wenn sie eine Adresse zu einem Sektor detektiert, der
als ein Sektor angegeben ist, der aufgrund eines gewachsenen Defektes
neu zuzuweisen ist. Die Firmware 65 verwendet dann einen
Neuzuordnungsalgorithmus, um die Daten einem Sektor ohne gewachsene
Defekte (z.B. für
einen Schreibvorgang) zuzuweisen, oder um einen Ersatzsektor (z.B.
für einen
Lesevorgang) zu identifizieren.
-
Wenn
der Befehl abgeschlossen ist, sendet der Plattenformatierer 30 einen
Interrupt an den Mikroprozessor 20 und/oder setzt ein Flag.
Der Interrupt kann anzeigen, dass der Befehl abgeschlossen ist,
und dass der Plattenformatierer 30 zur Ausführung eines
weiteren Befehls bereit ist.
-
Lesen oder Schreiben
-
In
einer Konfiguration werden, wenn der Befehl aus dem Host 5 ein
Lesebefehl ist, die angeforderten Daten von der Platte 25 in
den Datenpuffer 80 gelesen. Wenn sich eine bestimmte Datenmenge
in dem Puffer 80 befindet, veranlasst der Mikroprozessor 20 den
Controller 15, die Daten von dem Puffer 80 an
den Host 5 zu senden. Wenn der Befehl aus dem Host 5 ein
Schreibbefehl ist, codieren der Plattenformatierer 30 und
das ECC-Modul 50 die Daten, bevor diese auf der Platte 25 gespeichert
werden.
-
Firmwarefunktionen
-
Die
Firmware 65 ist bevorzugt dafür konfiguriert, drei primäre Funktionen
auszuführen,
die das Defektverwaltungsschema betreffen. Beim Booten veranlasst
die Firmware 65, wenn sie durch den Mikroprozessor 20 ausgeführt wird,
den Plattenlaufwerk-Controller 15 zum Auslesen der Liste
der Sektoren mit Herstellungsfehlern aus der Platte 25 und speichert
diese Liste in dem RAM 60, einem Datenpuffer oder einem
anderen (dem Plattencontroller unbekannten) Bereich. Die Liste kann
eine Zone, eine Magnetscheibe oder irgendeine andere Einheit betreffen,
die von dem Plattenlaufwerkhersteller angegeben ist. Während eines
Lese- oder Schreibvorgangs überträgt die Firmware 65 einen
Teil dieser Liste in den Plattenformatierer 30. Der übertragene Teil
der Liste deckt die spezielle Spuren) ab, welche zu den durch das
Host-System 5 spezifizierten Sektoren in Beziehung stehen.
Der Plattenformatierer 30 überspringt bestimmte Sektoren
der Spur(en) gemäß der übertragenen
Teilliste. Dieses ist Teil des vorstehend beschriebenen Defektverwaltungsvorgangs.
-
Die
Firmware 65 ordnet auch Sektoren mit gewachsenen Defekten
neu zu. Die Neu-Zuordnungs-Prozedur
kann abhängig
von der Implementation des Plattenlaufwerkherstellers variieren.
Wenn ein Fehler während
eines derartigen Lesevorgangs angetroffen wird, versucht die Firmware 65 die
Daten wiederherzustellen und die Daten einem alternativen "guten" Sektor neu zuzuordnen,
der nicht defekt ist. Der gute Sektor kann sich irgendwo auf der
Platte 25 befinden. Die Firmware 65 steuert und
bewahrt einen Aufzeichnungssatz von Sektorneuzuordnungen auf. Nach
dem Beginn eines anschließenden
Lese- oder Schreibvorgangs (nachdem die Daten neu zugeordnet worden
sind) programmiert die Firmware 65 die Stelle von einem
oder mehreren zu überspringenden defekten
Sektoren in die Übersprungprüfregister 105 innerhalb
des Plattenlaufwerkformatierers 30. Die neu zugeordneten
Sektoren veranlassen die Firmware 65 (und den Plattenformatierer 30)
die Neuzuordnungsadressen zu lesen oder zu beschreiben, die Adresse
des neu zugeordneten Sektors zu ermitteln, diesen Sektor zu lesen
oder zu beschreiben, und dann zu den restlichen Sektoren des Lese-
oder Schreibbefehls zurückzukehren.
-
Vor
einem Lese- oder Schreib-Vorgang kann die Firmware 65 auch
den Plattenformatierer 30 programmieren, bestimmte Sektoren
zu überspringen, welche
aufgrund des Lese- oder
Schreibbefehls aus dem Host 5 unerwünscht sind. Unerwünschte Sektoren
sind nicht defekt (sie enthalten gültige, lesbare Daten), sie
werden jedoch von dem Host-System 5 aus
verschiedenen Gründen
nicht zur Übertragung identifiziert.
Beispielsweise können
bestimmte Sektoren in einem spezialisierten Befehlssatz, wie z.B. "scip mask read" und "scip mask write" verwendet werden,
der in einem redundanten Array preis werter Platten-(RAID)-Controller
verwendet wird. Das SCSI-Protokoll besitzt beispielsweise spezielle
Befehle, welche dazu verwendet werden, bestimmte unerwünschte Sektoren
oder einen Bereich von Sektoren auszuschließen.
-
Die
Firmware 65 programmiert bevorzugt die Register 101, 103, 104 und
die Übersprungregister 105 vor
jedem neuen Lese- oder Schreibvorgang, da sich die Steuerparameter
für jeden
Lese- oder Schreibvorgang unterscheiden können.
-
Übersicht über den Defektverwaltungsvorgang – Funktion
wer Hauptzustandsmaschine und Übersgrungzustandsmaschine
-
Ein
Teil des Defektverwaltungsvorgangs wird unter Bezugnahme auf 1 beschrieben.
Nachdem der erste Sektor geprüft
ist, arbeitet die Hauptzustandsmaschine 90 des Plattenformatierers 30 bevorzugt
parallel mit der Übersprungprüfzustandsmaschine 100.
Die Übersprungprüfzustandsmaschine 100 führt eine Übersprungprüfprozedur
an aufeinander folgend identifizierten Sektoren aus, während die Hauptzustandsmaschine 90 weitere
Verarbeitungsfunktionen ausführt.
-
SEC_ERQ und SEC_CNT
-
Die Übersprungprüfzustandsmaschine 100 prüft die Übersprungregister 105,
um zu ermitteln, ob die Sektoradresse eines angeforderten Sektors (SEC_REQ)
als ein Übersprungsektor
durch die Firmware 65 angegeben ist. Das SEC_REQ-Register 103 arbeitet
bevorzugt als ein Zähler,
welcher um 1 inkrementiert wird, nachdem jede angeforderte Sektoradresse
(angefordert durch den Lese- oder Schreibvorgang) gegenüber den Übersprungsektoradressen
(angegeben als ein Übersprungsektor
durch die Firmware 65) geprüft ist, die in den Übersprungregistern 105 gespeichert
ist.
-
Wenn
der angeforderte Sektor (SEC_REQ) als ein Übersprungsektor angegeben ist, überspringt die Übersprungprüfzustandsmaschine 100 diesen Sektor
und prüft
den nächst
folgenden Sektor (SEC_REQ + 1) auf der Spur. Wenn der Sektor nicht als Übersprungsektor
angegeben ist, erlaubt die Übersprungprüfzustandsmaschine 100 der
Hauptzustandsmaschine 90 den Sektor zu verarbeiten, und die
Hauptzustandsmaschine 90 liest oder schreibt Daten auf
den oder von dem Sektor. Die Hauptzustandsmaschine 90 dekrementiert
die Gesamtanzahl der angeforderten Sektoren (SEC_CNT) um 1, nachdem
jeder Sektor erfolgreich gefunden und gelesen oder beschrieben wurde.
Wenn SEC_CNT auf Null dekrementiert ist, ist der Lese- oder Schreibvorgang abgeschlossen.
-
Vorhandene Übersprungregisterkonfiguration
-
2A stellt
ein Beispiel einer Spur 120 auf der Platte 25,
ein erstes Übersprungregister 125 und ein
zweites Übersprungregister 127 dar,
und wird dazu verwendet, einen Mangel in bestehenden Konstruktionen
darzustellen. Nur 6 Sektoren 130-140 und
zwei Übersprungregister 125, 127 sind
für Zwecke
dieses Beispiels dargestellt. Eine Spur kann jedoch 200 oder mehr
Sektoren aufweisen und ein Plattenformatierer 30 kann mehrere Übersprungregister
aufweisen.
-
In 2A kann
jedes Übersprungregister 125, 127 die
Stelle (auch als Sektoradresse oder Sektor ID bezeichnet) eines
einzelnen defekten Sektors speichern oder aufzeichnen. Aber die
Anzahl defekter Sektoren auf einer zu lesenden oder zu beschreibenden
Spur kann größer als
die Anzahl der Übersprungregister
sein. Beispielsweise gibt es gemäß Darstellung
in 2A drei defekte Sektoren 132-136 und
nur zwei Übersprungregister 125, 127. In
einem bestehenden Verfahren unterteilt der Plattenformatierer 30 für die Spur 120 vorgesehenen
Lese- oder Schreibvorgang in wenigstens zwei Vorgänge, da
dessen Defektverwaltungsvorgang nur eine beschränkte Anzahl zu überspringender
Sektoren handhaben kann, welche in diesem Beispiel zwei ist. Ein
erster Defektverwaltungsvorgang würde das erste Übersprungregister 125 zum
Speichern der Stelle des ersten Sektordefektes 132 und
das zweite Übersprungregister 127 zum
Speichern der Stelle des zweiten Defektes 134 verwenden.
Ein zweiter Verwaltungsvorgang würde
das erste Übersprungregister 125 zum
Speichern der Stelle des dritten Sektordefektes 136 verwenden.
Ein erster Lesevorgang würde
den Sektor n 130 lesen und ein zweiter Lesevorgang würde von
n + 1 bis zu allen anderen Sektoren weiter entlang der Spur 120 lesen.
-
Ein
Nachteil der Unterteilung des Defektverwaltungsvorgangs besteht
darin, dass er die Zeit verlängert,
die zum Abschließen
des Lese- oder Schreib-Vorgangs erforderlich ist, und dadurch das Plattenlaufwerkverhalten
verschlechtert.
-
Übersprungbereichprüfregister
-
2B stellt
eine Plattenspur 120 und eine Konfiguration eines Übersprungbereichprüfregisters 150 gemäß einer
Ausführungsform
der vorliegenden Erfindung dar. In 2B weist
das Übersprungbereichsregister 150 eine Übersprungsektorstelle
oder ein ID Feld 154 (SKIP_ID) und ein Längenfeld 152 (LENGTH)
auf. Das ID Feld 154 des Übersprungsektors spezifiziert
die Sektorstelle eines ersten auf der Spur 120 zu überspringenden
Sektors, wie z.B. des in 2B dargestellten
ersten defekten Sektors 132. In einer bevorzugten Konfiguration
ist diese Sektor ID eine physikalische Adresse und keine logische Adresse.
-
Das
LENGTH Feld 152 spezifiziert die Anzahl aufeinander folgender
defekter Sektoren, welche beginnend mit dem ersten Defekt 132 übersprungen
werden sollen. Eine LENGTH von "1" zeigt an, dass nur
der Sektor an der SKIP_ID Adresse zu überspringen ist. Eine LENGTH
von "2" zeigt an, dass die zwei
Sektoren bei den Adressen SKIP_ID und SKIP_ID + 1 zu überspringen
sind. Beispielsweise ist für
die in 2B dargestellte Spur 120 das
LENGTH Feld 152 gleich drei. Das LENGTH Feld 152 ermöglicht dem
Plattenformatierer 30, mehr als einen Sektor zu überspringen,
wobei er nur ein Schieberegister 150 benötigt.
-
Das
Sprungbereichprüfregister 150 nutzt den
Umstand, dass defekte Sektoren oft in Gruppen zusammenhängender
oder aufeinander folgender Sektoren gefunden werden. Ein Plattenformatierer 30 (1)
mit nur einem einzigen Bereichsprüfregister 150 (2B)
kann einen Lese- oder Schreib-Vorgang auf der Spur 120 (mit
den dargestellten Defekten) mit einem einzigen Defektverwaltungsvorgang anstelle
einer Unterteilung des Vorgangs in mehrere Teile durchführen. Dieses
reduziert die Zeit eines Lese- oder Schreib-Vorgangs und verbessert
das Festplattenlaufwerkverhalten.
-
3 stellt
eine Konfiguration eines Satzes 170 von Übersprüngbereichprüfregistern 180-210 dar.
Jedes Register 180-210 kann einen Bereich schlechter
Sektoren von aufeinander folgenden schlechten Sektoren repräsentieren.
Die Übersprungbereichprüfregister 180-210 von 3 weisen ein
10-Bit SKIP_ID Feld 168, ein 4-Bit LENGTH Feld 166,
ein INCREMENT LBA Bit 164, und ein RE-ASSIGN Bit 162 auf.
Die SKIP_ID 168 spezifiziert die Stelle eines auf der Spur 120 zu überspringenden oder
neu zuzu ordnenden ersten Sektors. Das LENGTH Feld 166 spezifiziert
die Anzahl zu überspringender
oder neu zuzuordnender aufeinander folgender Sektoren. Ein Wert
von "0" in dem LENGTH Feld 166 zeigt
an, dass das Übersprungbereichprüfregister 160 einen
Eintrag enthält,
der nicht gültig
ist. Mit anderen Worten, wenn LENGTH = 0 ist, ist kein Überspringen
erforderlich.
-
Die
Einträge
in den Übersprungregistern 180-210 werden
bevorzugt durch die Firmware 65 in aufsteigender Reihenfolge
geladen. Die Stelle des niedrigsten physikalischen Sektors oder
der Bereich zu überspringender
Sektoren wird in das erste Übersprungregister 180 geladen.
Die Stelle des zweit niedrigsten physikalischen Sektors oder Bereichs
zu überspringender
Sektoren wird in das zweite Übersprungregister 182 usw.
geladen. In dieser bevorzugten Konfiguration befinden sich keine
leeren Register zwischen vollen Registern. Somit müssen, sobald
ein leeres Register durch die Übersprungprüfzustandsmaschine 100 angetroffen
wird, keine weiteren Übersprungprüfregister
gelesen werden. Die Vorteile des Ladens der Einträge in aufsteigender
Reihenfolge ohne leere Register zwischen den vollen Registern werden
nachstehend unter Bezugnahme auf die 5 und 6 erläutert.
-
Obwohl 16 Übersprungregister 180-210 in 3 dargestellt
sind, können
andere Ausführungsformen
der vorliegenden Erfindung mehr oder weniger als 16 Übersprungregister
enthalten. Die Übersprungregister 105 in 1 weisen
bevorzugt den Satz 170 der Übersprungbereichprüfregister 180-210 von 3 auf.
Alternativ können
in weiteren Ausführungsformen
die Übersprungbereichprüfeinträge mit einem
first-in-first-out (FIFO) Modul implementiert werden, oder in einem
Speicher anstelle der Register 180-210 gespeichert
werden.
-
Logische Blockadressen
-
Das
INKREMENT LBA Bit 164 erlaubt einem Lese- oder Schreib-Vorgang
von dem Host-System 5 bestimmte unerwünschte Sektoren zu überspringen, welche
nicht defekt sind. Im Allgemeinen nimmt das Host-System 5 Daten
als in einer zusammenhängenden
Reihenfolge logischer Blockadressen (LBAs) gespeicherte Daten wahr.
Der Plattencontroller 15 steuert die Anordnung, wie die
Daten auf der Platte gespeichert werden, und die Firmware 65 steuert
die Übersetzung
zwischen LBAs und physikalischen Sek toradressen. Die Abbildung von
LBAs auf physikalische Adressen findet bevorzugt für das Host-System 5 transparent
statt. Somit müssen
logische Blockadressen nicht mit physikalischen Sektor IDs auf der
Platte übereinstimmen.
-
Beispielsweise
können
von dem Host 5 verwendete logische Blockadressen 1-19 auf
Speichern 8-26 einer ersten Spur einer ersten (nicht dargestellten)
Magnetplattenscheibe gespeichert sein, LBA 20-22 können auf
Sektoren 1, 5 und 6 einer zweiten Spur der ersten Magnetplattenscheibe
(wie in 2B) gespeichert sein und LBA 23-30 können auf Sektoren
1-8 einer Spur der zweiten Platte gespeichert sein. Ferner können die
Datensektoren in verschiedenen physikalischen Sektor IDs neu zugeordnet
werden, aber die logischen Blockadressen bleiben noch sequentiell.
-
Der
LBA Zähler 47 (1)
verfolgt die logischen Blockadressen der auf der Platte 25 gespeicherten
Datensektoren. Wenn der Plattencontroller 50 Daten auf
die Platte 25 schreibt, wird der LBA Zähler 47 automatisch
inkrementiert und ein zugeordneter LBA Wert wird mit den Daten eingefügt, wenn
diese auf einem Sektor der Platte 25 gespeichert werden.
Es gibt keinen LBA Wert in Verbindung mit übersprungenen defekten Sektoren,
welche während
der Herstellung detektiert wurden. Der Plattenformatierer 30 kann
automatisch den LBA Wert jedes Sektors prüfen, sobald dieser von der
Platte 25 gelesen wird.
-
Inkrementieren von LBA Bits
-
4 stellt
eine Konfiguration einer Liste oder einer Bitmap 180 dar,
welche von dem Host-System 5 (1) in Verbindung
mit einem Lese- oder Schreibbefehl aus dem Host 5 erzeugt
werden kann. Die Bitmap 180 wird in dem RAM 60 gespeichert,
wenn das Plattenlaufwerk 2 die Bitmap 180 aus
dem Host-System 5 empfängt.
Alternativ können
weitere Einrichtungen zum Informieren des Plattenlaufwerk-Controllers 15 zum Überspringen bestimmter
unerwünschter
Sektoren anstelle von oder zusätzlich
zu der Bitmap 180 von 4 verwendet
werden.
-
Im
Betrieb verwendet die Firmware 65 die Bitmap 180 um
zu ermitteln, welche logischen Blockadressen erwünscht sind und welche logischen
Blockadressen von dem Host-System
in einem speziellen Lese- oder Schreib-Vorgang nicht erwünscht sind.
Jedes Bit 182-204 in der Bitmap 180 repräsentiert
eine logische Blockadresse, welche einer physikalischen Sektoradresse
eines Sektors auf einer Spur zugeordnet ist. Eine "1" gibt eine logische Blockadresse an,
die von dem Host 5 in einem speziellen Lese- oder Schreibbefehl
gewünscht
ist. Eine "0" zeigt eine unerwünschte logische
Blockadresse und einen von dem Plattencontroller 15 zu überspringenden
Sektor an. Die Firmware 65 verwendet diese Bitmap von 5 und
das INCREMENT LBA Bit 164 (3) um den
LBA Zähler 47 mit
Sektoren zu koordinieren, welche für einen speziellen Lese- oder Schreib-Vorgang
unerwünscht
sind. Insbesondere verwendet die Firmware 65 die Bitmap 180,
um Einträge
in die Übersprungprüfregister 105 (1)
zu konfigurieren.
-
Beispielsweise
sind in 4 die ersten drei Bits 182-186 "1-sen" und die nächsten zwei
Bits 188–190 sind "0-len". Dieses zeigt an,
dass die logischen Blockadressen 1-3 in dem Lese- oder Schreib-Vorgang
verwendet werden, und dass die logischen Blockadressen 4–5 nicht
verwendet werden (unerwünscht
sind). Die Firmware 65 (1) wandelt die
Bitmap 180 in einen Eintrag für ein Übersprungbereichprüfregister 180-210 (3)
um, um den logischen Blockadressen 4-5 zugeordnete Sektoren zu überspringen.
Die Firmware 65 setzt das INCREMENT LBA Bit 164 des Übersprungprüfregistereintrags
auf einen vorbestimmten Zustand wie z.B. "1" und
lädt das
Längen
(Bereichs) Feld 166 (3) mit dem
Wert "2". Dieses zeigt an,
dass der LBA Zähler 47 um
2 für die
zwei übersprungenen
Sektoren erhöht
wird.
-
Somit
zeigt das INCREMENT LBA Bit 164 an, ob der LBA Zähler 47 inkrementiert
werden sollte oder nicht. Die unerwünschten (aber nicht defekten) Sektoren
werden übersprungen
(nicht gelesen oder geschrieben) und das INCREMENT LBA Bit 164 veranlasst
den LBA Zähler 47,
die übersprungenen
Sektoren zu zählen,
so als ob sie gültig
gewesen oder gelesen oder beschrieben worden wären. Die Möglichkeit, bestimmte Sektoren
als unerwünscht
durch einen speziellen Lese- oder Schreib-Vorgang zu markieren,
verleiht dem Plattencontroller 15 und dem Übersprungprüfverfahren
mehr Flexibilität,
ist jedoch nicht unbedingt erforderlich.
-
Neuzuordnungs-Bit
-
Wie
vorstehend beschrieben wird das Neuzuordnungs-Bit 162 von 3 von
der Firmware 65 zusammen mit dem Rest der Felder 164-168 geladen.
Wenn das Neuzuord nungs-Bit 162 auf 1 gesetzt ist, zeigt
dieses an, dass alle durch das Übersprungsektor
ID Feld 168 und das Lengenfeld 166 spezifizierten
Sektoren neu zugeordnet worden sind und übersprungen werden sollen.
Mit anderen Worten, alle Sektoren in dem Bereich von SKIP_ID bis SKIP_ID
+ (LENGTH – 1)
sind zu überspringen. Übersprungene
Sektoren werden nicht als Teil des Sektorzählers (SEC_CNT) gezählt.
-
Zugriff auf Übersprungregister
-
Der
Zugriff durch den Mikroprozessor 20 auf den Satz 170 der Übersprungprüfregister 190-210 erfolgt über eine
(nicht dargestellte) FIFO-artige Schnittstelle, welche einen 2 Byte-Adressenraum
belegt. Bevor die Firmware 65 die Übersprungprüfregister 180-210 für einen
Lese- oder Schreib-Vorgang lädt,
initialisiert der Plattenformatierer 30 bevorzugt die FIFO-Schnittstelle,
indem er ein "Übersprung-FIFO-Initialisierungs"-Bit in dem Steuerregister 101 von 1 des
Plattenformatierers setzt. Das Setzen des Übersprung-FIFO-Initialisierungs-Bits veranlasst,
dass alle Felder jedes Übersprungprüfregisters 190-210 einschließlich der
Längenfelder
und der Neuzuordnungsbits auf 0 zurückgesetzt werden.
-
Adressenlogik und Zeiger
-
Der
Plattenformatierer 30 weist ferner eine Übersprungregisteradressenlogik,
wie z.B. einen Übersprungregisteradressenzeiger
PNTR 172 auf, welcher auf ein ausgewähltes Übersprungprüfregister 180-210 gemäß Darstellung
in 3 zeigt. Eine Ladezeigervariable wird von der
Firmware 65 zum Laden der Register 180-210 verwendet.
Eine Lesezeigervariable wird von der Übersprungprüfzustandsmaschine 100 zum
Lesen der Register 180-210 verwendet, nachdem
die Register 180-210 durch die Firmware 65 geladen
wurden.
-
An
dem Beginn eines Lese- oder Schreib-Vorgangs setzt der Plattenformatierer 30 den
Zeiger PNTR 172 (Ladezeigervariable) auf "0". Wenn die (von dem Mikroprozessor 20 ausgeführte) Firmware 65 die Übersprungprüfregister 180-210 lädt, greift
die Firmware 65 auf die einzige durch den Zeiger 172 (Ladezeigervariable)
bezeichnete Adresse zu und beschreibt diese. Der Plattenformatierer 30 inkrementiert
automatisch den PNTR 172 (Ladezeigervariable) so, dass
die Übersprungprüfregister 180-210 in
dem Satz 170 inkrementell geladen werden. In einer Konfiguration
umrundet, wenn mehr als 16 Einträge
(mehr als die Gesamtanzahl implementierter Register 190-210)
durch die Firmware 65 in die Register 180-210 geschrieben
werden, der Zeiger 172 (Ladezeigervariable) das letzte
Register 210 und führt
die Inkrementierung über
die aufeinander folgenden Register 180-210 fort.
Die Umrundungsart des Zeigers 172 (Ladezeigervariable)
bewirkt, dass der Plattenformatierer 30 vorherige Daten
in den Registern 180-210 überschreibt.
-
Wenn
der Zeiger 172 durch die Übersprungprüfzustandsmaschine 100 verwendet
wird, umrundet der Zeiger 172 (Lesezeigervariable) die Übersprungprüfbereichregister 180-210, aber
die Übersprungprüfzustandsmaschine 100 stoppt
sobald sie eine Umrundung beginnt und bewirkt, dass der Controller 15 das
SEC_REQ verarbeitet.
-
Übersprungprüfzustandsmaschine-5 und 6
-
5 stellt
eine Ausführungsform
des von der Übersprungprüfzustandsmaschine 100 von 1 dargestellten Übersprungprüfverfahrens
dar. 6 stellt ein Beispiel einer Spur 250 mit
mehreren Sektoren 252-268 und einem Satz von Übersprungbereichprüfregistern 270-276
dar, welche im Aufbau ähnlich
den in 3 dargestellten Übersprungbereichprüfregistern 180-210 sind.
-
Der
Betrieb der Übersprungprüfzustandsmaschine 100 wird
unter Bezugnahme auf die 1-6 beschrieben.
In 1 initialisiert und startet die Firmware 65 die
Hauptzustandsmaschine 90 und die Befehlszustandsmaschine 102.
Die Befehlszustandsmaschine 102 startet die Übersprungprüfzustandsmaschine 100 und
kann warten, bis die Übersprungprüfzustandsmaschine 100 endet.
In 5 befindet sich die Übersprungprüfzustandsmaschine 100 zu
Beginn in einem Leerlaufzustand 210, in welchem sie auf
einen SKIP_START Befehl aus der Befehlszustandsmaschine 102 wartet.
Wenn die Übersprungprüfzustandsmaschine 100 einen SKIP_START
Befehl empfängt,
geht die Übersprungprüfzustandsmaschine 100 zu
einem SKIP:STATE_1 215 über.
Die Befehlszustandsmaschine 102 überträgt das SEC_REQ 103 (ID
des nächsten
angeforderten Sektors) auf den Sektorimpulsgenerator 92. Im
SKIP_STATE_1 215 empfängt
die Übersprungprüfzustandsmaschine 100 einen
ersten in dem SEC_REQ-Register 103 von 1 gespeicherten Wert
aus dem Sektorimpulsgenerator 92 und vergleicht diesen Wert
mit der Übersprungsektor
ID (SKIP_ID) des ersten Übersprungprüfregisters 270. Zu
Beginn befindet sich der PNTR 298 auf dem ersten Übersprungprüfregister 270.
-
Neuzuordnung
-
Wenn
im SKIP_STATE_1 215 das SEC_REQ gleich der Übersprungsektor
ID des ersten Übersprungprüfregisters 270 ist,
und das Neuzuordnungsbit 290 auf 1 gesetzt ist, setzt dann
die Übersprungprüfzustandsmaschine 100 den
Interrupt (wie nachstehend diskutiert) neu und gibt die Steuerung
an die Befehlszustandsmaschine 102 (oder die Hauptzustandsmaschine 90)
zurück.
Die Übersprungprüfzustandsmaschine 100 geht
von dem SKIP_STATE_1 215 auf den Leerlaufzustand 210 über. Beispielsweise
ist in 6, wenn SEC_REQ = 2 und SKIP_ID = 2 ist, dann
SEC_REQ = SKIP_ID. Wenn das Neuzuordnungsbit auf 1 gesetzt ist,
kann der Plattenformatierer 30 die Spur oder die Platte 30 für die angeforderten
neu zugeordneten Datensektoren suchen. Diese Suche nach den neu
zugeordneten Sektoren kann durch die Firmware 65 geführt werden
und ist bevorzugt ein von dem Übersprungprüfzustands-Maschinenverfahren
gemäß Darstellung
in 5 getrennter Prozess.
-
Wenn
im SKIP_STATE_1 215 SEC_REQ kleiner oder gleich zu (SKIP_ID
+ (LENGTH – 1))
ist, bedeutet dieses, dass SEC_REQ innerhalb des Bereichs von Sektoren
liegt, die von dem ersten Übersprungprüfregister 270 als
zu überspringen
gekennzeichnet sind. Beispielsweise fällt in 6, wenn SEC_REQ
= 3, und (SKIP_ID + (LENGTH – 1))
= 2 + (2-1) = 3 ist, dann SEC_REQ in den Bereich von Sektoren, die
durch das erste Übersprungprüfregister 270 als
zu überspringen
gekennzeichnet sind. Wenn das Neuzuordnungsbit 290 auf
1 gesetzt ist, setzt dann die Übersprungprüfzustandsmaschine 100 ihren
Betrieb aus (geht in den Leerlaufzustand 210 über), setzt
einen Neuzuordnungs-Interrupt
und gibt die Steuerung an die Befehlszustandsmaschine 102 (oder
die Hauptzustandsmaschine 90) zurück.
-
Der
Neuzuordnungs-Interrupt informiert die Firmware 65 (1),
dass die Daten einer anderen Sektorstelle neu zugeordnet wurden.
Wie vorstehend beschrieben, werden gewachsene Defekte typischerweise
dann detektiert und aufgezeichnet, wenn ein Sektor gelesen wird,
wobei sich aber der Prozess abhängig
von der durch den Hersteller definierten Implementation unterscheiden
kann. Die Daten aus jedem Sektor mit einem ge wachsenen Defekt werden einem
nicht-defekten Sektor neu zugeordnet. Als Reaktion auf den Neuzuordnungs-Interrupt
ermittelt die Firmware 65, wo die Daten bereits neu zugeordnet worden
sind, beispielsweise unter Verwendung einer Liste neu zugeordneter
Sektoradressen. Die Firmware 65 sendet die neu zugeordnete
Sektoradresse mit einem neuen Befehl an den Plattenformatierer 30 für den neu
zugeordneten Sektor. Die Übersprungprüfzustandsmaschine 100 verbleibt
in dem Leerlaufzustand 210 bis ein weiterer SKIP_START
Befehl von der Befehlszustandsmaschine 102 empfangen wird.
-
LENGTH = 0
-
Wenn
im SKIP_STATE_1 215 das LENGTH Feld 294 gleich "0" ist, ist der Übersprungprüfeintrag nicht gültig und
es ist kein Überspringen
erforderlich. Beispielsweise sind, wenn in 6 die LENGTH
Felder aller Register 270-276 "0" sind,
dann keine weiteren Überspringungen
erforderlich. Die Übersprungprüfzustandsmaschine 100 erzeugt
dann einen SKIP_STATE_3 225, welcher anzeigt, dass ein "guter" Sektor durch die Übersprungprüfzustandsmaschine 100 gefunden
wurde, und der Plattenformatierer 30 kann von dem Sektor
wie nachstehend beschrieben lesen oder diesen beschreiben.
-
SEC_REQ < SKIP_ID
-
Wenn
im SKIP_STATE_1 215, das LENGTH Feld nicht gleich 0 ist,
und SEC_REQ kleiner als SKIP_ID ist, bedeutet dieses, dass die angeforderte Sektoradresse
niedriger als die SKIP_ID des derzeit durch den Zeiger PNTR 298 angegebenen Übersprungprüfregisters
ist, welches in diesem Falle das erste Übersprungregister 270 ist.
Beispielsweise ist in 6, wenn SEC_REQ = 1 und SKIP_ID
= 2 ist, dann SEC_REQ < SKIP_ID.
Wenn SEC_REQ kleiner als SKIP_ID des ersten Übersprungprüfregisters 270 ist,
ist dann die angeforderte Sektoradresse (SEC_REQ) niedriger als
SKIP_ID von allen Übersprungprüfregistern 270-276 aufgrund
der ansteigenden Reihenfolge.
-
Dieses
ist ein Vorteil der ansteigenden Reihenfolge der Übersprungprüfregister,
da die Übersprungprüfzustandsmaschine 100 nicht
die Einträge aller Übersprungprüfregister 270-276 prüfen muss. Sobald
die Übersprungprüfzustandsmaschine 100 einen
Zustand SEC_REQ < SKIP_ID
findet, kann die Übersprungprüfzustandsmaschine 100 sofort
ein Freigabesignal an die Befehlszustandsmaschine 102 und/oder
die Hauptzu standsmaschine 90 zurückgeben, um den angeforderten
Sektor SEC_REQ zu lesen oder zu beschreiben. Die Übersprungprüfzustandsmaschine 100 geht
von dem SKIP_STATE_1 215 zu dem SKIP_STATE_3 225 über.
-
Übersprungprüfung ausgeführt
-
Im
SKIP_STATE_3 225 geht die Übersprungprüfzustandsmaschine 100 zu
einem SKIP_STATE_4 230 über,
welcher anzeigt, dass die Übersprungprüfprozedur
für den
durch SEC_REQ bezeichneten Sektor ausgeführt ist. Die Maschine gibt
die Steuerung an die Befehlszustandsmaschine 102 und/oder
die Hauptzustandsmaschine 90 zurück. Der Plattenformatierer 30 veranlasst
das Plattenlaufwerk 15 (1), einen
durch SEC_REQ angegebenen Sektor auf der Spur 250 zu lesen
oder zu beschreiben. Beispielsweise veranlasst in 6 der Plattenformatierer 30 das
Plattenlaufwerk 15, den Sektor 252 bei SEC_REQ
= 1 zu lesen.
-
Die
Befehlszustandsmaschine 102 dekrementiert die Gesamtanzahl
der angeforderten Sektoren (SEC_CNT) in dem SEC_CNT Register 104, nachdem
ein Sektor erfolgreich gefunden und gelesen wurde. Wenn der SEC_CNT
Null erreicht, gibt es keine weiteren Sektoren mehr, die einem speziellen Lese-
oder Schreib-Vorgang zugeordnet sind, und der Lese- oder Schreib-Vorgang
ist abgeschlossen.
-
Übersprungprüfungsfortsetzung
-
Im
SKIP_STATE_4 230 wartet die Übersprungprüfzustandsmaschine 100 auf
ein Signal aus der Befehlszustandsmaschine 102 und/oder
der Hauptzustandsmaschine 90. Wenn mehr Sektoren in dem
Lese- oder Schreib-Vorgang zu lesen oder zu schreiben sind (SEC_CNT
= nicht gleich Null), veranlasst die Befehlszustandsmaschine 102 den
Sektorimpulsgenerator 92 einen weiteren Sektorimpuls an die Übersprungprüfzustandsmaschine 100 zu
senden. Die Befehlszustandsmaschine 102 sendet einen Befehl
SKIP_CONT an die Übersprungprüfzustandsmaschine 100,
um den Übersprungprüfprozess
für den
nächsten
Sektor fortzusetzen. Die Übersprungprüfzustandsmaschine 100 geht
von dem SKIP_STATE_4 230 zu einem SKIP_STATE5 235 über. Die Übersprungprüfzustandsmaschine 100 inkrementiert
den angeforderten Sektor SEC_REQ, um auf den nächsten Sektor auf der Spur
zu zeigen und startet das Übersprungprüfverfahren
noch einmal.
-
Beispielsweise
wird, wenn SEC_REQ_1 ist, diese auf SEC_REQ + 1 = 2 inkrementiert.
Die Übersprungprüfzustandsmaschine 100 geht
dann zu dem SKIP_STATE_1 215 über, und führt die Übersprungprüfprozedur an dem nächsten SEC_REQ
Wert aus, welcher SEC_REQ + 1 = 2 ist.
-
Die Übersprungprüfzustandsmaschine 100 prüft bevorzugt
den nächsten
angeforderten Sektor (SEC_REQ + 1), der zu lesen oder zu beschreiben ist,
während
der Plattenformatierer 30 den nächsten angeforderten Sektor
(SEC_REQ) liest. Dieses spart Zeit und verbessert den Wirkungsgrad
eines Lese- oder Schreib-Vorgangs.
-
Zeiger inkrementieren
-
Im
SKIP_STATE_1 215 bedeutet, wenn SEC_REQ größer als
(SKIP_ID + (LENGTH – 1))
ist, dieses, dass die angeforderte Sektoradresse höher als
die SKIP_ID des derzeit durch den Zeiger PNTR 298 angegebenen Übersprungprüfregisters
ist. Wenn beispielsweise in 6 SEC:_REQ
= 4, SKIP_ID = 2 und (LENGTH – 1)
= 1 ist, ist dann (SKIP_ID + (LENGTH – 1)) = 1, und SEC_REQ > (SKIP_ID + (LENGTH – 1)). Die Übersprungprüfzustandsmaschine 100 geht
von dem SKIP_STATE_1 215 zu dem in 5 dargestellten
SKIP_STATE_2 220 über.
Die Übersprungprüfzustandsmaschine 100 inkrementiert
den Zeiger PNTR 298, um auf das nächste Übersprungprüfregister 272 zu zeigen.
Da die Übersprungprüfregister-Werte
in aufsteigender Reihenfolge organisiert sind, enthält das nächste Übersprungprüfregister 272 die
Sektoradresse des nächst
höheren
Sektors oder Sektorbereichs, falls vorhanden, die auf der Spur 250 zu überspringen sind.
-
READ_All Signal
-
Im
SKIP_STATE_2 220 liest die Übersprungprüfzustandsmaschine 100 die
SKIP_ID des nächsten Übersprungprüfregisters 272.
Wenn keine Einträge
mehr in den Übersprungprüfregistern
vorhanden sind, d.h. die Übersprungprüfregister 272 bis 272 leer sind,
oder LENGTH = 0 ist, wird dann ein internes Signal READ_All für die Befehlszu standsmaschine 102 erzeugt,
welches anzeigt, dass die Übersprungprüfzustandsmaschine 100 alle Übersprungprüfregister 270-276 überprüft und keine
Sektoren zum Überspringen
mehr gefunden hat. Dieses ist ein Vorteil davon, dass man keine
leeren Übersprungprüfregister zwischen
vollen Übersprungprüfregistern
hat. Die Übersprungprüfzustandsmaschine 100 muss
jedoch nicht jedes Übersprungprüfregister 270-276 prüfen. Die Übersprungprüfzustandsmaschine 100 geht
von dem SKIP_STATE_2 220 zu dem SKIP_STATE_3 225 über.
-
Im
SKIP_STATE_2 220 kehrt dann, wenn keine Einträge in den Übersprungprüfregistern 270-276 mehr
vorhanden sind, die Übersprungprüfzustandsmaschine 100 dann
zu dem SKIP_STATE_1 215 zurück. Beispielsweise wird in 6 der
PNTR 298 inkrementiert, dass er auf das zweite Übersprungprüfregister 272 zeigt.
Das zweite Übersprungprüfregister 272 enthält einen
Eintrag. Die Übersprungprüfzustandsmaschine 100 kehrt
zu dem SKIP_STATE_1 215 zurück, um den aktuellen Wert in
dem SEC_REQ-Register 103 mit
dem in dem zweiten Übersprungprüfregister 272 gespeicherten
Werten zu vergleichen.
-
SEC_REQ fällt in den Übersprungbereich Neuzuordnung
= 0, Inkrementieren von SEC_REQ
-
Im
SKIP_STATE_1 inkrementiert, wenn der angeforderte Sektor SEC_REQ
gleich dem SKIP_ID 296 ist oder innerhalb des Bereichs
von Sektoren liegt, die von dem ersten Übersprungprüfregister 270 als
zu überspringen
gekennzeichnet sind, und das neue Zuordnungsbit 290 gleich
0 ist, dann die Übersprungprüfzustandsmaschine 100 SEC_REQ
auf SEC_REQ + 1. Somit wird der Sektor bei SEC_REQ entlang der Spur 250 durch
die Übersprungprüfzustandsmaschine 100 übersprungen
und nicht während
des Lese- oder Schreib-Vorgangs bearbeitet. Beispielsweise wird
in 6, wenn SEC_REQ = 2, SKIP_ID = 2 und (SKIP_ID
+ (LENGTH – 1))
= 3 ist, dann der Sektor 254 bei SEC_REQ = 2 übersprungen,
da SEC_REQ um 1 inkrementiert wird. Die Übersprungprüfzustandsmaschine 100 geht
dann von dem SKIP_STATE_1 215 zu dem SKIP_STATE_2 220 über.
-
Wie
vorstehend beschrieben, liest im SKIP_STATE_2 die Übersprungprüfzustandsmaschine 100 die
SKIP_ID des nächsten Übersprungprüfregisters 272.
Wenn kein Eintrag in dem nächsten Übersprungprüfregister 272 vorliegt,
erzeugt dann die Übersprungprüfzustandsmaschine 100 ein
Signal READ_All für
die Befehlszustandsmaschine 102. Die Übersprungprüfzustandsmaschine 100 geht
dann von dem SKIP_STATE_2 220 zu dem SKIP_STATE_3 225 über. Wenn
ein weiterer Eintrag in dem nächsten Übersprungprüfregister 272 vorhanden
ist, kehrt dann die Übersprungprüfzustandsmaschine 100 zum
SKIP_STATE_1 215 zurück.
Die Übersprungprüfzustandsmaschine 100 führt dann eine Übersprungprüfung bei
dem nächsten SEC_REQ
Wert (SEC_REQ + 1) durch.
-
Zusammengefasst
inkrementiert, wenn die Übersprungprüfzustandsmaschine 100 vom SKIP_STATE_1 215 zum
SKIP_STATE_2 220 übergeht,
die Übersprungprüfzustandsmaschine 100 entweder
das SEC_REQ-Register 103 (um einen defekten Sektor zu überspringen)
oder inkrementiert den Zeiger PNTR 298, um auf das nächste Übersprungprüfregister
zu zeigen). Der Weg vom SKIP_STATE_2 220 zurück zum SKIP_STATE_1 215 zeigt,
dass die Übersprungprüfzustandsmaschine 100 nicht
alle möglichen
Einträge
der Übersprungprüfregister 270-276 geprüft hat.
Der Weg vom SKIP_STATE_2 220 zum SKIP_STATE_3 225 zeigt, dass
die Maschine alle Einträge
der Übersprungprüfzustandsregister 270-276 geprüft und keine
zu überspringenden
defekten Sektoren mehr gefunden hat.
-
Obwohl
Ausführungsformen
und Anwendungen dieser Erfindung dargestellt und beschrieben wurden,
dürfte
es für
den Fachmann auf diesem Gebiet offensichtlich sein, dass verschiedene
Modifikationen ohne Abweichung von dem Schutzumfang der Erfindung
möglich
sind. Es dürfte
sich daher verstehen, dass innerhalb des Schutzumfangs der beigefügten Ansprüche diese
Erfindung anders als wie vorstehend beschrieben ausgeführt werden
kann.