DE112019001863T5 - Verwenden von spursperren und schrittweitengruppensperren zum verwalten von cacheoperationen - Google Patents

Verwenden von spursperren und schrittweitengruppensperren zum verwalten von cacheoperationen Download PDF

Info

Publication number
DE112019001863T5
DE112019001863T5 DE112019001863.9T DE112019001863T DE112019001863T5 DE 112019001863 T5 DE112019001863 T5 DE 112019001863T5 DE 112019001863 T DE112019001863 T DE 112019001863T DE 112019001863 T5 DE112019001863 T5 DE 112019001863T5
Authority
DE
Germany
Prior art keywords
group
cache
data
tracks
exclusive
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.)
Pending
Application number
DE112019001863.9T
Other languages
English (en)
Inventor
Lokesh Gupta
Matthew Borlick
Kevin John Ash
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 DE112019001863T5 publication Critical patent/DE112019001863T5/de
Pending legal-status Critical Current

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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/462Track or segment

Abstract

Es wird ein Computerprogrammprodukt, System und Verfahren bereitgestellt, 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.

Description

  • 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.

Claims (25)

  1. Computerprogrammprodukt für ein Verwalten von Eingabe-/Ausgabeanforderungen an eine Mehrzahl von Speichereinheiten, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, in das ein durch einen Computer lesbarer Programmcode eingebettet ist, der ausführbar ist, um Operationen durchzuführen, wobei die Operationen aufweisen: Speichern einer Gruppe von Spuren im Cache, die in den Speichereinheiten gespeichert sind; Gewähren von exklusiven Spursperren für Spuren in der Gruppe im Cache für Schreibvorgänge auf die Spuren in der Gruppe im Cache, wobei exklusive Spursperren gleichzeitig für Schreibvorgänge auf verschiedene Spuren im Cache vorhaltbar sind können; Gewähren einer exklusiven Gruppensperre für die Gruppe von Spuren im Cache, um die Spuren in der Gruppe aus dem Cache in die Speichereinheiten auszulagern; und Aufheben der exklusiven Gruppensperre, wenn das Auslagern der Spuren in der Gruppe im Cache in die Speichereinheiten ausgeführt ist.
  2. Computerprogrammprodukt nach Anspruch 1, wobei die Operationen ferner aufweisen: 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.
  3. Computerprogrammprodukt nach Anspruch 1, wobei die Operationen ferner aufweisen: 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 ein Auslösen des Auslagerns der Gruppe von Spuren, wobei die exklusive Gruppensperre nur gewährt wird als Reaktion auf ein Feststellen, dass keine geteilten Gruppensperren für die auszulagernde Gruppe vorgehalten werden.
  4. Computerprogrammprodukt nach Anspruch 1, wobei das Auslagern der Gruppe von Spuren ferner aufweist: Ermitteln 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 für die Gruppe anzeigt, um sie aus mindestens einer der Speichereinheiten zu lesen und 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 im 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.
  5. Computerprogrammprodukt nach Anspruch 4, wobei das Schreiben der neuen Paritätsdaten und der modifizierten Daten aufweist: Erzeugen einer Schreibanforderung, 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.
  6. Computerprogrammprodukt nach Anspruch 5, wobei der durch einen Computer lesbare Programmcode von einem System ausgeführt wird, das das durch einen Computer lesbare Speichermedium umfasst, wobei das System mit einem Controller verbunden ist, der die Schnittstelle zu den Speichereinheiten bildet, wobei die Operationen ferner aufweisen: Setzen eines Doorbell-Registers für die Eingabenwarteschlange beim Hinzufügen der Leseanforderung und der Schreibanforderung zu der Eingabenwarteschlange, wobei das Setzen des Doorbell-Registers dem Controller meldet, dass er die Leseanforderung verarbeiten soll, um Daten von der mindestens einen der Speichereinheiten in den Cache zu übertragen, und die Schreibanforderung verarbeiten soll, um modifizierte Daten und die neuen Paritätsdaten aus dem Cache in die mindestens eine der Speichereinheiten zu übertragen.
  7. Computerprogrammprodukt nach Anspruch 4, wobei 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.
  8. Computerprogrammprodukt nach Anspruch 1, wobei das Auslagern der Spuren ferner aufweist: Bestimmen, dass sich alle Spuren für die Gruppe im Cache befinden; Berechnen neuer Paritätsdaten für die Gruppe von den Spuren für die Gruppe im Cache; und Erzeugen einer Schreibanforderung, die der Eingabenwarteschlange hinzuzufügen ist, einschließlich einer Liste, die modifizierte Spuren für die Gruppe im Cache anzeigt sowie die neuen Paritätsdaten und Zielpositionen in den mindestens eine der Speichereinheiten, in die die modifizierten Spuren und die neuen Paritätsdaten zu schreiben sind, wobei ein Controller auf die Schreibanforderung in der Eingabenwarteschlange und auf die Liste zugreift und auf die Daten für die modifizierten Spuren und die in der Liste angezeigten neuen Paritätsdaten zugreift und über die mindestens eine der Speichereinheiten hinweg schreibt, die als Zielpositionen in der Liste angezeigt werden.
  9. Computerprogrammprodukt nach Anspruch 1, wobei die Operationen ferner aufweisen: Auslösen von Operationen zum Überführen von Daten für eine Spur aus mindestens einer der Speichereinheiten in den Cache; Zuordnen von Segmenten im Cache für die zu überführenden Daten; Gewähren einer Sperre für die zugeordneten Segmente im Cache für die zu überführenden Daten; Hinzufügen einer Leseanforderung zu einer Eingabenwarteschlange, die die Daten für die in den Cache zu überführende Spur anzeigt; Speichern der Daten aus der Leseanforderung in den zugeordneten Segmenten im Cache; und Aufheben der Sperre für die Segmente im Cache, wenn das Lesen der Daten für die Segmente im Cache ausgeführt ist.
  10. Computerprogrammprodukt für ein Verwalten von Eingabe-/Ausgabeanforderungen an Spuren in einem Cache, die in einer Mehrzahl von Speichereinheiten gespeichert sind, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, in das ein durch einen Computer lesbarer Programmcode eingebettet ist, der von einer Mehrzahl von Prozessorkernen ausgeführte Operationen durchführt, wobei die Operationen aufweisen: Gewähren von geteilten Schrittweitensperren für Schreibvorgänge auf Spuren in einer Schrittweitengruppe von Spuren, wobei die geteilten Schrittweitensperren Schreibvorgängen gewährt werden, die gleichzeitig auf verschiedene Spuren in der Schrittweitengruppe schreiben. Bestimmen, ob noch ausstehende geteilte Schrittweitensperren für Schreibvorgänge vorhanden sind als Reaktion auf eine Auslagerungsanforderung zum Auslagern der Schrittweitengruppen von Spuren; und Gewähren einer exklusiven Schrittweitensperre für ein Auslagern einer Schrittweitengruppe von Spuren aus dem Cache in die Speichereinheiten als Reaktion auf das Bestimmen, dass es keine ausstehenden geteilten Schrittweitensperren für Schreibvorgänge gibt.
  11. Computerprogrammprodukt nach Anspruch 10, wobei die Operationen ferner aufweisen: Austauschen von Daten mit einem Controller, der den Zugriff auf die Speichereinheiten über eine Fabric verwaltet; Hinzufügen von Leseanforderungen zu mindestens einer Eingabenwarteschlange, um Spuren von den Speichereinheiten in den Cache zu überführen, um für Leseanforderungen zu den Spuren zurückzukehren, wobei der Controller die Leseanforderungen von der mindestens einen Eingabenwarteschlange über die Fabric abruft, um Daten von den Speichereinheiten zu lesen und in den Cache zu schreiben; und Hinzufügen von Schreibanforderungen zu der mindestens einen Eingabenwarteschlange, um die auszulagernden Spuren für die Schrittweitengruppe zu schreiben, als Reaktion auf ein Empfangen der exklusiven Schrittweitensperre für die Schrittweitengruppe, wobei der Controller die Schreibanforderungen von der mindestens einen Eingabenwarteschlange über die Fabric abruft, um Daten in die Speichereinheiten zu schreiben.
  12. System für ein Verwalten von Eingabe-/Ausgabeanforderungen an eine Mehrzahl von Speichereinheiten, das aufweist: Mindestens einen Prozessor; und ein durch einen Computer lesbares Speichermedium, in das ein durch einen Computer lesbarer Programmcode eingebettet ist, der von dem mindestens einen Prozessor ausgeführte Operationen durchführt, wobei die Operationen aufweisen: Speichern einer Gruppe von Spuren im Cache, die in den Speichereinheiten gespeichert sind; Gewähren von exklusiven Spursperren für Spuren in der Gruppe im Cache für Schreibvorgänge auf die Spuren in der Gruppe im Cache, wobei exklusive Spursperren gleichzeitig für Schreibvorgänge auf verschiedene Spuren im Cache vorhaltbar sind; Gewähren einer exklusiven Gruppensperre für die Gruppe von Spuren im Cache, um die Spuren in der Gruppe aus dem Cache in die Speichereinheiten auszulagern; und Aufheben der exklusiven Gruppensperre, wenn das Auslagern der Spuren in der Gruppe im Cache in die Speichereinheiten ausgeführt ist.
  13. System nach Anspruch 12, wobei die Operationen ferner aufweisen: 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.
  14. System nach Anspruch 12, wobei die Operationen ferner aufweisen: 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 ein 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.
  15. System nach Anspruch 12, wobei das Auslagern der Gruppe von Spuren ferner 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 für die Gruppe anzeigt, um sie aus mindestens einer der Speichereinheiten zu lesen und 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 im 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.
  16. System nach Anspruch 15, wobei das Schreiben der neuen Paritätsdaten und der modifizierten Daten aufweist: Erzeugen einer Schreibanforderung, 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.
  17. System nach Anspruch 15, wobei das Erzeugen der Leseanforderung aufweist: Bestimmen modifizierter Segmente von Spuren in der Gruppe; Zuordnen von Cache-Segmente 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.
  18. System für ein Verwalten von Eingabe-/Ausgabeanforderungen an eine Mehrzahl von Speichereinheiten, das aufweist: eine Mehrzahl von Prozessorkernen; und ein durch einen Computer lesbares Speichermedium, in das ein durch einen Computer lesbarer Programmcode eingebettet ist, der von einer Mehrzahl von Prozessorkernen ausgeführte Operationen durchführt, wobei die Operationen aufweisen: Gewähren von geteilten Schrittweitensperren für Schreibvorgänge auf Spuren in einer Schrittweitengruppe von Spuren, wobei die geteilten Schrittweitensperren Schreibvorgängen gewährt werden, die gleichzeitig auf verschiedene Spuren in der Schrittweitengruppe schreiben. Bestimmen, ob noch ausstehende geteilte Schrittweitensperren für Schreibvorgänge vorhanden sind als Reaktion auf eine Auslagerungsanforderung zum Auslagern der Schrittweitengruppen von Spuren; und Gewähren einer exklusiven Schrittweitensperre für ein Auslagern einer Schrittweitengruppe von Spuren aus dem Cache in die Speichereinheiten als Reaktion auf das Bestimmen, dass es keine ausstehenden geteilten Schrittweitensperren für Schreibvorgänge gibt.
  19. System nach Anspruch 18, wobei die Operationen ferner aufweisen: Austauschen von Daten mit einem Controller, der den Zugriff auf die Speichereinheiten über eine Fabric verwaltet; Hinzufügen von Leseanforderungen zu mindestens einer Eingabenwarteschlange, um Spuren von den Speichereinheiten in den Cache zu überführen, um für Leseanforderungen zu den Spuren zurückzukehren, wobei der Controller die Leseanforderungen von der mindestens einen Eingabenwarteschlange über die Fabric abruft, um Daten von den Speichereinheiten zu lesen und in den Cache zu schreiben; und Hinzufügen von Schreibanforderungen zu der mindestens einen Eingabenwarteschlange, um die auszulagernden Spuren für die Schrittweitengruppe zu schreiben, als Reaktion auf ein Empfangen der exklusiven Schrittweitensperre für die Schrittweitengruppe, wobei der Controller die Schreibanforderungen von der mindestens einen Eingabenwarteschlange über die Fabric abruft, um Daten in die Speichereinheiten zu schreiben.
  20. Verfahren für ein Verwalten von Eingabe-/Ausgabeanforderungen an eine Mehrzahl von Speichereinheiten, das aufweist: Speichern einer Gruppe von Spuren im Cache, die in den Speichereinheiten gespeichert sind; Gewähren von exklusiven Spursperren für Spuren in der Gruppe im Cache für Schreibvorgänge auf die Spuren in der Gruppe im Cache, wobei exklusive Spursperren gleichzeitig für Schreibvorgänge auf verschiedene Spuren im Cache vorhaltbar sind; Gewähren einer exklusiven Gruppensperre für die Gruppe von Spuren im Cache, um die Spuren in der Gruppe aus dem Cache in die Speichereinheiten auszulagern; und Aufheben der exklusiven Gruppensperre, wenn das Auslagern der Spuren in der Gruppe im Cache in die Speichereinheiten ausgeführt ist.
  21. Verfahren nach Anspruch 20, das ferner aufweist: 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.
  22. Verfahren nach Anspruch 20, das ferner aufweist: 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 ein 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.
  23. Verfahren nach Anspruch 20, wobei das Auslagern der Gruppe von Spuren ferner 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 für die Gruppe anzeigt, um sie aus mindestens einer der Speichereinheiten zu lesen und 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 im 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.
  24. Verfahren nach Anspruch 23, wobei das Schreiben der neuen Paritätsdaten und der modifizierten Daten aufweist: Erzeugen einer Schreibanforderung, 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.
  25. Verfahren nach Anspruch 23, wobei 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.
