-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung bezieht sich auf ein Computerprogrammprodukt, System und Verfahren zur Verwendung von Spursperren (Track Locks) und Schrittweitengruppensperren (Stride Group Locks) zur Verwaltung von Cacheoperationen.
-
HINTERGRUND
-
Ein Speichercontroller unterhält einen oder mehrere Einheitenadapter als Schnittstelle zu einem Array von Speichereinheiten, z.B. Speichereinheiten wie ein RAID-Array (Redundant Array of Independent Disks). Die Einheitenadapter verwalten Anforderungen an die angeschlossenen Speichereinheiten und implementieren den RAID-Controller und Funktionen für den Speichercontroller. In einem NVMe (Nonvolatile Memory Express) können NVMe-Controller auf Lese- und Schreibanforderungen an die Speichereinheiten in Eingabenwarteschlangen (Submission Queues) in einem Host-System zugreifen und RAID-Funktionalität umfassen, um Daten über Speichereinheiten wie Halbleiterdatenträger (SSDs) zu verteilen.
-
Es besteht in diesem Bereich ein Bedarf an verbesserten Technologien für ein Schreiben und Lesen von Daten über ein Array von Speichereinheiten, z.B. ein RAID-Array, in Umgebungen, in denen mehrere Prozessorkerne in Spuren in Schrittweitengruppen im Cache lesen und schreiben, die in den Speichereinheiten gespeichert sind.
-
KU RZDARSTELLU NG
-
Eine erste Ausführungsform stellt ein Computerprogrammprodukt, System und Verfahren bereit, um mittels Spursperren und Schrittweitengruppensperren Cacheoperationen zu verwalten. Eine Gruppe von Spuren von den Speichereinheiten wird in einem Cache gespeichert. Exklusive Spursperren für Spuren in der Gruppe im Cache werden für Schreibvorgänge auf die Spuren in der Gruppe im Cache gewährt, wobei exklusive Spursperren gleichzeitig für Schreibvorgänge auf verschiedene Spuren im Cache vorgehalten werden können. Eine exklusive Gruppensperre für die Gruppe von Spuren im Cache wird gewährt, um die Spuren in der Gruppe aus dem Cache in die Speichereinheiten auszulagern. Die exklusive Gruppensperre wird aufgehoben, wenn das Auslagern der Spuren in der Gruppe im Cache in die Speichereinheiten ausgeführt ist.
-
Die erste Ausführungsform stellt Verbesserungen in der Computertechnologie bereit, so dass mehrere exklusive Spursperren für Schreibvorgänge gleichzeitig vorgehalten werden können, damit auf verschiedene Spuren im Cache geschrieben werden kann. Ferner wird eine exklusive Gruppensperre für eine Gruppe von Spuren für ein Auslagern der Gruppe von Spuren gewährt. Andere Prozesse, die versuchen, auf die auszulagernden Spuren zuzugreifen, werden blockiert, solange die exklusive Gruppensperre für einen Auslagerungsprozess vorgehalten wird. Durch das Aufheben der exklusiven Gruppensperre für das Auslagern können die exklusiven Spursperren für gleichzeitige Schreibzugriffe auf die Spuren in der Gruppe gewährt werden. Somit stellen die beschriebenen Ausführungsformen Verbesserungen für ein Verwalten und Ermöglichen gleichzeitiger Schreibvorgänge auf verschiedene Spuren in einer Gruppe von Spuren bereit, z.B. einer Schrittweitengruppe, und ermöglichen gleichzeitig ein Sperren aller Spuren in der Gruppe für eine Auslagerungsoperation.
-
Eine zweite Ausführungsform kann optional ferner umfassen: Empfangen eines Schreibvorgangs auf eine Zielspur in der Gruppe, Bestimmen, ob die exklusive Gruppensperre für die Gruppe vorgehalten wird, Gewähren einer exklusiven Spursperre für die Zielspur als Reaktion auf das Bestimmen, dass die exklusive Gruppensperre nicht vorgehalten wird, und erneutes Versuchen, auf die exklusive Spursperre für die Zielspur zuzugreifen, als Reaktion auf das Bestimmen, dass die exklusive Gruppensperre vorgehalten wird.
-
Bei der zweiten Ausführungsform wird ein Schreibvorgang auf eine Zielspur nur dann gewährt, wenn die exklusive Gruppensperre nicht für eine Auslagerungsoperation vorgehalten wird, um Schreibvorgänge auf Spuren zu verhindern, die an einer laufenden Auslagerungsoperation beteiligt sind. Dadurch werden Verbesserungen bereitgestellt hinsichtlich der Koordination von gleichzeitigen Schreibvorgängen auf verschiedene Spuren in einer Gruppe von Spuren mit Auslagerungsoperationen an der Gruppe von Spuren, um alle Spuren in der Gruppe auszulagern.
-
Eine dritte Ausführungsform kann optional ferner umfassen: Gewähren von geteilten Gruppensperren für Schreibvorgänge auf die Spuren in der Gruppe im Cache; Aufheben einer geteilten Gruppensperre für einen Schreibvorgang, wenn der Schreibvorgang auf eine Spur im Cache ausgeführt ist; und Bestimmen, ob geteilte Gruppensperren vorgehalten werden als Reaktion auf das Auslösen des Auslagerns der Gruppe von Spuren, wobei die exklusive Gruppensperre nur gewährt wird als Reaktion auf das Bestimmen, dass keine geteilten Gruppensperren für die auszulagernde Gruppe vorgehalten werden.
-
Mit der dritten Ausführungsform wird eine geteilte Gruppensperre für Schreibvorgänge gewährt, die gleichzeitig auf die Spuren in der Gruppe schreiben, auf die sich die geteilte Gruppensperre bezieht. Um eine Auslagerungsoperation weiter zu koordinieren, während gleichzeitige Schreibvorgänge stattfinden, verhindert eine von den Schreibvorgängen vorgehaltene geteilte Gruppensperre ein Auslösen einer Auslagerungsoperation, bis alle Schreibvorgänge ausgeführt sind, was dadurch angezeigt wird, dass für die Gruppe der auszulagernden Spuren keine geteilten Gruppensperren vorgehalten werden.
-
Eine vierte Ausführungsform kann optional ferner umfassen, dass das Auslagern der Gruppe von Spuren weiter aufweist: Bestimmen modifizierter Daten in Spuren in der Gruppe im Cache; Erzeugen einer Leseanforderung zum Hinzufügen zu einer Eingabenwarteschlange, die Daten für die modifizierten Daten und alte Paritätsdaten anzeigt, die die Gruppe aus mindestens einer der Speichereinheiten lesen soll, um sie in den Cache zu überführen; Berechnen neuer Paritätsdaten mittels der gelesenen Daten für die modifizierten Daten und der alten Paritätsdaten, die in den Cache überführt wurden; und Schreiben der neuen Paritätsdaten und der modifizierten Daten in den Cache in die mindestens eine der Speichereinheiten, wobei die exklusive Gruppensperre aufgehoben wird, wenn der Schreibvorgang der neuen Paritätsdaten und der modifizierten Daten in die mindestens eine der Speichereinheiten ausgeführt ist.
-
Die vierte Ausführungsform stellt Verbesserungen beim Berechnen von Paritätsdaten für Spuren in einer Gruppe bereit, indem sie eine Leseanforderung erzeugt zum Lesen modifizierter Daten und alter Paritätsdaten aus den Speichereinheiten, um sie in den Cache zu überführen und dann diese überführten Daten zur Berechnung neuer Paritätsdaten zu verwenden. Die exklusive Gruppensperre wird von der Auslagerungsoperation während der Berechnung der neuen Paritätsdaten vorgehalten und wird erst aufgehoben, wenn die neuen Paritätsdaten berechnet und in die Speichereinheiten geschrieben sind. Dadurch wird die Koordination der Auslagerungsoperation mit Schreibvorgängen auf die Spuren verbessert, indem Schreibvorgänge verhindert werden, bis alle modifizierten Daten für die Spuren und die neuen Paritätsdaten ausgelagert sind.
-
Eine fünfte Ausführungsform kann optional umfassen, dass das Schreiben der neuen Paritätsdaten und der modifizierten Daten ein Erzeugen einer Schreibanforderung aufweist, die der Eingabenwarteschlange hinzuzufügen ist und Daten für die modifizierten Daten und die neuen Paritätsdaten im Cache anzeigt, die aus dem Cache in die mindestens eine der Speichereinheiten zu übertragen sind.
-
Mit der fünften Ausführungsform wird der Eingabenwarteschlange eine Schreibanforderung hinzugefügt, um die modifizierten Daten und die neuen Paritätsdaten in den Cache zu schreiben und aus dem Cache in die Speichereinheiten zu übertragen. Ein solches Verwalten von Schreibanforderungen ist in Systemen nützlich, bei denen ein Controller eingesetzt wird, um auf Lese- und Schreibanforderungen aus einer Eingabenwarteschlange zuzugreifen, z.B. bei NVMe-Controllern, so dass der Controller das Lesen und Schreiben der modifizierten Daten und der Paritätsdaten für eine partielle Gruppenauslagerungsoperation ausführen kann, bei der nur die modifizierten Daten und die neuen Paritätsdaten in den Speicher geschrieben werden. Somit wird die Bandbreite zwischen dem Controller und dem System optimiert, da nur die modifizierten Daten und die neuen Paritätsdaten durch die Eingabenwarteschlange übertragen werden.
-
Eine sechste Ausführungsform kann optional umfassen, dass das Erzeugen der Leseanforderung aufweist: Bestimmen modifizierter Segmente von Spuren in der Gruppe; Zuordnen von Cache-Segmenten im Cache für die bestimmten modifizierten Segmente und Segmente für alte Paritätsdaten; und Erzeugen einer Liste, die die Segmente für die modifizierten Daten und die Paritätsdaten und Zielpositionen im Cache für die zugeordneten Cache-Segmente anzeigt, wobei die Liste mit der Leseanforderung bereitgestellt wird, um die aus den mindestens einer der Speichereinheiten zu lesenden Daten zu bestimmen und sie in die Zielpositionen im Cache zu schreiben.
-
Die sechste Ausführungsform verbessert die Effizienz von Operationen, Segmente für modifizierte Daten und die Paritätsdaten in den Cache zu überführen durch Erzeugen einer Liste, die die Segmente für die modifizierten Daten und die alten Paritätsdaten anzeigt, die mit einer Leseanforderung in der Eingabenwarteschlange bereitgestellt wird. Ein Controller kann auf die Eingabenwarteschlange zugreifen, um die Leseanforderung und die Liste zu verarbeiten, um Segmente für die modifizierten Daten und die alten Paritätsdaten in den Cache zu überführen und mittels dieser Segmente neue Paritätsdaten zu berechnen. Der Controller, z.B. ein NVMe-Controller, greift auf die Leseanforderung aus einer Eingabenwarteschlange zu, um Segmente zu überführen, die zur Berechnung der neuen Paritätsdaten benötigt werden. In den beschriebenen Ausführungsformen werden die Überführungsoperationen optimiert, indem nur die Segmente für modifizierte Daten in der partiellen Schrittweitenauslagerung überführt werden und keine unmodifizierten Segmente.
-
Eine siebte Ausführungsform stellt ein Computerprogrammprodukt, System und Verfahren für ein Verwalten von Eingabe-/Ausgabeanforderungen an Spuren in einem Cache bereit, die in einer Mehrzahl von Speichereinheiten durch eine Mehrzahl von Prozessorkernen gespeichert sind, die Programmcode in einem durch einen Computer lesbaren Speichermedium ausführen, um geteilte Schrittweitensperren für Schreibvorgänge auf Spuren in einer Schrittweitengruppe von Spuren zu gewähren, wobei die geteilten Schrittweitensperren Schreibvorgängen gewährt werden, die gleichzeitig auf verschiedene Spuren in der Schrittweitengruppe schreiben. Es wird bestimmt, ob noch ausstehende geteilte Schrittweitensperren für Schreibvorgänge vorhanden sind als Reaktion auf eine Auslagerungsanforderung zum Auslagern der Schrittweitengruppen von Spuren. Eine exklusive Schrittweitensperre wird für ein Auslagern einer Schrittweitengruppe von Spuren aus dem Cache in die Speichereinheiten gewährt als Reaktion auf das Bestimmen, dass es keine ausstehenden geteilten Schrittweitensperren für Schreibvorgänge gibt.
-
Die siebte Ausführungsform stellt eine verbesserte Caching-Technologie bereit, wenn mehrere Prozessorkerne auf Spuren in einer Schrittweitengruppe schreiben, indem den Prozessorkernen, die gleichzeitig auf verschiedene Spuren in der Schrittweitengruppe schreiben, geteilte Schrittweitensperren gewährt werden. Eine Auslagerungsanforderung kann erst dann ausgeführt werden, wenn eine exklusive Schrittweitengruppensperre gewährt wird, die nur dann gewährt werden kann, wenn es keine ausstehenden geteilten Schrittweitensperren für Schreibvorgänge gibt. Somit wird in den beschriebenen Ausführungsformen eine verbesserte Technologie zum Koordinieren von Schreibvorgängen durch mehrere Kerne bereitgestellt, die gegebenenfalls gleichzeitig auf die Spuren in einer Schrittweitengruppe schreiben, mit einer Auslagerungsoperation für die Schrittweite, die exklusiven Zugriff auf alle Spuren in der Schrittweitengruppe erfordert.
-
Figurenliste
-
- 1 stellt eine Ausführungsform eines Speichercontrollers dar.
- 2 stellt eine Ausführungsform von Spursperren dar.
- 3 stellt eine Ausführungsform von Operationen zum Verarbeiten einer Leseanforderung an eine Spur in einer Schrittweitengruppe dar.
- 4 stellt eine Ausführungsform von Operationen zum Verarbeiten eines Schreibvorgangs an eine Spur in einer Schrittweitengruppe dar.
- 5 stellt eine Ausführungsform von Operationen zum Durchführen einer partiellen Schrittweitenauslagerung von Spuren in einer Schrittweitengruppe dar.
- 6 stellt eine Ausführungsform von Operationen zum Durchführen einer vollständigen Schrittweitenauslagerung von Spuren in einer Schrittweitengruppe dar.
- 7 stellt eine Computerumgebung dar, in der die Komponenten von 1 implementiert werden können.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In den beschriebenen Ausführungsformen werden Techniken für ein Verwalten von Cachesperren bereitgestellt, um das Verwalten von Lese- und Schreibvorgängen durch mehrere Prozessorkerne auf Spuren in Schrittweitengruppen zu verbessern, die über Speichereinheiten verteilt sind. In bestimmten Ausführungsformen umfasst ein Speichercontroller möglicherweise keine Einheitenadapter zur Abwicklung von RAID-Operationen und stellt stattdessen Lese- und Schreibvorgänge in Eingabenwarteschlangen, auf die ein Controller zugreift, um aus den Speichereinheiten zu lesen und sie zu beschreiben. In den beschriebenen Ausführungsformen wird das Verwalten von Lese- und Schreibvorgängen in einem Cache durch mehrere Prozessorkerne bereitgestellt sowie das Auslagern von Spuren in Gruppen, die in einem Array von Speichereinheiten gespeichert sind, z.B. Schrittweitengruppen, die über Speichereinheiten in einem RAID-Array verteilt sind. In den beschriebenen Ausführungsformen werden exklusive Spursperren bereitgestellt, damit unabhängige Kerne oder Prozesse gleichzeitig auf verschiedene Spuren in einer Schrittweitengruppe schreiben können, sowie exklusive und geteilte Gruppensperren, um ein Auslagern von Spuren in einer Schrittweite zu verwalten. Eine Auslagerungsoperation darf nur nach Erhalt einer exklusiven Gruppensperre fortgesetzt werden, die gewährt wird, wenn es keine anderen Schreiber gibt, die Sperren für die Spuren in der Schrittweitengruppe innehaben, und die nach ihrer Gewährung verhindert, dass während der Auslagerungsoperationen in die Schrittweitengruppe geschrieben wird.
-
In den beschriebenen Ausführungsformen werden Verbesserungen der Cache-Verwaltungstechnologie in Umgebungen bereitgestellt, in denen ein separater Controller Lese- und Schreibvorgänge zwischen dem Cache und den Speichereinheiten verwaltet. In den beschriebenen Ausführungsformen können Schreibvorgängen Sperren zum Schreiben auf Spuren in einer Schrittweitengruppe gewährt werden, und Schreibvorgänge werden so koordiniert, dass beim Auslagern der Schrittweitengruppe über die Speichereinheiten hinweg keine Schreibvorgänge erfolgen dürfen.
-
1 stellt eine Ausführungsform eines Speichercontrollers 100 oder eines anderen Systemtyps dar, der eine Mehrzahl von Kernen 1021 , 1022 ....102n und einen Arbeitsspeicher 104 einschließlich eines Caches 106 umfasst, um Spuren zwischenzuspeichern, die von Speichereinheiten 108 in ein Speicherarray 110 überführt wurden, um sie für Leseanforderungen verfügbar zu machen. Der Speichercontroller 100 tauscht über eine Fabric 114 mit einem Teilsystem 112 Daten aus, wobei Lese- und Schreibanforderungen an die Speichereinheiten 108 vom Teilsystem 112 verwaltet werden. Der Arbeitsspeicher 104 umfasst die Warteschlangen 116, eine für jeden der Kerne 1021 , 1022 ....102n , wobei die Warteschlangen 116 für jeden Kern eine oder mehrere Eingabenwarteschlangen (Submission Queues, SQs) 118 umfassen, zu denen Lese- und Schreibanforderungen hinzugefügt werden, sowie eine Ausführungswarteschlange 120 (Completion Queue, CQ). Die Warteschlangen 118, 120 können kreisförmige Warteschlangen aufweisen, mit jeweils einem Kopfzeiger, der auf ein Ende der Warteschlange zeigt, von dem aus auf Anforderungen zugegriffen wird, wenn die Warteschlange verarbeitet wird, und einem Endzeiger, der auf ein Ende der Warteschlange zeigt, zu dem Anforderungen hinzugefügt werden. Ein Kern 102i führt eine E/A-Verwaltungseinheit 122 aus, um Anforderungen zu den Eingabenwarteschlangen 118 für den Kern 102i hinzuzufügen, um Spuren von den Speichereinheiten 108 in den Cache 106 zu überführen und Spuren aus dem Cache 106 in die Speichereinheiten 108 auszulagern.
-
Ein Controller 124 im Teilsystem 112 ruft Lese- und Schreibanforderungen an die Speichereinheiten 108 ab, die durch die E/A-Verwaltungseinheit 122 zu den Eingabenwarteschlangen 118 hinzugefügt werden, wenn die E/A-Verwaltungseinheit 122 auf eine Eingabenwarteschlangen-Doorbell 126 im Controller 124 schreibt. Als Reaktion auf ein Ausführen der abgerufenen Lese- oder Schreibanforderung bezüglich der Speichereinheiten 108 meldet der Controller 124 an die Ausführungswarteschlange 120, dass die Lese- oder Schreibanforderung ausgeführt wurde, wodurch der Kern 1021 , 1022 ....102n , der die Lese- oder Schreibanforderung ausgelöst hat, über die Ausführung informiert wird. Der Kern 102i der die E/A-Verwaltungseinheit 122 ausführt, kann in eine Ausführungswarteschlangen-Doorbell 128 schreiben, um die vollständige Verarbeitung der in die Ausführungswarteschlange 120 geschriebenen Ausführung anzuzeigen, um die Ausführung zu koordinieren.
-
In NVMe-Ausführungsformen (Non-Volatile Memory Express) kann der Controller 124 einen NVMe-Controller aufweisen, und die E/A-Verwaltungseinheit 122 kann NVMe-Treiber umfassen, um eine Schnittstelle mit dem NVMe-Controller 124 herzustellen und die Warteschlangen 116 zu implementieren. Der NVMe-Controller 124 kann Eingabenwarteschlangen-Doorbells 126 umfassen, je eine für die vom Kern 102i verwendeten Eingabenwarteschlangen, und eine Ausführungswarteschlangen-Doorbell 128. Der Kerni, der die Anforderung zu seiner Eingabenwarteschlange 118 hinzufügt, schreibt in die Eingabenwarteschlangen-Doorbell 126 des Controllers 124, um den Controller 124 zu veranlassen, auf die Lese- oder Schreibanforderung zuzugreifen, die zu der Eingabenwarteschlange 118 hinzugefügt wurde, die der Eingabenwarteschlangen-Doorbell 126 zugeordnet ist, in die geschrieben wurde. Der Controller 124 kann die abgerufenen Befehle in beliebiger Reihenfolge ausführen. Wenn der Kern 1021 , 1022 ....102n eine Ausführung einer in der Ausführungswarteschlange 120 angezeigten Lese-/Schreibanforderung verarbeitet, schreibt der Kern1, 1022 ....102n in die Ausführungswarteschlangen-Doorbell 128 für die Ausführungswarteschlange 120. Der Controller 124 kann mehrere Namensräume 130 unterstützen, die Teile von nichtflüchtigen Speicherplätzen aufweisen, die in den Speichereinheiten 108 implementiert sind. Der Speichercontroller 100 kann Lese- und Schreibanforderungen an die Namensräume 130 richten, die auf nichtflüchtigen Speicherplatz in den Speichereinheiten 108 abgebildet werden. Die Speichereinheiten 108 würden außerdem Hardware und Software umfassen, die die Schnittstelle zu dem NVMe-Controller 124 bilden.
-
Die Ausführungsform von 1 kann „NVMe over Fabrics“ implementieren, wobei der Speichercontroller 100 und das Teilsystem 112 über eine Fabric 114 Daten austauschen. In solchen Ausführungsformen umfassen der Speichercontroller 100 und das NVMe-Teilsystem 112 die Transportschichten 132 bzw. 134, um eine Datenübertragung im Netzwerk zu ermöglichen, z.B. mittels Remote Direct Memory Access (RDMA), RDMA over Converged Ethernet (RoCE), Internet Wide Area RDMA Protocol (iWARP), InfiniBand und Fibre Channel. In einer alternativen Ausführungsform kann das Teilsystem 112, z.B. ein NVME-Teilsystem 112, in einer PCIe-Karte (Peripheral Component Interconnect Express) im Speichercontroller 100 implementiert werden, wobei der Speichercontroller 100 und das NVMe-Teilsystem 112 über eine PCIe-Schnittstelle Daten austauschen.
-
Die Fabric 114 kann ein oder mehrere Netzwerke aufweisen, darunter lokale Netzwerke (LAN), Speichernetzwerke (SAN), Weitverkehrsnetzwerke (WAN), Peer-to-Peer-Netzwerke, drahtlose Netzwerke, das Internet usw.
-
Der Speichercontroller 100 verwaltet den Eingabe/Ausgabe-(E/A-)Verwaltungs-Code 122, der von den Kernen 1021 , 1022 ....102n ausgeführt wird, um Spuren von den Speichereinheiten 108 in den Cache 106 zu überführen und auszulagern. Der E/A-Verwaltungs-Code 122 kann ferner RAID-Algorithmen (Redundant Array of Independent Disks) oder andere Arten von Algorithmen für ein Verwalten von Speicherarrays implementieren, um Spuren in Schrittweitengruppen auf die Speichereinheiten 108 zu verteilen und die Parität für die Spuren in einer Schrittweitengruppe zu berechnen, um sie mit den Spuren über die Speichereinheiten 108 zu verteilen. Die E/A-Verwaltungseinheit 122 behält Schrittweitengruppensperren 200 für die Schrittweitengruppen bei, die in den Speichereinheiten 108 konfiguriert sind, um Lese- und Schreibvorgänge sowie Überführen und Auslagern von Spuren in Schrittweitengruppen zu verwalten, die von den verschiedenen Kernen 1021 , 1022 ....102n ausgeführt werden, um Konflikte zu vermeiden und die Cache- und Auslagerungskohärenz aufrechtzuerhalten.
-
Die Kerne 1021 , 1022 ....102n können mehrere Kerne auf demselben Unterbau aus Zentraleinheit (CPU)/integriertem Schaltkreis aufweisen oder separate Prozesseinheiten aufweisen. Jeder Kern 1021 , 1022 ....102n kann den E/A-Verwaltungs-122-Code ausführen, um Lese- und Schreibvorgänge auf in Schrittweiten in den Speichereinheiten 108 konfigurierten Spuren durchzuführen, die im Cache 106 gehalten werden, um Spuren von den Speichereinheiten 108 zu überführen und Schrittweitengruppen von Spuren aus dem Cache 106 auszulagern und über die Speichereinheiten zu verteilen.
-
Die E/A-Verwaltungseinheit 122 kann einen Spurindex führen, der einen Index von Spuren im Cache 106 bereitstellt, um Steuerblöcke in einem Steuerblockverzeichnis zwischenzuspeichern. Das Steuerblockverzeichnis umfasst Cachesteuerblöcke, wobei es für jede Spur im Cache 106 einen Cachesteuerblock gibt, der Metadaten zu der Spur im Cache bereitstellt, z.B. Schrittweitengruppeninformationen zu der Schrittgruppe, in der die Spur geführt wird. Der Spurindex ordnet den Spuren die Cachesteuerblöcke zu, die Informationen über die Spuren im Cache 106 bereitstellen.
-
Der Speichercontroller 100 kann ein Speichersystem aufweisen, z.B. die DS8000®- und DS8880-Speichersysteme der International Business Machines Corporation (IBM®) oder Speichercontroller und Speichersysteme anderer Hersteller. (IBM und DS8000 sind weltweit Warenzeichen der International Business Machines Corporation.)
-
Die Speichereinheiten 108 im Speicherarray 110 können verschiedene Typen oder Klassen von Speichereinheiten aufweisen, z.B. magnetische Festplattenlaufwerke, Magnetbandspeicher, Solid-State-Speichereinheit (SSD) bestehend aus Festkörperelektronik, EEPROM (Electrically Erasable Programmable Read-Only Memory), Flash-Speicher, Flash-Disk, Direktzugriffsspeicherlaufwerk (RAM-Drive), Storage-Class Memory (SCM) usw., Phase Change Memory (PCM), Resistive Random Access Memory (RRAM), Spin-Transfer-Torque-RAM (STM-RAM), Conductive Bridging RAM (CBRAM), magnetisches Festplattenlaufwerk, optische Platte, Band usw. Datenträger in einem Speicherplatz können außerdem über ein Array von Einheiten konfiguriert werden, z.B. Just a Bunch of Disks (JBOD), Direct Access Storage Device (DASD), RAID-Array (Redundant Array of Independent Disks), Virtualisierungseinheit usw. Darüber hinaus können die Speichereinheiten 108 im SpeicherArray 110 heterogene Speichereinheiten von verschiedenen Herstellern und verschiedene Arten von Speichereinheiten aufweisen, z.B. eine erste Art von Speichereinheiten, z.B. Festplattenlaufwerke, die eine langsamere Datenübertragungsrate aufweisen als eine zweite Art von Speichereinheiten, z.B. SSDs.
-
In NVMe-Implementierungen würden die Speichereinheiten 108 NVMe-Komponenten umfassen, die eine Schnittstelle mit dem NVMe-Teilsystem 112 bilden, z.B. NVMe-SSD-Einheiten.
-
Der Arbeitsspeicher 104 kann einen geeigneten, in der Technik bekannten Systemspeicher aufweisen, darunter flüchtige und nichtflüchtige Arbeitsspeichereinheiten, z.B. ein dynamisches RAM (DRAM, Dynamic Random Access Memory), ein Phase Change Memory (PCM), Magnetoresistive Random Access Memory (MRAM), Spin-Transfer-Torque (STT)-MRAM, SRAM-Speichereinheiten, DRAM, ein Ferroelectric Random Access Memory (FeTRAM), auf Nanodraht beruhender nichtflüchtiger Speicher und nichtflüchtige Direct Inline Memory Modules (DIMMs) mit byteadressierbarem, direkt zu beschreibendem Arbeitsspeicher usw.
-
2 stellt eine Ausführungsform einer Instanz von Schrittweitengruppensperren 200i für eine der in den Speichereinheiten 108 konfigurierten Schrittgruppen dar, darunter ein Schrittgruppenidentifikator (ID) 202, der eine Schrittgruppe identifiziert; Spursperren 2041 , 2042 ...204n für jede der Spuren in der Schrittweitengruppe 202, wobei die Spursperren 204i für jede Spur in der Schrittweitengruppe 202 eine exklusive Spursperre 206 umfassen, die anzeigt, ob eine exklusive Sperre für die Spur gewährt wurde, und einen Geteilte-Spursperre-Zähler 208, der eine Anzahl geteilter Spursperren anzeigt, die für die Spur gewährt wurden; eine exklusive Schrittweitensperre 210, die anzeigt, dass eine exklusive Sperre für die Schrittweitengruppe 202 gewährt wurde; und ein Geteilte-Schrittweitensperre-Zähler 212, der eine Anzahl geteilter Schrittweitensperren anzeigt, die gewährt wurden. Die Information zur Schrittweitengruppensperre 200i kann ferner die Spuren in der Schrittweitengruppe anzeigen, für die die Sperren 204i bereitgestellt werden.
-
3 stellt eine Ausführungsform der von der E/A-Verwaltungseinheit 122 ausgeführten Operationen dar, die von den Kernen 1021 , 1022 ....102n ausgeführt werden, um eine Leseanforderung an eine Spur in einer Schrittweitengruppe zu verarbeiten. Nach Empfang (in Block 300) eines Lesevorgangs von einem Prozessor/Kern 1021 , 1022 ....102n an eine Spur in einer Schrittweitengruppe, wenn (in Block 302) die angeforderte Spur im Cache 106 ist, bestimmt die E/A-Verwaltungseinheit 122 (in Block 304), ob eine exklusive Spursperre 206 für die Spur oder die Schrittweite 210, die die Spur umfasst, vorgehalten wird. Wenn ja, wird die Spur geschrieben oder ausgelagert, und die Leseanforderung wird in die Warteschlange gestellt, oder es wird erneut versucht (in Block 306), eine geteilte Sperre für die Spur zu erhalten. Wenn (in Block 304) eine exklusive Spursperre 206 oder exklusive Schrittweitensperre 210 nicht vorgehalten wird, wird die geteilte Spursperre (in Block 308) dem anfordernden Kern 1021 , 1022 .... 102n gewährt, indem der Geteilte-Spursperre-Zähler 208 für die Spur hochgezählt wird. Der Geteilte-Spursperre-Zähler 208 wird heruntergezählt (in Block 310), wenn der Lesevorgang ausgeführt ist.
-
Wenn (in Block 302) die angeforderte Spur nicht im Cache 106 ist, ordnet (in Block 312) die E/A-Verwaltungseinheit 122 Segmente für die angeforderte Spur im Cache 106 zu und gewährt (in Block 314) eine exklusive Spursperre 206 für die angeforderte Spur sowie eine geteilte Schrittweitensperre durch Hochzählen des Geteilte-Schrittweitensperre-Zählers 212 für die Schrittweite, die die zu überführende Spur umfasst. Eine Leseanforderung wird in die Eingabenwarteschlange 118 (in Block 316) gestellt, um die Segmente für die angeforderte Spur zu lesen. In NVMe-Implementierungen kann ein NVMe-Treiber des Speichercontrollers 100 über die Fabric 114 oder eine Busschnittstelle in eine Eingabenwarteschlangen-Doorbell 126 schreiben, um dem Controller 124 zu melden, dass in der Eingabenwarteschlange 118 für den Kern 102i , der die Leseanforderung ausgelöst hat, eine E/A-Anforderung zu verarbeiten ist. Der Controller 124 kann (in Block 318) Segmente für die Spur in die zugeordneten Segmente für die Spur im Cache 106 schreiben. Der Controller 124 schreibt auch die Ausführung in die Ausführungswarteschlange 120 für den Kern 102i , der die Anforderung ausgelöst hat, um zu melden, dass der Lesevorgang ausgeführt ist. Die E/A-Verwaltungseinheit 122 kann dann (in Block 320) die für die zu überführende Spur vorgehaltenen Sperren aufheben, indem er die Spursperre 206 für die angeforderte Spur aufhebt und die geteilte Schrittweitensperre aufhebt durch Herunterzählen des Geteilte-Schrittweitensperre-Zählers 212 für die Schrittweite, die die zu überführende Spur umfasst. Nach dem Aufheben der für den Überführungsprozess vorgehaltenen Sperren kann der Controller mit Block 308 fortfahren, damit der auslösende Kern 102i die Spur aus dem Cache 106 lesen kann.
-
Mit der Ausführungsform von 3 wird eine exklusive Spursperre 206 und eine geteilte Schrittweitensperre für eine Spur vorgehalten und für eine Schrittweitengruppe, die die in den Cache zu überführende Spur umfasst, für eine Leseanforderung, bevor die Spur geschrieben oder ausgelagert werden kann. In den beschriebenen Ausführungsformen werden Verbesserungen der Computertechnologie bereitgestellt, indem Lesevorgänge auf Spuren ermöglichen werden, während verschiedene Kerne gleichzeitig auf verschiedene Spuren in einer Schrittweitengruppe schreiben oder sich die Spur in einer Schrittweitengruppe befindet, die ausgelagert wird. Darüber hinaus kann in bestimmten Ausführungsformen ein Auslagern in eine Schrittweitengruppe erlaubt werden, während noch Lesevorgänge zu Spuren in der Schrittgruppe anhängig sind. In den beschriebenen Ausführungsformen werden Sperren, Datenstrukturen und Funktionen bereitgestellt, um Operationen auf Spuren im Cache und Überführungen von Spuren in den Cache zu koordinieren.
-
4 stellt eine Ausführungsform der von der E/A-Verwaltungseinheit 122 ausgeführten Operationen dar, die von den Kernen 1021 , 1022 ....102n ausgeführt werden, um eine Schreibanforderung an eine Spur in einer Schrittweitengruppe zu verarbeiten. Nach Empfang (in Block 400) eines Schreibvorgangs von einem Prozessor/Kern 1021 , 1022 ....102n auf eine Spur in einer Schrittweitengruppe bestimmt die E/A-Verwaltungseinheit 122 (in Block 402), ob eine exklusive 206 oder geteilte 208 Spursperre für die Spur vorgehalten wird oder ob eine exklusive Schrittweitensperre 210 für die Schrittweitengruppe 200i vorgehalten wird, die die zu schreibende Spur umfasst. Wenn ja, wird die Spur gelesen, geschrieben oder ausgelagert, und die Schreibanforderung wird in die Warteschlange gestellt oder es wird erneut versucht (in Block 404), eine exklusive Sperre für die Spur zu erhalten. Wenn (in Block 402) eine exklusive 206/geteilte 208 Spursperre oder exklusive Schrittweitensperre 210 nicht vorgehalten wird, wird die exklusive Spursperre 206 (in Block 406) dem anfordernden Kern 1021 , 1022 ....102n gewährt und eine geteilte Schrittweitensperre wird (in Block 408) gewährt durch Hochzählen des Geteilte-Schrittweitensperre-Zählers 212 für die Schrittgruppe, die die zu schreibende Spur umfasst. Der Schreibvorgang wird dann (in Block 410) auf die im Cache 106 zugeordnete Spur ausgeführt. Nach Ausführung des Schreibvorgangs wird die exklusive Spursperre 206 (in Block 412) aufgehoben und die geteilte Schrittweitensperre wird aufgehoben durch Herunterzählen des Geteilte-Schrittweitensperre-Zählers 212.
-
Mit der Ausführungsform von 4 wird eine exklusive Spursperre und eine geteilte Schrittweitensperre vorgehalten für eine Spur und eine Schrittweitengruppe, die die zu schreibende Spur umfasst, um zu verhindern, dass die Spur gelesen wird oder dass eine Schrittweitengruppe, die die Spur umfasst, ausgelagert wird, während die Spur in den Cache 106 geschrieben wird. In den beschriebenen Ausführungsformen werden Verbesserungen der Computertechnologie bereitgestellt, indem Schreibvorgänge auf Spuren gleichzeitig stattfinden können, während verschiedene Kerne gleichzeitig auf die Spuren in einer Schrittweitengruppe schreiben, und indem die Auslagerung der Schrittweitengruppe mit den Schreiboperationen koordiniert wird, indem keine Schreibvorgänge auf eine Spur ausgelöst werden, auf der ein Schreibvorgang anhängig ist, oder in eine Schrittweitengruppe, die ausgelagert wird. Ferner wird in den beschriebenen Ausführungsformen von Sperren ein Auslagern verhindert, solange Schreibvorgänge auf Spuren in der Schrittweitengruppe anhängig sind, wie durch vorgehaltene geteilte Schrittweitensperren angezeigt wird, was dadurch angezeigt wird, dass der Geteilte-Schrittweitensperre-Zähler 212 größer als Null ist.
-
5 stellt eine Ausführungsform der von der E/A-Verwaltungseinheit 122 ausgeführten Operationen dar, die von den Kernen 1021 , 1022 ....102n ausgeführt werden, um eine partielle Schrittweitengruppe auszulagern, wenn sich weniger als alle Spuren in der Schrittweitengruppe im Cache 106 befinden. Die E/A-Verwaltungseinheit 122 kann (in Block 500) die Auslagerungsoperation auslösen, indem er mittels eines Auswahlalgorithmus eine Schrittweitengruppe zum Auslagern auswählt, z.B. Wise Order Writing (WOW) oder andere geeignete, in der Technik bekannte Auswahltechniken für Schrittweitengruppen. Wenn (in Block 502) eine geteilte Schrittweitensperre für die Schrittweitengruppe vorgehalten wird, was dadurch angezeigt wird, dass der Geteilte-Schrittweitensperre-Zähler 212 größer als Null ist, wird die Auslagerungsanforderung in eine Warteschlange gestellt oder wiederholt (in Block 504), bis die exklusive Schrittweitensperre 210 gewährt werden kann. Wenn (in Block 502) keine geteilte Schrittweitensperre für die auszulagernde Schrittweitengruppe vorgehalten wird, d.h. der Geteilte-Schrittweitensperre-Zähler 212 ist gleich Null, gewährt (in Block 506) die E/A-Verwaltungseinheit 122 die exklusive Schrittweitensperre 210 für die auszulagernde Schrittweitengruppe. Es werden (in Block 508) die modifizierten Spuren in der Schrittweitengruppe im Cache 106 bestimmt. Cache-Segmente werden (in Block 510) im Cache 106 für die bestimmten modifizierten Spuren und für die alten Paritätsdaten zugeordnet, so dass sie verfügbar sind, um die vormodifizierte Version der modifizierten Spuren und die alten Paritätsdaten von den Speichereinheiten 108 zu überführen. Die E/A-Verwaltungseinheit kann (in Block 512) eine Leseliste erzeugen von Segmenten in den modifizierten Spuren und Segmenten mit den alten Paritätsdaten in den Speichereinheiten 108, die in die zugeordneten Cache-Segmente überführt werden sollen. In NVMe-Implementierungen kann die Leseliste eine Scatter-Gather-Liste (SGL) oder eine Physical-Region-Space-(PRP)-Liste aufweisen, die die Segmente anzeigt, die von den Speichereinheiten 108 in den Cache 106 eingelesen werden sollen. Die E/A-Verwaltungseinheit 122 fügt (in Block 514) der Eingabenwarteschlange 118 für den Kern 102i , der die Auslagerungsoperation durchführt, eine Leseanforderung (oder mehrere Leseanforderungen) mit der Leseliste hinzu, wobei er die Segmente der modifizierten Spuren und alten Paritätsdaten identifiziert, die gelesen werden sollen, sowie Zielpositionen im Cache 106 der zugeordneten Cache-Segmente , um die gelesenen Segmente zu speichern. Die E/A-Verwaltungseinheit 122 schreibt (in Block 516) in das Doorbell-Register, Eingabenwarteschlangen-Doorbell 126, um dem Controller 124 zu melden, die Eingabenwarteschlange 118 zu lesen, zu der die Leseanforderung hinzugefügt wurde.
-
Wenn der Controller 124 (in Block 518) die Ausführung zu der Ausführungswarteschlange 120 des Kerns 102i hinzugefügt hat, der die Auslagerung durchführt, nachdem der Controller 124 die Segmente in der Leseliste von den Speichereinheiten 108 in die zugeordneten Cache-Segmente im Cache 106 geschrieben hat, berechnet die E/A-Verwaltungseinheit 122 (in Block 520) mittels der modifizierten Spuren, der alten Daten für die modifizierten Spuren und der alten Parität die neue Parität, z.B. durch eine XOR-Berechnung (entweder - oder) der Daten, die während eines Read-Modify-Write-Vorgangs (Lesen-Ändern-Schreiben) zur Aktualisierung der Parität durchgeführt wurde. Nach Aktualisierung der Parität erzeugt die E/A-Verwaltungseinheit 122 (in Block 524) eine Schreibliste, z.B. eine Scatter-Gather-Liste oder PRP-Liste für NVMe-Implementierungen, die die Segmente im Cache 106 mit den modifizierten Spuren der auszulagernden Schrittweitengruppe und die berechnete neue Parität anzeigt. Die E/A-Verwaltungseinheit 122 fügt (in Block 526) der Eingabenwarteschlange 118 eine Schreibanforderung (oder mehrere Schreibanforderungen) hinzu, wobei die Schreibliste die Cache-Segmente der modifizierten Spuren und die neuen Paritätsdaten identifiziert, die in die Namensräume 130 in den Speichereinheiten 108 zu schreiben sind. Die E/A-Verwaltungseinheit 122 schreibt (in Block 528) in das Doorbell-Register, Eingabenwarteschlangen-Doorbell 126, um dem Controller 124 zu melden, die Eingabenwarteschlange 118 zu lesen, zu der die Schreibanforderung hinzugefügt wurde.
-
Wenn der Controller 124 (in Block 530) die Ausführung zu der Ausführungswarteschlange 120 des Kerns 102i hinzugefügt hat, der die Auslagerung durchführt, nachdem der Controller 124 die Segmente im Cache 106, die in der Schreibliste angezeigt werden, an die Zielpositionen der Speichereinheiten 108 geschrieben hat, hebt die E/A-Verwaltungseinheit 122 (in Block 532) die exklusive Schrittweitensperre 210 für die ausgelagerte Schrittweite auf.
-
Mit der Ausführungsform von 5 wird eine exklusive Schrittweitensperre für eine auszulagernde Schrittweitengruppe vorgehalten, um zu verhindern, dass die Spur während ihrer Auslagerung gelesen oder beschrieben wird, wenngleich anhängige Lesevorgänge während des Auslagerungsvorgangs fortgesetzt werden können. In den beschriebenen Ausführungsformen werden Verbesserungen der Computertechnologie für ein Auslagern einer partiellen Schrittweitengruppe bereitgestellt, indem ein Auslösen von Schreib- und Lesevorgängen während der Auslagerungsoperation sowie ein Überführen von Segmenten in der vormodifizierten Version verhindert wird, die von den modifizierten Spuren zur Aktualisierung der Parität verwendet werden, wenn sich nicht alle Spuren für die auszulagernde Schrittweitengruppe im Cache befinden. Solange Schreibvorgänge auf Spuren in der Schrittweitengruppe anhängig sind, wie durch vorgehaltene geteilte Schrittweitensperren angezeigt wird, was dadurch angezeigt wird, dass der Geteilte-Schrittweitensperre-Zähler 212 größer als Null ist.
-
6 stellt eine Ausführungsform der von der E/A-Verwaltungseinheit 122 ausgeführten Operationen dar, die von den Kernen 1021 , 1022 ....102n ausgeführt werden, um eine vollständige Schrittweitengruppe auszulagern, wenn sich alle Spuren für die Schrittweitengruppe einschließlich modifizierter Spuren im Cache 106 befinden. Die E/A-Verwaltungseinheit 122 kann (in Block 600) die Auslagerungsoperation auslösen, indem er mittels eines Auswahlalgorithmus eine Schrittweitengruppe zum Auslagern auswählt, z.B. Wise Order Writing (WOW) oder andere geeignete, in der Technik bekannte Auswahltechniken für Schrittweitengruppen. Wenn (in Block 602) eine geteilte Schrittweitensperre für die Schrittweitengruppe vorgehalten wird, was dadurch angezeigt wird, dass der Geteilte-Schrittweitensperre-Zähler 212 größer als Null ist, wird die Auslagerungsanforderung in eine Warteschlange gestellt oder wiederholt (in Block 604), bis die exklusive Schrittweitensperre 210 gewährt werden kann. Wenn (in Block 602) keine geteilte Schrittweitensperre für die auszulagernde Schrittweitengruppe vorgehalten wird, d.h. der Geteilte-Schrittweitensperre-Zähler 212 ist gleich Null, gewährt (in Block 606) die E/A-Verwaltungseinheit 122 die exklusive Schrittweitensperre 210 für die auszulagernde Schrittweitengruppe. Die E/A-Verwaltungseinheit 122 berechnet dann (in Block 608) die Parität aus allen Spuren für die Schrittweite im Cache 106 und aktualisiert die Parität mit der neuen Parität.
-
Die E/A-Verwaltungseinheit 122 erzeugt (in Block 610) eine Schreibliste, die die Segmente in den modifizierten Spuren der Schrittweite und die berechnete neue Parität anzeigt. Die E/A-Verwaltungseinheit 122 fügt (in Block 612) der Eingabenwarteschlange 118 eine Schreibanforderung hinzu, wobei die Schreibliste die Cache-Segmente der modifizierten Spuren und die neuen Paritätsdaten identifiziert, die in die Namensräume in den Speichereinheiten 108 zu schreiben sind. Die E/A-Verwaltungseinheit 122 schreibt (in Block 614) in die Eingabenwarteschlangen-Doorbell 126, um dem Controller 124 zu melden, die Eingabenwarteschlange 118 zu lesen, zu der die Schreibanforderung hinzugefügt wurde.
-
Wenn der Controller 124 (in Block 616) die Ausführung zu der Ausführungswarteschlange 120 des Kerns 102i hinzugefügt hat, der die Auslagerung durchführt, nachdem der Controller 124 die Segmente im Cache 106, die in der Schreibliste angezeigt werden, in die Zielpositionen der Speichereinheiten 108 geschrieben hat, hebt die E/A-Verwaltungseinheit 122 (in Block 618) die exklusive Schrittweitensperre 210 für die ausgelagerte Schrittweite auf.
-
Mit den Ausführungsformen von 5 und 6 wird eine exklusive Schrittweitensperre für eine auszulagernde Schrittweitengruppe vorgehalten, um zu verhindern, dass die Spur während ihrer Auslagerung gelesen oder beschrieben wird, wenngleich anhängige Lesevorgänge während des Auslagerungsvorgangs fortgesetzt werden können. In den beschriebenen Ausführungsformen werden Verbesserungen der Computertechnologie für ein Auslagern einer partiellen oder vollständigen Schrittweitengruppe bereitgestellt, indem ein Auslösen von Schreib- und Lesevorgängen während der Auslagerungsoperation sowie ein Überführen von Segmenten in der vormodifizierten Version verhindert wird, die von den modifizierten Spuren zur Aktualisierung der Parität verwendet werden, wenn sich nicht alle Spuren für die auszulagernde Schrittweitengruppe im Cache befinden.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen , wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können 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). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder 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 mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen 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 durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um ein Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Die Computerkomponenten von 1, unter anderem der Speichercontroller 100 und das Teilsystem 112, können in einem oder mehreren Computersystemen implementiert werden, wie das in 7 dargestellte Computersystem 702. 7. Computersystem/Server 702 kann im allgemeinen Kontext von durch ein Computersystem ausführbaren Befehlen beschrieben werden, z.B. Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. umfassen, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Computersystem/Server 702 kann in verteilten Cloudcomputing-Umgebungen eingesetzt werden, in denen Aufgaben von entfernten Einheiten durchgeführt werden, die über ein Verkehrsnetz miteinander verbunden sind. In einer verteilten Cloudcomputing-Umgebung können sich die Programmmodule sowohl in lokalen als auch in entfernten Speichermedien des Computersystems befinden, unter anderem in Arbeitsspeichereinheiten.
-
Wie in 7 dargestellt, ist Computersystem/Server 702 in Form einer Universalcomputereinheit dargestellt. Die Komponenten von Computersystem/Server 702 können, ohne darauf beschränkt zu sein, einen oder mehrere Prozessoren oder Prozesseinheiten 704, einen Systemspeicher 706 und einen Bus 708 umfassen, der verschiedene Systemkomponenten mit dem Prozessor 704 verbindet, unter anderem den Systemspeicher 706. Bus 708 repräsentiert eine oder mehrere von mehreren Arten von Busstrukturen, unter anderem einen Speicherbus oder Speichercontroller, einen Peripheriebus, einen beschleunigten Grafikanschluss und einen Prozessor oder lokalen Bus, der eine von verschiedenen Busarchitekturen verwendet. Zu diesen Architekturen gehören beispielsweise, aber nicht darauf beschränkt, der ISA-Bus (Industry Standard Architecture), der MCA-Bus (Micro Channel Architecture), der EISA-Bus (Enhanced ISA), der lokale Bus der Video Electronics Standards Association (VESA) und der PCI-Bus (Peripheral Component Interconnects).
-
Computersystem/Server 702 umfasst in der Regel eine Vielfalt von computersystemlesbaren Medien. Bei diesen Medien kann es sich um alle verfügbaren Medien handeln, auf die über Computersystem/Server 702 zugegriffen werden kann, und sie umfassen sowohl flüchtige als auch nichtflüchtige Medien, Wechselmedien und nicht wechselbare Medien.
-
Der Systemspeicher 706 kann computersystemlesbare Medien in Form eines flüchtigen Speichers umfassen, z.B. RAM (Random Access Memory) 710 und/oder Cache 712. Computersystem/Server 702 kann außerdem andere wechselbare/nicht wechselbare, flüchtige/nicht flüchtige Speichermedien für Computersysteme umfassen. Nur als Beispiel kann das Speichersystem 713 für Lese- und Schreibvorgänge von einem nicht wechselbaren, nichtflüchtigen magnetischen Medium bereitgestellt werden (nicht dargestellt und typischerweise als „Festplatte“ bezeichnet). Obwohl nicht dargestellt, kann ein Magnetplattenlaufwerk zum Lesen von und Schreiben auf eine wechselbare, nichtflüchtige Magnetplatte (z.B. eine „Diskette“) bereitgestellt werden, sowie ein optisches Plattenlaufwerk zum Lesen von oder Schreiben auf eine wechselbare, nichtflüchtige optische Platte wie eine CD-ROM, DVD-ROM oder andere optische Medien. Hierbei können sie jeweils über eine oder mehrere Datenträgerschnittstellen an den Bus 708 angeschlossen werden. Wie im Folgenden eingehender dargestellt und beschrieben, kann der Systemspeicher 706 mindestens ein Programmprodukt mit einen Satz (z.B. mindestens eines) von Programmmodulen umfassen, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
-
Das Programm/Dienstprogramm 714, das einen Satz (mindestens eines) von Programmmodulen 716 enthält, kann beispielsweise, aber nicht darauf beschränkt, im Systemspeicher 706 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Jede der Komponenten Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination davon, kann eine Implementierung einer Netzwerkumgebung umfassen. Die Komponenten des Computers 702 können als Programmmodule 716 implementiert werden, die im Allgemeinen die Funktionen und/oder Methodiken der hier beschriebenen Ausführungsformen der Erfindung ausführen. Die Systeme von 1 können in einem oder mehreren Computersystemen 702 implementiert werden, wobei die Computersysteme über ein Netzwerk Daten austauschen können, wenn sie in mehreren Computersystemen 702 implementiert sind.
-
Computersystem/Server 702 kann auch mit einer oder mehreren externen Einheiten 718 Daten austauschen, z.B. mit einer Tastatur, einer Zeigeeinheit, einer Anzeige 720 usw.; mit einer oder mehreren Einheiten, anhand derer ein Benutzer mit Computersystem/Server 702 interagieren kann; und/oder mit allen Einheiten (z.B. Netzwerkkarte, Modem usw.), anhand derer Computersystem/Server 702 mit einer oder mehreren anderen Computereinheiten Daten austauschen kann. Eine solche Datenübertragung kann über Eingabe/Ausgabe-Schnittstellen (E/A) 722 erfolgen. Computersystem/Server 702 kann jedoch auch über den Netzwerkadapter 724 mit einem oder mehreren Netzwerken wie einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet) Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter 724 über den Bus 708 Daten mit den anderen Komponenten des Computersystems/Servers 702 aus. Es wird darauf hingewiesen, dass andere Hardware- und/oder Softwarekomponenten in Verbindung mit Computersystem/Server 702 verwendet werden können, auch wenn sie nicht dargestellt sind. Beispiele umfassen, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Prozesseinheiten, externe Plattenlaufwerkarrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw.
-
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)“, sofern nicht ausdrücklich anders angegeben.
-
Die Begriffe „umfassen“, „aufweisen“, „haben“ und Variationen davon bedeuten „einschließlich, ohne darauf beschränkt zu sein“, sofern nicht ausdrücklich anders angegeben.
-
Die Aufzählung von Artikeln bedeutet nicht, dass einige oder alle Artikel sich gegenseitig ausschließen, sofern nicht ausdrücklich anders angegeben.
-
Die Begriffe „einer“, „eine“ und „der, die, das“ bedeuten „eines oder mehrere““ sofern nicht ausdrücklich anders angegeben.
-
Bei Einheiten, die untereinander Daten austauschen, muss die Datenübertragung nicht kontinuierlich erfolgen, sofern nicht ausdrücklich anders angegeben. Darüber hinaus kann bei Einheiten, die untereinander Daten austauschen, die Datenübertragung direkt oder indirekt über einen oder mehrere Vermittler erfolgen.
-
Wenn in einer Ausführungsform mehrere Komponenten beschrieben werden, die untereinander Daten austauschen, bedeutet das nicht, dass alle diese Komponenten erforderlich sind. Vielmehr wird eine Vielfalt optionaler Komponenten beschrieben, um die große Vielfalt der möglichen Ausführungsformen der vorliegenden Erfindung darzustellen.
-
Wenn eine einzelne Einheit oder ein einzelner Gegenstand hier beschrieben wird, ist offensichtlich, dass mehrere Einheiten/Gegenstände (unabhängig davon, ob sie zusammenwirken) anstelle einer einzelnen Einheit/eines einzelnen Gegenstandes verwendet werden können. Gleichermaßen ist bei der Beschreibung von mehr als einer Einheit oder einem Gegenstand (unabhängig davon, ob sie zusammenwirken) offensichtlich, dass eine einzelne Einheit/ein einzelner Gegenstand anstelle von mehr als einer Einheit oder einem Gegenstand oder eine andere Anzahl von Einheiten/Gegenständen anstelle der dargestellten Anzahl von Einheiten oder Programmen 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 mit einer solchen Funktionalität/solchen Eigenschaften beschrieben sind. Daher müssen andere Ausführungsformen der vorliegenden Erfindung nicht die Einheit selbst umfassen.
-
Die vorstehende Beschreibung der verschiedenen Ausführungsformen der Erfindung wurde zum Zwecke der Darstellung und Beschreibung vorgelegt. Sie soll weder erschöpfend sein noch die Erfindung auf die genaue offenbarte Form beschränken. Viele Modifikationen und Variationen sind im Hinblick auf die obige Darstellung möglich. Der Umfang der Erfindung soll nicht durch diese ausführliche Beschreibung, sondern durch die beigefügten Ansprüche beschränkt werden. Die obige Spezifikation, Beispiele und Daten stellen eine vollständige Beschreibung der Herstellung und Verwendung der Zusammensetzung der Erfindung bereit. Da viele Ausführungsformen der Erfindung realisiert werden können, ohne vom Anwendungsbereich der Erfindung abzuweichen, ist die Erfindung in den hier angefügten Ansprüchen enthalten.