DE112012002615T5 - Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren - Google Patents

Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren Download PDF

Info

Publication number
DE112012002615T5
DE112012002615T5 DE112012002615.2T DE112012002615T DE112012002615T5 DE 112012002615 T5 DE112012002615 T5 DE 112012002615T5 DE 112012002615 T DE112012002615 T DE 112012002615T DE 112012002615 T5 DE112012002615 T5 DE 112012002615T5
Authority
DE
Germany
Prior art keywords
tracks
sequential access
access storage
cache
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112012002615.2T
Other languages
English (en)
Other versions
DE112012002615B4 (de
Inventor
Lokesh Mohan Gupta
James Lee Hafner
Michael Thomas Benhase
Binny Sher Gill
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112012002615T5 publication Critical patent/DE112012002615T5/de
Application granted granted Critical
Publication of DE112012002615B4 publication Critical patent/DE112012002615B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

Abstract

Es werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren bereitgestellt. Es wird eine Schreibanforderung empfangen, die mindestens eine aktualisierte Spur für die Gruppe von Spuren enthält. Die mindestens eine aktualisierte Spur wird in einer ersten Cache-Einheit gespeichert. An die mindestens eine Speichereinheit mit sequenziellem Zugriff wird eine Anforderung zum Vorabladen gesendet, um Spuren aus der Gruppe von Spuren vorab in eine zweite Cache-Einheit zu laden. Es wird eine Leseanforderung erzeugt, um die vorab geladenen Spuren nach dem Senden der Anforderung zum Vorabladen zu lesen. Die der Leseanforderung von der zweiten Cache-Einheit zurückgesendeten gelesenen vorab geladenen Spuren werden in der ersten Cache-Einheit gespeichert. Aus der mindestens einen aktualisierten Spur und den gelesenen vorab geladenen Spuren werden neue Paritätsdaten berechnet.

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft ein Computerprogrammprodukt, ein System und ein Verfahren zum Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren.
  • Hintergrund der Erfindung
  • In einem Speichersystem mit redundanter Anordnung unabhängiger Festplatten (RAID, Redundant Array of Independent Disks) werden Daten aus einer Datei in über verschiedene Plattenlaufwerke verteilten Spuren gespeichert. Ein Stride weist die Spuren und Paritätsdaten auf, die aus den über die Plattenlaufwerke einheitenübergreifend verteilten (striped) Spuren berechnet werden. Eine RAID-Steuereinheit verteilt die Spuren einheitenübergreifend über die als RAID-Einheiten konfigurierten Platten und berechnet während des Schreibens der Spuren auf die Platten einen Paritäts- oder Prüfsummenwert, der auf eine oder mehrere der Platten geschrieben wird. Die Paritätsdaten können auf die mehreren Platten einheitenübergreifend verteilt oder mit den Benutzerdaten verzahnt (interleaved) werden. Mit Hilfe der Parität können bei Ausfall einer oder mehrerer Platte(n) die Daten auf der/den ausgefallenen Platte(n) unter Verwendung eines Algorithmus wiederhergestellt werden, der die Paritätsdaten und die Daten auf den intakten Platten verknüpft und die Daten auf der/den ausgefallenen Platte(n) wiederherstellt.
  • Wenn eine Speichersteuereinheit einen Schreibvorgang auf eine oder mehrere Spuren in einem RAID-Stride empfängt, wird die aktualisierte Spur in einem Cachespeicher gespeichert, bis eine Entscheidung darüber getroffen wird, die aktualisierte Spur auf die eine oder mehreren Speichereinheiten, über die der Stride einheitenübergreifend verteilt ist, auszulagern. Wenn nicht alle Spuren in dem die aktualisierte Spur aufweisenden Stride in dem Cachespeicher geführt werden, muss die RAID-Steuereinheit neben der aktualisierten Spur auch die alten Spuren und alte Paritätsdaten lesen, um den gesamten die aktualisierte Spur aufweisenden Stride erneut auf die Platten zu schreiben und die neue zu schreibende Parität zu berechnen, während die Datenspuren geschrieben werden. Somit muss die Speichersteuereinheit, wenn sie zum Auslagern bereit ist, zusätzliche Lesevorgänge durchführen und kann den Arbeitsschritt des Auslagerns erst dann durchführen, wenn die benötigten alten Spuren und die alte Parität gelesen wurden. Die RAID-Steuereinheit muss die alten Datenspuren und die alten Paritätsdaten lesen, die alten Spuren mit der aktualisierten Spur vergleichen, die Paritätsdaten aktualisieren und den gesamten Stride und sämtliche Daten zurück auf die Plattenlaufwerke schreiben.
  • Offenbarung der Erfindung
  • Es werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren bereitgestellt. Es wird eine Schreibanforderung empfangen, die mindestens eine aktualisierte Spur für die Gruppe von Spuren enthält. Die mindestens eine aktualisierte Spur wird in einer ersten Cache-Einheit gespeichert. An die mindestens eine Speichereinheit mit sequenziellem Zugriff wird eine Anforderung zum Vorabladen gesendet, um Spuren aus der Gruppe von Spuren vorab in eine zweite Cache-Einheit zu laden. Es wird eine Leseanforderung erzeugt, um die vorab geladenen Spuren nach dem Senden der Anforderung zum Vorabladen zu lesen. Die der Leseanforderung von der zweiten Cache-Einheit zurückgesendeten gelesenen vorab geladenen Spuren werden in der ersten Cache-Einheit gespeichert. Aus der mindestens einen aktualisierten Spur und den gelesenen vorab geladenen Spuren werden neue Paritätsdaten berechnet.
  • Vorzugsweise wird ein System bereitgestellt, das Folgendes aufweist: einen Speicher mit einer Vielzahl von Speichereinheiten mit sequenziellem Zugriff, wobei Strides von Spuren und Paritätsdaten einheitenübergreifend über die Speichereinheiten mit sequenziellem Zugriff verteilt sind, wobei die Speichereinheiten mit sequenziellem Zugriff jeweils eine nichtflüchtige Speichereinheit aufweisen; eine mit dem Speicher Daten austauschende Speichersteuereinheit, die Folgendes aufweist: einen Prozessor; eine Cache-Einheit; ein durch einen Computer lesbares Speichermedium, in dem ein durch einen Computer lesbarer Programmcode enthalten ist, der von dem Prozessor ausgeführt wird, um Arbeitsschritte durchzuführen, wobei die Arbeitsschritte Folgendes aufweisen: das Empfangen einer Schreibanforderung, die mindestens eine aktualisierte Spur für eine angeforderte Stride-Spur aufweist; das Speichern der mindestens einen aktualisierten Spur in der Cache-Einheit; das Senden von Anforderungen zum Vorabladen an mindestens eine der Speichereinheiten mit sequenziellem Zugriff, um Spuren aus dem angeforderten Stride in die nichtflüchtige Speichereinheit in jeder der Speichereinheiten mit sequenziellem Zugriff vorab zu laden, an welche die Anforderungen zum Vorabladen gesendet wurden; das Erzeugen einer Leseanforderung für jede der Speichereinheiten mit sequenziellem Zugriff, an welche die Anforderungen zum Vorabladen gesendet wurden, um die vorab geladenen Spuren nach dem Senden der Anforderung zum Vorabladen zu lesen; das Speichern der gelesenen vorab geladenen Spuren, die an die Leseanforderungen aus den nichtflüchtigen Speichereinheiten in der Cache-Einheit zurückgesendet wurden; und das Berechnen neuer Paritätsdaten aus der mindestens einen aktualisierten Spur und den gelesenen vorab geladenen Spuren.
  • Kurzbeschreibung der Zeichnungen
  • Die vorliegende Erfindung wird nun lediglich beispielhaft unter Bezugnahme auf deren bevorzugte Ausführungsformen beschrieben, wie in den folgenden Figuren dargestellt:
  • 1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung.
  • 2 veranschaulicht eine Ausführungsform von Verwaltungsinformationen für einen ersten Cachespeicher.
  • 3 veranschaulicht eine Ausführungsform von Verwaltungsinformationen für einen zweiten Cachespeicher.
  • 4 veranschaulicht eine Ausführungsform einer Speichereinheit mit sequenziellem Zugriff.
  • 5 veranschaulicht eine Ausführungsform eines Steuerblocks für einen ersten Cachespeicher.
  • 6 veranschaulicht eine Ausführungsform eines Steuerblocks für einen zweiten Cachespeicher.
  • 7 veranschaulicht eine Ausführungsform eines Cachespeicher-Steuerblocks für nichtflüchtigen Speicher.
  • 8 veranschaulicht eine Ausführungsform eines Eintrags in einem räumlichen Index.
  • 9 veranschaulicht eine Ausführungsform eines Speichers mit Speichereinheiten mit sequenziellem Zugriff.
  • 10 veranschaulicht eine Ausführungsform von Speichersystem-RAID-Konfigurationsdaten.
  • 11 veranschaulicht eine Ausführungsform einer Anforderung zum Vorabladen.
  • 12 veranschaulicht eine Ausführungsform von Arbeitsschritten zum Verarbeiten einer Schreibanforderung, die eine aktualisierte Spur für eine Gruppe von Spuren wie zum Beispiel einen Stride aufweist, und zum Auslagern der aktualisierten Spuren.
  • 13 und 14 veranschaulichen Ausführungsformen von Arbeitsschritten zum Verarbeiten einer Leseanforderung zum Lesen von vorab geladenen Spuren.
  • Ausführliche Beschreibung der bevorzugten Ausführungsform
  • 1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung. Eine Vielzahl von Hosts 2a, 2b ... 2n kann einer Speichersteuereinheit 4 über ein Netzwerk 6 Eingabe/Ausgabe-(E/A-)Anforderungen übergeben, um auf Daten auf Datenträgern 8 (z. B. auf Nummern von logischen Einheiten, logische Geräte, logische Teilsysteme usw.) in einem Massenspeicher 10 zuzugreifen. Die Speichersteuereinheit 4 weist eine Prozessorfunktionseinheit 12 auf, die einen oder mehrere Prozessoren mit einem einzelnen Kern oder mehreren Kernen aufweist, einen ersten Cachespeicher 14, eine Sicherungseinheit 16 für den ersten Cachespeicher zum Sichern von Spuren in dem Cachespeicher 14, und einen zweiten Cachespeicher 18. Im ersten 14 und zweiten 18 Cachespeicher sind zwischen den Hosts 2a, 2b ... 2n und dem Massenspeicher 10 übertragene Daten zwischengespeichert. Die Sicherungseinheit 16 für den ersten Cachespeicher kann ein nichtflüchtiges Speichern von Spuren in dem ersten Cachespeicher 14 bereitstellen. In einer weiteren Ausführungsform kann sich die Sicherungseinheit 16 für den ersten Cachespeicher in einem Cluster oder einer Hardware auf einer anderen Leistungsbegrenzung (power boundary) als der des ersten Cachespeichers 14 befinden.
  • Die Speichersteuereinheit 4 weist einen Hauptspeicher 20, der eine Speicherverwaltungseinheit 22 zum Verwalten der Übertragung von zwischen den Hosts 2a, 2b ... 2n und dem Massenspeicher 10 übertragenen Spuren aufweist, und eine Cachespeicher-Verwaltungseinheit 24 auf, die zwischen den Hosts 2a, 2b ...2n und dem Massenspeicher 10 übertragene Daten in dem ersten Cachespeicher 14, der Sicherungseinheit 16 für den ersten Cachespeicher und dem zweiten Cachespeicher 18 verwaltet. Eine Spur kann eine in dem Massenspeicher 10 konfigurierte Dateneinheit wie zum Beispiel eine Spur, eine logische Blockadresse (LBA, Logical Block Address) usw. aufweisen, die Teil einer größeren Gruppierung von Spuren wie zum Beispiel eines Datenträgers, eines logischen Geräts usw. ist. Die Cachespeicher-Verwaltungseinheit 24 führt Verwaltungsinformationen 26 für den ersten Cachespeicher und Verwaltungsinformationen 28 für den zweiten Cachespeicher, um (unveränderte) Lese- und (veränderte) Schreibspuren in dem ersten Cachespeicher 14 und dem zweiten Cachespeicher 18 zu verwalten. Ein Index 30 einer Sicherungseinheit für den ersten Cachespeicher stellt einen Spurkennungsindex für eine Position in der Sicherungseinheit 16 für den ersten Cachespeicher bereit.
  • Die Speicherverwaltungseinheit 22 und die Cachespeicher-Verwaltungseinheit 24 sind in 1 als ein in den Hauptspeicher 20 geladener und durch die Prozessorfunktionseinheit 12 ausgeführter Programmcode gezeigt. Alternativ können einige oder alle der Funktionen in Hardware-Einheiten in der Speichersteuereinheit 4 wie zum Beispiel in anwendungsspezifischen integrierten Schaltungen (ASICs, Application Specific Integrated Circuits) umgesetzt werden.
  • Der zweite Cachespeicher 18 kann Spuren in einer protokollstrukturierten Anordnung (LSA, Log Structured Array) 32 speichern, wobei Spuren in sequenzieller Reihenfolge wie empfangen geschrieben werden, wodurch eine zeitliche Anordnung der in den zweiten Cachespeicher 18 geschriebenen Spuren bereitgestellt wird. In einer LSA werden bereits in der LSA vorhandene frühere Versionen von Spuren an das Ende der LSA 32 geschrieben. In alternativen Ausführungsformen kann der zweite Cachespeicher 18 Daten in anderen Formaten als in einer LSA speichern.
  • Der Hauptspeicher 20 weist ferner Speicher-RAID-Konfigurationsdaten 36 auf, die Informationen über eine RAID-Konfiguration für den Massenspeicher 10 bereitstellen, die von der Speicherverwaltungseinheit 22 dazu verwendet werden, zu ermitteln, wie in das Speichersystem 10 zu schreibende Strides gebildet werden können, wobei die Spuren in den Strides einheitenübergreifend über die Speicherlaufwerke in dem Speichersystem 10 verteilt werden. In derartigen RAID-Ausführungsformen kann die Speicherverwaltungseinheit 22 Arbeitsschritte der RAID-Steuereinheit umsetzen.
  • In einer Ausführungsform kann der erste Cachespeicher 14 einen Direktzugriffsspeicher (RAM, Random Access Memory) wie zum Beispiel einen dynamischen Direktzugriffsspeicher (DRAM, Dynamic Random Access Memory) aufweisen, und der zweite Cachespeicher 18 kann einen Flash-Speicher wie zum Beispiel eine Halbleitereinheit (solid state device) aufweisen, und der Massenspeicher 10 besteht aus einer oder mehreren Speichereinheiten mit sequenziellem Zugriff wie zum Beispiel Festplattenlaufwerken und Magnetband. Der Massenspeicher 10 kann eine einzelne Speichereinheit mit sequenziellem Zugriff aufweisen oder er kann ein Array von Speichereinheiten wie zum Beispiel lediglich einen Haufen Platten (JBOD, Just a Bunch of Disks), eine Direktzugriffs-Speichereinheit (DASD, Direct Access Storage Device), eine redundante Anordnung unabhängiger Festplatten (RAID, Redundant Array of Independent Disks), eine Virtualisierungseinheit usw. aufweisen. In einer Ausführungsform ist der erste Cachespeicher 14 eine Einheit mit schnellerem Zugriff als der zweite Cachespeicher 18, und der zweite Cachespeicher 18 ist eine Einheit mit schnellerem Zugriff als der Massenspeicher 10. Des Weiteren kann der erste Cachespeicher 14 höhere Kosten pro Einheit an Speicher als der zweite Cachespeicher 18 aufweisen, und der zweite Cachespeicher 18 kann höhere Kosten pro Einheit an Speicher als die Speichereinheiten in dem Massenspeicher 10 aufweisen.
  • Der erste Cachespeicher 14 kann ein Teil des Hauptspeichers 20 oder in einer separaten Hauptspeichereinheit wie zum Beispiel einem DRAM umgesetzt sein. In einer Ausführungsform kann die Sicherungseinheit 16 für den ersten Cachespeicher einen nichtflüchtigen Sicherungsspeicher (NVS, Non-Volatile Storage) wie zum Beispiel einen nichtflüchtigen Hauptspeicher aufweisen, z. B. einen Direktzugriffsspeicher (RAM) mit Batterieversorgung, einen statischen RAM (SRAM) usw.
  • Zu einem Netzwerk 6 können ein Speichernetzwerk (SAN, Storage Area Network), ein lokales Netzwerk (LAN, Local Area Network), ein Weitverkehrsnetz (WAN, Wide Area Network), das Internet und ein Intranet usw. gehören.
  • 2 veranschaulicht eine Ausführungsform der Verwaltungsinformationen 26 für den ersten Cachespeicher, die einen Spurindex 50 aufweisen, der Steuerblöcken in einem Steuerblockverzeichnis 52 einen Index von Spuren in dem ersten Cachespeicher 14 bereitstellt; eine unveränderte sequenzielle LRU-Liste 54 (LRU = least recently used, am längsten ungenutzt), die eine zeitliche Anordnung von unveränderten sequenziellen Spuren in dem ersten Cachespeicher 14 bereitstellt; eine veränderte LRU-Liste 56, die eine zeitliche Anordnung von veränderten sequenziellen und nicht-sequenziellen Spuren in dem ersten Cachespeicher 14 bereitstellt; und eine unveränderte nicht-sequenzielle LRU-Liste 58, die eine zeitliche Anordnung von unveränderten nicht-sequenziellen Spuren in dem ersten Cachespeicher 14 bereitstellt.
  • In bestimmten Ausführungsformen wird die veränderte LRU-Liste 56 beim Feststellen, dass die Sicherungseinheit 16 für den ersten Cachespeicher voll ist, zum Auslagern von veränderten Spuren aus dem ersten Cachespeicher 14 verwendet, so dass die Kopie dieser Spuren in der Sicherungseinheit 16 für den ersten Cachespeicher verworfen werden kann, um Platz für neue veränderte Spuren in der Sicherungseinheit 16 für den ersten Cachespeicher zu schaffen.
  • 3 veranschaulicht eine Ausführungsform der Verwaltungsinformationen 28 für einen zweiten Cachespeicher, die einen Spurindex 70 aufweisen, der Steuerungsblöcken in einem Steuerblockverzeichnis 72 einen Index von Spuren in dem zweiten Cachespeicher 18 bereitstellt; eine unveränderte Liste 74, die eine zeitliche Anordnung von unveränderten Spuren in dem zweiten Cachespeicher 18 bereitstellt; und einen räumlichen Index 76, der beruhend auf den physischen Positionen in dem Massenspeicher 10, an denen die veränderten Spuren gespeichert sind, eine räumliche Anordnung der veränderten Spuren in dem zweiten Cachespeicher 18 bereitstellt.
  • Sämtliche LRU-Listen 54, 56, 58 und 74 können die Spurkennungen der Spuren in dem ersten Cachespeicher 14 und dem zweiten Cachespeicher 18 geordnet nach dem letzten Zugriff auf die erkannte Spur aufweisen. Die LRU-Listen 54, 56, 58 und 74 haben eine zuletzt genutzte (MRU, most recently used) Seite, die eine Spur angibt, auf die zuletzt zugegriffen wurde, und eine am längsten ungenutzte (LRU, least recently used) Seite, die eine am längsten ungenutzte Spur oder eine Spur, auf die am längsten nicht zugegriffen wurde, angibt. Die Spurkennungen der zu den Cachespeichern 14 und 18 hinzugefügten Spuren werden zu der MRU-Seite der LRU-Liste hinzugefügt, und auf in den Cachespeichern 14 und 18 herabgestufte Spuren wird von der LRU-Seite aus zugegriffen. Die Spuren-Indizes 50 und 70 und der räumliche Index 76 können eine Streuungsindextabelle (SIT, Scatter Index Table) aufweisen. Es können alternative Typen von Datenstrukturen zum Bereitstellen der zeitlichen Anordnung von Spuren in den Cachespeichern 14 und 18 und der räumlichen Anordnung von Spuren in dem zweiten Cachespeicher 18 verwendet werden.
  • Nicht-sequenzielle Spuren können Online-Transaktionsverarbeitungsspuren (OLTP, Online Line Transaction Processing) aufweisen, die häufig kleine Blockschreibvorgänge aufweisen, die nicht komplett zufällig sind und einen gewissen Bezugsort aufweisen, d. h. eine Wahrscheinlichkeit aufweisen, mit der auf sie wiederholt zugegriffen wird.
  • 4 veranschaulicht eine Ausführungsform einer Speichereinheit 100 mit sequenziellem Zugriff, wobei der Massenspeicher 10 mit einer oder mehreren Speichereinheiten 100 mit sequenziellem Zugriff umgesetzt sein kann. Die Speichereinheit 100 mit sequenziellem Zugriff weist eine als E/A-Verwaltungseinheit 102 gezeigte Steuerlogik, eine nichtflüchtige Speichereinheit 104 zum Puffern von veränderten Daten und einen Hauptspeicher 106 auf, der einen Spurindex 108, der einen Index von Spuren in der nichtflüchtigen Speichereinheit 104 zum Steuern von Blöcken in einem Steuerblockverzeichnis 110 bereitstellt, einen räumlichen Index 112, der eine räumliche Anordnung der Spuren (sowohl Lesen als auch Schreiben) in dem nichtflüchtigen Speicher 104 an den physischen Positionen in einem Speichermedium 114 mit sequenziellem Zugriff, an denen die Spuren zum Lesen oder Schreiben gespeichert sind, bereitstellt, und eine Anforderungswarteschlange 116 aufweist, in der Lese- und Schreibanforderungen eingereiht werden. Einträge in der Anforderungswarteschlange 116 können den Anforderungstyp, Lesen oder Schreiben, und die angeforderten Spuren kennzeichnen, deren Position auf dem Speichermedium 114 mit sequenziellem Zugriff aus dem räumlichen Index 112 ermittelt werden kann. Die E/A-Verwaltungseinheit 102 fügt zu der Anforderungswarteschlange 112 Lese- und Schreibanforderungen hinzu und greift auf Lese- und Schreibanforderungen aus der Anforderungswarteschlange 112 zu, um sie auf einem Medium 114 mit sequenziellem Zugriff auszuführen. Die E/A-Verwaltungseinheit 102 kann Befehle an eine Lese/Schreib-Steuereinheit 118 senden, die Steuersignale erzeugt, um einen oder mehrere Aktuatoren mit Lese/Schreib-Köpfen 120 an eine Position auf dem Speichermedium 114 mit sequenziellem Zugriff zu bewegen, an der Daten gelesen oder geschrieben werden können.
  • Der Hauptspeicher 106 weist ferner eine Leseprioritätswarteschlange 122 zum Puffern von Leseanforderungen mit hoher Priorität auf. Leseanforderungen mit einer niedrigen oder keiner hohen Priorität werden zu der Anforderungswarteschlange 116 hinzugefügt. Die Speichersteuereinheit 4 kann die Priorität von an die Speichereinheit 100 mit sequenziellem Zugriff übergebenen Leseanforderungen in einem Kopfzeilenfeld der Leseanforderung angeben. In bestimmten Ausführungsformen werden Leseanforderungen in der Warteschlange 122 für priorisiertes Lesen und der Anforderungswarteschlange 116 beruhend auf einer zeitlichen Anordnung oder einer Anordnung, in der sie zu den Warteschlangen 116 und 122 hinzugefügt wurden, gelesen, wobei die Warteschlangen LRU-Warteschlangen aufweisen können. Beruhend auf einer zeitlichen Anordnung, in der die Schreibanforderungen empfangen werden, werden Auslagerungsanforderungen zu der Anforderungswarteschlange 116 hinzugefügt. Veränderte Spuren in der nichtflüchtigen Speichereinheit 104 und Leseanforderungen in der Anforderungswarteschlange 116 werden beruhend auf dem räumlichen Index 112 verarbeitet, so dass beim Verarbeiten einer Auslagerungs- oder Leseanforderung in der Anforderungswarteschlange 116 die auszulagernde bzw. die zu lesende Spur unter Verwendung des räumlichen Index 112 beruhend auf der aktuellen Position des Lese-Schreib-Kopfes 120 ausgewählt werden. Obwohl die Leseanforderungen und Auslagerungsanforderungen zu der Anforderungswarteschlange 116 gemäß einer zeitlichen Anordnung hinzugefügt werden, werden sie somit in der Anforderungswarteschlange 116 beruhend auf deren Position in dem Speichermedium 114 mit sequenziellem Zugriff hinsichtlich der Lese/Schreib-Köpfe 120 verarbeitet, um die Zeit auf ein Mindestmaß zu beschränken, welche die Lese/Schreib-Köpfe 120 zum Suchen und das Medium 114 zum Drehen benötigen, um auf die zu lesenden oder zu schreibenden Spurpositionen zuzugreifen.
  • Ein Puffer 124 in der Einheit 100 kann Eingabeanforderungen zum Lesen und Schreiben und an eine Leseanforderung zurückgesendete Daten vorübergehend Puffern. Der Puffer 124 kann auch zum vorübergehenden Puffern veränderter Spuren für nicht in der nichtflüchtigen Speichereinheit geführte Schreibanforderungen verwendet werden, wie zum Beispiel für sequenzielle Schreibanforderungen und deren veränderte Daten. Der Puffer 124 kann sich in einer von der nichtflüchtigen Speichereinheit 104 getrennten Einheit befinden und einen kleineren Speicherplatz aufweisen, als in der nichtflüchtigen Speichereinheit 104 verfügbar ist. Alternativ kann der Puffer 124 teilweise oder vollständig in der nichtflüchtigen Speichereinheit umgesetzt werden.
  • Eine LRU-Liste 126 mit nichtflüchtigem Speicher (NVS, Non-Volatile Storage) stellt für in der nichtflüchtigen Speichereinheit 104 gepufferte Spuren eine LRU-Warteschlange bereit, die veränderte Spuren zum Schreiben auf das Speichermedium 114 mit sequenziellem Zugriff und vorab geladene Spuren aufweist. Die NVS-LRU-Liste 126 kann dazu verwendet werden, Spuren zu ermitteln, die von der nichtflüchtigen Speichereinheit 104 zu entfernen sind, wenn in der nichtflüchtigen Speichereinheit 104 Platz freigegeben werden muss.
  • Das Speichermedium 114 mit sequenziellem Zugriff kann eine oder mehrere Festplattenlaufwerksplatten (hard disk drive platters) für eine Festplattenlaufwerkseinheit oder ein Magnetband aufweisen. In bestimmten Ausführungsformen kann die nichtflüchtige Speichereinheit 104 eine aus Halbleiterspeicher bestehende Flash-Speichereinheit aufweisen. In bestimmten Ausführungsformen ist die nichtflüchtige Speichereinheit 104 wie z. B. ein Flash-Speicher auf der Schaltkarte der Speichereinheit 100 mit sequenziellem Zugriff innerhalb des die Komponenten der Speichereinheit 100 mit sequenziellem Zugriff aufweisenden Gehäuses umgesetzt. Sie kann zum Beispiel eine Flash-Speichereinheit mit 8 GB aufweisen.
  • Einige oder alle der Funktionen der E/A-Verwaltungseinheit 102 können als ein durch einen Prozessor in der Speichereinheit 100 mit sequenziellem Zugriff ausgeführter Code umgesetzt werden. Alternativ können einige oder alle der Funktionen der E/A-Verwaltungseinheit 102 in einer ASIC auf der Speichereinheit 100 mit sequenziellem Zugriff umgesetzt werden.
  • In einer Ausführungsform, in der die Speichereinheit 100 mit sequenziellem Zugriff eine nichtflüchtige Speichereinheit 104 aufweist, weist die Speichersteuereinheit 4 möglicherweise lediglich einen ersten Cachespeicher 14 und nicht den zweiten Cachespeicher 18 auf, da der Cachespeicher der zweiten Ebene als nichtflüchtige Speichereinheit 104 in der Speichereinheit 100 mit sequenziellem Zugriff umgesetzt ist. Des Weiteren kann die Speichersteuereinheit 100 mit sequenziellem Zugriff in einer Ausführungsform, in der die Speichersteuereinheit 4 den ersten Cachespeicher 14 und den zweiten Cachespeicher 18 aufweist, die nichtflüchtige Speichereinheit 104 aufweisen.
  • 5 veranschaulicht eine Ausführungsform eines Eintrags eines Steuerblocks 150 für den ersten Cachespeicher in dem Steuerblockverzeichnis 52, der eine Steuerblockkennung (ID) 152, eine erste Cachespeicherposition 154 der physischen Position der Spur in dem ersten Cachespeicher 14, Informationen 156, die angeben, ob die Spur verändert oder unverändert ist, und Informationen 158 aufweist, die angeben, ob es sich bei der Spur um einen sequenziellen oder nicht-sequenziellen Zugriff handelt.
  • 6 veranschaulicht eine Ausführungsform eines Eintrags eines Steuerblocks 160 für den zweiten Cachespeicher in dem Steuerblockverzeichnis 72 für den zweiten Cachespeicher, der eine Steuerblockkennung (ID) 162 und eine LSA-Position 164 aufweist, an der sich die Spur in der LSA 32 befindet. In bestimmten Ausführungsformen kann der Steuerblock 160 für den zweiten Cachespeicher ferner ein Vorabladen-Flag 166 aufweisen, das angibt, ob sich die Spur auf einen Arbeitsschritt zum Vorabladen bezieht, damit die vorab geladene Spur in dem zweiten Cachespeicher 16 länger geführt wird und für den Lesevorgang verfügbar ist, der die vorab geladene Spur benötigt. Die nichtveränderte LRU-Liste 74 kann nichtveränderte nicht-sequenzielle Spuren, die aus dem ersten Cachespeicher 14 ausgelagert und zu dem zweiten Cachespeicher 18 befördert wurden, und aus dem Massenspeicher 10 gelesene, vorab geladene Spuren zum Laden vorab für nachfolgende Arbeitsschritte kennzeichnen.
  • 7 veranschaulicht eine Ausführungsform eines Eintrags eines Steuerblocks 170 für nichtflüchtigen Speicher in dem Steuerblockverzeichnis 110 für den nichtflüchtigen Speicher 104, der eine Steuerblockkennung (ID) 172 und eine physische Position 174 aufweist, an der sich die Spur befindet, wie zum Beispiel eine LSA-Position, wenn die Spur auf der nichtflüchtigen Speichereinheit in einer LSA gespeichert ist. In bestimmten Ausführungsformen kann der Steuerblock 170 für den nichtflüchtigen Speicher ein Vorabladen-Flag 176 aufweisen, das angibt, ob die Spur von dem Speichermedium 114 mit sequenziellem Zugriff gelesen und als Teil eines Arbeitsschrittes zum Vorabladen in der nichtflüchtigen Speichereinheit 104 platziert wurde. In bestimmten Ausführungsformen können Spuren, die als Teil eines Arbeitsschrittes zum Vorabladen von dem Speichermedium 114 mit sequenziellem Zugriff gelesen wurden, länger in der nichtflüchtigen Speichereinheit 104 geführt werden, bevor sie entfernt werden, um Platz freizugeben.
  • 8 veranschaulicht einen Eintrag 180 im räumlichen Index, der eine Spurkennung 182 einer Spur in der nichtflüchtigen Speichereinheit 104 und die physische Position 184 aufweist, an der die zu lesende oder zu schreibende Spur in dem Speichermedium 114 mit sequenziellem Zugriff gespeichert ist, wie zum Beispiel einen Zylinder, eine Plattennummer, eine Winkellage auf dem Zylinder usw.
  • In einer Ausführungsform kann die Anforderungswarteschlange 116 Leseanforderungen und Schreibanforderungen mit niedriger Priorität aufweisen, die beruhend auf einer räumlichen Anordnung dessen, wo sich die Daten auf dem Speichermedium mit sequenziellem Zugriff befinden, zum Verarbeiten ausgewählt werden. Wenn die Speichereinheit 100 mit sequenziellem Zugriff ein Festplattenlaufwerk aufweist und das Speichermedium 114 mit sequenziellem Zugriff eine Magnetplatte aufweist, gibt der räumliche Index i112 einen Zylinder der Spur auf der Magnetscheibe an. Zum Ermitteln der Spur in der Anforderungswarteschlange 116, auf die in kürzester Zeit von der aktuellen Position des Lese/Schreib-Kopfes 120 aus zugegriffen werden kann, kann die E/A-Verwaltungseinheit 102 den Zylinder und die Winkelposition der zu lesenden oder zu schreibenden Spuren in dem räumlichen Index 112 analysieren, um die Zeiten abzuschätzen, die zum Suchen der Zylinder der Spuren durch den Lese/Schreib-Kopf 120 und zum Drehen der Platte unter dem Lese/Schreib-Kopf 120 zum Erreichen der Winkelpositionen der angeforderten Spuren benötigt werden. Die E/A-Verwaltungseinheit kann dann eine Spur in der Anforderungswarteschlange 116 auswählen, deren geschätzte Zugriffszeiten minimal sind.
  • Die Warteschlange 122 für priorisiertes Lesen kann Leseanforderungen mit hoher Priorität aufweisen, und die Anforderungen in der Warteschlange 122 für priorisiertes Lesen können mit einer höheren Priorität als die Anforderungen in der Anforderungswarteschlange 116 verarbeitet werden.
  • In einer weiteren Ausführungsform kann die Speichereinheit 114 mit sequenziellem Zugriff ein Festplattenlaufwerk mit mehreren Platten und mehreren Schreibköpfen zum Schreiben auf jede Platte aufweisen. Die E/A-Verwaltungseinheit 102 kann die geschätzte Zeit für das Suchen und Drehen für jede veränderte Spur auf jeder Platte von der aktuellen Position der Schreibköpfe ermitteln und eine veränderte Spur auswählen, welche die kürzeste geschätzte Zeit für einen Zugriff über die Platten hinweg aufweist.
  • In einer alternativen Ausführungsform können Anforderungen mit niedrigerer Priorität in der Anforderungswarteschlange 116 gemäß einer zeitlichen Anordnung verarbeitet werden, und nicht nur gemäß einer räumlichen Anordnung der angeforderten Spuren.
  • Wenn die E/A-Verwaltungseinheit 104 feststellt, dass ein Auslagerungsarbeitsschritt durchgeführt werden muss, um veränderte Spuren in der nichtflüchtigen Speichereinheit 104 auf das Speichermedium 114 mit sequenziellem Zugriff auszulagern, um Platz in dem nichtflüchtigen Speichermedium 104 freizugeben, kann der Auslagerungsarbeitsschritt außerdem das Verarbeiten der Anforderungen in der Warteschlange 122 für priorisiertes Lesen und in der Anforderungswarteschlange 116 unterbrechen.
  • 9 veranschaulicht eine Ausführungsform des Speichers 10 aus 1, der aus einem Array von Speichereinheiten 200 mit sequenziellem Zugriff besteht, wobei jede der Speichereinheiten 200 mit sequenziellem Zugriff die Speichereinheit 100 mit sequenziellem Zugriff oder andere Speichereinheiten mit sequenziellem Zugriff aufweisen kann. Die Speicherverwaltungseinheit 22 kann eine RAID-Steuereinheit zum einheitenübergreifenden Verteilen von Spuren und Paritätsdaten in einem Stride über die Speichereinheiten 200 mit sequenziellem Zugriff hinweg aufweisen.
  • 10 veranschaulicht eine Ausführungsform der Speicher-RAID-Konfiguration 36, die geführt wird, um zu ermitteln, wie Strides von veränderten Spuren in dem ersten Cachespeicher 14 gebildet werden können, um sie auf den Massenspeicher 10 auszulagern. Eine RAID-Ebene 230 gibt die zu verwendende RAID-Konfiguration, mehrere Datenplatten (m) 232, auf denen Spuren mit Benutzerdaten gespeichert werden, und mehrere Paritätsplatten (p) 234 an, auf denen aus den Datenplatten 522 berechnete Paritäten gespeichert werden, wobei p eins oder mehr betragen kann und die Anzahl von Platten zum Speichern der berechneten Paritätsblöcke angibt. Der Stride von Spuren aus dem ersten Cachespeicher 14 kann einheitenübergreifend über die Platten 200 in dem Speichersystem 10 verteilt sein. In alternativen Ausführungsformen können die Spuren und jegliche Paritätsdaten in Gruppen angeordnet sein, die nicht auf RAID-Strides beschränkt sind, sondern andere Typen von Gruppen zum Gruppieren von Daten zum Schreiben über Platten hinweg sein können.
  • 11 veranschaulicht eine Ausführungsform einer Anforderung zum Vorabladen 250, die einen Code für den Arbeitsschritt der Anforderung zum Vorabladen 252, eine Spuradresse 254, die eine Anfangsspur in dem Speichermedium 114 mit sequenziellem Zugriff, an der das Vorabladen begonnen werden soll, und eine Übertragungslänge 726 aufweist, die einen Beginn des Vorabladens angibt.
  • 12 veranschaulicht eine Ausführungsform von Arbeitsschritten, die von der Speicherverwaltungseinheit 22 und der Cachespeicher-Verwaltungseinheit 24 zum Verwalten einer Schreibanforderung mit einer aktualisierten Spur für eine Spur in einem einheitenübergreifend über die Speichereinheiten 200 mit sequenziellem Zugriff verteilten Stride durchgeführt werden. Beim Empfangen (in Block 300) einer Schreibanforderung, die eine aktualisierte Spur aufweist, kann die Speicherverwaltungseinheit 22 die aktualisierte Spur (in Block 302) in dem ersten Cachespeicher 14 oder einer ersten Cache-Einheit speichern. Da die anderen Spuren und Paritätsdaten in dem Stride später zum Auslagern der aktualisierten Spur benötigt werden, um die neue Parität für den Stride zu berechnen, erzeugt die Speicherverwaltungseinheit 22 (in Block 304) eine Anforderung zum Vorabladen 250 für jede Speichereinheit 100 mit nicht-sequenziellem Zugriff, die Spuren und Paritätsdaten in der mindestens einen Speichereinheit mit sequenziellem Zugriff für eine zweite Cache-Einheit aufweist. Die vorab geladenen Spuren können andere Spuren in dem Stride aufweisen als die durch die Schreibanforderung und die Paritätsdaten für den Stride aktualisierten. In einer Ausführungsform kann der zweite Cachespeicher den zweiten Cachespeicher 18 in der Speichersteuereinheit 2 aufweisen, oder er kann alternativ die nichtflüchtige Speichereinheit 104 in der Speichereinheit 100 mit sequenziellem Zugriff (4) aufweisen.
  • Die Cachespeicher-Verwaltungseinheit 24 kann (in Block 306) einen Arbeitsschritt zum Auslagern der aktualisierten Spur in dem ersten Cachespeicher 14 initiieren, um Platz in dem ersten Cachespeicher 14 freizugeben. In einem derartigen Fall muss die Speicherverwaltungseinheit 22 möglicherweise auf die vorab geladenen Spuren zugreifen, um alle einheitenübergreifend verteilten Spuren zu schreiben, welche die aktualisierten Spuren aufweisen, und die Parität für den Stride zu berechnen. Um die alten Spuren und die alte Parität zu erhalten, erzeugt die Speicherverwaltungseinheit 22 (in Block 308) mindestens eine Leseanforderung, um die vorab geladenen Spuren von der zweiten Cache-Einheit (dem zweiten Cachespeicher 18 oder der nichtflüchtigen Speichereinheit 104) zu lesen. Die der Leseanforderung von der zweiten Cache-Einheit 18, 104 zurückgesendeten gelesenen vorab geladenen Spuren werden (in Block 310) in der ersten Cache-Einheit 14 gespeichert. Die Speicherverwaltungseinheit 22 berechnet (in Block 312) neue Paritätsdaten aus der mindestens einen aktualisierten Spur und den gelesenen vorab geladenen Spuren, die Paritätsdaten aufweisen, und lagert (in Block 314) den Stride von Spuren, der die aktualisierte Spur und die gelesenen vorab geladenen Spuren aufweist, und die neuen Paritätsdaten an die mindestens eine Speichereinheit 200 mit sequenziellem Zugriff aus.
  • In einer Ausführungsform kann die Speicherverwaltungseinheit 22 die Paritätsdaten berechnen, während die Spuren einheitenübergreifend über die Speichereinheiten 200 mit sequenziellem Zugriff gemäß einem RAID-Algorithmus wie zum Beispiel RAID 5 oder eine andere RAID-Ebene verteilt werden.
  • 13 veranschaulicht eine Ausführungsform von Arbeitsschritten der Cachespeicher-Verwaltungseinheit 24 zum Verarbeiten der Leseanforderung von der Speicherverwaltungseinheit 22, wenn die erste und die zweite Cache-Einheit den ersten Cachespeicher 14 bzw. den zweiten Cachespeicher 18 in der Speichersteuereinheit 4 aufweisen. In der Ausführungsform aus 13 kann die Speichereinheit 100 mit sequenziellem Zugriff eine nichtflüchtige Speichereinheit 104 aufweisen. Beim Verarbeiten der Leseanforderung (in Block 350) ermittelt die Cachespeicher-Verwaltungseinheit 24 (oder die Speicherverwaltungseinheit 22) (in Block 352), ob sich in dem zweiten Cachespeicher 18 vorab geladene Spuren befinden. Wenn sich (in Block 354) einige oder alle der vorab geladenen Spuren in dem zweiten Cachespeicher 18 befinden, die in Kombination mit der aktualisierten Spur zum Bilden eines kompletten Stride benötigt werden, befördert die Cachespeicher-Verwaltungseinheit 24 (in Block 356) die vorab geladenen Spuren von dem zweiten Cachespeicher 18 zu dem ersten Cachespeicher 14 für vorab geladene Spuren in dem zweiten Cachespeicher 18. Wenn sich (in Block 358) einige der vorab geladenen, zum Bilden des Stride benötigten Spuren nicht in dem zweiten Cachespeicher 18 befinden oder sich keine vorab geladenen Spuren in dem zweiten Cachespeicher 18 befinden (von der Nein-Verzweigung aus Block 354), überträgt die Cachespeicher-Verwaltungseinheit 24 (in Block 360) eine Leseanforderung an jede Speichereinheit 200 mit sequenziellem Zugriff, welche die vorab geladenen Spuren nicht in dem zweiten Cachespeicher 18 aufweist. Die von den Speichereinheiten 200 mit sequenziellem Zugriff als Reaktion auf die an die Speichereinheit mit sequenziellem Zugriff übertragenen Leseanforderungen zurückgesendeten vorab geladenen Spuren werden (in Block 362) in dem ersten Cachespeicher 14 gespeichert. In der Ausführungsform aus 13 können die Speichereinheiten 200 mit sequenziellem Zugriff eine nichtflüchtige Speichereinheit 104 aufweisen.
  • Sobald sich alle Spuren in dem Stride (oder der Gruppe) in dem ersten Cachespeicher 14 befinden, der alte vorab geladene Spuren, die neue aktualisierte Spur und Paritätsdaten aufweist, können die Daten einheitenübergreifend über die die Spuren in dem Stride speichernden Speichereinheiten 200 mit sequenziellem Zugriff verteilt werden.
  • 14 veranschaulicht eine Ausführungsform von Arbeitsschritten zum Senden der Leseanforderung, wenn jede der Speichereinheiten 200 mit nicht-sequenziellem Zugriff, welche die Spuren in dem Stride und die Paritätsdaten speichern, eine wie in 4 gezeigte nichtflüchtige Speichereinheit 104 aufweist, wobei es in einem derartigen Fall mehrere zweite Cache-Einheiten gibt, die innerhalb der Speichereinheiten 200 mit sequenziellem Zugriff enthalten sind. In derartigen Ausführungsformen werden die vorab geladenen Spuren in der nichtflüchtigen Speichereinheit 104 in jeder Speichereinheit 200 mit sequenziellem Zugriff als Reaktion auf die Anforderungen zum Vorabladen gespeichert. Beim Initiieren des Arbeitsschritts zum Senden der Leseanforderung in derartigen Ausführungsformen (in Block 400) sendet die Speicherverwaltungseinheit 22 (in Block 402) eine Leseanforderung an jede der Speichereinheiten 200 mit sequenziellem Zugriff, um von den nichtflüchtigen Speichereinheiten 104 in den Speichereinheiten 200 mit sequenziellem Zugriff aus auf die vorab geladenen Spuren zuzugreifen. In einer Ausführungsform kann der Leseanforderung eine hohe Priorität zugewiesen werden, wie zum Beispiel eine höhere Priorität als die Priorität, mit der die Anforderung zum Vorabladen den Speichereinheiten 200 mit sequenziellem Zugriff übergeben wird.
  • In beschriebenen Ausführungsformen wird die Anforderung zum Vorabladen so gekennzeichnet, dass sie mit einer niedrigeren Priorität als die Leseanforderung zu verarbeiten ist. Die Anforderung zum Vorabladen wird zu der Anforderungswarteschlange 116 hinzugefügt, wo sie gemäß einer räumlichen Anordnung der Lese- und Schreibspuren in der Anforderungswarteschlange 116 verarbeitet wird. Wenn die Leseanforderung hingegen mit dem Speichermedium 114 mit sequenziellem Zugriff zu verarbeiten ist, wie es zum Beispiel der Fall ist, wenn sich die vorab geladenen Spuren nicht in der nichtflüchtigen Speichereinheit 104 befinden, würde die Leseanforderung beruhend auf einer zeitlichen Anordnung der Leseanforderungen in der Warteschlange 122 für priorisiertes Lesen mit einer höheren Priorität verarbeitet werden. Die einheitenübergreifend verteilte Spuren mit einer hohen Priorität auslagernde Speicherverwaltungseinheit 22 benötigt die alten Spuren und die Paritätsdaten zum einheitenübergreifenden Verteilen der Spuren und der Paritätsdaten über die Speichereinheiten 200 mit sequenziellem Zugriff zu einem späteren Zeitpunkt, wenn die aktualisierte Spur bereit zum Auslagern ist. In einem derartigen Fall kann die Speicherverwaltungseinheit 22 die alten Spuren und die alte Parität mit einer niedrigeren Priorität als die hohe Priorität, mit der die Speicherverwaltungseinheit 22 aktualisierte Spuren aus dem ersten Cachespeicher 14 auslagert, vorab laden. Wenn die Speicherverwaltungseinheit 22 jedoch die aktualisierten Spuren auslagern muss, wird die Leseanforderung für die vorab geladenen Spuren ausgegeben, die durch eine hohe Priorität gekennzeichnet ist, die höher ist als die Priorität, mit der die Anforderung zum Vorabladen gesendet wurde.
  • Beschriebene Ausführungsformen stellen Techniken zum Ermöglichen der Verwendung einer Cache-Einheit auf zweiter Ebene zwischen einer primären oder auf erster Ebene befindlichen Cache-Einheit und einem Speicher zum Speichern von alten Spuren und Paritätsdaten in einem Stride aus den Speichereinheiten mit sequenziellem Zugriff, die verfügbar gemacht werden, wenn eine aktualisierte Spur in dem Stride ausgelagert werden muss, bereit. Die beschriebenen Ausführungsformen verringern die Leselatenzzeit beim Lesen der alten Daten und alten Parität zum Zeitpunkt des Auslagerns, da die alten Spuren und die alte Parität mit einer niedrigeren Priorität vorab geladen werden, damit sie in einer Einheit mit schnellerem Zugriff verfügbar gemacht werden können, wenn sie zum Auslagern benötigt werden.
  • Weitere Vorteile werden dadurch realisiert, dass ein Anzeigen der Priorität der Leseanforderungen ermöglicht wird, so dass das Verarbeiten von Leseanforderungen mit hoher Priorität und der Anforderungen zum Vorabladen mit niedrigerer Priorität als Folge von Arbeitsschritten zum Auslagern von veränderten Spuren an das Speichermedium 114 mit sequenziellem Zugriff nicht übermäßig verzögert wird. Auf diese Weise können Leseanforderungen mit hoher Priorität mit einer höheren Priorität als Leseanforderungen mit einer niedrigeren Priorität, als Anforderungen zum Vorabladen und als Auslagerungsanforderungen zum Auslagern von veränderten Spuren für in der nichtflüchtigen Speichereinheit 104 zwischengespeicherte Schreibanforderungen verarbeitet werden.
  • Des Weiteren werden die Leseanforderungen mit niedrigerer Priorität in der Anforderungswarteschlange 116 mit den beschriebenen Ausführungsformen beruhend auf einer räumlichen Anordnung der empfangenen Leseanforderungen mit niedrigerer Priorität und der Anforderungen zum Auslagern für Schreibanforderungen in der Anforderungswarteschlange verarbeitet. Leseanforderungen und Anforderungen zum Vorabladen mit hoher Priorität für alte Spuren und eine alte Parität werden beruhend auf einer zeitlichen Anordnung der empfangenen Leseanforderungen mit hoher Priorität verarbeitet. Veränderte Spuren für Schreibanforderungen, Anforderungen zum Vorabladen und Leseanforderungen mit niedriger Priorität werden jedoch beruhend auf einer räumlichen Anordnung der Schreibanforderungen, der Leseanforderungen mit niedriger Priorität, der Anforderungen zum Vorabladen und einer aktuellen Position des Lese/Schreib-Kopfes 120 verarbeitet, um die Such- und Latenzzeitverzögerungen für die Lese- und Schreibanforderungen zu optimieren.
  • Die beschriebenen Arbeitsschritte können als Verfahren, Vorrichtung oder Computerprogrammprodukt umgesetzt werden, indem übliche Programmierungs- und/oder Ingenieurtechniken zum Herstellen von Software, Firmware, Hardware oder einer Kombination daraus verwendet werden. Entsprechend können Aspekte der Ausführungsformen die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, im Speicher befindliche Software, Mikrocode, usw.) oder einer Software- und Hardware-Aspekte kombinierenden Ausführungsform annehmen, die hierin alle allgemein als „Schaltkreis”, „Modul” oder „System” bezeichnet sein können. Des Weiteren können Aspekte der Ausführungsformen die Form eines auf einem oder mehreren durch einen Computer lesbaren Medien enthaltenen Computerprogrammprodukts annehmen, die durch einen Computer lesbaren Programmcode enthalten.
  • Es kann jede Kombination aus einem oder mehreren durch einen Computer lesbaren Medien verwendet werden. Bei dem durch einen Computer lesbaren Medium kann es sich um ein durch einen Computer lesbares Signalmedium oder ein durch einen Computer lesbares Speichermedium handeln. Bei einem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu konkreteren Beispielen (eine nicht erschöpfende Liste) des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine mobile Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein Lichtwellenleiter, ein mobiler Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination daraus. In dem Kontext dieses Dokuments kann es sich bei einem durch einen Computer lesbaren Speichermedium um jedes beliebige physische Medium handeln, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Ausführung von Anweisungen verwendet wird.
  • Ein durch einen Computer lesbares Signalmedium kann ein weitergeleitetes Datensignal mit darin enthaltenem durch einen Computer lesbarem Programmcode aufweisen, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein derartiges weitergeleitetes Signal kann eine beliebige Form aus einer Vielfalt an Formen annehmen, darunter elektromagnetische, optische bzw. jede geeignete Kombination daraus, jedoch nicht darauf beschränkt. Bei einem durch einen Computer lesbaren Signalmedium kann es sich um ein beliebiges durch einen Computer lesbares Medium handeln, das kein durch einen Computer lesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weiterleiten bzw. transportieren kann.
  • Auf einem durch einen Computer lesbaren Medium enthaltener Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, darunter drahtlos, drahtgebunden, Lichtwellenleiter-Kabel, HF usw. oder jede geeignete Kombination daraus, jedoch nicht auf diese beschränkt.
  • Computerprogrammcode für das Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o. ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters).
  • Aspekte der vorliegenden Erfindung werden oben unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Funktionsschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern durch Computerprogrammanweisungen ausgeführt werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen.
  • Diese Computerprogrammanweisungen können auch auf einem durch einen Computer lesbaren Medium gespeichert sein, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass die auf dem durch einen Computer lesbaren Medium gespeicherten Anweisungen ein Herstellungsprodukt herstellen, darunter Anweisungen, welche die/den in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebene(n) Funktion/Schritt umsetzen.
  • Die Computerprogrammanweisungen können auch auf einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung bzw. andere Einheiten geladen werden, um das Ausführen einer Folge von Prozessschritten auf dem Computer, der anderen programmierbaren Vorrichtung bzw. den anderen Einheiten zu veranlassen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Verfahren zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktionen/Schritte erzeugen.
  • Die Begriffe „eine Ausführungsform”, „Ausführungsform”, „Ausführungsformen”, „die Ausführungsform”, „die Ausführungsformen”, „eine oder mehrere Ausführungsformen”, „einige Ausführungsformen” und „eine Ausführungsform” bedeuten „eine oder mehrere (aber nicht alle) Ausführungsformen der vorliegenden Erfindung(en)”, soweit nicht ausdrücklich anderweitig angegeben.
  • Die Begriffe „darunter”, „aufweisend”, „mit” und Abwandlungen davon bedeuten „aufweisend, ohne darauf beschränkt zu sein”, soweit nicht ausdrücklich anderweitig angegeben.
  • Die aufgezählte Auflistung von Gegenständen bedeutet nicht, dass sich eine oder alle der Gegenstände gegenseitig ausschließen, soweit nicht ausdrücklich anderweitig angegeben.
  • Die Begriffe „ein”, „eine” und „der”, „die”, „das” bedeuten „ein/eine/eines oder mehrere”, soweit nicht ausdrücklich anderweitig angegeben.
  • Einheiten, die miteinander Daten austauschen, müssen nicht in ständigem Datenaustausch miteinander stehen, soweit nicht ausdrücklich anderweitig angegeben. Außerdem können Einheiten, die miteinander Daten austauschen, direkt oder indirekt über einen oder mehrere Vermittler Daten austauschen.
  • Eine Beschreibung einer Ausführungsform mit mehreren Komponenten, die miteinander Daten austauschen, bedeutet nicht, dass alle derartigen Komponenten benötigt werden. Im Gegenteil wird eine Vielfalt von optionalen Komponenten beschrieben, um die große Vielfalt möglicher Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
  • Prozessschritte, Verfahrensschritte, Algorithmen und dergleichen können des Weiteren zwar möglicherweise aufeinander folgend beschrieben sein, derartige Prozesse, Verfahren und Algorithmen können jedoch so konfiguriert sein, dass sie in anderen Reihenfolgen ablaufen. Anders ausgedrückt, jeder beliebige Ablauf bzw. jede beliebige Reihenfolge von Schritten, die möglicherweise beschrieben sind, deutet nicht unbedingt auf eine Bedingung hin, dass die Schritte in dieser Reihenfolge durchzuführen sind. Die hierin beschriebenen Schritte von Prozessen können in jeder beliebigen praktischen Reihenfolge durchgeführt werden. Des Weiteren können einige Schritte gleichzeitig durchgeführt werden.
  • Wenn eine einzelne Einheit oder ein einzelner Artikel hierin beschrieben ist, ist ohne Weiteres ersichtlich, dass an Stelle einer einzelnen Einheit/eines einzelnen Artikels mehr als eine Einheit/ein Artikel (unabhängig davon, ob diese zusammenwirken) verwendet werden können. Gleichermaßen ist ohne Weiteres ersichtlich, dass, wenn hierin mehr als eine Einheit oder ein Artikel beschrieben sind (unabhängig davon, ob diese zusammenarbeiten), an Stelle der/des mehr als einen Einheit oder einen Artikels eine einzelne Einheit/ein einzelner Artikel verwendet werden können oder dass an Stelle der gezeigten Anzahl von Einheiten oder Programmen eine unterschiedliche Anzahl von Einheiten/Artikeln verwendet werden kann. Die Funktionalität und/oder die Eigenschaften einer Einheit können alternativ durch eine oder mehrere andere Einheiten ausgeführt werden, die nicht ausdrücklich als eine derartige Funktionalität/Eigenschaften aufweisend beschrieben sind. Somit müssen andere Ausführungsformen der vorliegenden Erfindung nicht unbedingt die Einheit selbst aufweisen.
  • Die veranschaulichten Arbeitsschritte aus den 12 bis 14 zeigen bestimmte Ereignisse, die in einer bestimmten Reihenfolge eintreten. In alternativen Ausführungsformen können bestimmte Arbeitsschritte in einer unterschiedlichen Reihenfolge durchgeführt, abgewandelt oder entfernt werden. Außerdem können der oben beschriebenen Logik Schritte hinzugefügt werden, ohne von den beschriebenen Ausführungsformen abzuweichen. Des Weiteren können hierin beschriebene Arbeitsschritte nacheinander stattfinden oder bestimmte Arbeitsschritte können parallel verarbeitet werden. Ferner können Arbeitsschritte durch eine einzelne Verarbeitungseinheit oder durch verteilte Verarbeitungseinheiten durchgeführt werden.
  • Die vorstehende Beschreibung verschiedener Ausführungsformen der Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung aufgeführt. Sie soll nicht gesamthaft stehen für bzw. begrenzt sein auf die Erfindung in der konkret beschriebenen Form. Angesichts der obigen Lehren sind viele Änderungen und Abwandlungen möglich. Es ist beabsichtigt, dass der Umfang der Erfindung nicht durch diese ausführliche Beschreibung beschränkt wird, sondern durch die hierzu beigefügten Ansprüche. Die oben aufgeführte(n) Beschreibung, Beispiele und Daten stellen eine vollständige Beschreibung des Herstellens und Verwendens der Zusammensetzung der Erfindung bereit. Da viele Ausführungsformen der Erfindung möglich sind, ohne von dem Umfang der Erfindung abzuweichen, befindet sich die Erfindung in den nachfolgend beigefügten Ansprüchen.