DE112019001863.9T 2018-04-12 2019-04-01 Verwenden von spursperren und schrittweitengruppensperren zum verwalten von cacheoperationen Pending DE112019001863T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/951,168 US11151037B2 (en) 2018-04-12 2018-04-12 Using track locks and stride group locks to manage cache operations
US15/951,168 2018-04-12
PCT/IB2019/052653 WO2019197935A1 (en) 2018-04-12 2019-04-01 Using track locks and stride group locks to manage cache operations

Publications (1)

Publication Number Publication Date
DE112019001863T5 true DE112019001863T5 (de) 2020-12-31

Family

ID=68160866

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019001863.9T Pending DE112019001863T5 (de) 2018-04-12 2019-04-01 Verwenden von spursperren und schrittweitengruppensperren zum verwalten von cacheoperationen

Country Status (6)

Country Link
US (1) US11151037B2 (de)
JP (1) JP7256815B2 (de)
CN (1) CN111837102B (de)
DE (1) DE112019001863T5 (de)
GB (1) GB2585320B (de)
WO (1) WO2019197935A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884849B2 (en) 2018-04-27 2021-01-05 International Business Machines Corporation Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data
US10831597B2 (en) 2018-04-27 2020-11-10 International Business Machines Corporation Receiving, at a secondary storage controller, information on modified data from a primary storage controller to use to calculate parity data
US11226744B2 (en) 2020-04-14 2022-01-18 International Business Machines Corporation Determination of a type of destage to perform based on preference between performance of operations and preservation of drive life
US11231855B2 (en) 2020-04-14 2022-01-25 International Business Machines Corporation Determination of a type of destage to perform based on preference between performance of operations and preservation of drive life using a machine learning module
CN113687788A (zh) * 2021-08-30 2021-11-23 西安超越申泰信息科技有限公司 国产平台的数据读写优化方法、装置、计算机及存储介质
US11720500B2 (en) 2021-09-03 2023-08-08 International Business Machines Corporation Providing availability status on tracks for a host to access from a storage controller cache
US11726913B2 (en) 2021-09-03 2023-08-15 International Business Machines Corporation Using track status information on active or inactive status of track to determine whether to process a host request on a fast access channel

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4354232A (en) * 1977-12-16 1982-10-12 Honeywell Information Systems Inc. Cache memory command buffer circuit
US6520490B1 (en) 1999-09-23 2003-02-18 Soilsoup Inc. Liquid compost aerator and method of using same
US5574882A (en) * 1995-03-03 1996-11-12 International Business Machines Corporation System and method for identifying inconsistent parity in an array of storage
US5922057A (en) 1997-01-10 1999-07-13 Lsi Logic Corporation Method for multiprocessor system of controlling a dynamically expandable shared queue in which ownership of a queue entry by a processor is indicated by a semaphore
US6381674B2 (en) * 1997-09-30 2002-04-30 Lsi Logic Corporation Method and apparatus for providing centralized intelligent cache between multiple data controlling elements
JP3495266B2 (ja) * 1998-11-13 2004-02-09 Necエレクトロニクス株式会社 キャッシュロック装置及びキャッシュロック方法
US6463503B1 (en) 1999-05-12 2002-10-08 International Business Machines Corporation Method and system for increasing concurrency during staging and destaging in a log structured array
US6564271B2 (en) 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US6385683B1 (en) 1999-08-13 2002-05-07 Lsi Logic Corporation Methods and apparatus for raid hardware sequencing to achieve a higher performance raid architecture
US6289039B1 (en) 2000-06-14 2001-09-11 Linex Technologies, Inc. Spread-spectrum communications utilizing variable throughput reduction
US6934318B2 (en) 2000-12-22 2005-08-23 Qualcomm, Incorporated Method and system for energy based frame rate determination
US6516380B2 (en) 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US6950966B2 (en) 2001-07-17 2005-09-27 Seachange International, Inc. Data transmission from raid services
US7389507B2 (en) 2003-02-10 2008-06-17 Tandberg Data Corporation Operating-system-independent modular programming method for robust just-in-time response to multiple asynchronous data streams
US7155655B2 (en) 2003-07-22 2006-12-26 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive hybrid ARQ algorithms
US7457980B2 (en) 2004-08-13 2008-11-25 Ken Qing Yang Data replication method over a limited bandwidth network by mirroring parities
US20070118695A1 (en) * 2005-11-18 2007-05-24 International Business Machines Corporation Decoupling storage controller cache read replacement from write retirement
JP2009098996A (ja) 2007-10-18 2009-05-07 Hitachi Ltd ストレージシステム
US20090172244A1 (en) 2007-12-31 2009-07-02 Chaoyang Wang Hierarchical secondary raid stripe mapping
US9223642B2 (en) 2013-03-15 2015-12-29 Super Talent Technology, Corp. Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance
US9032151B2 (en) * 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
CN101566977B (zh) 2009-06-08 2011-02-02 华为技术有限公司 处理器访问共享数据的方法、装置及系统
US8392800B2 (en) 2009-10-20 2013-03-05 Hewlett-Packard Development Company, L.P. Multi-hop network having increased reliability
WO2011156746A2 (en) 2010-06-11 2011-12-15 California Institute Of Technology Systems and methods for rapid processing and storage of data
US8762609B1 (en) 2010-11-03 2014-06-24 Pmc-Sierra Us, Inc. System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator
KR101772951B1 (ko) 2011-03-10 2017-09-13 삼성전자주식회사 불 휘발성 메모리 장치 및 그것의 읽기 방법
US8365023B2 (en) 2011-04-29 2013-01-29 International Business Machines Corporation Runtime dynamic performance skew elimination
US8788742B2 (en) * 2011-05-23 2014-07-22 International Business Machines Corporation Using an attribute of a write request to determine where to cache data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device
US9798615B2 (en) 2011-07-05 2017-10-24 Dell Products, Lp System and method for providing a RAID plus copy model for a storage network
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
EP2880541A4 (de) 2012-07-31 2016-01-20 Hewlett Packard Development Co Systeme und verfahren zur kontrolle des zugriffs auf eine gemeinsame datenstruktur mit leser-/schreibersperren mit mehreren untersperren
US9348752B1 (en) * 2012-12-19 2016-05-24 Amazon Technologies, Inc. Cached data replication for cache recovery
US9542344B2 (en) 2014-02-19 2017-01-10 Sandisk Technologies Llc Datapath management in a memory controller
US9304689B2 (en) 2014-03-27 2016-04-05 International Business Machines Corporation Modeling workload information for a primary storage and a secondary storage
US10209898B2 (en) 2014-04-03 2019-02-19 International Business Machines Corporation Estimation of performance utilization of a storage device
US9933976B2 (en) 2014-04-28 2018-04-03 Hitachi, Ltd. Storage apparatus and data processing method thereof, and storage system
US9384093B1 (en) 2014-05-28 2016-07-05 Microsemi Storage Solutions (U.S.), Inc. Raid enabled NVME device
WO2015181902A1 (ja) 2014-05-28 2015-12-03 株式会社日立製作所 計算機システムおよび計算機システム制御方法
US9563382B2 (en) 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US20160110283A1 (en) * 2014-10-20 2016-04-21 Microsoft Corporation On-demand expansion of synchronization primitives
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US10102070B2 (en) 2015-06-01 2018-10-16 Hitachi, Ltd. Information processing system, storage apparatus and storage device
US9772773B2 (en) 2015-07-30 2017-09-26 International Business Machines Corporation Parity stripe lock engine
US10235288B2 (en) * 2015-10-02 2019-03-19 Netapp, Inc. Cache flushing and interrupted write handling in storage systems
US9940258B2 (en) 2015-11-09 2018-04-10 International Business Machines Corporation Implementing hardware accelerator for storage write cache management for merging data with existing data on fast writes to storage write cache
US9946642B2 (en) 2015-11-13 2018-04-17 Samsung Electronics Co., Ltd Distributed multimode storage management
US20170139594A1 (en) 2015-11-17 2017-05-18 Samsung Electronics Co., Ltd. Key-value integrated translation layer
US20170139825A1 (en) 2015-11-17 2017-05-18 HGST Netherlands B.V. Method of improving garbage collection efficiency of flash-oriented file systems using a journaling approach
US10176064B2 (en) 2016-02-26 2019-01-08 Netapp Inc. Granular consistency group replication
WO2017196315A1 (en) 2016-05-11 2017-11-16 Hitachi, Ltd. Data storage system and process for reducing read and write amplifications
WO2017216887A1 (ja) 2016-06-15 2017-12-21 株式会社日立製作所 情報処理システム
US9824767B1 (en) 2016-06-29 2017-11-21 Intel Corporation Methods and apparatus to reduce threshold voltage drift
KR20180006164A (ko) 2016-07-08 2018-01-17 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10521118B2 (en) 2016-07-13 2019-12-31 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB)
CN106790599B (zh) 2016-12-29 2019-06-28 中国人民解放军国防科学技术大学 一种基于多核无锁环形缓冲区的共生虚拟机通信方法
US10416928B2 (en) 2017-06-15 2019-09-17 Hitachi, Ltd. Data storage system and process for data compression of distributed data in a scalable cluster system and computer program for such data storage system
US10884849B2 (en) 2018-04-27 2021-01-05 International Business Machines Corporation Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data
US10831597B2 (en) 2018-04-27 2020-11-10 International Business Machines Corporation Receiving, at a secondary storage controller, information on modified data from a primary storage controller to use to calculate parity data

