-
EINFÜHRUNG
-
Die
Erfindung betrifft allgemein ein verbessertes Verfahren zum Holen
von Daten von Speichervorrichtungen, beispielsweise Festplattenlaufwerken,
RAID-Systemen, CD-ROM-Laufwerken,
digitalen Bandsystemen, optischen Speichervorrichtungen, holographischen
Speichervorrichtungen und Halbleiter-Speichersystemen. Die Erfindung
betrifft insbesondere ein Pre-Caching-System für den Gebrauch mit Videoeditieranwendungen
und anderen Anwendungen, die das rechtzeitige Holen von großen Datenmengen
erfordern, die an unterschiedlichen Orten in der Speichervorrichtung
abgelegt sein können.
-
HINTERGRUND DER ERFINDUNG
-
Festplattenlaufwerke
sind bekannt und werden in Speichervorrichtungen häufig verwendet.
Deshalb werden sie dazu benutzt, den Hintergrund der Erfindung und
die beim Stand der Technik auftretenden Probleme zu erläutern.
-
Ein
Hostcomputer wird in der Regel über
einen SCSI-Bus (SCSI = Small Computer System Interface) mit einem
Festplattenlaufwerk verbunden. Festplattenlaufwerke enthalten normalerweise
eine oder mehrere Festplatten, einen Lese/Schreib-Kopf und einen
Controller. In den allereinfachsten Systemen sendet der Hostcomputer
gemäß den Anforderungen
eines Anwendungsprogramms eine Folge von SCSI-Lesebefehlen an den
Controller des Festplattenlaufwerks. Nach jedem Befehl werden die
angeforderten Daten auf der Platte gesucht, geholt und über den
SCSI-Bus an den Host gesendet. In dieses einfache System ist ein
beträchtlicher Verwaltungsaufwand
eingebaut, d. h. Verzögerungen
beim Liefern der Daten. Anders ausgedrückt kann der Datenstrom zum
Hostcomputer durch Verwaltungsaktivitäten und Datensuchvorgänge unterbrochen
werden.
-
Auf
der Hostseite gehen in diese Verzögerungen die Zeitperiode zwischen
dem Lesen des letzten Datenbytes und dem Senden des letzten Datenbytes über den
SCSI-Bus, die Zeitperiode
zwischen dem Senden des letzten Datenbytes und "bus free", die Zeitperiode, die der Host zum
Ausführen
der folgenden SCSI-Datenanforderung benötigt, und die Zeitperiode ein,
die der Host zum Verwalten des Busses und zum Senden des letzten
Befehlsbytes braucht. Sind die von der Hostanwendung benötigten Daten
nicht zusammenhängend
auf der Platte angeordnet, so gehört zum Verwaltungsaufwand auf
Festplattenseite die Zeit, die zum Bewegen des Kopfs auf eine neue
Spur benötigt
wird, sowie die Zeit, die der geforderte Abschnitt der Platte dazu braucht,
sich zum Kopf zu drehen.
-
Ein
Weg zum Verbessern der Leistungsfähigkeit von Computersystemen
besteht darin, Daten in einem schnellen Cachespeicher unterzubringen.
Zum Unterbringen im Cachespeicher gehört das Übertragen der Daten von der
Speichervorrichtung in den schnelleren Cache oder RAM-Speicher (RAM
= Speicher mit wahlfreiem Zugriff). Befinden sich vom Anwendungsprogramm
angeforderte Daten nicht im Cachespeicher, so wird auf die Speichervorrichtung
zugegriffen. Dadurch muss die Anwendung warten. Derartige Situationen
werden als "Cache-Miss" bezeichnet.
-
Das
vorbeugende Ablegen im Cache ist ein Verfahren, mit dem man die
Anzahl der Fälle
verringert, in denen vom Anwendungsprogramm angeforderte Daten aus
der Speichervorrichtung geholt werden müssen und nicht aus dem Cachespeicher.
Programme für
das vorbeugende Ablegen im Cache sind manchmal in der Firmware gespeichert,
die zum Controller der Speichervorrichtung gehört. Ein übliches vorbeugendes Ablegeverfahren
im Cache ist als "Read-Ahead" Cachingverfahren
bekannt. Das "Read-Ahead"-Cachingverfahren besteht
einfach darin, die Daten aus dem folgenden Sektor auf dem momentanen
Zylinder zu lesen, nachdem die Information aus dem aktuellen Sektor
gelesen ist. Offenkundig ist das "Read-Ahead"-Verfahren dann am wirksamsten, wenn
große
Datenmengen zusammenhängend
in der Speichervorrichtung abgelegt sind. Es gibt jedoch eine Anzahl
Anwendungen, bei denen nacheinander auf Datenblöcke an vielen verschiedenen
Orten in der Speichervorrichtung zugegriffen werden muss. In diesen
Fällen
treten die angesprochenen Datenlieferungsverzögerungen bei jedem Cache-Miss
auf, da sich der folgende Datenblock nicht im folgenden Speicherplatz
in der Speichervorrichtung befindet. Ein vorbeugendes "Read-Ahead" ist in US-4,903,195
offenbart.
-
Es
gibt eine Anwendung, die sich für
vorbeugende "Read-Ahead"-Cachingverfahren
nicht eignet, nämlich
das Videoeditieren. Videoeditiersysteme erfordern häufig drei
Datenströme,
zwei Audioströme
und einen Videostrom. Die Audiodatenströme benötigen 96 KByte/Sek, und die
Videodatenströme
benötigen
3,6 MByte/Sek. In Videoeditiersystemen, beispielsweise dem Lightworks
System von Lightworks Editing Systems Ltd., wird eine Editierentscheidungsliste
(EDL) erzeugt, die die Reihenfolge beschreibt, in der die Audio-
und Videoclips gemischt werden. Die EDL ist im Wesentlichen ein
Zugriffsplan, der verschiedene Datenblöcke in der Speichervorrichtung
auflistet. Dummerweise sind diese Daten nur selten fortlaufend in
der Speichervorrichtung hinterlegt. Um den Datenstromanforderungen
zu genügen
werden in herkömmlichen
Videoeditiersystemen hostgestützte
Daten-Cachingpläne
verwendet, mit denen große
Mengen an Audio- und Videodaten gespeichert werden können. Derartige
hostgestützte
Cacheverwaltungstechniken erfordern einen Puffer aus teuerem Speicher
mit wahlfreiem Zugriff, der mindestens 32 MByte um fasst. Ein derartiger
Speicher kann den Ladenpreis des Systems um mehrere tausend Dollar
erhöhen.
Zudem muss die Host-CPU dazu verwendet werden, den hostgestützten Cachespeicher
zu verwalten. In
EP
0 560 624 A2 ist ein Videoeditiersystem offenbart, das
die Merkmale des Oberbegriffs von Anspruch 1 angibt.
-
Daher
besteht Bedarf für
ein Cachingschema, das in der Lage ist, dem Host einen ununterbrochenen Strom
von nicht zusammenhängend
gespeicherten Daten zu liefern, das jedoch keine großen Mengen
an teuerem Speicher mit wahlfreiem Zugriff benötigt.
-
AUFGABE UND ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
generelle Aufgabe der Erfindung besteht darin, ein Cachingsystem
bereitzustellen, das für
praktische Zwecke die beschriebenen Probleme des Stands der Technik
vermeidet. Im Einzelnen besteht eine Aufgabe der Erfindung darin,
ein verbessertes Verfahren zum Holen zufälliger physikalischer Daten
von einer Speichervorrichtung in vorbestimmter logischer Weise bereitzustellen,
das man an Videoeditieranwendungen und andere Anwendungen anpassen
kann, die das rasche Holen von großen Datenmengen erfordern,
die nicht zusammenhängend
in der Speichervorrichtung abgelegt sind.
-
Die
Aufgaben werden von dem in Anspruch 1 bestimmten System erfüllt.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
Die
bevorzugten Ausführungsformen
der Erfindung werden nun anhand der beiliegenden Zeichnungen ausführlich beschrieben.
-
Es
zeigt:
-
1 eine
Speicherplatte, die in einem Datenlesevorgang der Erfindung verwendet
wird;
-
2 ein
Flussdiagramm, das eine Ausführungsform
des Folge- und Hinweis-Erzeugungsvorgangs erläutert;
-
3 ein
Kontextstatusdiagramm gemäß dem in 2 erklärten Flussdiagramm;
-
4 ein
Datenflussdiagramm gemäß dem in 3 erklärten Kontextdiagramm;
und
-
5 ein
Audio/Video-Editiersystem, das einen Hostcomputer, einen Monitor
und ein Festplattenlaufwerk enthält.
-
AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN
AUSFÜHRUNGSFORM
-
Es
folgt eine ausführliche
Beschreibung der bevorzugten Ausführungsform der Erfindung. Diese
Beschreibung ist nicht in einem einschränkenden Sinn zu verstehen;
sie dient lediglich der Erläuterung
der allgemeinen Prinzipien der Erfindung. Der Bereich der Erfindung
ist durch die beigefügten
Ansprüche
bestimmt.
-
Die
bevorzugte Ausführungsform
der Erfindung wird im Zusammenhang mit einem Audio/Video- (oder Multimedia-)
Editiersystem beschrieben. Vor der Beschreibung der bevorzugten
Audio/Video-Editierumgebung wird das Konzept ausführlich definiert.
-
Folgen.
Eine Folge ist ein unabhängiger
Datenagent, der bei Bedarf von einer Hostanwendung erzeugt wird,
um einen vorbestimmten logischen Datenstrom von der Speichervorrichtung
zu unterhalten.
-
So
wie der Begriff hier verwendet wird, bezeichnet Agent einen Zusammenarbeitstask,
der für
das Ausführen
einer bestimmten Funktion erzeugt wird. Damit ist eine Folge ein
unabhängiger
Prozess innerhalb der Firmware der Speichervorrichtung, der zum
Unterhalten eines Datenstroms in die Speichervorrichtung oder aus
der Speichervorrichtung erzeugt wird. In Multimediaanwendungen können mehrere
Folgen (Audio, Video und Graphik) erforderlich sein, um die geforderten
Datenströme
anzupassen. Dort wo Anwendungen zukünftige Datenanforderungen festlegen
können,
kann man Folgen zum Verwalten dieser Datenströme erzeugen. Solche Folgen
können
Informationen enthalten, die zum Verwalten der Zugriffe auf Speichervorrichtungen und
Speicherressourcen nützlich
sind.
-
Der
Ausdruck "logischer
Datenstrom" stellt
einen anwendungsspezifischen Datenstrom dar. Anders formuliert können Folgen
auf Daten in anwendungsspezifischer Weise zugreifen. In Multimediaanwendungen wird
auf die Daten beispielsweise in Form von Videoframes und entsprechenden
Audioblöcken
zugegriffen. In Datenbankanwendungen kann auf Daten in Form von
Datenbankeinträgen
zugegriffen werden.
-
Folgen
sind aus einer Folgenkennung und einem oder mehreren Blockeinträgen zusammengesetzt. In
Videoanwendungen ist ein Blockeintrag ein Clip, d. h. eine Reihe
von Videoframes. Jeder Blockeintrag kann am Anfang eine logische
Blockadresse (LBA), einen Versatz zum ersten Byte und die Anzahl
der Bytes aufweisen. Damit definiert die Folge die interessierenden
Daten besonders, und nicht nur die LBA, die die interessierenden
Daten enthält.
Blockeinträge
können
auch in der Reihenfolge angeordnet sein, in der die zugehörigen Daten
von der Hostanwendung benötigt
werden. Dies ermöglicht
es der Speichervorrichtung, Daten wirksam vorab zu holen.
-
Die
Folgenliste erlaubt es der Speichervorrichtung auch, während eines
Lesevorgangs wirksamer zwischen unterschiedlichen Speicherbereichen
umzuschalten. Anders gesagt kann die Speichervorrichtung das Vorabwissen über die
vom Host angeforderten Daten und das Wissen über ihre eigenen physikalischen
Eigenschaften dazu verwenden, die Datenholvorgänge zu optimieren. In 1,
die eine Festplatte zeigt, ist beispielhaft dargestellt, dass eine
Folgenliste, die angibt, dass in den Speicherbereichen AB und CD
Daten vorhanden sind, die sich auf unterschiedlichen Spuren befinden
und von der Anwendung benötigt
werden, an das Festplattenlaufwerk übergeben werden kann. Der Plattencontroller
kann nun diese Information dazu verwenden, die wirksamste Weise
festzulegen, in der die Daten gelesen werden. Beispielsweise kann
nach dem Lesen des Speicherbereichs AB der Bereich CD in zwei Segmenten
ED und CE gelesen werden. Dadurch braucht der Plattencontroller
nicht darauf zu warten, dass sich die Platte bis zum Punkt C dreht,
nachdem vor dem Beginn des Lesevorgangs die Spuren gewechselt wurden.
Offensichtlich lassen sich derartige Optimiertechniken zum Datenholen
auch bei anderen Arten von Speichervorrichtungen einsetzen.
-
Zur
weiteren Definition einer Folge kann man eine Entnahmeeinheit-Definitionsliste
verwenden. So wie der Begriff hier verwendet wird, ist eine Entnahmeeinheit
ein Datenelement in seiner natürlichen
Form. In Videoanwendungen ist beispielsweise eine Entnahmeeinheit
ein einziger Videoframe. In Datenbankanwendungen ist eine Entnahmeeinheit
ein einzelner Datenbankeintrag. Entnahmeeinheiten können eine
feste oder veränderbare
Größe aufweisen.
Die Entnahmeeinheit-Definitionsliste legt fest, ob jede Entnahmeeinheit
eine feste oder eine veränderliche
Länge hat,
sowie die Größe der Entnahmeeinheit.
Auf Entnahmeeinheiten kann man in folgender Weise über die
Entnahmeeinheitenanzahl zugreifen. Für eine gegebene Entnahmeeinheitenanzahl
wird die Summe (in Byte) der vorhergehenden Entnahmeeinheiten bestimmt.
Diese Summe ist gleich der Anzahl an Bytes, die die Entnahmeeinheit
vom Beginn der LBA versetzt ist. Dadurch kann man eine Entnahmeeinheit
finden, indem man einfach die ermittelte Byteanzahl vom Beginn der
LBA aus vorwärts
geht.
-
Hinweise.
Hinweise werden dazu verwendet, Folgenoperationen speziell anzupassen,
damit sie die Funktionalität
erzielen, die die Hostanwendung erfordert. Anders formuliert sind
Hinweise Datenzugriffsparameter, die die Weise beschreiben, in der
die Daten geholt werden sollen. Sie spiegeln die momentanen Datenanforderungen
der Hostanwendung wieder. Sie steuern die Priorisierung, die Cacheverwaltung,
die Fehlerbehandlung und den Folgentyp. Hinweise sind insbesondere
in Multimediaanwendungen wichtig, in denen Audio- und Videodaten
mit unterschiedlichen Raten zugeführt werden müssen. Verschiedene
Datenzugriffsparameter, die zum Unterstützen von Multimediaanwendungen
und anderen Anwendungen erforderlich sind, beispielsweise Datenbanken
und Dateisystemen, werden im Weiteren beschrieben.
-
Die
erste Gruppe von Datenzugriffsparametern besteht aus den folgenden
Prozesssteuerparametern: Folgentyp, Folgenpriorität und Daten-nicht-bereit.
Bezüglich
des Folgentyps weisen unterschiedliche Anwendungen unterschiedliche
Datenzugriffsanforderungen auf. Diese Datenzugriffsanforderungen
werden durch den Folgentypparameter dargestellt. In Multimediaanwendungen
sind die meisten Daten in Blöcken
von sequentiellen Daten auf dem Speichermedium abgelegt. In Datenbankanwendungen
können
Daten spezifiziert werden. Die Reihenfolge, in der sie vom Host
gefunden werden, kann jedoch oft nicht angegeben werden. Schließlich ist
es in Dateisystemen vorteilhaft, gewisse Bereiche der Platte zu
spezifizieren, beispielsweise die Dateizuordnungstabelle, die in
den Cache gelegt werden sollen.
-
Der
Folgen-Prioritätsparameter
priorisiert die Daten im Datenstrom. Dies erlaubt es, Daten mit
geringer Priorität
zu opfern, falls die Speichervorrichtung den vom Host geforderten
Datendurchsatz nicht beibehalten kann. Dieser Parameter wird normalerweise
vom Benutzer definiert und unterscheidet sich von Anwendung zu Anwendung.
In Multimediaanwendungen wird Audiodaten eine höhere Priorität gegeben
als Videodaten, da es wahrscheinlicher ist, dass der Betrachter
die Folgen einer Unterbrechung des Audiodatenstroms hört. Unterbrechung
des Videodatenstroms lassen sich relativ leicht verbergen. Man kann
beispielsweise den vorhergehenden Videoframe nochmals darstellen.
-
Der
Parameter Daten-nicht-bereit informiert die Speichervorrichtung,
was sie tun soll, falls die vom Host geforderten Daten nicht in
ihrem Cache hinterlegt sind oder innerhalb der geforderten Zeit
nicht vom Speichermedium geholt werden können. Eine Option besteht darin,
eine Fehlermeldung zu senden. Eine weitere Möglichkeit ist, einfach die
letzte vom Host geforderte Entnahmeeinheit erneut zu senden.
-
Die
zweite Gruppe von Datenzugriffsparametern enthält die folgenden Cacheverwaltungsparameter: Cachegröße, Cachenähesteuerung,
Folgencachesteuerung und Folgenschreibsteuerung. Bezüglich der
Cachegröße sagt
dieser Parameter der Speichervorrichtung, wieviel Cachespeicher
reserviert werden soll. Dieser Parameter ist besonders in Anwendungen
nützlich,
in denen Daten nicht aufeinander folgend in der Speichervorrichtung
abgelegt sind und die Cachezuordnung kontrolliert werden muss.
-
Es
kann Situationen geben, in denen der Cache nicht in der Lage ist,
alle in einer Folge spezifizierten Daten zu speichern. Der Parameter
Cachenähesteuerung
wird dazu verwendet, sicherzustellen, dass die Daten mit der höchsten Anforderungswahrscheinlichkeit
durch die Hostanwendung im Cache verfügbar sind. In einer sequentiellen
Folge sollen die im Cache gehaltenen Daten direkt auf die aktuelle
Position des Zeigers in der Folge bezogen sein. Eine derartige Nähe ist nicht
in allen Anwendungen gut zu nutzen. In Datenbankanwendungen spiegeln
beispielsweise Folgenlisten die Wahrscheinlichkeit der Datensuche
wider. In den Fällen, in
denen die vom Host verlangten Daten nicht im Cache abgelegt sind,
sucht sie der Controller der Speichervorrichtung auf dem Speichermedium.
Dies sollte jedoch die im Cache gespeicherten Daten nicht beeinflussen.
-
Der
Parameter Folgencachesteuerung wird zusammen mit Cachenähesteuerung
dazu verwendet, festzulegen, welche prozentualen Anteile des Caches
jeweils dem Vorwärts-Caching
und dem Rückwärts-Caching
zugewiesen werden sollten. Dieser Parameter ist besonders in Multimediaanwendungen
nützlich,
in denen rasche Antworten auf Veränderungen in der Wiedergaberichtung
erforderlich sind.
-
Schließlich wird
der Parameter Folgenschreibsteuerung verwendet, wenn Schreib-Caching verwendet wird,
während
Information auf das Speichermedium geschrieben wird. Für jede Folge
sind eine Anzahl Optionen verfügbar.
Beispielsweise kann die gesamte von der Folge bezeichnete Information
unmittelbar auf das Speichermedium geschrieben werden. Eine weitere
Option ist, alle Daten unmittelbar in den Cache zu schreiben und
anschließend
die Kontrolle an die Hostanwendung zurückzugeben. Die Daten können dann
in untätigen
Zeitabschnitten auf das Speichermedium geschrieben werden. Schließlich können alle
in das Speichermedium geschriebenen Daten für zukünftige Zugriffe im Cache gehalten
werden.
-
Die
dritte Gruppe von Datenzugriffsparametern sind die Datenholparameter.
Diese Gruppe enthält
den Parameter für
die sequentielle Datenrate und den Datenumkehrparameter. Der Parameter
für die
sequentielle Datenrate legt die Rate fest, mit der Daten von einer
bestimmten Folge von der Speichervorrichtung angefordert werden.
In Multimediaanwendungen werden beispielsweise Datenraten über die
Audio- und Videoabtastraten definiert. Der Parameter wird dazu verwendet,
die Datenholplanung von der Speichervorrichtung zu optimieren, damit
die Anforderungen für
alle aktuellen Folgen erfüllt
werden. Die Datenrateninformation erlaubt es der Speichervorrichtung,
den Zeitpunkt der folgen den Datenanforderung für jede Folge zu berechnen.
Diese Information erlaubt es der Speichervorrichtung zusammen mit
der Größe der Entnahmeeinheit
den spätesten
Zeitpunkt zu ermitteln, an dem jeder Datenholvorgang beginnen muss,
damit er bei der zugehörigen
Datenanforderung fertig ist. Die Speichervorrichtung plant nun Datenholvorgänge anhand
der vorbestimmten Datenholzeiten.
-
Der
Datenumkehrparameter ist besonders in Multimediaanwendungen nützlich.
Dieser Parameter erlaubt es, die Daten in der gleichen Richtung
an den Host zu liefern, in der die aktuelle Folge verarbeitet wird. Wird
der Videoanteil einer Multimediapräsentation rückwärts abgespielt, so können die
Audiodaten von der Speichervorrichtung ebenfalls rückwärts geliefert
werden.
-
Folge-und-Hinweis-Operation.
Es gibt zwei Grundtypen von Folgen, nämlich einfache Folgen (mit
festen Blöcken)
und generische Folgen. Einfache Folgen erfordern keine Entnahmeeinheiten-Definitionslisten. Sie
nutzen nur das grundlegende Folge-und-Hinweis-Konzept zum Verbessern der Leistung
des zugeordneten Anwendungsprogramms. Eine einfache Folge enthält eine
Liste von LBAs und Hinweisen, die die Operationsmerkmale der Folge
festlegen. Der Folgenzugriff erfolgt über blockgestützte Standard-SCSI-Befehle. Bei
einer einfachen Folge ist die Speicherkapazität des Caches größer als
der Umfang der zu speichernden Datenmenge. Einfache Folgen eignen
sich gut zum Optimieren der Leistung von Dateisystemen und anderen
blockorientierten Anwendungen. Derartige Folgen definieren eine
Anzahl fester Blöcke,
auf die mit der größten Wahrscheinlichkeit
zugegriffen wird.
-
Generische
Folgen enthalten besondere Informationen hinsichtlich eines jeden
für die
Hostanwendung interessanten Datenelements. Es kann eine generische
Folgenliste definiert werden, die eine Anzahl LBAs in einer vorbestimmten
Reihenfolge definiert. Die von der Folge definierte Datenmenge kann
größer sein als
die Speicherkapazität
des Caches. Damit ändern
sich Daten innerhalb des Caches abhängig vom Ort des Folgenzeigers.
Die Blöcke
können
dann sequentiell gelesen oder geschrieben werden. Damit können generische
Folgen Daten in anwendungsspezifischer Weise holen und damit die
Hostanwendung davon entlasten, einzelne Datenelemente aus den Datenblöcken zu
entnehmen. Ein derartiges anwendungsspezifisches Datenholen erfordert
jedoch besonders zugeschnittene SCSI-Befehle, da Standard-SCSI-Befehle
auf Blöcken beruhen.
Derartige Sonderbefehle müssen
in Hostanwendungen enthalten sein, die die Erfindung vorteilhaft nutzen.
-
Generische
Folgen können
entweder sequentiell oder vorhersagend sein. Sequentielle Folgen
sind in Anwendungen nützlich,
in denen ein von der Folge definierter Pfad durch die Daten vorab
eingestellt wird. Vorhersagende Folgen dienen zum Festlegen einer
Liste von Entnahmeeinheiten, auf die wahlfrei zugegriffen wird,
und zwar sortiert nach der Wahrscheinlichkeit des Zugriffs. Vorhersagende
Folgen erlauben den Zugriff auf jede Entnahmeeinheit in einer Liste,
in der die Daten in ihrer ursprünglichen
Form definiert sind (beispielsweise ein Videoframe oder ein Audioblock).
Vorhersagende Folgen erlauben es auch, die Cachegröße zum Zeitpunkt
der Erzeugung festzulegen. Schließlich erlauben es vorhersagende
Folgen dem Laufwerk, die Folge abhängig von den jüngsten Datenanforderungen
des Host umzusortieren.
-
Folgen
können
generell entweder dynamisch oder dauerhaft sein. Dynamische Folgen
müssen
von der Hostanwendung erzeugt werden. Dagegen werden dauerhafte
Folgen auf dem Speichermedium gesichert und nach jedem Einschalten
oder Zurücksetzen
im Cache wieder hergestellt. Dauerhafte Folgen bestimmen system-
oder anwendungsspezifische Datenparameter, auf die konstant zugegriffen
wird, beispielsweise Dateizuordnungstabellen.
-
2–4 zeigen
ein Beispiel des Folgen- und Hinweis-Erzeugungsvorgangs, den Anwendungsprogramme
ausführen.
Im Übersichtsflussdiagramm
in 2 stellt der Schritt 10 die Datenanforderung
des Anwendungsprogramms definiert bezüglich eines logischen Orts
dar. Im Schritt 20 wird die Datenanforderung in einen Block
von logischen Dateizugriffsdaten konvertiert, die durch eine LBA,
einen Versatz gegen das erste Byte und die Anzahl der Bytes bestimmt
sind. Sind die Daten nicht fortlaufend auf dem Speichermedium angeordnet,
so wird eine Liste von Blöcken
erzeugt. In den Schritten 30–50 werden die logischen
Dateizugriffsdaten der vom Anwendungsprogramm geforderten Daten
in den physikalischen Ort oder die physikalischen Orte auf dem Speichermedium
konvertiert, beispielsweise einer Festplatte. Anders ausgedrückt wird
eine Folge gebildet. Der Schritt 30 ist ein Entscheidungsblock.
-
Im
Schritt 40 werden die logischen Dateizugriffsdaten (die
Einzelheiten werden im Folgenden beschrieben) blockweise in physikalische
I/O-Anforderungen konvertiert. Im Schritt 50 werden die
physikalischen I/O-Anforderungen hintereinander zusammengehängt, so
das sie eine physikalische Folgendefinitionsliste bilden. Die Hinweise,
d. h. die anwendungsspezifischen Folgenparameter wie die Datenrate
liefert das Anwendungsprogramm im Schritt 60. Die Hinweise
werden im Schritt 70 mit der Folgenliste verbunden und
bilden die Speichermediums-Zugriffsfolge, die das Anwendungsprogramm
an die Speichervorrichtung sendet.
-
Das
in 3 dargestellte Kontextdiagramm gibt einen Überblick über ein
Beispiel der Umsetzung von logischen Dateidaten in eine physikalische
Folge. Eine derartige Umsetzung nimmt normalerweise ein Unterprogramm
im Anwendungsprogramm vor. Allgemein gesagt empfängt ein Codierunterprogramm
(dargestellt durch den Kreis) logische Dateiinformation vom Anwendungsprogramm
und physikalische Dateizuordnungsinformation vom Speichermedium.
Abhängig
von der empfangenen Information wird nun eine physikalische Folge
gebildet. Das durch den Kreis in 3 dargestellte
Codierunterprogramm ist in 4 ausführlicher
erläutert.
Zunächst
werden logische Dateidaten blockweise oder segmentweise in eine
logische Dateizuordnung konvertiert. Die logischen Dateidaten können einer
Anzahl von Typen angehören,
beispielsweise Editierentscheidungsliste, DOS-Datei, Datenbank und
AV-Medium. Mit Hilfe von physikalischen Zuordnungsdaten vom Speichermedium,
beispielsweise der Dateizuordnungstabelle, wird ein physikalisches
Zuordnungssegment für jedes
logische Dateisegment erzeugt. Daraufhin wird die physikalische
Folge gebildet.
-
Multimedia-Beispiel
-
5 zeigt
ein Multimedia-Editiersystem, in dem die Erfindung angewendet werden
kann. Das beispielhafte Multimedia-Editiersystem enthält einen
Hostcomputer 100, einen Monitor 110 und ein Festplattenlaufwerk 120,
das über
einen SCSI-Bus 130 mit dem Hostcomputer 100 verbunden
ist. Das Festplattenlaufwerk 120 enthält einen Controller 122 und
einen Puffer 124.
-
Dem
Laufwerkscontroller 122 werden eine oder mehrere physikalische
Folgen übergeben,
die eine Hostanwendung liefert. In Audio- und Videoanwendungen werden
beispielsweise eine Video- und zwei Audiofolgen von der Hostanwendung
geliefert. Der Laufwerkscontroller 122 beginnt nun, diese
Daten auf der Speicherplatte zu suchen und speichert sie in seinem
Puffer 124. Beim Empfang der SCSI-Lesebefehle von der Hostanwendung
werden dem Hostcomputer im Puffer gespeicherte Daten geliefert.
Der Laufwerkscontroller 122 fährt mit der Datensuche gemäß der physikalischen
Folge fort, während
die SCSI-Befehle empfangen werden. Dadurch wird der größte Teil
der herkömmlicherweise
benötigten
Suchzeit beseitigt. In den Fällen,
in denen ein SCSI-Lesebefehl empfangen wird und die zugehörigen Daten
nicht im Puffer 124 gespeichert sind, sucht der Controller 122 die
Daten einfach in der üblichen
Weise auf der Speicherplatte.
-
Die
Tabellen 1–6
zeigen SCSI-Befehle, die man in Verbindung mit einer Multimediaimplementierung der
Erfindung in einer SCSI-Bus-Umgebung verwenden kann. Tabelle 1 zeigt
den AV-Modus-Seitenwahlbefehl, der auf der Speicherplatte gesichert
ist und der beim Hochfahren die anfänglichen Parameter für das Laufwerk
einstellt. Dieser Befehl definiert eine dauerhafte Folge auf dem
Speichermedium, die eine Dateizuordnungstabelle und die Größe eines
Puffersegments beschreibt, das man für SCSI-Anforderungen verwenden kann, die nicht
auf eine Folge bezogen sind. Der restliche Puffer ist für die Zuordnung
der Folge verfügbar.
Da das Laufwerk einen nicht flüchtigen
Speicher darstellt, ist es nach jedem Ausschaltvorgang oder SCSI-Rücksetzvorgang
in dieser Weise konfiguriert. Der dauerhaften Folge können zahlreiche
verschiedene Caching-Arten zugeordnet sein. Beispielsweise bringt
ein Schreibvorgang durch Caching mit sich, dass das Aktualisieren der
Daten im Cache sofort auf dem Speichermedium erfolgt. Obwohl dies
relativ sicher ist, kann mit einem derartigen Cachingverfahren ein
beträchtlicher
Zusatzaufwand verbunden sein. Dagegen werden bei einem Schreibvorgang
nach dem Caching Daten im Cache gespeichert, bis sich ein geeigneter
Zeitpunkt zum Schreiben der Daten auf das Speichermedium ergibt.
Ein derartiges Verfahren senkt den Zusatzaufwand, ist jedoch riskant.
Erfolgt beispielsweise ein Ausschaltvorgang oder SCSI-Rücksetzvorgang vor dem Schreiben
der Daten auf das Speichermedium, so sind die Daten verloren.
-
Tabelle
1 – AV-Modus-Seitenwahlbefehl
-
Es
werden nun die Einzelheiten des AV-Modus-Seitenwahlbefehls behandelt.
Das Seitencodebyte [Byte 00] enthält Bits [Bit 00–05], die
die AV-Modus-Cacheparameter kennzeichnen. Das Seitenlängenbyte [Byte
01] legt fest, welcher Teil des verfügbaren Speichers (255 Byte
in der beispielhaften Ausführungsform) von
der dauerhaften Folgendefinitionsliste verwendet wird. Das Bitmapbyte
[Byte 02] legt Cachingverfahren fest und enthält weitere Bits, die der Benutzer
für andere
Zwecke definieren kann. Beispielsweise kann das Bit 00 dazu verwendet
werden, festzulegen, ob als Cachingverfahren Schreiben im Nachhinein
oder direktes Schreiben verwendet wird. Die Bytes 03 und 04 legen
den Platz fest, den man zum Halten der definierten Folge benötigt, d.
h. den Folgenpuffer. Ist die Folgendefinition größer als der Folgenpuffer, so
wird ein Fehler zurückgegeben.
Schließlich
geben die Bytes 05 bis 255 die dauerhafte Folgendefinition selbst
an.
-
Tabelle
2 zeigt den Folgeninitialisierungsbefehl für eine dauerhafte Cachefolge.
Anders als AV-Modus-Seitenwahl ist er beim Einschalten oder nach
einem SCSI-Rücksetzvorgang
nicht vorhanden.
-
Tabelle
2 – Folgeninitialisierungsbefehl
-
Der
Folgeninitialisierungsbefehl führt
mehrere Funktionen aus. Das Byte 01 speichert eine Folgenmarkierungszahl,
die der Host zuweist. Markierungszahlen erlauben es einer einzigen
Folgenausgabeinstitution, auf zahlreiche Folgen zuzugreifen. Das
Byte 02 liefert eine Bitmap, die das Cachingverfahren und weitere
Verhaltensweisen festlegt. Die Folgenpuffergröße-Bytes [Byte 03 und 04] spezifizieren
den Speicherplatzumfang, der zum Halten der Folge benötigt wird.
Die Minimum-Vorabholbytes [Byte 05 und 06] legen die kleinste Anzahl Bytes
fest, die vorab geholt werden. Das Byte 07 legt die relativen prozentualen
Anteile des Folgenpuffers fest, die für Weiterlesedaten und dem Hostcomputer
vorab gelieferte Daten reserviert werden sollen. Zuletzt wird die
Größe der Folgendefinitionsliste
in Byte in den Bytes 08 und 09 angegeben.
-
Wie
die Tabellen 3–6
zeigen, gibt es zahlreiche unterschiedliche Wege, die Daten in einer
Folge zu beschreiben. Diese Information wird mit dem eröffnenden
Folgenbefehl übergeben.
Folgendaten können
beispielsweise, siehe Tabelle 3, anhand eines oder mehrerer Verbünde von
Daten beschrieben werden, die durch eine Anfangs-LBA, die Länge des
Folgenbereichs in Blöcken
und den Versatz eines jeden Bereichs von seiner jeweiligen Anfangs-LBA
definiert sind.
-
-
Tabelle
4 zeigt ein Beispiel für
einen Datenbeschreibungstyp, der sich für Datenbank- und Audioanwendungen
eignet, in denen alle Entnahmeeinheiten die gleiche Größe haben.
Es wird nur ein Datenblock definiert.
-
-
Die
Tabellen 5 und 6 zeigen Entnahmeeinheitsdefinitionen, die sich für Videoanwendungen
eignen, bei denen die Entnahmeeinheiten nicht alle gleich groß sind.
Die in Tabelle 5 dargestellte Definition definiert Entnahmeeinheitsgrößen über die
Anzahl der Bytes je Entnahmeeinheit. In Tabelle 6 werden die Entnahmeeinheiten über den
Versatz gegen die letzte Entnahmeeinheit definiert.
Tabelle
5
Tabelle
6
-
Das
nächste
Folgendefinitionsbeispiel definiert eine Folge, die bei der LBA
0 beginnt, bis zur LBA 512 geht, einen ersten Entnahmeeinheitsversatz
von 100 Byte gegen die Anfangs-LBA hat sowie Entnahmeeinheiten,
die 256 Byte lang sind:
0 × 01,
0 × 00000000,
0 × 0064,
0 × 0200,
0 × 02,
0 × 00000100.
-
Schließlich zeigt
Tabelle 7 ein Beispiel für
einen Folgenzugriffsbefehl. Zum Zugriff auf eine Folge sind eine
Folgenmarkierungszahl und eine Hostkennung erforderlich. Daher wird
eine Folgenmarkierungszahl [Byte 01, Bits 00-04] geliefert. Die
Hostkennung wird über
SCSI geliefert und vom Host definiert. Das Schreib/Lese-Bit [Byte
02, Bit 07] legt fest, ob der Folgenzugriff dem Lesen vom oder dem
Schreiben auf das Speichermedium dient. In der bevorzugten Ausführungsform
legt eine 0 das Lesen und eine 1 das Schreiben fest. Wird das Bit
für folgende/vorhergehende
Werte [Byte 02, Bit 06] auf 0 gesetzt, so wird die nächste Entnahmeeinheit bzw.
werden die nächsten
N Byte gesendet, und der Folgenzeiger wird um die Übertragungslänge in Byte
erhöht.
Wird das Bit für
folgende/vorhergehende Werte auf 1 gesetzt, so wird er Folgenzeiger
um die Übertragungslänge in Byte
erniedrigt, und die zugehörige
Entnahmeeinheit bzw. N Byte werden gesendet. Der Folgenzeiger verbleibt
am Punkt der ersten Erniedrigung. Wird das Folgenzugriffs-Pausenbit [Byte 02,
Bit 05] auf 1 gesetzt, so bleibt der Folgenzeiger an dem Punkt,
auf den er bei Ausgabe des Folgenzugriffsbefehls gezeigt hat. Dies
ist beispielsweise dann sinnvoll, wenn man eine Pause in einer Videopräsentation
wünscht,
das Bild jedoch weiterhin anzeigen will. Wird das Bit auf 0 gesetzt,
so geschieht nichts. Das Entnahmeeinheitsbit [Byte 02, Bit 02] gibt
an, ob die Folgendaten durch einen Folgen-Byteversatz (0) oder durch
einen Folgen-Entnahmeeinheitsversatz (1) spezifiziert werden. Wird
das Dumpbit [Byte 02, Bit 01] auf 1 gesetzt, so werden der momentane
Folgenzeigerort und die Folgendefinitionsdaten an den Host gesendet.
Wird das Bit auf 0 gesetzt, so geschieht nichts. Die Folgenzuweisung
wird aufgehoben, wenn das Beenden-Bit [Byte 02, Bit 00] auf 1 gesetzt wird.
Der zum Halten der Folge zugewiesene Speicher wird freigegeben und
sämtliche
zur Folge gehörenden Daten
werden entfernt. Wird das Bit auf 0 gesetzt, so geschieht nichts.
Der Folgenzugriff geschieht anhand der aktuellen Folgenzeigerposition,
falls die Folgenanfangsort-Bytes [Byte 03–06] 0 sind. Haben diese Bytes
einen von null verschiedenen Wert, so wird der Folgenzeiger auf
den Folgenanfangsort-Wert
geändert.
Der Folgenzeigerort wird durch einen Entnahmeeinheitenversatz gegeben,
falls das Entnahmeeinheitsbit auf 1 gesetzt ist. Andernfalls wird
er als Byteversatz bezogen auf die absolute Byteposition innerhalb
der Folge angegeben. Schließlich
legen die Folgenzugriffslängen-Bytes
[Byte 08–0B]
die Übertragungsgröße in Entnahmeeinheiten fest,
falls das Entnahmeeinheitsbit auf 1 gesetzt ist. Andernfalls wird
sie in Byte angegeben. Sind die Folgenzugriffsbytes auf 0 gesetzt,
so erfolgt keine Datenübermittlung.
-
Tabelle
7 – Folgenzugriffsbefehl
-
Zum
Modifizieren einer Folgenliste kann man neue Folgendaten mit der
Markierungszahl der zu modifizierenden Folge senden. In gleicher
Weise kann man Hinweise modifizieren, indem man neue Hinweise mit der
entsprechenden Folgenmarkierungszahl sendet. Der Folgenzugriffsbefehl
kann auch dazu verwendet werden, neue Hinweise weiterzuleiten, beispielsweise
Cache vorwärts
und Cache rückwärts.
-
Zum
Schluss sei angemerkt, dass die meisten Hersteller von Speichervorrichtungen,
beispielsweise die Hersteller von Festplattenlaufwerken, zum Kontrollieren
der Arbeitsweise der Vorrichtung ihre hauseigene Firmware verwenden.
Es kann sein, dass man eine derartige Firmware geringfügig abwandeln
muss, damit sich die Vorrichtung mit der Erfindung verwenden lässt. Hinsichtlich
der obigen Beschreibung der SCSI-Befehle sind Fachleuten derartige
Modifikationen geläufig.
Da die meisten Hersteller ihre firmeneigene Firmware verwenden,
werden diese Modifikationen nicht detailliert dargestellt.
-
Die
Erfindung ist anhand der bevorzugten Ausführungsform dargestellt. Für Fachleute
sind zahlreiche Änderungen
und/oder Zusätze
für die
beschriebenen Ausführungsformen
offensichtlich. Es ist beabsichtigt, dass sich der Bereich der Erfindung
auf alle derartigen Änderungen
und/oder Zusätze
erstreckt, und dass der Bereich der Erfindung nur durch die im Folgenden
angegebenen Ansprüche
begrenzt ist.