Claims (34)

  1. Computerprogrammprodukt zum Verarbeiten einer Gruppe von Datenspuren und Paritätsdaten, die mindestens einer Speichereinheit mit sequenziellem Zugriff zugehörig sind und mit einer ersten Cache-Einheit und einer zweiten Cache-Einheit Daten austauschen, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, auf dem ein durch einen Computer lesbarer Programmcode enthalten ist, der ausgeführt wird, um Arbeitsschritte durchzuführen, wobei die Arbeitsschritte aufweisen: Empfangen einer Schreibanforderung, die mindestens eine aktualisierte Spur für die Gruppe von Spuren enthält; Speichern der mindestens einen aktualisierten Spur unter Verwendung der ersten Cache-Einheit; Senden einer Anforderung zum Vorabladen an die mindestens eine Speichereinheit mit sequenziellem Zugriff, um der Gruppe von Spuren zugehörige Spuren vorab in die zweite Cache-Einheit zu laden; Erzeugen einer Leseanforderung, um die vorab geladenen Spuren nach dem Senden der Anforderung zum Vorabladen zu lesen; Speichern der der Leseanforderung von der zweiten Cache-Einheit zurückgesendeten gelesenen vorab geladenen Spuren unter Verwendung der ersten Cache-Einheit; und Berechnen neuer Paritätsdaten aus der mindestens einen aktualisierten Spur und den gelesenen vorab geladenen Spuren.
  2. Computerprogrammprodukt nach Anspruch 1, wobei die Arbeitsschritte ferner aufweisen: Auslagern der Gruppe von Spuren, welche die aktualisierte Spur und die gelesenen vorab geladenen Spuren aufweisen, und der neuen Paritätsdaten an die mindestens eine Speichereinheit mit sequenziellem Zugriff, wobei die gelesenen vorab geladenen Spuren die Spuren in der Gruppe aufweisen, bei denen es sich nicht um die mindestens eine aktualisierte Spur handelt, die der mindestens einen Speichereinheit mit sequenziellem Zugriff zugehörig ist.
  3. Computerprogrammprodukt nach Anspruch 1 oder Anspruch 2, wobei die Anforderung zum Vorabladen als Reaktion auf das Empfangen der Schreibanforderung erzeugt wird.
  4. Computerprogrammprodukt nach einem der vorhergehenden Ansprüche, wobei die Anforderung zum Vorabladen dazu bestimmt ist, in der Speichereinheit mit sequenziellem Zugriff mit einer ersten Priorität verarbeitet zu werden, und wobei die Leseanforderung dazu bestimmt ist, mit einer zweiten Priorität in der Speichereinheit mit sequenziellem Zugriff verarbeitet zu werden, wobei die erste Priorität ein Verarbeiten mit einer niedrigeren Priorität in der Speichereinheit mit sequenziellem Zugriff als die höhere Priorität aufweist.
  5. Computerprogrammprodukt nach Anspruch 4, wobei die Anforderung zum Vorabladen dazu bestimmt ist, in der Speichereinheit mit sequenziellem Zugriff gemäß einer räumlichen Anordnung von physischen Positionen verarbeitet zu werden, an denen Spuren mit einer ersten Priorität unter Verwendung der Speichereinheit mit sequenziellem Zugriff gespeichert sind, und wobei die Leseanforderung dazu bestimm ist, in der Speichereinheit mit sequenziellem Zugriff gemäß einer zeitlichen Anordnung von Spuren mit einer zweiten Priorität in der Speichereinheit mit sequenziellem Zugriff verarbeitet zu werden.
  6. Computerprogrammprodukt nach einem der vorhergehenden Ansprüche, wobei die erste und die zweite Cache-Einheit einer Speichersteuereinheit zugehörig sind, die sich außerhalb der Speichereinheit mit sequenziellem Zugriff befindet, wobei die Arbeitsschritte ferner aufweisen: Verarbeiten der Leseanforderung zum Ermitteln, ob die vorab geladenen Spuren der zweiten Cache-Einheit zugehörig sind; Befördern der vorab geladenen Spuren von der zweiten Cache-Einheit an die erste Cache-Einheit als Reaktion auf das Feststellen, dass die vorab geladenen Spuren der zweiten Cache-Einheit zugehörig sind; Übertragen der Leseanforderung an die mindestens eine Speichereinheit mit sequenziellem Zugriff als Reaktion auf das Feststellen, dass die vorab geladenen Spuren nicht der zweiten Cache-Einheit zugehörig sind; und Speichern der von der Speichereinheit mit sequenziellem Zugriff als Reaktion auf die an die Speichereinheit mit sequenziellem Zugriff übertragene Leseanforderung zurückgesendeten vorab geladenen Spuren unter Verwendung der ersten Cache-Einheit.
  7. Computerprogrammprodukt nach einem der vorhergehenden Ansprüche, wobei die zweite Cache-Einheit eine der Speichereinheit mit sequenziellem Zugriff zugehörige nichtflüchtige Speichereinheit aufweist und die erste Cache-Einheit einer Speichersteuereinheit zugehörig ist, die sich außerhalb der Speichereinheit mit sequenziellem Zugriff befindet.
  8. Computerprogrammprodukt nach einem der vorhergehenden Ansprüche, wobei es sich bei der ersten Cache-Einheit um eine Einheit mit schnellerem Zugriff als die zweite Cache-Einheit handelt.
  9. Computerprogrammprodukt nach einem der vorhergehenden Ansprüche, wobei die Gruppe von Spuren einen Stride von Spuren und Paritätsdaten aufweist, die über eine Vielzahl von Speichereinheiten mit sequenziellem Zugriff geschrieben wurden, wobei das Senden der Anforderung zum Vorabladen das Senden einer Anforderung zum Vorabladen an jede der Speichereinheiten mit sequenziellem Zugriff aufweist, welche die Spuren in dem Stride und die Paritätsdaten speichert.
  10. Computerprogrammprodukt nach Anspruch 9, wobei die Arbeitsschritte ferner aufweisen: Auslagern des Stride von Spuren, der die aktualisierte Spur und die gelesenen vorab geladenen Spuren aufweist, und der neuen Paritätsdaten an die Speichereinheiten mit sequenziellem Zugriff, welche die einheitenübergreifend verteilten Spuren und die Paritätsdaten speichern.
  11. Computerprogrammprodukt nach Anspruch 9 oder Anspruch 10, wobei jede der Speichereinheiten mit sequenziellem Zugriff eine zweite Cache-Einheit zum Speichern der vorab geladenen Spuren unter Verwendung des Stride aufweist, und wobei das Erzeugen der Leseanforderung das Senden einer Leseanforderung an jede der Speichereinheiten mit sequenziellem Zugriff aufweist, um von den den Speichereinheiten mit sequenziellem Zugriff zugehörigen zweiten Cache-Einheiten aus auf die vorab geladenen Spuren zuzugreifen.
  12. System zum Verarbeiten einer Gruppe von Datenspuren und Paritätsdaten in mindestens einer Speichereinheit mit sequenziellem Zugriff, die mit einer ersten Cache-Einheit und einer zweiten Cache-Einheit Daten austauschen, aufweisend: ein Mittel zum Empfangen einer Schreibanforderung, die mindestens eine aktualisierte Spur für die Gruppe von Spuren enthält; ein Mittel zum Speichern der mindestens einen aktualisierten Spur unter Verwendung der ersten Cache-Einheit; ein Mittel zum Senden einer Anforderung zum Vorabladen an die mindestens eine Speichereinheit mit sequenziellem Zugriff, um der Gruppe von Spuren zugehörige Spuren vorab in die zweite Cache-Einheit zu laden; ein Mittel zum Erzeugen einer Leseanforderung, um die vorab geladenen Spuren als Reaktion darauf, dass die Anforderung zum Vorabladen gesendet wird, zu lesen; ein Mittel zum Speichern der der Leseanforderung von der zweiten Cache-Einheit zurückgesendeten gelesenen vorab geladenen Spuren unter Verwendung der ersten Cache-Einheit; und ein Mittel zum Berechnen neuer Paritätsdaten aus der mindestens einen aktualisierten Spur und den gelesenen vorab geladenen Spuren.
  13. System nach Anspruch 12, wobei die Arbeitsschritte ferner aufweisen: ein Mittel zum Auslagern der Gruppe von Spuren, welche die aktualisierte Spur und die gelesenen vorab geladenen Spuren aufweisen, und der neuen Paritätsdaten an die mindestens eine Speichereinheit mit sequenziellem Zugriff, wobei die gelesenen vorab geladenen Spuren die Spuren in der Gruppe aufweisen, bei denen es sich nicht um die mindestens eine aktualisierte Spur handelt, die der mindestens einen Speichereinheit mit sequenziellem Zugriff zugehörig ist.
  14. System nach Anspruch 12 oder Anspruch 13, wobei die Anforderung zum Vorabladen in der Lage ist, als Reaktion auf das Empfangen der Schreibanforderung erzeugt zu werden.
  15. System nach einem der Ansprüche 12 bis 14, wobei die Anforderung zum Vorabladen in der Lage ist, so gekennzeichnet zu werden, dass sie in der Speichereinheit mit sequenziellem Zugriff mit einer ersten Priorität verarbeitet wird, und wobei die Leseanforderung in der Lage ist, so gekennzeichnet zu werden, dass sie mit einer zweiten Priorität in der Speichereinheit mit sequenziellem Zugriff verarbeitet wird, wobei die erste Priorität ein Verarbeiten mit einer niedrigeren Priorität in der Speichereinheit mit sequenziellem Zugriff als die höhere Priorität aufweist.
  16. System nach Anspruch 15, wobei die Anforderung zum Vorabladen in der Lage ist, so gekennzeichnet zu werden, dass sie in der Speichereinheit mit sequenziellem Zugriff gemäß einer räumlichen Anordnung von physischen Positionen verarbeitet wird, an denen Spuren mit einer ersten Priorität unter Verwendung der Speichereinheit mit sequenziellem Zugriff speicherbar sind, und wobei die Leseanforderung in der Lage ist, so gekennzeichnet zu werden, dass sie gemäß einer zeitlichen Anordnung von Spuren mit einer zweiten Priorität in der Speichereinheit mit sequenziellem Zugriff verarbeitet wird.
  17. System nach einem der Ansprüche 12 bis 16, wobei die erste und die zweite Cache-Einheit in der Lage sind, einer Speichersteuereinheit zugewiesen zu werden, die sich außerhalb der Speichereinheit mit sequenziellem Zugriff befindet, wobei das System ferner aufweist: ein Mittel zum Verarbeiten der Leseanforderung zum Ermitteln, ob die vorab geladenen Spuren der zweiten Cache-Einheit zugehörig sind; ein Mittel zum Befördern der vorab geladenen Spuren von der zweiten Cache-Einheit an die erste Cache-Einheit als Reaktion auf eine Feststellung, dass die vorab geladenen Spuren der zweiten Cache-Einheit zugehörig sind; ein Mittel zum Übertragen der Leseanforderung an die mindestens eine Speichereinheit mit sequenziellem Zugriff als Reaktion auf eine Feststellung, dass die vorab geladenen Spuren nicht der zweiten Cache-Einheit zugehörig sind; und ein Mittel zum Speichern der von der Speichereinheit mit sequenziellem Zugriff als Reaktion auf die an die Speichereinheit mit sequenziellem Zugriff übertragene Leseanforderung zurückgesendeten vorab geladenen Spuren unter Verwendung der ersten Cache-Einheit.
  18. System nach einem der Ansprüche 12 bis 17, wobei die zweite Cache-Einheit eine der Speichereinheit mit sequenziellem Zugriff zugehörige nichtflüchtige Speichereinheit aufweist und die erste Cache-Einheit einer Speichersteuereinheit zugehörig ist, die sich außerhalb der Speichereinheit mit sequenziellem Zugriff befindet.
  19. System nach einem der Ansprüche 12 bis 18, wobei es sich bei der ersten Cache-Einheit um eine Einheit mit schnellerem Zugriff als die zweite Cache-Einheit handelt.
  20. System nach einem der Ansprüche 12 bis 19, wobei die Gruppe von Spuren einen Stride von Spuren und Paritätsdaten aufweist, die über eine Vielzahl von Speichereinheiten mit sequenziellem Zugriff geschrieben wurden, wobei das Mittel zum Senden der Anforderung zum Vorabladen ein Mittel zum Senden einer Anforderung zum Vorabladen an jede der Speichereinheiten mit sequenziellem Zugriff aufweist, die in der Lage ist, die Spuren in dem Stride und die Paritätsdaten zu speichern.
  21. System nach Anspruch 20, ferner aufweisend: ein Mittel zum Auslagern des Stride von Spuren, der die aktualisierte Spur und die gelesenen vorab geladenen Spuren aufweist, und der neuen Paritätsdaten an die Speichereinheiten mit sequenziellem Zugriff, welche in der Lage ist, die einheitenübergreifend verteilten Spuren und die Paritätsdaten zu speichern.
  22. System nach Anspruch 20 oder Anspruch 21, wobei jede der Speichereinheiten mit sequenziellem Zugriff eine zweite Cache-Einheit aufweist, die in der Lage ist, die vorab geladenen Spuren unter Verwendung des Stride zu speichern, und wobei das Mittel zum Erzeugen der Leseanforderung ein Mittel zum Senden einer Leseanforderung an jede der Speichereinheiten mit sequenziellem Zugriff aufweist, um von den den Speichereinheiten mit sequenziellem Zugriff zugehörigen zweiten Cache-Einheiten aus auf die vorab geladenen Spuren zuzugreifen.
  23. System nach einem der Ansprüche 12 bis 22, wobei die zweite Cache-Einheit der Speichereinheit mit sequenziellem Zugriff zugehörig ist.
  24. Verfahren zum Verarbeiten einer Gruppe von Datenspuren und Paritätsdaten, die mindestens einer Speichereinheit mit sequenziellem Zugriff zugehörig sind und mit einer ersten Cache-Einheit und einer zweiten Cache-Einheit Daten austauschen, wobei das Verfahren die folgenden Schritte aufweist: Empfangen einer Schreibanforderung, die mindestens eine aktualisierte Spur für die Gruppe von Spuren enthält; Speichern der mindestens einen aktualisierten Spur unter Verwendung der ersten Cache-Einheit; Senden einer Anforderung zum Vorabladen an die mindestens eine Speichereinheit mit sequenziellem Zugriff, um der Gruppe von Spuren zugehörige Spuren vorab in die zweite Cache-Einheit zu laden; Erzeugen einer Leseanforderung, um die vorab geladenen Spuren nach dem Senden der Anforderung zum Vorabladen zu lesen; Speichern der der Leseanforderung von der zweiten Cache-Einheit zurückgesendeten gelesenen vorab geladenen Spuren unter Verwendung der ersten Cache-Einheit; und Berechnen neuer Paritätsdaten aus der mindestens einen aktualisierten Spur und den gelesenen vorab geladenen Spuren.
  25. Verfahren nach Anspruch 24, ferner aufweisend die folgenden Schritte: Auslagern der Gruppe von Spuren, welche die aktualisierte Spur und die gelesenen vorab geladenen Spuren aufweisen, und der neuen Paritätsdaten an die mindestens eine Speichereinheit mit sequenziellem Zugriff, wobei die gelesenen vorab geladenen Spuren die Spuren in der Gruppe aufweisen, bei denen es sich nicht um die mindestens eine aktualisierte Spur handelt, die der mindestens einen Speichereinheit mit sequenziellem Zugriff zugehörig ist.
  26. Verfahren nach Anspruch 24 oder Anspruch 25, wobei die Anforderung zum Vorabladen als Reaktion auf das Empfangen der Schreibanforderung erzeugt wird.
  27. Verfahren nach einem der Ansprüche 24 bis 26, wobei die Anforderung zum Vorabladen dazu bestimmt ist, in der Speichereinheit mit sequenziellem Zugriff mit einer ersten Priorität verarbeitet zu werden, und wobei die Leseanforderung dazu bestimmt ist, mit einer zweiten Priorität in der Speichereinheit mit sequenziellem Zugriff verarbeitet zu werden, wobei die erste Priorität ein Verarbeiten mit einer niedrigeren Priorität in der Speichereinheit mit sequenziellem Zugriff als die höhere Priorität aufweist.
  28. Verfahren nach Anspruch 27, wobei die Anforderung zum Vorabladen dazu bestimmt ist, in der Speichereinheit mit sequenziellem Zugriff gemäß einer räumlichen Anordnung von physischen Positionen verarbeitet zu werden, an denen Spuren mit einer ersten Priorität unter Verwendung der Speichereinheit mit sequenziellem Zugriff gespeichert sind, und wobei die Leseanforderung dazu bestimmt ist, in der Speichereinheit mit sequenziellem Zugriff gemäß einer zeitlichen Anordnung von Spuren mit einer zweiten Priorität in der Speichereinheit mit sequenziellem Zugriff verarbeitet wird.
  29. Verfahren nach einem der Ansprüche 24 bis 28, wobei die erste und die zweite Cache-Einheit einer Speichersteuereinheit zugehörig sind, die sich außerhalb der Speichereinheit mit sequenziellem Zugriff befindet, das ferner die folgenden Schritte aufweist: Verarbeiten der Leseanforderung zum Ermitteln, ob die vorab geladenen Spuren der zweiten Cache-Einheit zugehörig sind; Befördern der vorab geladenen Spuren von der zweiten Cache-Einheit an die erste Cache-Einheit als Reaktion auf das Feststellen, dass die vorab geladenen Spuren der zweiten Cache-Einheit zugehörig sind; Übertragen der Leseanforderung an die mindestens eine Speichereinheit mit sequenziellem Zugriff als Reaktion auf das Feststellen, dass die vorab geladenen Spuren nicht der zweiten Cache-Einheit zugehörig sind; und Speichern der von der Speichereinheit mit sequenziellem Zugriff als Reaktion auf die an die Speichereinheit mit sequenziellem Zugriff übertragene Leseanforderung zurückgesendeten vorab geladenen Spuren unter Verwendung der ersten Cache-Einheit.
  30. Verfahren nach einem der Ansprüche 24 bis 29, wobei die zweite Cache-Einheit eine der Speichereinheit mit sequenziellem Zugriff zugehörige nichtflüchtige Speichereinheit aufweist und die erste Cache-Einheit einer Speichersteuereinheit zugehörig ist, die sich außerhalb der Speichereinheit mit sequenziellem Zugriff befindet.
  31. Verfahren nach einem der Ansprüche 24 bis 30, wobei es sich bei der ersten Cache-Einheit um eine Einheit mit schnellerem Zugriff als die zweite Cache-Einheit handelt.
  32. Verfahren nach einem der Ansprüche 24 bis 31, wobei die Gruppe von Spuren einen Stride von Spuren und Paritätsdaten aufweist, die über eine Vielzahl von Speichereinheiten mit sequenziellem Zugriff geschrieben wurden, wobei das Senden der Anforderung zum Vorabladen das Senden einer Anforderung zum Vorabladen an jede der Speichereinheiten mit sequenziellem Zugriff aufweist, welche die Spuren in dem Stride und die Paritätsdaten speichert.
  33. Verfahren nach Anspruch 32, ferner aufweisend die folgenden Schritte: Auslagern des Stride von Spuren, der die aktualisierte Spur und die gelesenen vorab geladenen Spuren aufweist, und der neuen Paritätsdaten an die Speichereinheiten mit sequenziellem Zugriff, welche die einheitenübergreifend verteilten Spuren und die Paritätsdaten speichern.
  34. Verfahren nach Anspruch 32 oder Anspruch 33, wobei jede der Speichereinheiten mit sequenziellem Zugriff eine zweite Cache-Einheit zum Speichern der vorab geladenen Spuren unter Verwendung des Stride aufweist, und wobei das Erzeugen der Leseanforderung das Senden einer Leseanforderung an jede der Speichereinheiten mit sequenziellem Zugriff aufweist, um von den den Speichereinheiten mit sequenziellem Zugriff zugehörigen zweiten Cache-Einheiten aus auf die vorab geladenen Spuren zuzugreifen.