Also Published As

Publication number Publication date
JP7256815B2 (ja) 2023-04-12
CN111837102A (zh) 2020-10-27
US11151037B2 (en) 2021-10-19
GB202017405D0 (en) 2020-12-16
US20190317898A1 (en) 2019-10-17
WO2019197935A1 (en) 2019-10-17
CN111837102B (zh) 2024-04-19
GB2585320A (en) 2021-01-06
GB2585320B (en) 2021-06-09
JP2021517684A (ja) 2021-07-26

Similar Documents

Publication Publication Date Title
DE112019001863T5 (de) Verwenden von spursperren und schrittweitengruppensperren zum verwalten von cacheoperationen
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
DE102016103359B4 (de) Singleton-cachespeicher-verwaltungsprotokoll für hierarchische virtualisierte speichersysteme
DE112020002526B4 (de) Blockmodusumschaltung in datenspeichersystem
DE112013001284B4 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE102011076894B4 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102016001591A1 (de) System und Verfahren für Copy-On-Write auf einer SSD
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE102014109519A1 (de) Techniken zum Replizieren von Daten zwischen Speicherservern
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE112012001302T5 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE102013200032A1 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE102019117794A1 (de) Speichervorrichtungen, die heterogene Prozessoren umfassen, welche sich Speicher teilen, und Verfahren zu deren Betrieb
DE112020005787T5 (de) Verbesserte dateisystem-unterstützung für zonen-namespace-speicher
DE102011085989A1 (de) Verfahren und Vorrichtung zum Ausführen von parallelen Speicherlese- und Speicherschreiboperationen
DE112010004972T5 (de) Domänenbasiertes Cache-Kohärenzprotokoll
DE102018123670A1 (de) Speicherungssystem, Rechensystem und Verfahren dafür
DE112017005782T5 (de) Warteschlange für Speichervorgänge
DE112017001658T5 (de) Behandlung von fehleranfälligen Cache-Zeilen-Slots eines speicherseitigen Caches eines Multilevel-Systemspeichers
DE102019104871A1 (de) Nichtflüchtige dateiaktualisierungsmedien
DE102018005453A1 (de) Methoden, um Cache-Kohärenz basierend auf Cache-Typ bereitzustellen
DE102018131983A1 (de) Switch-unterstützte datenspeicher-netzwerkverkehrsverwaltung in einem rechenzentrum
DE112019005408T5 (de) Masterloses raid für byte-adressierbaren nichtflüchtigen speicher
DE112018000900T5 (de) Verarbeiten eines Befehls zum Freigeben von Speicherplatz in einem Computersystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R084 Declaration of willingness to licence