-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft ein Computerprogrammprodukt, ein System und ein Verfahren zum Verwenden eines Attributes einer Schreibanforderung um zu ermitteln, wo Daten in einem Speichersystem mit mehreren Cachespeichern, unter anderem einem nichtflüchtigen Cachespeicher, in einer Speichereinheit mit sequenziellem Zugriff gespeichert werden sollen.
-
Beschreibung des Standes der Technik
-
Ein Cachespeicher-Managementsystem führt Zwischenspeichern von Spuren, auf die vor Kurzem zugegriffen wurde, in einer Speichereinheit als Ergebnis von Lese- und Schreiboperationen in einer Speichereinheit mit einem schnelleren Zugriff als dem bei der Speichereinheit durch, die die angeforderten Spuren speichert, wie beispielsweise einem Hauptspeicher (memory). Nachfolgende Leseanforderungen auf Spuren in dem Cachespeicher mit dem schnelleren Zugriff werden mit einer höheren Geschwindigkeit zurückgegeben als die angeforderten Spuren von dem Speicher mit dem langsameren Zugriff, womit die Leselatenz verringert wird. Das Cachespeicher-Managementsystem kann auch vollständig zu einer Schreibanforderung zurückkehren, wenn die an die Speichereinheit gerichtete modifizierte Spur in den Cachespeicher geschrieben wird und bevor die modifizierte Spur heraus auf die Speichereinheit wie beispielsweise ein Festplattenwerk geschrieben wird. Die Latenz zum Schreiben auf die Speichereinheit ist normalerweise deutlich länger als die Latenz zum Schreiben auf einen Cachespeicher. Auf diese Weise wird durch das Verwenden des Cachespeichers auch die Schreiblatenz verringert.
-
Ein Cachespeicher-Managementsystem kann eine verkettete Liste mit einem Eintrag für jede in dem Cachespeicher gespeicherte Spur führen, die Schreibdaten, die vor ihrem Schreiben auf die Speichereinheit in dem Cachespeicher zwischengespeichert werden, oder Lesedaten aufweisen kann. Wenn bei dem allgemein verwendeten Verfahren mit dem am wenigsten aktuell verwendeten Cachespeicher, Least Recently Used- (LRU) Cache, auf eine Spur in dem Cachespeicher zugegriffen wird, d.h. ein Cachespeicher-„Treffer“ („cache hit“) ausgeführt wird, wird der Eintrag in der LRU-Liste für die zugegriffene Spur an ein am aktuellsten verwendetes Ende (Most Recently Used, MRU) der Liste verschoben. Falls die angeforderte Spur nicht in dem Cachespeicher vorhanden ist, d.h. es sich um einen Cachespeicher-Fehltreffer (cache miss) handelt, kann die Spur in dem Cachespeicher, deren Eintrag sich an dem am wenigsten aktuell verwendeten (LRU-) Ende der Liste befindet, entfernt (oder zurück in den Speicher (storage) ausmustern) werden, und ein Eintrag für die Spurdaten, die von dem Speicher in den Cachespeicher bereitgestellt (staged) werden, wird dem MRU-Ende der LRU-Liste hinzugefügt. Bei diesem Verfahren mit dem am wenigsten aktuell verwendeten Cachespeicher (LRU-Cachespeicher) verbleiben Spuren, auf die öfter zugegriffen wird, wahrscheinlich in dem Cachespeicher, wohingegen Daten, auf die weniger häufig zugegriffen wird, wahrscheinlich von dem LRU-Ende der Liste entfernt werden, um Platz in dem Cachespeicher für Spuren zu schaffen, auf die erstmals zugegriffen wird.
-
Bei dem LRU-Cachespeicher-Verfahren wird versucht, die temporäre Lokalität zu optimieren, indem Spuren ausgemustert (destage) werden, die mit der geringsten Wahrscheinlichkeit bald erneut geschrieben werden, um die Anzahl an Ausmusterungsoperationen zu minimieren, d.h. wenn ein Schreibvorgang, der nicht ausgemustert wird, überschrieben wird, dann wird das Auslesen des überschriebenen Schreibvorgangs vermieden, wodurch Zeit und Aufwand zum Schreiben der Daten von dem Cachespeicher auf die Platte eingespart wird. Des Weiteren besteht ein Wunsch dahingehend, das Ausmustern so durchzuführen, dass räumliche Lokalität ausgenutzt wird, was bedeutet, dass Daten an Speicherorte geschrieben werden, die am nächsten zueinander liegen, um die Entfernung zu optimieren, über die die Speichereinheit-Schreibmechanismen und die Speichermedien verschoben werden müssen, um den nächsten Speicherort, an den geschrieben werden soll, zu erreichen.
-
Ein Verfahren zum Ausnutzen von sowohl zeitlicher als auch räumlicher Lokalität ist der Wise Ordering for Writes (WOW)- Algorithmus. Der WOW-Algorithmus verwendet eine kreisförmig verkettete Liste oder eine Zeiteinteilung (clock), wobei die kreisförmig verkettete Liste einen Eintrag für jede in einem Cachespeicher zwischengespeicherte Schreibanforderung besitzt. Die Einträge werden in der verketteten Liste entsprechend dem Speicherort geordnet, an den die dazugehörige Schreibanforderung gerichtet wird, um die Vorteile räumlicher Lokalität auszunutzen. Des Weiteren weist jeder Eintrag ein Bit auf, das anzeigt, ob die Schreibdaten für den Speicherort in dem Cachespeicher kürzlich aktualisiert worden sind. Das Bit für einen Eintrag wird gesetzt, wenn die Schreibdaten für den Eintrag aktualisiert werden. Ein Zeiger zeigt auf einen aktuellen Eintrag in der kreisförmigen verketteten Liste. Bei einer Aufgabe, die den WOW-Algorithmus verwendet, wird auf einen von dem Zeiger adressierten Eintrag zugegriffen. Zeigt das Bit für den Eintrag an, dass die Daten für den Eintrag in dem Cachespeicher kürzlich aktualisiert worden sind, wird das Bit gesetzt, um anzuzeigen, dass die Schreibdaten nicht vor kurzem aktualisiert worden sind, und der Zeiger wird so erhöht, dass er auf den nächsten Eintrag zeigt, so dass der Eintrag, der Schreibdaten für einen Speicherort aufweist, der sich räumlich am nächsten zu dem vorher geschriebenen Speicherort befindet, berücksichtigt wird. Es wird der Eintrag zum Schreiben ausgewählt, der sich räumlich am nächsten zu dem zuletzt geschriebenen Speicherort befindet und dessen Bit anzeigt, dass die Schreibdaten für den Eintrag nicht vor kurzem aktualisiert worden sind.
-
Auf diese Weise wird mit dem WOW-Algorithmus räumliche Lokalität ausgenutzt, da ein nächster zu schreibender Eintrag zur Berücksichtigung ausgewählt wird, der sich räumlich am nächsten zu der zuletzt ausgemusterten Schreibanforderung befindet. Des Weiteren wird auch zeitliche Lokalität ausgenutzt, da ein Eintrag, der vor kurzem aktualisiert worden ist, so lange übersprungen wird, bis sich der Zeiger kreisförmig zurück zu diesem übersprungenen zu berücksichtigenden Eintrag bewegt.
-
Plattenlaufwerke können den WOW-Algorithmus sowie weitere Algorithmen implementieren, die sowohl die lineare als auch Winkelposition der Schreibspuren berücksichtigen und eine Optimierung beider in Bezug auf eine aktuelle Schreibkopfposition durchführen, um die minimale Gesamtleistungszeit zu ermitteln. Dieser Prozess wird als „Command re-ordering based on seek and rotational optimization“ („Befehlsneuanordnung auf der Grundlage von Suche und rotierender Optimierung“) bezeichnet. Die Logikboards der Plattenlaufwerke analysieren Schreibanforderungen und ermitteln auf der Grundlage von sowohl wie viel Zeit es dauern wird, die verschiedenen Zylinder und Winkelposition der zu beschreibenden Spur zu suchen, und wie viel Zeit während des Wartens für das Rotieren der Daten unter den Köpfen verstreichen wird, welche zuerst zu bearbeiten ist.
-
Auf dem Gebiet der Technik besteht ein Bedarf an verbesserten Verfahren zur Verwendung eines Cachespeichers in einem Speichersystem.
-
Die US 2010 / 0 274 962 A1 betrifft ein Verfahren und ein System zum Implementieren einer Schnellzugriffsspeicherungsstrategie für eine nichtflüchtige Speichervorrichtung.
-
KURZDARSTELLUNG
-
Es werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Verwenden eines Attributes einer Schreibanforderung bereitgestellt, um zu ermitteln, wo Daten in einem Speichersystem mit mehreren Cachespeichern einschließlich eines nichtflüchtigen Cachespeichers in einer Speichereinheit mit sequenziellem Zugriff gecacht werden sollen. In Reaktion auf das Feststellen, dass modifizierte Spuren gecacht werden sollen, werden empfangene modifizierte Spuren in der nichtflüchtigen Speichereinheit gecacht, die in der Speichereinheit mit sequenziellem Zugriff integriert ist. Es wird eine Schreibanforderung mit modifizierten Spuren empfangen. Es wird ein Ermitteln dahingehend durchgeführt, ob ein Attribut der empfangenen Schreibanforderung eine Bedingung erfüllt. In Reaktion auf das Ermitteln, dass das festgelegte Attribut die Bedingung nicht erfüllt, werden die empfangenen modifizierten Spuren für die Schreibanforderung in der nichtflüchtigen Speichereinheit gecacht. Für die empfangene Schreibanforderung, die das festgelegte Attribut besitzt, das die Bedingung nicht erfüllt, wird eine Ausmusterungsanforderung in eine Anforderungswarteschlange hinzugefügt. Die empfangenen modifizierten Spuren für die Schreibanforderung mit dem ermittelten Attribut, das die Bedingung erfüllt, werden mit einer höheren Priorität als die der modifizierten Spuren für Schreibanforderungen geschrieben, die das Attribut aufweisen, welches die Bedingung nicht erfüllt. Eine Umgehungswarteschlange wird geführt, die Schreibanforderungen für modifizierte Spuren, bei denen das festgelegte Attribut die Bedingung nicht erfüllt, in Warteschlange hält. In Reaktion auf das Abschließen des Verarbeitens einer Schreibanforderung in der Anforderungswarteschlange wird eine Schreibanforderung in der Umgehungswarteschlange in Reaktion darauf verarbeitet, dass die Umgehungswarteschlange wenigstens eine Schreibanforderung aufweist, wobei die Schreibanforderungen in der Umgehungswarteschlange mit einer höheren Priorität gegenüber Schreibanforderungen in der Anforderungswarteschlange verarbeitet werden.
-
Figurenliste
-
- 1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung.
- 2 veranschaulicht eine Ausführungsform von ersten Cachespeicher-Managementdaten.
- 3 veranschaulicht eine Ausführungsform von zweiten Cachespeicher-Managementdaten.
- 4 veranschaulicht eine Ausführungsform einer Speichereinheit mit sequenziellem Speicherzugriff.
- 5 veranschaulicht eine Ausführungsform eines ersten Cachespeicher-Steuerblockes.
- 6 veranschaulicht eine Ausführungsform eines zweiten Cachespeicher-Steuerblockes.
- 7 veranschaulicht eine Ausführungsform eines Cachespeicher-Steuerblockes eines nichtflüchtigen Speichers.
- 8 veranschaulicht eine Ausführungsform eines Eintrages in einem räumlichen Index.
- 9 veranschaulicht eine Ausführungsform von Operationen zum Ermitteln, ob Spuren in dem ersten Cachespeicher entfernt werden sollen, um Platz für Spuren zu schaffen, die dem ersten Cachespeicher hinzugefügt werden sollen.
- 10 veranschaulicht eine Ausführungsform von Operationen zum Freimachen von Platz in dem ersten Cachespeicher.
- 11 veranschaulicht eine Ausführungsform von Operationen zum Hinzufügen einer Spur zu dem ersten Cachespeicher.
- 12 veranschaulicht eine Ausführungsform von Operationen zum Weitergeben einer Spur an den zweiten Cachespeicher.
- 13 veranschaulicht eine Ausführungsform von Operationen zum Freimachen von Platz in dem zweiten Cachespeicher.
- 14 veranschaulicht eine Ausführungsform von Operationen zum Verarbeiten einer Leseanforderung für angeforderte Spuren.
- 15 veranschaulicht eine Ausführungsform von Operationen an der Speichereinheit mit sequenziellem Zugriff zum Verarbeiten einer Schreibanforderung.
- 16 veranschaulicht eine Ausführungsform von Operationen an der Speichereinheit mit sequenziellem Zugriff zum Ermitteln, ob die modifizierten Spuren für eine Schreibanforderung in einer nichtflüchtigen Speichereinheit zwischengespeichert werden sollen.
- 17 veranschaulicht eine Ausführungsform von Operationen an der Speichereinheit mit sequenziellem Zugriff zum Verarbeiten einer Anforderu ngswartesch lange.
- 18 veranschaulicht eine Ausführungsform von Operationen an der Speichereinheit mit sequenziellem Zugriff zum Verarbeiten einer Ausmusterungsanforderung g in der Anforderungswarteschlange.
- 19 veranschaulicht eine Ausführungsform von Operationen an der Speichereinheit mit sequenziellem Zugriff zum Verarbeiten von Schreibanforderungen in der Anforderungswarteschlange und der Schreibum gehungswartesch lange.
-
AUSFÜHRLICHE BESCHREIBUNG
-
1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung. Eine Vielzahl von Hosts 2a, 2b...2n kann Eingabe/Ausgabe- (E/A) Anforderungen über ein Netzwerk 6 an einen Speicher-Controller 4 ausgeben, um einen Zugriff auf Daten auf Datenträgern 8 (z.B. Logical Unit Numbers, Logical Devices, Logical Subsystems, usw.) in einem Speicher 10 vorzunehmen. Der Speicher-Controller 4 weist einen Prozessorkomplex 12, aufweisend einen oder mehrere Prozessoren mit einem oder mehreren Kernen, einen ersten Cachespeicher 14, eine erste Cachespeicher-Backup-Einheit 16 zum Sichern von Spuren in dem Cachespeicher 14 und einen zweiten Cachespeicher 18 auf. Der erste Cachespeicher 14 und der zweite Cachespeicher 18 cachen Daten, die zwischen den Hosts 2a, 2b...2n und dem Speicher 10 übertragen werden. Die erste Cachespeicher-Backup-Einheit 16 kann ein nichtflüchtiges Speichern von Spuren in dem ersten Cachespeicher 14 bereitstellen. In einer weiteren Ausführungsform kann die erste Cachespeicher-Backup-Einheit 16 in einem Cluster oder einer Hardware auf einem anderen Stromkreislauf (power boundary) als dem des ersten Cachespeichers 14 angeordnet sein.
-
Der Speicher-Controller 4 besitzt einen Speicher 20, der einen Speicher-Manager 22 zum Verwalten der Übertragung von zwischen den Hosts 2a, 2b...2n und dem Speicher 10 übertragenen Spuren sowie einen Cachespeicher-Manager 24, der die zwischen den Hosts 2a, 2b...2n und dem Speicher 10 in dem ersten Cachespeicher 14 übertragenen Daten verwaltet, eine erste Cachespeicher-Backup-Einheit 16 und den zweiten Cachespeicher 18 aufweist. Eine Spur kann eine jede beliebige Einheit von in dem Speicher 10 konfigurierten Daten wie beispielsweise eine Spur, eine Logikblockadresse (Logical Block Address, LBA)) usw. aufweisen, die Teil einer größeren Gruppierung von Spuren wie beispielsweise eines Datenträgers, einer Logikeinheit usw. ist. Der Cachespeicher-Manager 24 führt erste Cachespeicher-Managementdaten 26 und zweite Cachespeicher-Managementdaten 28 zum Verwalten von (unmodifizierten) Lese- und (modifizierten) Schreibspuren in dem ersten Cachespeicher 14 und dem zweiten Cachespeicher 18. Ein Index 30 einer ersten Cachespeicher-Backup-Einheit liefert einen Index von Spurenkennungen zu einem Ort in der ersten Cachespeicher-Backup-Einheit 16.
-
Der Speicher-Manager 22 und ein Cachespeicher-Manager 24 sind in 1 dargestellt, wenn ein Programmcode in den Speicher 20 geladen und von dem Prozessorkomplex 12 ausgeführt wird. Alternativ dazu können einige oder alle Funktionen in Hardware-Einheiten in dem Speicher-Controller 4 wie beispielsweise in anwendungsspezifischen integrierten Schaltungen (Application Specific Integrated Circuits, ASICs) implementiert werden.
-
Der zweite Cachespeicher 18 kann Spuren in einem Log Structured Array (LSA) 32 speichern, wobei Spuren in der Reihenfolge, wie sie empfangen werden, in einer sequenziellen Reihenfolge geschrieben werden und auf diese Weise ein zeitliches Ordnen der Spuren, die in den zweiten Cachespeicher 18 geschrieben werden, bereitgestellt wird. In einem LSA werden spätere Versionen von bereits in dem LSA vorhandenen Spuren an das Ende des LSA 32 geschrieben. In alternativen Ausführungsformen kann der zweite Cachespeicher 18 Daten in anderen Formaten als in einem LSA speichern.
-
In einer Ausführungsform kann der erste Cachespeicher 14 einen Arbeitsspeicher (RAM) wie beispielsweise einen dynamischen Arbeitsspeicher (DRAM) aufweisen, und der zweite Cachespeicher 18 kann einen Flash-Speicher wie beispielsweise eine Halbleiter-Einheit aufweisen, und der Speicher 10 ist aus einer oder mehreren Speichereinheiten mit sequenziellem Zugriff wie beispielsweise Festplattenlaufwerken und Magnetband gebildet. Der Speicher 10 kann eine einzige Speichereinheit mit sequenziellem Zugriff oder eine Anordnung aus Speichereinheiten wie beispielsweise eine Anordnung aus Just a Bunch of Disks (JBOD), Direct Access Storage Device (DASD), Redundant Array of Independent Disks (RAID), eine Virtualisierungseinheit usw. aufweisen. In einer Ausführungsform handelt es sich bei dem ersten Cachespeicher 14 um eine Speichereinheit mit einem schnelleren Zugriff als dem bei dem zweiten Cachespeicher 18, und bei dem zweiten Cachespeicher 18 handelt es sich um eine Speichereinheit mit einem schnelleren Zugriff als bei dem Speicher 10. Des Weiteren kann der erste Cachespeicher 14 höhere Kosten pro Speicherplatzeinheit als der zweite Cachespeicher 18 aufweisen, und der zweite Cachespeicher 18 kann höhere Kosten pro Speicherplatzeinheit als Speichereinheiten in dem Speicher 10 aufweisen.
-
Der erste Cachespeicher 14 kann Teil des Speichers 20 sein oder in einer separaten Speichereinheit wie beispielsweise einem DRAM implementiert sein. In einer Ausführungsform kann die erste Cachespeicher-Backup-Einheit 16 einen nichtflüchtigen Backup-Speicher (NVS, non-volatile backup-storage) wie beispielsweise einen nichtflüchtigen Speicher z.B. einen batteriegepufferten Arbeitsspeicher (RAM), einen statischen RAM (SRAM) usw. aufweisen.
-
Das Netzwerk 6 kann ein Speichernetzwerk (SAN), ein Lokalnetz (LAN), ein Weitverkehrsnetz (WAN), das Internet und Intranet usw. aufweisen.
-
2 veranschaulicht eine Ausführungsform der ersten Cachespeicher-Managementdaten 26 aufweisend einen Spurenindex 50, der einen Index an Spuren in dem ersten Cachespeicher 14 zum Steuern von Blöcken in einem SteuerblockVerzeichnis 52 aufweist; eine Liste von unmodifizierten sequenziellen LRU 54, die eine zeitliche Reihenfolge unmodifizierter sequenzieller Spuren in dem ersten Cachespeicher 14 bereitstellt; eine Liste modifizierter LRU 56, die eine zeitliche Reihenfolge modifizierter sequenzieller und nichtsequenzieller Spuren in dem ersten Cachespeicher 14 bereitstellt; und eine Liste unmodifizierter nichtsequenzieller LRU 58, die eine zeitliche Reihenfolge unmodifizierter nichtsequenzieller Spuren in dem ersten Cachespeicher 14 bereitstellt.
-
In bestimmten Ausführungsformen wird beim Ermitteln, dass die erste Cachespeicher-Backup-Einheit 16 voll ist, die Liste modifizierter LRU 56 zum Ausmustern modifizierter Spuren von dem ersten Cachespeicher 14 so verwendet, dass die Kopie dieser Spuren in der ersten Cachespeicher-Backup-Einheit 16 verworfen werden kann, um in der ersten Cachespeicher-Backup-Einheit 16 Platz für neue modifizierte Spuren zu schaffen.
-
3 veranschaulicht eine Ausführungsform der zweiten Cachespeicher-Managementdaten 28 aufweisend einen Spurenindex 70, der einen Index an Spuren in dem zweiten Cachespeicher zum Steuern von Blöcken in einem Steuerblockverzeichnis 72 bereitstellt; eine unmodifizierte Liste 74, die eine zeitliche Reihenfolge unmodifizierter Spuren in dem zweiten Cachespeicher 18 bereitstellt; und einen räumlichen Index 76, der eine räumliche Reihenfolge der modifizierten Spuren in dem zweiten Cachespeicher 18 auf der Grundlage der physischen Orte in dem Speicher 10 bereitstellt, in dem die modifizierten Spuren gespeichert werden.
-
Alle LRU-Listen 54, 56, 58 und 74 können die Spuren-IDs von Spuren in dem ersten Cachespeicher 14 und dem zweiten Cachespeicher 18 aufweisen, die danach geordnet sind, wann zuletzt auf die identifizierte Spur zugegriffen wurde. Die LRU-Listen 54, 56, 58 und 74 haben ein „most recently used“ (am aktuellsten genutztes) (MRU) Ende, das eine Spur anzeigt, auf die am aktuellsten zugegriffen wurde, sowie ein LRU-Ende (least recently used), das eine am wenigsten aktuell verwendete Spur oder eine Spur anzeigt, auf die am wenigsten aktuell zugegriffen wurde. Die Spuren-IDs von den Cachespeichern 14 und 18 hinzugefügten Spuren werden dem MRU-Ende der LRU-Liste hinzugefügt, und auf Spuren, die von den Cachespeichern 14 und 18 zurückgesetzt wurden, wird von dem LRU-Ende zugegriffen. Die Spuren-Indizes 50 und 70 sowie der räumliche Index 76 können eine Scatter-Index-Tabelle (SIT) aufweisen. Es können auch alternative Datentypstrukturen verwendet werden, um die zeitliche Reihenfolge von Spuren in den Cachespeichern 14 und 18 sowie die räumliche Reihenfolge in dem zweiten Cachespeicher 18 zu gewährleisten.
-
Nichtsequenzielle Spuren können Online Line Transaction Processing (OLTP)-Spuren aufweisen, die oftmals Schreibvorgänge kleiner Blöcke aufweisen, die nicht gänzlich zufällig sind und ein gewisses Maß an Referenzlokalität besitzen, d.h. sie weisen eine Wahrscheinlichkeit auf, dass auf sie wiederholt zugegriffen wird.
-
4 veranschaulicht eine Ausführungsform einer Speichereinheit mit sequenziellem Zugriff 100, bei der der Speicher 10 mit einer oder mehreren Speichereinheiten mit sequenziellem Zugriff 100 ausgebildet sein kann. Diese Speichereinheit mit sequenziellem Zugriff 100 weist eine Steuerlogik, die als E/A-Manager 102 dargestellt ist, eine nichtflüchtige Speichereinheit 104 zum Zwischenspeichern von modifizierten Daten sowie einen Speicher (memory) 106 auf, der einen Spurenindex 108 aufweist, der einen Index von Spuren in der nichtflüchtigen Speichereinheit 104 bereitstellt, um Blöcke in einem Steuerblockverzeichnis 110 zu steuern; einen räumlichen Index 112, der eine räumliche Reihenfolge der modifizierten Spuren in dem nichtflüchtigen Speicher 104 an den physischen Orten in einem Speichermedium mit sequenziellem Zugriff 114 gewährleistet, auf dem modifizierte Spuren gespeichert werden; und eine Anforderungswarteschlange 116 auf, in der Lese- und Schreibanforderungen eingereiht werden. Der E/A-Manager 102 fügt der Anforderungswarteschlange 112 Lese- und Schreibanforderungen hinzu und greift von der Anforderungswarteschlange 112 aus auf Lese- und Schreibanforderungen zu, um eine Ausführung gegenüber einem Medium mit sequenziellem Zugriff 114 durchzuführen. Der E/A-Manager 102 kann Befehle an eine Lese-/Schreibsteuereinheit 118 senden, die Steuersignale erzeugt, um einen oder mehrere Aktuatoren mit Lese-/Schreibköpfen 120 an eine Position auf dem Speichermedium mit sequenziellem Zugriff 114 zu bewegen, an der Daten gelesen oder geschrieben werden können.
-
Der Speicher 106 weist des Weiteren eine Schreibumgehungswarteschlange 118 zum Zwischenspeichern von sequenziellen Schreibanforderungen und ihren modifizierten Spuren in einem Zwischenspeicher 122 auf, die nicht in der nichtflüchtigen Speichereinheit 104 gespeichert werden, sondern direkt auf das Speichermedium mit sequenziellem Zugriff 114 geschrieben werden. Der Zwischenspeicher 122 kann vorübergehend Lese- und Schreibeingabeanforderungen und Daten zwischenspeichern, die an eine Leseanforderung zurückgegeben werden. Der Zwischenspeicher 122 kann in einer separaten Einheit als in der nichtflüchtigen Speichereinheit 104 vorhanden sein und einen kleineren Speicherplatz als die nichtflüchtige Speichereinheit 104 aufweisen.
-
Ein Zwischenspeicher 124 in der Einheit 100 kann vorübergehend Lese- und Schreibanforderungen sowie Daten zwischenspeichern, die einer Leseanforderung zurückgegeben werden. Der Zwischenspeicher 124 kann des Weiteren zum vorübergehenden Speichern von modifizierten Spuren für Schreibanforderungen verwendet werden, die nicht in der nichtflüchtigen Speichereinheit geführt werden, wie beispielsweise sequenzielle Schreibanforderungen und ihre modifizierten Daten. Der Zwischenspeicher 124 kann in einer von der nichtflüchtigen Speichereinheit 104 separaten Einheit vorhanden sein und einen kleineren Speicherplatz als den in der nichtflüchtigen Speichereinheit 104 vorhandenen aufweisen. Alternativ dazu kann ein Teil oder der gesamte Zwischenspeicher 124 in der nichtflüchtigen Speichereinheit implementiert sein.
-
Das Speichermedium mit sequenziellem Zugriff 114 kann eine oder mehrere Platten für Festplattenlaufwerke für eine Festplattenlaufwerkeinheit oder ein Magnetband aufweisen. In bestimmten Ausführungsformen kann die nichtflüchtige Speichereinheit 104 eine Flash-Speichereinheit aufweisen, die aus einem Halbleiterspeicher gebildet ist. In bestimmten Ausführungsformen ist die nichtflüchtige Speichereinheit 104, z.B. der Flash-Speicher, auf der Platine der Speichereinheit mit sequenziellem Zugriff 100 in dem Gehäuse implementiert, das die Komponenten der Speichereinheit mit sequenziellem Zugriff 100 aufweist. Sie kann beispielsweise eine 8-GB-Flash-Speichereinheit aufweisen. Es können einige oder alle der Funktionen des E/A-Managers 102 als von einem Prozessor in der Speichereinheit mit sequenziellem Zugriff 100 ausgeführter Code implementiert sein. Alternativ dazu können einige oder alle der Funktionen des E/A-Managers 102 in einem ASIC auf der Speichereinheit mit sequenziellem Zugriff 100 implementiert sein.
-
5 veranschaulicht eine Ausführungsform eines Eintrages eines ersten Cachespeicher-Steuerblockes 150 in dem Steuerblockverzeichnis 52, aufweisend eine Steuerblockkennung (ID) 152, einen ersten Cachespeicher-Ort 154 des physischen Ortes der Spur in dem ersten Cachespeicher 14, Daten 156, die anzeigen, ob die Spur modifiziert oder unmodifiziert ist, sowie Daten 158, die anzeigen, ob es sich bei der Spur um einen sequenziellen oder einen nichtsequenziellen Zugriff handelt.
-
6 veranschaulicht eine Ausführungsform eines Eintrages eines zweiten Cachespeicher-Steuerblockes 160 in dem zweiten Cachespeicher-Steuerblockverzeichnis 72, aufweisend eine Steuerblockkennung (ID) 162 und einen LSA-Ort 164, an dem sich die Spur in dem LSA 32 befindet.
-
7 veranschaulicht eine Ausführungsform eines Eintrages eines Steuerblockes eines nichtflüchtigen Speichers 170 in dem Steuerblockverzeichnis 110 des nichtflüchtigen Speichers 104, aufweisend eine Steuerblockkennung (ID) 172 und einen physischen Ort 174, an dem sich die Spur befindet, wie beispielsweise einen LSA-Ort, falls die Spur in einem LSA auf der nichtflüchtigen Speichereinheit gespeichert wird.
-
8 veranschaulicht einen Eintrag eines räumlichen Indexes 180, aufweisend eine Spurkennung 182 einer Spur in der nichtflüchtigen Speichereinheit 104 und den physischen Ort 184, an dem die Spur in dem Speichermedium mit sequenziellen Zugriff 114 gespeichert ist, wie beispielsweise einen Zylinder, eine Plattennummer, eine Winkelposition auf dem Zylinder usw.
-
9 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 durchgeführt werden, um unmodifizierte Spuren von dem ersten Cachespeicher 14 zurückzusetzen. Die Zurücksetzoperation kann nach dem Feststellen, dass Platz in dem ersten Cachespeicher 14 freigemacht werden soll, initiiert werden. Beim Initiieren (in Block 200) einer Operation, um festzulegen, ob Spuren von dem ersten Cachespeicher 14 entfernt werden sollen, um Spuren aufzunehmen, die dem ersten Cachespeicher 14 hinzugefügt werden, ermittelt der Cachespeicher-Manager 24 (in Block 202), ob nichtsequenzielle oder sequenzielle unmodifizierte Spuren zurückgesetzt werden sollen, auf der Grundlage von erwarteten Treffern (hits) auf unterschiedlichen Typen von unmodifizierten Spuren. Wird (in Block 204) die Festlegung dahingehend getroffen, dass unmodifizierte sequenzielle Spuren zurückgesetzt werden sollen, verwendet der Cachespeicher-Manager 24 (in Block 206) die Liste unmodifizierter sequenzieller LRU 54, um die von dem LRU-Ende der Liste zurückzusetzenden unmodifizierten sequenziellen Spuren zu ermitteln, die nicht an den zweiten Cachespeicher 18 weitergeleitet werden. Falls (in Block 204) eine Feststellung dahingehend getroffen wird, dass unmodifizierte nichtsequenzielle Spuren zurückgesetzt werden sollen, verwendet der Cachespeicher-Manager 24 die Liste unmodifizierter nichtsequenzieller LRU 58, um (in Block 208) die unmodifizierten nichtsequenziellen Spuren festzulegen, die zurückgesetzt werden sollen. Die unmodifizierten nichtsequenziellen Spuren werden (in Block 210) in den zweiten Cachespeicher 18 weitergegeben.
-
10 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 ausgeführt werden, um Spuren von dem ersten Cachespeicher 14 auszumustern. Der Cachespeicher-Manager 24 kann regelmäßig Spuren als Teil von geplanten Operationen ausmustern und die Geschwindigkeit von Ausmusterungen erhöhen, wenn Platz in der ersten Cachespeicher-Backup-Einheit 16 benötigt wird. Beim Initiieren (in Block 250) der Operation zum Ausmustern von modifizierten Spuren verarbeitet der Cachespeicher-Manager 24 (in Block 252) die Liste modifizierter LRU 56, um die von dem LRU-Ende der LRU-Liste 56 auszumusternden modifizierten Spuren festzulegen. Der Cachespeicher-Manager 24 schreibt (in Block 254) die festgelegten modifizierten Spuren (sequenziell oder nichtsequenziell) in den Speicher 10, wobei der zweite Cachespeicher 18 umgangen wird. Der Cachespeicher-Manager 24 verwirft (in Block 260) die Kopie der ausgemusterten modifizierten Spuren aus der ersten Cachespeicher-Backup-Einheit 16.
-
Mit den Operationen der 9 und 10 werden nichtsequenzielle Spuren ausgelesen, jedoch nicht an den zweiten Cachespeicher 18 weitergegeben. Modifizierte Spuren (Schreibvorgänge) werden direkt in den Speicher 10 geschrieben, wobei der zweite Cachespeicher umgangen wird. Sequenzielle unmodifizierte Spuren (Lesevorgänge) werden verworfen und nicht anderswohin kopiert, und unmodifizierte nichtsequenzielle Spuren, die von dem ersten Cachespeicher 14 ausgelesen wurden, werden an den zweiten Cachespeicher 18 weitergegeben.
-
11 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 durchgeführt werden, um dem ersten Cachespeicher 14 eine Spur hinzuzufügen, d.h. an ihn weiterzugeben, wobei die Spuren einen Schreibvorgang oder eine modifizierte Spur von einem Host 2a, 2b...2n, eine nichtsequenzielle Spur in dem zweiten Cachespeicher 18 aufweisen kann, die einer Leseanforderung unterliegt und als Ergebnis in den ersten Cachespeicher 14 verschoben wird, oder angeforderte Daten, die weder in Cachespeichern 14 oder 18 gefunden wurden und von dem Speicher 10 abgerufen werden, zu lesen. Beim Empfangen (in Block 300) der dem ersten Cachespeicher 14 hinzuzufügenden Spur erstellt der Cachespeicher-Manager 24 (in Block 301) einen Steuerblock 150 (5) für die hinzuzufügende Spur, der den Ort 154 in dem ersten Cachespeicher 14 anzeigt und anzeigt, ob die Spur modifiziert/unmodifiziert 156 und sequenziell/nichtsequenziell 158 ist. Dieser Steuerblock 150 wird dem Steuerblockverzeichnis 52 des ersten Cachespeichers 14 hinzugefügt. Der Cachespeicher-Manager 24 fügt (in Block 302) einen Eintrag zu dem Spurenindex 50 des ersten Cachespeichers, der die Spuren-ID der hinzuzufügenden Spur aufweist, sowie einen Index zu dem erstellten Cachespeicher-Steuerblock 150 in dem Steuerblockverzeichnis 52 hinzu. Es wird ein Eintrag (in Block 304) dem MRU-Ende der LRU-Liste 54, 56 oder 58 des Spurentyps der hinzuzufügenden Spur hinzugefügt. Wenn es sich (in Block 306) bei der hinzuzufügenden Spur um eine modifizierte nichtsequenzielle Spur handelt, wird die hinzuzufügende Spur auch (in Block 308) zu der ersten Cachespeicher-Backup-Einheit 16 kopiert, und es wird ein Eintrag zu dem Index der ersten Cachespeicher-Backup-Einheit 30 für die hinzugefügte Spur hinzugefügt. Wenn es sich (in Block 306) bei der hinzuzufügenden Spur um eine unmodifizierte sequenzielle handelt, endet die Steuerung.
-
12 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 zum Weitergeben einer unmodifizierten nichtsequenziellen Spur an den zweiten Cachespeicher 18 durchgeführt werden, die von dem ersten Cachespeicher 14 zurückgesetzt wird. Beim Initiieren (in Block 350) der Operation zum Weitergeben einer Spur an den zweiten Cachespeicher 18, fügt der Cachespeicher-Manager 24 (in Block 352) die an den LSA 32 in dem zweiten Cachespeicher 18 weitergegebene Spur hinzu und erstellt (in Block 354) einen Steuerblock 160 (6) für die hinzuzufügende Spur, der den Spurort 164 in dem LSA 32 anzeigt. Es wird ein Eintrag (in Block 356) zu dem Spurenindex des zweiten Cachespeichers 70, der die Spuren-ID der weitergegebenen Spur aufweist, sowie ein Index an den erstellten Cachespeicher-Steuerblock 160 in dem Steuerblockverzeichnis 72 für den zweiten Cachespeicher 18 hinzugefügt. Der Cachespeicher-Manager 24 zeigt (in Block 360) die weitergegebene Spur an dem MRU-Ende der Liste unmodifizierter LRU 74 wie beispielsweise durch Hinzufügen der Spuren-ID an das MRU-Ende an.
-
Der Cachespeicher-Manager 12 kann den zweiten Cachespeicher 18 als einen Nur-Lese-Cachespeicher für ausschließlich unmodifizierte sequenzielle Spuren verwenden. Modifizierte sequenzielle und nichtsequenzielle Spuren werden direkt in die Speichereinheit mit sequenziellem Zugriff 100 geschrieben, und die nichtflüchtige Speichereinheit 104 in der Speichereinheit mit sequenziellem Zugriff 100 liefert einen Schreib-Cachespeicher für modifiziere nichtsequenzielle Spuren.
-
13 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 zum Freimachen von Platz in dem zweiten Cachespeicher 18 für neue, dem zweiten Cachespeicher 18 hinzuzufügenden Spuren durchgeführt werden, d.h. Spuren, die von dem ersten Cachespeicher 14 zurückgesetzt wurden. Beim Initiieren dieser Operation (in Block 400) legt der Cachespeicher-Manager 24 (in Block 402) unmodifizierte Spuren in dem zweiten Cachespeicher 18 von dem LRU-Ende der Liste unmodifizierter LRU 74 fest und annulliert (in Block 404) die festgelegten unmodifizierten Spuren, ohne die annullierten unmodifizierten Spuren an den Speicher 10 auszulesen.
-
14 veranschaulicht eine Ausführungsform von Operationen, die von dem Cachespeicher-Manager 24 zum Abrufen angeforderter Spuren für eine Leseanforderung von den Cachespeichern 14 und 18 sowie dem Speicher 10 durchgeführt werden. Der Speicher-Manager 22, der die Leseanforderung verarbeitet, kann Anforderungen an den Cachespeicher-Manager 24 für die angeforderten Spuren vorlegen. Beim Empfangen (in Block 450) der Anforderung für die Spuren verwendet der Cachespeicher-Manager 24 (in Block 454) den Spurenindex 50 des ersten Cachespeichers, um zu ermitteln, ob sich alle der angeforderten Spuren in dem ersten Cachespeicher 14 befinden. Befinden sich (in Block 454) nicht alle der angeforderten Spuren in dem ersten Cachespeicher 14, verwendet der Cachespeicher-Manager 24 (in Block 456) den Spurenindex 70 des zweiten Cachespeichers, um jegliche der angeforderten Spuren in dem zweiten Cachespeicher 18 zu ermitteln, die sich nicht in dem ersten Cachespeicher 14 befinden. Werden (in Block 458) irgendwelche der angeforderten Spuren nicht in dem ersten Cachespeicher 14 oder in dem zweiten Cachespeicher 18 gefunden, ermittelt der Cachespeicher-Manager 24 (in Block 460) jegliche der angeforderten Spuren in dem Speicher 10 anhand des Spurenindexes 70 des zweiten Cachespeichers, die sich nicht in dem ersten 14 oder dem zweiten Cachespeicher 18 befinden. Anschließend gibt der Cachespeicher-Manager 24 (in Block 462) jegliche der ermittelten Spuren in dem zweiten Cachespeicher 18 und dem Speicher 10 an den ersten Cachespeicher 14 weiter. Der Cachespeicher-Manager 24 verwendet (in Block 464) den Spurenindex 50 des ersten Cachespeichers, um die angeforderten Spuren von dem ersten Cachespeicher 14 abzurufen, um sie der Leseanforderung zurückzugeben. Die Einträge für die abgerufenen Spuren werden (in Block 466) an das MRU-Ende der LRU-Liste 54, 56, 58 verschoben, die Einträge für die abgerufenen Einträge enthält. Mit den Operationen von 13 ruft der Cachespeicher-Manager 24 angeforderte Spuren von einem Cachespeicher 14 der höchsten Ebene, dann dem zweiten Cachespeicher 18 ab, bevor er zu dem Speicher 10 übergeht, da die Cachespeicher 14 und 18 die am aktuellsten modifizierte Version einer angeforderten Spur enthalten würden. Die aktuellste Version wird zunächst in dem ersten Cachespeicher 14, dann in dem zweiten Cachespeicher 18, wenn nicht in dem ersten Cachespeicher 14 vorhanden, und anschließend in dem Speicher 10 gesucht, wenn sie weder in Cachespeicher 14 noch 18 vorhanden ist.
-
Mit den Operationen von 14 sammelt der Cachespeicher-Manager 24 angeforderte Spuren von einem Cachespeicher 14 der höchsten Ebene, dann von dem zweiten Cachespeicher 18, bevor er zu dem Speicher 10 übergeht, da die Cachespeicher 14 und 18 den schnellsten Zugriff auf die angeforderten Spuren gewährleisten, und der erste Cachespeicher 14 gewährleistet die am aktuellsten modifizierte Version einer angeforderten Spur.
-
15 veranschaulicht eine Ausführungsform von Operationen, die von dem E/A-Manager 102 an der Speichereinheit mit sequenziellem Zugriff 100 zum Verarbeiten einer Schreibanforderung mit modifizierten Spuren für das Speichermedium mit sequenziellem Zugriff 114 durchgeführt werden. Beim Empfangen (in Block 500) der Schreibanforderung ermittelt der E/A-Manager 102 (in Block 502), ob ein Attribut einer Schreibanforderung eine Bedingung erfüllt. Wird (in Block 502) die Bedingung erfüllt, wie beispielsweise die, dass es sich bei der Schreibanforderung um eine sequenzielle Schreibanforderung handelt, oder dass die Blockgröße der Schreibanforderung über einem vorgegebenen Schwellenwert liegt, wird die Schreibanforderung (in Block 504) der Schreibumgehungswarteschlange 122 hinzugefügt. Die modifizierten Spuren der Schreibanforderung, die die Bedingung erfüllen, werden (in Block 506) in dem Zwischenspeicher 124 zwischengespeichert. Schreibanforderungen in der Schreibumgehungswarteschlange 122 werden direkt von dem Zwischenspeicher 124 in das Speichermedium mit sequenziellem Zugriff 114 geschrieben, ohne dass sie in der nichtflüchtigen Speichereinheit 104 gecacht werden.
-
In einer Ausführungsform kann es sich bei der Bedingung, die bestimmt, ob die Schreibanforderung nicht in der nichtflüchtigen Speichereinheit 104 gecacht und direkt in das Speichermedium mit sequenziellem Zugriff 114 geschrieben wird, um die Schreibanforderung handeln, die eine sequenzielle Schreibanforderung aufweist. In einer alternativen Ausführungsform können modifizierte Spuren in der nichtflüchtigen Speichereinheit gecacht werden, wenn die Blockgröße der Schreibanforderung unter einem Schwellenwert liegt, so dass sequenzielle und nichtsequenzielle Schreibanforderungen mit einer Anzahl von Blöcken unter dem Schwellenwert in der nichtflüchtigen Speichereinheit 104 gecacht werden.
-
Wenn (in Block 502) das Attribut der Schreibanforderung die Bedingung nicht erfüllt, z.B. wenn es sich um eine nichtsequenzielle Schreibanforderung handelt, fügt der E/A-Manager 102 (in Block 508) die empfangenen modifizierten Spuren der nichtflüchtigen Speichereinheit 104 hinzu. In einer Ausführungsform können die Spuren einem LSA in der nichtflüchtigen Speichereinheit 104 hinzugefügt werden oder in einem anderen Format in der Einheit 104 gespeichert werden. Der E/A-Manager 102 erstellt (in Block 510) einen Cachespeicher-Steuerblock 170 (7) für jede empfangene modifizierte Spur, der einen Ort in der nichtflüchtigen Speichereinheit 104 (z.B. LSA-Ort) der modifizierten Spur anzeigt. Dem Spurenindex 108 wird (in Block 512) ein Eintrag hinzugefügt, der die Spuren-ID der modifizierten Spur in der nichtflüchtigen Speichereinheit 104 aufweist, und dem erstellten Steuerblock 170 wird ein Index hinzugefügt.
-
Der E/A-Manager 102 ermittelt (in Block 514) einen physischen Ort, wo die modifizierte Spur auf dem Speichermedium mit sequenziellem Zugriff 114 gespeichert wird, wie beispielsweise ein Zylinder auf dem Medium. Des Weiteren kann in einer zusätzlichen Ausführungsform der ermittelte physische Ort, der in dem räumlichen Index 112 enthalten ist, eine Winkelposition auf dem Zylinder der modifizierten Spur (auch als der Sektor bezeichnet) aufweisen. Der E/A-Manager 102 fügt (in Block 516) dem räumlichen Index 112 einen Eintrag hinzu, der die Spuren-ID 182 der modifizierten Spur und den ermittelten physischen Ort 184 der modifizierten Spur auf dem Speichermedium mit sequenziellem Zugriff 114 anzeigt. Der E/A-Manager 102 fügt des Weiteren (in Block 518) der Anforderungswarteschlange 116 eine Ausmusterungsanforderung für jede zu schreibende Spur hinzu. Diese Ausmusterungsanforderung identifiziert möglicherweise nicht die auszulesende spezielle Spur, die später unter Verwendung eines Algorithmus zum Verringern der Gesamtzugriffszeit zum Durchführen des Schreibvorgangs ermittelt wird.
-
16 veranschaulicht eine Ausführungsform von Operationen, die von dem E/A-Manager 102 zum Überprüfen mehrerer Attribute der Schreibanforderungen durchgeführt werden, um zu ermitteln, ob die Schreibanforderung in die Anforderungswarteschlage 116 oder die Schreibumgehungswarteschlange 122 zu halten ist. Beim Initiieren (in Block 530) der Operation zum Ermitteln, ob die Schreibanforderung die Bedingung erfüllt, ermittelt der E/A-Manager 102 (in Block 532), ob es sich bei der empfangenen Schreibanforderung um eine sequenzielle Schreibanforderung handelt. Wenn (in der Nein-Abzweigung von Block 532) es sich bei der Schreibanforderung um eine nichtsequenzielle Schreibanforderung handelt, speichert der E/A-Manager 102 (in Block 534) die modifizierten Spuren für die Schreibanforderung in der nichtflüchtigen Speichereinheit 104 und fügt dem MRU-Ende der Anforderungswarteschlange 116 eine Ausmusterungsanforderung hinzu.
-
Handelt es sich (in Block 532) bei der Schreibanforderung um eine sequenzielle Schreibanforderung und übersteigt (in Block 536) die Größe des Schreibvorgangs wie beispielsweise die Anzahl der Blöcke einen Schwellenwert, d.h. handelt es sich um eine große Schreibanforderung, fügt der E/A-Manager (in Block 538) die Schreibanforderung der Schreibumgehungswarteschlange 122 hinzu und speichert die modifizierten Spuren in dem Zwischenspeicher 124. Übersteigt (in Block 536) die Größe der sequenziellen Schreibanforderung nicht den Schwellenwert, d.h. handelt es sich um einen relativ kleineren Schreibvorgang, geht die Steuerung zu Block 534 über, in dem dieser sequenzielle Schreibvorgang kleinerer Größe in der nichtflüchtigen Speichereinheit 104 gecacht wird.
-
17 veranschaulicht eine Ausführungsform von Operationen, die von dem E/A-Manager 192 zum Verarbeiten der Anforderungswarteschlange 116 durchgeführt werden, die kontinuierlich wiederholt werden können, während Anforderungen in die Anforderungswarteschlange 116 eingereiht werden. Wenn beim Initiieren (in Block 550) einer Operation zum Verarbeiten der Anforderungswarteschlange 116 (in Block 552) es sich bei der Anforderung um eine Leseanforderung handelt, sammelt der E/A-Manager 102 (in Block 554) jegliche der angeforderten Spuren in der nichtflüchtigen Speichereinheit 104, um sie der Leseanforderung zurückzugeben. Sind (in Block 556) angeforderte Spuren nicht in der nichtflüchtigen Speichereinheit 104 vorhanden, sammelt der E/A-Manager 102 (in Block 558) jegliche der angeforderten Spuren, die nicht in der nichtflüchtigen Speichereinheit 104 gefunden wurden, von dem Speichermedium mit sequenziellem Zugriff 114. Nach dem Sammeln all der angeforderten Spuren (von Block 558 oder der Nein-Abzweigung von Block 556) gibt der E/A-Manager 102 (in Block 560) die gesammelten Leseanforderungspuren an den Speicher-Controller 4 zurück (1), ohne dass die angeforderten Lesespuren in der nichtflüchtigen Speichereinheit 104 gecacht werden.
-
Handelt es sich (in Block 562) bei der Anforderung um eine Ausmusterungs-/Schreibanforderung, geht die Steuerung (in Block 562) zu Block 600 in 18 über, um die Ausmusterungs-/Schreibanforderung zu verarbeiten. Um die Ausmusterungsanforderung (in Block 600) auszuführen, vergleicht der E/A-Manager 102 (in Block 602) eine aktuelle Position des Schreibkopfes 120 in Bezug auf das Speichermedium mit sequenziellem Zugriff 114 mit physischen Orten (z.B. Zylinder und Winkelposition) der modifizierten Spuren, die in dem räumlichen Index 112 angezeigt und anderweitig auf dem Speichermedium mit sequenziellem Zugriff festgelegt sind. Der räumliche Index 112 kann alle erforderliche Daten zum Ermitteln der Spur in nächster zeitlicher Nähe zu dem Schreibkopf enthalten, wie beispielsweise die Zylinder- und Winkelposition der zu schreibenden Spur, oder er kann nur einige der Daten, z.B. den Zylinder aufweisen, und der erforderlich Rest der Daten zum physischen Ort kann anhand der Lese-/Schreibsteuereinheit 118 ermittelt werden. Auf der Grundlage des Vergleiches wählt der E/A-Manager 102 (in Block 606) eine modifizierte Spur aus, die in einer minimalen Zeit von der aktuellen Position des Schreibkopfes 120 geschrieben werden kann und schreibt (in Block 606) die ausgewählte modifizierte Spur auf das Speichermedium mit sequenziellem Zugriff 114. Die ausgemusterte modifizierte Spur wird annulliert (in Block 608).
-
In einer Ausführungsform, in der die Speichereinheit mit sequenziellem Zugriff ein Festplattenlaufwerk und das Speichermedium mit sequenziellem Zugriff 114 eine Magnetplatte aufweist, zeigt der räumliche Index einen Zylinder der Spur auf der Magnetplatte an. Um die modifizierte Spur zu ermitteln, auf die in minimaler Zeit von der aktuellen Position des Schreibkopfes aus zugegriffen werden kann, kann der E/A-Manager 102 den Zylinder und die Winkelposition der modifizierten Spuren in dem räumlichen Index 112 analysieren, um die Zeiten zu schätzen, die der Schreibkopf 120 für das Suchen bis zu den Zylindern der modifizierten Spuren und das Drehen der Platte unter dem Schreibkopf 120 zum Erreichen der Winkelpositionen der modifizierten Spuren benötigt. Anschließend kann der E/A-Manager eine modifizierte Spur auswählen, die ein Minimum der geschätzten Zugriffszeiten beträgt.
-
In einer weiteren Ausführungsform kann die Speichereinheit mit sequenziellem Zugriff 114 ein Festplattenlaufwerk mit mehreren Platten und mehreren Schreibköpfen zum Beschreiben einer jeden Platte aufweisen. Der E/A-Manager 102 kann die geschätzte Zeit zum Suchen und Drehen zu einer jeden modifizierten Spur auf einer jeden Platte von der aktuellen Position der Schreibköpfe zum Auswählen einer modifizierten Spur verwenden, die die minimale geschätzte Zeit für den Zugriff über die Platten hinweg aufweist.
-
19 veranschaulicht eine Ausführungsform von Operationen, die von dem E/A-Manager 102 zum Verarbeiten von Schreibanforderungen in der Schreibumgehungswarteschlange 122 und zum Verarbeiten von Schreib- und Leseanforderungen in der Anforderungswarteschlange 116 durchgeführt werden. Bei Abschluss (in Block 650) der Verarbeitung einer Lese- oder Schreibanforderung in der Anforderungswarteschlange 650 ermittelt der E/A-Manager 102 (in Block 652), ob die Schreibumgehungsanforderungswarteschlange leer ist. Ist dies der Fall, geht der E/A-Manager 102 (in Block 654) zu Block 550 in 17 über, um eine Anforderung in der Anforderungswarteschlange 116 zu verarbeiten. Falls (in Block 652) die Schreibumgehungsanforderungswarteschlange 122 nicht leer ist, verarbeitet der E/A-Manager 102 (in Block 656) eine Schreibanforderung in der Schreibumgehungsanforderungswarteschlange 122 durch Schreiben der zwischengespeicherten modifizierten Spuren für die verarbeitete Schreibanforderung in das Speichermedium mit sequenziellem Zugriff 114, wodurch die nichtflüchtige Speichereinheit 104 umgangen wird. Auf diese Weise wird den Schreibanforderungen in der Umgehungswarteschlange 122 eine höhere Wahrscheinlichkeit als in der Anforderungswarteschlange 116 sichergestellt. Wenn nach dem Verarbeiten einer Schreibanforderung von der Schreibumgehungsanforderungswarteschlange 122 (in Block 658) eine aufeinanderfolgende vorgegebene erste Anzahl an Schreibanforderungen in der Schreibumgehungsanforderungswarteschlange 122 verarbeitet worden ist, geht die Steuerung zu Block 550 in 17 über, um eine zweite vorgegebene Anzahl von Anforderungen in der Anforderungswarteschlange 116 zu verarbeiten, um einen „Mangel“ von Anforderungen in der Anforderungswarteschlange 116 zu vermeiden. Wenn anderenfalls (in Block 658) die aufeinanderfolgende vorgegebene erste Anzahl an Schreibanforderungen von der Schreibumgehungsanforderungswarteschlange 122 nicht verarbeitet worden ist, d.h. die Mangelsituation nicht aufgetreten ist, geht die Steuerung zurück zu Block 656, um eine weitere Schreibanforderung in der Schreibumgehungsanforderungswarteschlange 122 zu verarbeiten.
-
Wenn darüber hinaus der E/A-Manager 102 ermittelt, dass eine Ausmusterungsoperation zum Ausmustern der modifizierten Spuren in der nichtflüchtigen Speichereinheit 104 auf das Speichermedium mit sequenziellem Zugriff 114 durchgeführt werden muss, um Platz in dem nichtflüchtigen Speichermedium 104 freizumachen, kann die Ausmusterungsoperation die Verarbeitung der Schreibanforderungen in der Schreibumgehungsanforderungswarteschlange 122 so lange unterbrechen, bis die Ausmusterungsoperation abgeschlossen ist.
-
Beschriebene Ausführungsformen stellen Verfahren bereit, die eine Verwendung eines Cachespeichers einer zweiten Ebene zwischen einem Cachespeicher einer primären oder ersten Ebene und einem Speicher ermöglichen, um den Cachespeicher-Platz zu erhöhen, wenn der erste Cachespeicher mit dem schnellsten Zugriff 14 über den teuersten Speicherplatz beziehungsweise Kosten pro Byte verfügt, und ein zweiter Cachespeicher, der weniger teuer als der erste Cachespeicher jedoch schneller als der Speicher ist, verwendet werden kann, um die Menge an Daten, die in dem System gecacht werden können, zu erhöhen. Durch Vergrößern des Speicherplatzes in Cachespeichern mit schnellerem Zugriff wird der Zugriff auf die gecachten Daten verbessert, wenn die angeforderten Daten in dem Cachespeicher vorhanden sind und von einem Cachespeicher zurückgegeben werden können, anstatt einen Aufruf von dem weniger teuren Speicher mit langsameren Zugriff ausführen zu müssen. Des Weiteren werden in den beschriebenen Ausführungsformen unmodifizierte nichtsequenzielle Spuren dem zweiten Cachespeicher auf der Grundlage einer zeitlichen Reihenfolge in dem ersten Cachespeicher hinzugefügt, und anschließend werden sie in dem zweiten Cachespeicher auf der Grundlage des räumlichen physischen Ortes in dem Speicher mit sequenziellem Zugriff so sortiert, dass die ausgemusterten Spuren in Gruppen von Spuren an nahe oder aufeinanderfolgende physische Orte in dem Speicher geschrieben werden, um das Schreiben der Spuren in den Speicher zu optimieren.
-
Beschriebene Ausführungsformen liefern des Weiteren eine nichtflüchtige Speichereinheit 104 wie beispielsweise einen Flash-Speicher in der Speichereinheit mit sequenziellem Zugriff 100, um Cachen von modifizierten Spuren zu ermöglichen, während Leseanforderungen auf Spuren von der nichtflüchtigen Speichereinheit 104 zurückgegeben werden können, bevor sie zum Verbessern der Leseleistung zu dem Speichermedium mit sequenziellem Zugriff 114 ausgemustert werden. Des Weiteren kann die Schreibleistung verbessert werden, indem vollständig zu dem Schreibvorgang in Reaktion darauf zurückgekehrt wird, dass der Schreibvorgang in der nichtflüchtigen Speichereinheit 104 gespeichert wird, bevor er zu dem Speichermedium mit sequenziellem Zugriff 114 ausgemustert wird.
-
Weitere Vorteile werden durch Schreiben bestimmter Typen von Schreibanforderungen, normalerweise für Daten, auf die weniger häufig zugegriffen wird z.B. sequenzielle Schreibdaten direkt in das Speichermedium mit sequenziellem Zugriff 114 und Umgehen des Cachespeichers der nichtflüchtigen Speichereinheit 104 umgesetzt, um mehr Speicherplatz in dem Cachespeicher der nichtflüchtigen Speichereinheit 104 für Schreibdaten freizumachen, auf die wahrscheinlich häufiger zugegriffen wird, wie beispielsweise nichtsequenzielle Schreibspuren. Dadurch können Daten, auf die häufiger zugegriffen wird, an Leseanforderungen von der Speichereinheit mit schnellerem Zugriff 104 wie beispielsweise einem Flash-Speicher zurückgegeben werden, anstatt auf die häufiger zugegriffenen Daten von dem langsameren Speichermedium mit sequenziellem Zugriff 114 wie beispielsweise einem Plattenlaufwerk zugreifen zu müssen.