DE112012002615.2T 2011-07-22 2012-07-02 Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren Active DE112012002615B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/189,285 US8631190B2 (en) 2011-07-22 2011-07-22 Prefetching data tracks and parity data to use for destaging updated tracks
USUS-13/189,285 2011-07-22
US13/189,285 2011-07-22
PCT/IB2012/053351 WO2013014555A1 (en) 2011-07-22 2012-07-02 Prefetching data tracks and parity data to use for destaging updated tracks

Publications (2)

Publication Number Publication Date
DE112012002615T5 true DE112012002615T5 (de) 2014-12-11
DE112012002615B4 DE112012002615B4 (de) 2021-06-02

Family

ID=47556623

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112012002615.2T Active DE112012002615B4 (de) 2011-07-22 2012-07-02 Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren

Country Status (4)

Country Link
US (2) US8631190B2 (de)
CN (1) CN103703440B (de)
DE (1) DE112012002615B4 (de)
WO (1) WO2013014555A1 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566530B2 (en) 2011-07-22 2013-10-22 International Business Machines Corporation Prefetching source tracks for destaging updated tracks in a copy relationship
US8650354B2 (en) 2011-07-22 2014-02-11 International Business Machines Corporation Prefetching tracks using multiple caches
JP6323445B2 (ja) 2013-03-15 2018-05-16 日本電気株式会社 ストレージ装置と方法及びプログラム
US9367676B2 (en) * 2013-03-22 2016-06-14 Nok Nok Labs, Inc. System and method for confirming location using supplemental sensor and/or location data
US9423981B2 (en) 2013-04-16 2016-08-23 International Business Machines Corporation Logical region allocation with immediate availability
US9329938B2 (en) 2013-04-16 2016-05-03 International Business Machines Corporation Essential metadata replication
US9619404B2 (en) 2013-04-16 2017-04-11 International Business Machines Corporation Backup cache with immediate availability
US9104332B2 (en) 2013-04-16 2015-08-11 International Business Machines Corporation Managing metadata and data for a logical volume in a distributed and declustered system
US9298398B2 (en) 2013-04-16 2016-03-29 International Business Machines Corporation Fine-grained control of data placement
US9298617B2 (en) * 2013-04-16 2016-03-29 International Business Machines Corporation Parallel destaging with replicated cache pinning
US9104597B2 (en) 2013-04-16 2015-08-11 International Business Machines Corporation Destaging cache data using a distributed freezer
WO2016092364A1 (en) * 2014-12-09 2016-06-16 Marvell Israel (M.I.S.L.) Ltd. System and method for performing simultaneous read and write operations in memory
CN107787485B (zh) 2015-04-30 2021-04-09 马维尔以色列(M.I.S.L.)有限公司 多读取和写入端口存储器
US11403173B2 (en) 2015-04-30 2022-08-02 Marvell Israel (M.I.S.L) Ltd. Multiple read and write port memory
US10055278B2 (en) * 2015-10-30 2018-08-21 International Business Machines Corporation Autonomic parity exchange in data storage systems
CN106960675B (zh) * 2016-01-08 2019-07-05 株式会社东芝 磁盘装置及写入处理方法
CN105844178B (zh) * 2016-04-21 2019-05-14 浪潮电子信息产业股份有限公司 一种jbod海量存储数据安全的方法
CN106776363B (zh) * 2016-12-27 2020-05-12 苏州浪潮智能科技有限公司 缓存性能优化方法、系统及数据写入方法
US10387321B2 (en) 2017-08-01 2019-08-20 International Business Machines Corporation Securing exclusive access to a copy of a metadata track via a process while the metadata track is held in a shared mode by another process
US10819647B2 (en) * 2017-12-06 2020-10-27 Marvell Israel (M.I.S.L) Ltd. Network device having reduced latency
CN110609796B (zh) * 2018-06-15 2023-07-21 伊姆西Ip控股有限责任公司 用于存储系统中预取的方法、设备和计算机程序产品
US11226741B2 (en) * 2018-10-31 2022-01-18 EMC IP Holding Company LLC I/O behavior prediction based on long-term pattern recognition
US11467772B2 (en) * 2020-04-22 2022-10-11 International Business Machines Corporation Preemptive staging for full-stride destage
US11294812B2 (en) * 2020-08-04 2022-04-05 International Business Machines Corporation Obtaining cache resources for expected writes to tracks in a write set after the cache resources were released for the tracks in the write set

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381677B1 (en) * 1998-08-19 2002-04-30 International Business Machines Corporation Method and system for staging data into cache
US6449697B1 (en) 1999-04-23 2002-09-10 International Business Machines Corporation Prestaging data into cache in preparation for data transfer operations
US6611901B1 (en) 1999-07-02 2003-08-26 International Business Machines Corporation Method, system, and program for maintaining electronic data as of a point-in-time
US7607000B1 (en) 2003-05-13 2009-10-20 Apple Inc. Method for booting an operating system
US7464246B2 (en) * 2004-09-30 2008-12-09 International Business Machines Corporation System and method for dynamic sizing of cache sequential list
US7313654B2 (en) 2004-10-27 2007-12-25 Xiv Ltd Method for differential discarding of cached data in distributed storage systems
JP4435705B2 (ja) * 2005-03-14 2010-03-24 富士通株式会社 記憶装置、その制御方法及びプログラム
WO2010083586A1 (en) 2009-01-21 2010-07-29 Gennum Corporation Crosspoint switch for use in video and other applications
US8195891B2 (en) * 2009-03-30 2012-06-05 Intel Corporation Techniques to perform power fail-safe caching without atomic metadata
CN101833422B (zh) 2010-03-08 2012-01-04 成都市华为赛门铁克科技有限公司 磁盘阵列的数据处理方法及设备
US8386714B2 (en) 2010-06-29 2013-02-26 International Business Machines Corporation Reducing write amplification in a cache with flash memory used as a write cache
CN103181011B (zh) 2010-11-01 2015-09-30 三菱丽阳株式会社 多孔电极基材及其制法、多孔电极基材前体片、膜-电极接合体、以及固体高分子型燃料电池
US8650354B2 (en) 2011-07-22 2014-02-11 International Business Machines Corporation Prefetching tracks using multiple caches

Also Published As

Publication number Publication date
WO2013014555A1 (en) 2013-01-31
CN103703440A (zh) 2014-04-02
DE112012002615B4 (de) 2021-06-02
CN103703440B (zh) 2016-08-17
US20130024613A1 (en) 2013-01-24
US8775729B2 (en) 2014-07-08
US20130024627A1 (en) 2013-01-24
US8631190B2 (en) 2014-01-14

Similar Documents

Publication Publication Date Title
DE112012002615B4 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE112013001284B4 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE112012001302B4 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE112012001808B4 (de) Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher
DE60035151T2 (de) Hardware-Anordnung zur Verwaltung von Cachespeicherstrukturen in einem Datenspeichersystem
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE112012004540B4 (de) Selektive Speicherplatzfreigabe eines Datenspeichers unter Verwendung von Vergleichs- und Verlagerungskennzahlen
DE102013200032B4 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE112012004571B4 (de) Unterstützen von unvollständigen Datensegmenten in Flash-Cache-Speichern
DE602004002216T2 (de) Verfahren, system und programm für eine inkrementelle virtuelle kopie
DE112012004798B4 (de) Anpassung der Auslagerungsgeschwindigkeit auf Grundlage von Anforderungen an Lese- und Schreib-Antwortzeiten
DE112012004209T5 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE102013209318B4 (de) Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE112010004947T5 (de) Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE102012216022A1 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE102016001682A1 (de) Leistungsausgeglichene Datenspeichervorrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0003060000

Ipc: G06F0012080000

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final