DE102013209318A1 - Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen - Google Patents

Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen Download PDF

Info

Publication number
DE102013209318A1
DE102013209318A1 DE102013209318A DE102013209318A DE102013209318A1 DE 102013209318 A1 DE102013209318 A1 DE 102013209318A1 DE 102013209318 A DE102013209318 A DE 102013209318A DE 102013209318 A DE102013209318 A DE 102013209318A DE 102013209318 A1 DE102013209318 A1 DE 102013209318A1
Authority
DE
Germany
Prior art keywords
cache
caching
operations
request
scan
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE102013209318A
Other languages
English (en)
Other versions
DE102013209318B4 (de
Inventor
Michael T. Benhase
Lokesh M. Gupta
Matthew J. Kalos
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 DE102013209318A1 publication Critical patent/DE102013209318A1/de
Application granted granted Critical
Publication of DE102013209318B4 publication Critical patent/DE102013209318B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0608Saving storage space on storage systems
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory

Abstract

Ein Controller empfängt eine Anforderung zum Durchführen von Zwischenspeicherungs- oder Auslagerungsvorgängen in Bezug auf einen Bereich eines Cachespeichers. Es wird ermittelt, ob ein oder mehrere Löschscans für den Bereich des Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind. In Reaktion darauf, dass ermittelt wird, dass ein oder mehrere Löschscans für den Bereich des Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind, vermeidet der Controller, die Anforderung zum Durchführen der Zwischenspeicherungs- oder der Auslagerungsvorgänge oder einen Lesetreffer in Bezug auf den Bereich des Cachespeichers zu bedienen.

Description

  • HINTERGRUND
  • 1. Gebiet
  • Die Offenbarung bezieht sich auf ein Verfahren, ein System und ein Herstellungsprodukt zum Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen.
  • 2. Hintergrund
  • Ein Speichercontroller kann mit einem oder mehreren einer Vielzahl von Hosts verbunden sein. Der Speichercontroller kann eine Vielzahl von Speichereinheiten, z. B. Plattenlaufwerke, Bandlaufwerke usw., verwalten, die mit dem Speichercontroller verbunden sind. Die Vielzahl von Hosts kann über den Speichercontroller auf in den Speichereinheiten gespeicherte Daten zugreifen.
  • Der Speichercontroller kann einen Cachespeicher pflegen, wobei ein Cachespeicher ein Speichertyp ist, der in der Lage ist, einen im Vergleich zu Speichereinheiten wie Plattenlaufwerke oder Bandlaufwerke schnelleren Zugriff auf Daten bereitzustellen. Der vom Cachespeicher bereitgestellte Speicherplatz ist kleiner als der von den Platten- oder Bandlaufwerken bereitgestellte Speicherplatz, wobei der von den Platten- oder Bandlaufwerken oder anderen Einheiten bereitgestellte Speicher als sekundärer Speicher bezeichnet werden kann. Folglich müssen Spuren womöglich zwischengespeichert (d. h. in den Cachespeicher aus dem sekundären Speicher versetzt) oder ausgelagert (d. h. aus dem sekundären Speicher in den Cachespeicher versetzt) werden, um zu verhindern, dass der Cachespeicher voll wird und um einen schnelleren Zugriff auf Daten bereitzustellen. Um Speicherplatz im Cachespeicher zu schaffen, werden Spuren in vielen Situationen mithilfe von Löschscans eventuell aus dem Cachespeicher gelöscht.
  • Ein Tasksteuerblock (Task Control Block, TCB) ist eine Datenstruktur im Betriebssystem-Kernel, die die zum Verwalten eines bestimmten Prozesses erforderlichen Informationen enthält. Speichercontroller können Informationen in Speichereinheiten und aus diesen und in den Cachespeicher und aus diesem mithilfe von TCBs versetzen, um die Versetzung von Daten zu verwalten.
  • KURZDARSTELLUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Es werden ein Verfahren, ein System und ein Computerprogrammprodukt bereitgestellt, wobei ein Controller eine Anforderung zum Durchführen von Zwischenspeicherungs- oder Auslagerungsvorgängen in Bezug auf einen Bereich eines Cachespeichers empfängt. Es wird ermittelt, ob eine oder mehrere Löschscans für den Bereich des Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind. In Reaktion darauf, dass ermittelt wird, dass ein oder mehrere Löschscans für den Bereich des Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind, vermeidet der Controller, die Anforderung zum Durchführen der Zwischenspeicherungs- oder der Auslagerungsvorgänge oder einen Lesetreffer in Bezug auf den Bereich des Cachespeichers zu bedienen.
  • Bei weiteren Ausführungsformen bedient der Controller in Reaktion darauf, dass ermittelt wird, dass ein oder mehrere Löschscans für den Bereich des Cachespeichers nicht durchgeführt werden oder in die Warteschlange gereiht sind, die Anforderung zum Durchführen der Zwischenspeicherungs- oder der Auslagerungsvorgänge oder den Lesetreffer in Bezug auf den Bereich des Cachespeichers.
  • Bei weiteren Ausführungsformen handelt es sich beim Cachespeicher um einen Flash-Cachespeicher, und Löschscans werden in Bezug auf eine Anforderung zum Freigeben von Speicherplatz im Flash-Cachespeicher von einem Host an den Controller asynchron durchgeführt.
  • Bei gewissen Ausführungsformen entspricht der Bereich des Cachespeichers einem Extent, einer Spur, einem Datenträger, einem logischen Subsystem oder einer anderen Speicherrepräsentation.
  • Bei weiteren Ausführungsformen pflegt der Controller eine Vielzahl von logischen Subsystemen, wobei jedes logische Subsystem eine Vielzahl von Datenträgern speichert, und wobei eine logische Speichergruppe eine Vielzahl von logischen Subsystemen ist, die für Eingabe/Ausgabe-(E/A)-Vorgänge vorgesehen sind. In Reaktion darauf, dass ermittelt wird, dass ein oder mehrere Löschscans für die logische Speichergruppe durchgeführt werden oder in die Warteschlange gereiht sind, umgeht der Controller den Flash-Zwischenspeicher in Bezug auf Zwischenspeichern oder Auslagern und speichert direkt aus Plattenlaufwerken zwischen oder lagert direkt in die Plattenlaufwerke aus.
  • Bei noch weiteren Ausführungsformen pflegt der Controller eine Vielzahl von logischen Subsystemen, wobei jedes logische Subsystem eine Vielzahl von Datenträgern speichert. Der Controller empfängt eine Anforderung für einen Löschscan vom Cachespeicher und reiht einen Lösch-Aufgabensteuerblock für den Löschscan für den Datenträger in die Warteschlange, für den der Löschscan angefordert wird. Der Controller ermittelt anhand der Lösch-Aufgabensteuerblöcke, ob Zwischenspeicherungs- oder Auslagerungsvorgänge für Spuren in einem Bereich von Spuren sind, die über Löschscans gelöscht werden. In Reaktion darauf, dass anhand der Lösch-Aufgabensteuerblöcke ermittelt wird, dass die Zwischenspeicherungs- oder Auslagerungsvorgänge für Spuren im Bereich von Spuren sind, die über die Löschscans gelöscht werden, vermeidet der Controller, die Anforderung zum Durchführen der Zwischenspeicherungs- oder der Auslagerungsvorgänge zu bedienen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Es wird nun auf die Zeichnungen Bezug genommen, in denen gleiche Bezugszeichen entsprechende Teile in den gesamten Zeichnungen darstellen:
  • 1 zeigt ein Blockschaubild einer Datenverarbeitungsumgebung, die einen mit einem Host verbundenen Speichercontroller enthält, gemäß gewissen Ausführungsformen
  • 2 zeigt ein Blockschaubild zu asynchronen Löschscans, die in einem Speichercontroller durchgeführt werden, gemäß gewissen Ausführungsformen;
  • 3 zeigt einen Ablaufplan, in dem das asynchrone Löschen von Spuren in einem Flash-Cachespeicher gemäß gewissen Ausführungsformen abgebildet ist;
  • 4 zeigt einen Ablaufplan, in dem abgebildet ist, wie Anforderungen für Zwischenspeicherungs- oder Auslagerungsvorgänge bedient werden, wenn asynchrone Löschscans am Laufen sind, gemäß gewissen Ausführungsformen;
  • 5 zeigt ein Blockschaubild einer weiteren Datenverarbeitungsumgebung, die einen mit einem Host verbundenen Speichercontroller enthält, gemäß gewissen Ausführungsformen;
  • 6 zeigt einen Ablaufplan, in dem das Erstellen von Aufgabensteuerblöcken für Löschscans gemäß gewissen Ausführungsformen abgebildet ist;
  • 7 zeigt einen Ablaufplan, in dem abgebildet ist, wie Anforderungen für Zwischenspeicherungs- oder Auslagerungsvorgänge in einem System mit logischen Subsystemen und Datenträgern bedient werden, wenn asynchrone Löschscans am Laufen sind, gemäß gewissen Ausführungsformen; und
  • 8 zeigt ein Blockschaubild eines Rechensystems, das gewisse Elemente abbildet, die in zumindest den Speichercontrollern der 1 oder 5 enthalten sein können, gemäß gewissen Ausführungsformen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Bei der folgenden Beschreibung wird Bezug auf die beiliegenden Zeichnungen genommen, die einen Teil hiervon bilden und mehrere Ausführungsformen zeigen. Es wird verstanden, dass andere Ausführungsformen verwendet werden und strukturelle sowie operative Veränderungen vorgenommen werden können.
  • Speicherplatz kann in einem Speichercontroller aus diversen Gründen freigegeben werden. Bei gewissen Ausführungsformen kann Speicherplatz freigegeben werden, wenn ein Datenträger gelöscht wird. Bei anderen Ausführungsformen kann Speicherplatz in Reaktion darauf freigegeben werden, dass ein Host-Befehl zum Konsolidieren von Speicherplatz empfangen wird. Bei gewissen Ausführungsformen wird ein Flash-Cachespeicher im Speichercontroller gepflegt, um einen schnelleren Zugriff auf Daten für den Host bereitzustellen. Um Speicherplatz freizugeben, ist es womöglich erforderlich, Spuren im Flash-Cachespeicher zu löschen. Ein Löschscan muss das Cachespeicherverzeichnis scannen und Spuren, die dem freizugebenden Speicherplatz entsprechen, löschen. Bei gewissen Ausführungsformen werden Flash-Cachespeicher-Löschscans in Bezug auf vom Host empfangene Anforderungen zum Freigeben von Speicherplatz asynchron durchgeführt.
  • Wenn Zwischenspeicherungs- oder Auslagerungsanforderungen empfangen werden, wenn asynchrone Löschscans aus dem Flash-Cachespeicher durchgeführt werden, werden die Zwischenspeicherungs- oder Auslagerungsforderungen bei gewissen Ausführungsformen nicht bedient, wenn die Spuren (oder Extents, Datenträger, logische Subsysteme, logische Subsystemgruppen usw.) gerade Löschscans unterzogen werden.
  • Beispielhafte Ausführungsformen
  • 1 zeigt ein Blockschaubild einer Datenverarbeitungsumgebung 100, die einen Speichercontroller 102 enthält, der mit einem oder mehreren Hosts 104 verbunden ist, gemäß gewissen Ausführungsformen. Der Speichercontroller verwaltet Speicher für den Host 104 durch Steuern von einer oder mehreren Speichereinheiten 106.
  • Der Speichercontroller 102 und die Hosts 104 können eine beliebige geeignete Recheneinheit aufweisen, darunter die auf dem Gebiet derzeit bekannten Recheneinheiten wie z. B. ein Personal Computer, eine Workstation, ein Server, ein Mainframe, ein tragbarer Computer, ein Palmtop-Computer, eine Telefonieeinheit, eine Netzwerkanwendung, ein Blade-Computer, ein Server usw. Die Speichereinheiten 106 können eine beliebige geeignete Speichereinheit aufweisen, darunter die auf dem Gebiet derzeit bekannten Speichereinheiten wie etwa Magnetplatten, optische Platten, Bänder usw. Bei gewissen Ausführungsformen können der Host 104, der Speichercontroller 102 und die Speichereinheiten 106 über ein Netzwerk, z. B. das Internet, ein Intranet, ein Speicherbereichsnetz, ein lokales Netz usw., verbunden sein.
  • Der Speichercontroller 102 kann einen Flash-Cachespeicher 108 beinhalten. Bei gewissen Ausführungsformen kann der Flash-Cachespeicher 108 aus einer Vielzahl von Halbleiterplatten bestehen. Der Flash-Cachespeicher 108 kann Caching-Services zum Zwischenspeichern von Daten und einen schnelleren Zugriff auf in den Speichereinheiten 106 gespeicherte Daten bereitstellen. Die Daten, die im Flash-Cachespeicher 108 und in anderen Speichermedien gespeichert sind, die sich entweder innerhalb des Speichercontroller 102 befinden oder mit diesem verbunden sind, können durch Speicherrepräsentationen 110 wie Spuren, Extents, Datenträger, logische Subsysteme usw. repräsentiert sein.
  • Der Speichercontroller 102 kann auch eine Anwendung 112 für asynchrone Löschscans enthalten, die in dem Speichercontroller 102 ausgeführt wird. Die Anwendung 112 für asynchrone Löschscans kann in Software, Firmware, Hardware oder einer Kombination davon umgesetzt sein. Die Anwendung 112 für asynchrone Löschscans kann, wenn sie ausgeführt wird, Löschscanprozesse durchführen, die verwendet werden, um aus dem Flash-Cachespeicher 108 zu löschende Spuren zu ermitteln, so dass Speicherplatz im Flash-Cachespeicher 108 freigegeben wird.
  • Der Speichercontroller 102 enthält auch eine Zwischenspeicherungs-/Auslagerungsanwendung 114, die in dem Speichercontroller 102 ausgeführt wird. Die Zwischenspeicherungs-/Auslagerungsanwendung 114 kann in Software, Firmware, Hardware oder einer Kombination davon umgesetzt sein. Die Zwischenspeicherungs-/Auslagerungsanwendung 114 kann, wenn sie ausgeführt wird, das Zwischenspeichern von Daten aus den Speichereinheiten 106 in den Flash-Cachespeicher 108 und/oder das Auslagern von Daten aus dem Flash-Cachespeicher 108 in die Speichereinheiten 106 durchführen.
  • Der Speichercontroller 102 kann auch eine Datenstruktur wie eine Tabelle 116 oder eine Bitmap pflegen, die die Bereiche von Spuren oder Bereiche des Flash-Cachespeichers 108 speichern kann, aus denen Löschscans durchgeführt werden oder für die Löschscans in die Warteschlange gereiht wurden. Bei alternativen Ausführungsformen kann die Tabelle 116 die Identitäten von Extents, Datenträgern, logischen Subsystemen speichern, aus denen Löschscans durchgeführt werden oder für die Löschscans in die Warteschlange gereiht wurden.
  • Aus diesem Grund zeigt 1 gewisse Ausführungsformen, bei denen ein Speichercontroller 102 einen Flash-Cachespeicher 108 pflegt, aus dem Speicherplatz über eine Anwendung 112 für asynchrone Löschscans freizugeben ist. Auch wenn Löschscans für Bereiche des Flash-Cachespeichers 108 am Laufen sind oder in die Warteschlange gereiht sind, bedienen gewisse Ausführungsformen die Zwischenspeicherungs-/Auslagerungsanforderungen in Bezug auf diese Bereiche des Flash-Cachespeichers 108 nicht. Darüber hinaus werden nicht nur Zwischenspeicherungs-/Auslagerungsanforderungen nicht bedient, sondern es werden auch Vorgänge durchgeführt, um Lesetreffer nicht zu bedienen, die in einem ”Cacheumgehungs”-Modus ausgeführt werden, bis die Löschscans abgeschlossen sind: d. h., es werden die folgenden Vorgänge ausgeführt: (a) nicht an den Cachespeicher hochstufen (d. h. nicht zwischenspeichern); (b) nicht vom Cachespeicher herabstufen (d. h. nicht auslagern); und (c) einen Lesetreffer vom Cachespeicher nicht bedienen (d. h. Cachespeicher vollständig umgehen).
  • 2 zeigt ein Blockschaubild 200 zu asynchronen Löschscans, die in dem Speichercontroller 102 durchgeführt werden, gemäß gewissen Ausführungsformen.
  • Bei gewissen Ausführungsformen kann der Host 104 einen Speicherplatzfreigabe-Befehl 202 an den Speichercontroller 102 senden, wobei der Speicherplatzfreigabe-Befehl 202 anfordern kann, dass Speicherplatz durch den Speichercontroller 102 freizugeben ist. Die Speicherplatzfreigabe kann über verschiedene Mechanismen erfolgen, z. B. Löschen von Speicherplatz, Konsolidieren von Speicherplatz usw.
  • Der Speichercontroller 102 empfängt den Speicherplatzfreigabe-Befehl 202 und in Reaktion kann die Anwendung 112 für asynchrone Löschscans einen asynchronen Löschscanprozess 208 starten, um ein Flash-Cachespeicherverzeichnis 210 zu scannen, das dem Flash-Cachespeicher 108 entspricht, um Spuren zu ermitteln, die aus dem Flash-Cachespeicher 108 zu löschen sind. Die Asynchronizität des asynchronen Löschscanprozesses 208 liegt in Bezug auf den Speicherplatzfreigabe-Befehl 202 vor, d. h. der Speicherplatzfreigabe-Befehl 202 wartet, während der asynchrone Löschscanprozess 208 ausgeführt wird, nicht dessen Abschluss ab.
  • Spuren werden asynchron aus dem Flash-Cachespeicher 108 gelöscht, da die Speicherkapazität und die Anzahl von Spuren im Flash-Cachespeicher 108 ausreichend groß sind, so dass der Speicherplatzfreigabe-Befehl 202 durch Zeitlimitüberschreitungen usw. fehlschlagen kann, sollte der Speicherplatzfreigabe-Befehl 202 warten, während Spuren gerade aus dem Flash-Cachespeicher 108 gelöscht werden.
  • 3 zeigt einen Ablaufplan 300, in dem das asynchrone Löschen von Spuren in einem Flash-Cachespeicher 108 gemäß gewissen Ausführungsformen abgebildet ist. Die in 3 gezeigten Vorgänge können durch die Anwendung 112 für asynchrone Löschscans durchgeführt werden, die in dem Speichercontroller 102 ausgeführt wird.
  • Die Steuerung startet bei Block 302, in dem der Speichercontroller 102 einen Flash-Cachespeicher 108 pflegt. Die Steuerung geht zu Block 304 über, in dem der Speichercontroller 102 einen Speicherplatzfreigabe-Befehl 202 vom Host 104 empfängt, um Speicherplatz freizugeben.
  • Von Block 304 geht die Steuerung zu Block 306 über. In Block 306 ermittelt die in dem Speichercontroller 102 ausgeführte Anwendung 112 für asynchrone Löschscans, ob Spuren im Flash-Cachespeicher 108 gelöscht werden müssen. Ist dies der Fall, geht die Steuerung parallel zu den Blöcken 308 und 310 über und die Anwendung 112 für asynchrone Löschscans löscht (in Block 308) Spuren des Flash-Cachespeichers 108 asynchron und antwortet (in Block 310) dem Host 104 parallel dazu (d. h. vor Abschluss der asynchronen Löschvorgänge), dass der Speicherplatzfreigabe-Prozess für den Flash-Cachespeicher 108 gestartet hat, und der Speicherplatzfreigabe-Befehl 202 schließt die Ausführung ab. Es sei angemerkt, dass der Speicherplatzfreigabe-Befehl 202 die Ausführung abschließt, noch während die asynchronen Löschscans 208 ausgeführt werden.
  • Von Block 306 aus kann der Prozess (in Block 312) beendet werden, wenn keine Spuren aus dem Flash-Cachespeicher 108 zu löschen sind.
  • Aus diesem Grund zeigt 3 gewisse Ausführungsformen, in denen asynchrone Löschvorgänge aus dem Flash-Cachespeicher 108 durchgeführt werden.
  • 4 zeigt einen Ablaufplan 400, in dem abgebildet ist, wie Anforderungen für Zwischenspeicherungs- oder Auslagerungsvorgänge bedient werden, wenn asynchrone Löschscans am Laufen sind, gemäß gewissen Ausführungsformen. Die in 4 gezeigten Vorgänge können durch die Anwendung 112 für asynchrone Löschscans und die Zwischenspeicherungs-/Auslagerungsanwendung 114 durchgeführt werden, die in dem Speichercontroller 102 ausgeführt werden. Die Steuerung beginnt mit Block 402, in dem der Speichercontroller 102 eine Anforderung zum Ausführen von Zwischenspeicherungs- oder Auslagerungsvorgängen in Bezug auf einen Bereich des Flash-Cachespeichers 108 empfängt, wobei der Flash-Cachespeicher 108 bei gewissen Ausführungsformen ein anderen Cachespeicher-Typ sein kann. Es wird (in Block 404) ermittelt, ob ein oder mehrere Löschscans für den Bereich des Cachespeichers 108 gerade durchgeführt werden oder in die Warteschlange gereiht sind. Bei gewissen Ausführungsformen entspricht der Bereich des Flash-Cachespeichers 108 einem Extent, einer Spur, einem Datenträger, einem logischen Subsystem oder einer anderen Speicherrepräsentation.
  • In Reaktion darauf, dass ein oder mehrere Löschscans für den Bereich des Flash-Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind (Zweig „Ja” von Block 404), vermeidet der Speichercontroller 102 (in Block 406), die Anforderung zum Durchführen der Zwischenspeicherungs- oder der Auslagerungsvorgänge in Bezug auf den Bereich des Flash-Cachespeichers 108 zu bedienen. Der Speichercontroller 102 kann dem Anforderer der Zwischenspeicherungs-/Auslagerungsvorgänge mitteilen, dass die Speicherbereiche (oder die entsprechenden Speicherrepräsentationen wie Spuren, Extents, Datenträger, logische Subsysteme usw.) aufgrund von Löschscans nicht verfügbar sind.
  • In Reaktion darauf, dass ein oder mehrere Löschscans für den Bereich des Flash-Cachespeichers nicht durchgeführt werden oder in die Warteschlange gereiht sind (Zweig „Nein” von Block 404), bedient der Speichercontroller 102 (in Block 408) die Anforderung zum Durchführen der Zwischenspeicherungs- oder der Auslagerungsvorgänge in Bezug auf den Bereich des Flash-Cachespeichers 108.
  • Aus diesem Grund zeigt 4 gewisse Ausführungsformen, in denen Bereiche des Flash-Cachespeichers 108, aus denen Löschungen durchgeführt werden, nicht für Zwischenspeicherungs- oder Auslagerungsvorgänge verwendet werden können, wenn ein Löschscan am Laufen oder in die Warteschlange gereiht ist.
  • 5 zeigt ein Blockschaubild einer weiteren Datenverarbeitungsumgebung 500, die einen Speichercontroller 502 enthält, der mit einem Host 504 und Speichereinheiten 506 verbunden ist, gemäß gewissen Ausführungsformen. Der Speichercontroller 504 enthält eine Anwendung 512 für asynchrone Löschscans und eine Zwischenspeicherungs-/Auslagerungsanwendung 514. Darüber hinaus wird ein Flash-Cachespeicher 508 innerhalb des Speichercontrollers 502 gepflegt oder ist mit diesem verbunden.
  • Der Speichercontroller 502 steuert eine Vielzahl von logischen Subsystemen (LSS) 516a...516n, wobei ein logisches Subsystem aus einer Vielzahl von Datenträgern bestehen kann, und wobei ein Datenträger aus einer Vielzahl von Spuren 519 bestehen kann. Beispielsweise besteht ein logisches Subsystem 516a aus Datenträgern 518a...518r, und ein logisches Subsystem 516n besteht aus Datenträgern 520a...520s. Eine Vielzahl von logischen Subsystemen, die für die Eingabe/Ausgabe (E/A) vorgesehen sind, kann als eine logische Subsystemgruppe 522 bezeichnet werden.
  • Der Speichercontroller kann auch eine Vielzahl von Aufgabensteuerblöcken (TCB) 522a...522t pflegen, wobei jeder Aufgabensteuerblock als Lösch-TCB bezeichnet wird, bei dem es sich um eine Datenstruktur im Betriebssystem-Kernel handelt, die die Informationen enthält, die erforderlich sind, um einen Löschscanprozess zu verwalten, der einem Bereich von Spuren, Datenträgern, LSS oder einer LSS-Gruppe entspricht.
  • Aus diesem Grund zeigt 5 gewisse Ausführungsformen, in denen der Speichercontroller 502 eine Vielzahl von logischen Subsystemen 516a...516n pflegt, wobei jedes logische Subsystem eine Vielzahl von Datenträgern speichert, und wobei eine logische Speichergruppe eine Vielzahl von logischen Subsystemen ist, die für Eingabe/Ausgabe-(E/A)-Vorgänge vorgesehen sind. Aufgabensteuerblöcke werden zum Verwalten von Löschscanprozessen gepflegt, die durch die Anwendung 112 für asynchrone Löschscans erstellt werden, um Löschscans aus dem Flash-Cachespeicher 508 durchzuführen.
  • 6 zeigt einen Ablaufplan 600, in dem das Erstellen von Aufgabensteuerblöcken 522a...522t für Löschscans gemäß gewissen Ausführungsformen abgebildet ist. Die im Ablaufplan 600 gezeigten Vorgänge können durch eine Anwendung 512 für asynchrone Löschscans durchgeführt werden, die in dem Speichercontroller 502 ausgeführt wird.
  • Die Steuerung beginnt mit Block 602, in dem der Speichercontroller 602 eine Anforderung für einen Löschscan empfängt, der aus dem Flash-Cachespeicher 508 durchzuführen ist. Die Steuerung geht zu Block 604 über, in dem der Speichercontroller 602 einen Lösch-Aufgabensteuerblock (z. B. Lösch-TCB 522a in 5) für den Löschscan für den Datenträger in die Warteschlange reiht, für den der Löschscan angefordert wurde.
  • Aus diesem Grund zeigt 6 gewisse Ausführungsformen, in denen abgebildet ist, wie Lösch-Aufgabensteuerblöcke 522a...522t zum Durchführen von Löschscans aus dem Flash-Cachespeicher 508 erzeugt werden. Gewisse der TCBs 522a...522t können in eine Warteschlange gereiht sein, während andere TCBs für laufende Löschscans gerade verarbeitet werden.
  • 7 zeigt einen Ablaufplan 700, in dem gemäß gewissen Ausführungsformen abgebildet ist, wie Anforderungen für Zwischenspeicherungs- oder Auslagerungsvorgänge in einem Speichercontroller 502 mit logischen Subsystemen 516a...516n und Datenträgern 518a...518r, 520a...520s bedient werden, wenn asynchrone Löschscans am Laufen sind. Die im Ablaufplan 700 gezeigten Vorgänge können durch die Anwendung 512 für asynchrone Löschscans und die Zwischenspeicherungs-/Auslagerungsanwendung 514 durchgeführt werden, die in dem Speichercontroller 502 ausgeführt werden.
  • Die Steuerung beginnt mit Block 700, in dem eine Zwischenspeicherungs-/Auslagerungsanforderung in Bezug auf den Flash-Cachespeicher 508 von dem Speichercontroller 502 empfangen wird. Die Steuerung geht zu Block 704 über, in dem ermittelt wird, ob aktive Löschscans für eine logische Subsystemgruppe oder einen Datenträger vorliegen. Wenn ein aktiver Löschscan für eine logische Subsystemgruppe vorliegt (Zweig mit dem Bezugszeichen 705), geht die Steuerung zu Block 706 über, in dem der Flash-Cachespeicher 508 umgangen wird und Daten direkt aus Plattenlaufwerken 106 zwischengespeichert und direkt in Plattenlaufwerke 106 ausgelagert werden. Darüber hinaus kann der Speichercontroller 508 eine Nachricht, dass die logische Subsystemgruppe nicht für ein Zwischenspeichern/Auslagern zur Verfügung steht, da sie gerade für Löschscans verwendet wird, oder eine andere informative Nachricht an den Anforderer der Zwischenspeicherungs-/Auslagerungsanforderung senden.
  • In Block 704 wird ermittelt, ob ein aktiver Löschscan für einen Datenträger vorliegt (Zweig mit dem Bezugszeichen 707) und die Steuerung geht zu Block 708 über, in dem anhand der Lösch-Aufgabensteuerblöcke 522a...522t ermittelt wird, ob das angeforderte Zwischenspeichern/Auslagern für Spuren im Bereich der Spuren liegt, die über die Löschscans zu löschen oder in die Warteschlange zum Löschen gereiht sind. Ist dies der Fall (Zweig 709 „Ja”), wird ein Zwischenspeichern oder Auslagern in Bezug auf den Flash-Cachespeicher 508 vermieden (in Block 706). Ist dies nicht der Fall (Zweig 711 „Nein”), wird ein Zwischenspeichern oder Auslagern in Bezug auf den Flash-Cachespeicher 508 zugelassen und die Zwischenspeicherungs-/Auslagerungsvorgänge werden durchgeführt (in Block 710).
  • Wenn in Block 704 ermittelt wird, dass keine aktiven Löschscans für eine logische Subsystemgruppe oder einen Datenträger vorliegen (Zweig 712 „Nein”), geht die Steuerung zu Block 710 über, in dem das Zwischenspeichern/Auslagern in Bezug auf den Flash-Cachespeicher 508 zugelassen wird. und die Zwischenspeicherungs-/Auslagerungsvorgänge durchgeführt werden.
  • Aus diesem Grund zeigt 7 gewisse Ausführungsformen, in denen Zwischenspeicherungs- oder Auslagerungsvorgänge vermieden werden, wenn das Zwischenspeichern/Auslagern Spuren im Bereich der Spuren betrifft, die über asynchrone Löschscans gelöscht werden. Darüber hinaus wird ein Zwischenspeichern/Auslagern vermieden, wenn ein aktiver Löschscan für eine logische Subsystemgruppe vorliegt.
  • Die 1 bis 7 zeigen gewisse Ausführungsformen, in denen Zwischenspeicherungen und Auslagerungen aus Bereichen des Flash-Cachespeichers vermieden werden, wenn Löschscans für dieselben Bereiche des Flash-Cachespeichers am Laufen oder in die Warteschlange gereiht sind. Folglich können die asynchronen Löschscans im Vergleich zu Situationen, in denen asynchrone Löschscans durch Zwischenspeicherungs- und Auslagerungsvorgänge unterbrochen werden, viel schneller und ohne Fehler fortschreiten.
  • Weitere Ausführungsdetails
  • Die beschriebenen Vorgänge können unter Verwendung von Programmier- und/oder Entwicklungsverfahren, die für die Produktion von Software, Firmware, Hardware oder einer Kombination davon standardmäßig sind, als Verfahren, Vorrichtung oder Computerprogrammprodukt umgesetzt sein. Demgemäß können Aspekte der Ausführungsformen die Form einer ausschließlich aus Hardware bestehenden Ausführungsform, einer ausschließlich aus Software bestehenden Ausführungsform (Firmware, residente Software, Mikrocode usw. mit eingeschlossen) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte kombiniert, die hier allesamt allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Ferner können Aspekte der Ausführungsformen die Form eines Computerprogrammprodukts annehmen, das als ein oder mehrere computerlesbare Medien umgesetzt ist, die einen computerlesbaren Programmcode aufweisen.
  • Es kann eine beliebige Kombination aus einem oder mehreren computerlesbaren Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann beispielsweise ein/e elektronische/s, magnetische/s, optische/s, elektromagnetische/s, Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder eine geeignete Kombination des Vorstehenden sein, ohne jedoch darauf beschränkt zu sein. Spezifischere Beispiele (nichterschöpfende Liste) für das computerlesbare Speichermedium sind unter anderem: eine elektrische Verbindung mit einem oder mehreren Kabeln, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM, Random Access Memory), ein Nur-Lese-Speicher (ROM, Read Only Memory), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM (Erasable Programmable Read Only Memory) oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact Disk-Nur-Lese-Speicher (CD-ROM, Compact Disc-Read Only Memory), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine geeignete Kombination des Vorstehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm zur Verwendung durch ein/e Anweisungsausführungssystem, -vorrichtung oder -einheit oder in Verbindung damit enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann elf weitergeleitetes Datensignal beinhalten, das einen computerlesbaren Programmcode aufweist, beispielsweise im Basisband oder als Teil einer Trägerwelle. Ein solches weitergeleitetes Signal kann eine Vielzahl von Formen annehmen, beispielsweise elektromagnetisch, optisch oder eine geeignete Kombination davon, ohne jedoch darauf beschränkt zu sein. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, bei dem es sich nicht um ein computerlesbares Speichermedium handelt und das ein Programm zur Verwendung durch ein/e Anweisungsausführungssystem, -vorrichtung oder -einheit oder in Verbindung damit übertragen, weiterleiten oder transportieren kann.
  • Der in einem computerlesbaren Medium enthaltene Programmcode kann mithilfe eines geeigneten Mediums übertragen werden, beispielsweise drahtlos, kabelgebunden, Lichtwellenleiterkabel, HF usw. oder eine Kombination des Vorstehenden, ohne jedoch darauf beschränkt zu sein.
  • Ein Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in irgendeiner Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, beispielsweise objektorientierte Programmiersprache wie Java*
  • *
    Java ist eine Marke von Oracle und/oder dessen Partnern.
    , Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie die „C”-Programmiersprache oder ähnliche Programmiersprachen. Der Programmcode kann zur Gänze 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 Remote-Computer oder zur Gänze auf dem Remote-Computer oder -Server ausgeführt werden. Bei letzterem Szenario kann der Remote-Computer über einen beliebigen Netzwerktyp, beispielsweise lokales Netz (LAN, Local Area Network) oder Weitverkehrsnetz (WAN, Wide Area Network), mit dem Computer des Benutzers verbunden sein oder die Verbindung zu einem externen Computer kann hergestellt werden (z. B. über einen Internet-Diensteanbieter über Internet).
  • Aspekte der vorliegenden Erfindung sind im Folgenden unter Bezugnahme auf die Ablaufplandarstellungen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sei verstanden, dass jeder Block der Ablaufplandarstellungen und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplandarstellungen und/oder Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Universalcomputers, eines spezifischen Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu produzieren, so dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel für das Umsetzen der in dem einen oder den mehreren Ablaufplan- und/oder Blockschaubildblöcken angegebenen Funktionen/Aktionen erstellen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Weise zu arbeiten, so dass die im computerlesbaren Medium gespeicherten Anweisungen ein Herstellungsprodukt produzieren, das Anweisungen beinhaltet, die die in den einen oder mehreren Ablaufplan- und/oder Blockschaubildblöcken angegebene Funktion/Aktion umsetzen.
  • Die Computerprogramminstruktionen können auch in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Geräte geladen werden, um zu bewirken, dass eine Reihe von Betriebsschritten im Computer, auf der anderen programmierbaren Vorrichtung oder auf anderen Einheiten durchgeführt wird, um ein computerausgeführtes Verfahren zu produzieren, so dass die Anweisungen, die auf dem Computer oder auf der anderen programmierbaren Vorrichtung ausgeführt werden, Verfahren zum Umsetzen der in dem einen oder den mehreren Ablaufplan- und/oder Blockschaubildblöcken angegebenen Funktionen/Aktionen bereitstellen.
  • 8 zeigt ein Blockschaubild, in dem gewisse Elemente abgebildet sind, die in den Speichercontrollern 102, 502 gemäß gewissen Ausführungsformen enthalten sein können. Das System 800 kann die Speichercontroller 102, 502 aufweisen und kann eine Schaltung 802 enthalten, die bei gewissen Ausführungsformen zumindest einen Prozessor 804 enthalten kann. Das System 800 kann auch einen Hauptspeicher 806 (z. B. eine Einheit mit flüchtigem Speicher) und einen Speicher 808 enthalten. Der Speicher 808 kann eine Einheit mit nichtflüchtigem Speicher (z. B. EEPROM, ROM, PROM, RAM, DRAM, SRAM, Flash, Firmware, programmierbare Logik usw.), Magnetplattenlaufwerk, optisches Plattenlaufwerk, Bandlaufwerk usw. enthalten. Der Speicher 808 kann eine interne Speichereinheit, eine angeschlossene Speichereinheit und/oder eine im Netz adressierbare Speichereinheit aufweisen. Das System 800 kann eine Programmlogik 810 enthalten, die einen Code 812 beinhaltet, der in den Hauptspeicher 806 geladen und durch den Prozessor 804 oder die Schaltung 802 ausgeführt werden kann. Bei gewissen Ausführungsformen kann die den Code 812 enthaltende Programmlogik 810 im Speicher 808 gespeichert werden. Bei gewissen anderen Ausführungsformen kann die Programmlogik 810 in der Schaltung 802 umgesetzt sein. Aus diesem Grund kann die Programmlogik 810 im Hauptspeicher 806 und/oder in der Schaltung 802 umgesetzt sein, auch wenn 8 die Programmlogik 810 getrennt von den anderen Elementen zeigt.
  • Gewisse Ausführungsformen können auf ein Verfahren zum Bereitstellen von Datenverarbeitungsanweisungen durch eine Person oder eine automatisierte Verarbeitung gerichtet sein, die einen computerlesbaren Code in ein Datenverarbeitungssystem integriert, wobei der Code in Kombination mit dem Datenverarbeitungssystem in der Lage ist, die Vorgänge der beschriebenen Ausführungsformen durchzuführen.
  • Die Ausdrücke „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)”, außer wenn ausdrücklich anderweitig angegeben.
  • Die Ausdrücke „enthalten”, „aufweisen”, „haben” und Variationen davon bedeuten „einschließlich, aber nicht ausschließlich”, außer wenn ausdrücklich anderweitig angegeben.
  • Die nummerierte Elementliste impliziert nicht, dass ein oder alle der Elemente sich gegenseitig ausschließen, außer wenn ausdrücklich anderweitig angegeben.
  • Die Ausdrücke „ein/e/r/s” und ”der/die/das” bedeuten „ein/e/r/s oder mehrere”, außer wenn ausdrücklich anderweitig angegeben.
  • Einheiten, die in Verbindung miteinander stehen, müssen nicht in durchgehender Verbindung miteinander stehen, außer wenn ausdrücklich anderweitig angegeben. Darüber hinaus können Einheiten, die in Verbindung miteinander stehen, direkt oder indirekt über einen oder mehrere Vermittler Daten austauschen.
  • Eine Beschreibung einer Ausführungsform mit mehreren Komponenten, die in Verbindung miteinander stehen, impliziert nicht, dass all diese Komponenten erforderlich sind. Vielmehr ist eine Vielzahl von optionalen Komponenten beschrieben, um die große Bandbreite an möglichen Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
  • Auch wenn Prozessschritte, Verfahrensschritte, Algorithmen oder dergleichen in einer sequentiellen Reihenfolge beschrieben sind, können Prozesse, Verfahren und Algorithmen darüber hinaus so konfiguriert sein, dass sie in alternativen Reihenfolgen arbeiten. Anders ausgedrückt indiziert eine Sequenz oder Reihenfolge von Schritten, die beschrieben sein kann, nicht notwendigerweise eine Anforderung, dass die Schritte in dieser Reihenfolge durchgeführt werden müssen. Die Schritte der hier beschriebenen Prozesse können in einer beliebigen praktischen Reihenfolge durchgeführt werden. Darüber hinaus können einige Schritte gleichzeitig durchgeführt werden.
  • Wenn eine einzelne Einheit oder ein einzelnes Produkt hier beschrieben wird, ist sofort ersichtlich, dass mehr als eine Einheit/ein Produkt (unabhängig davon, ob sie zusammenarbeiten) anstatt einer einzelnen Einheit/einem einzelnen Produkt verwendet werden können. Wenn mehr als eine Einheit oder ein Produkt hier beschrieben ist (unabhängig davon, ob sie zusammenarbeiten), ist es gleichermaßen sofort ersichtlich, dass eine einzelne Einheit/ein einzelnes Produkt anstatt der mehr als einen Einheit oder des mehr als einen Produkts verwendet werden kann oder eine unterschiedliche Anzahl von Einheiten/Produkten statt der gezeigten Anzahl von Einheiten oder Programmen verwendet werden kann. Die Funktionen und/oder die Merkmale einer Einheit können alternativ durch eine oder mehrere andere Einheiten umgesetzt sein, die nicht ausdrücklich als solche Funktionen/Merkmale aufweisend beschrieben sind. Somit müssen andere Ausführungsformen der vorliegenden Erfindung die Einheit selbst nicht beinhalten.
  • Zumindest gewisse Vorgänge, die in den Figuren abgebildet sein können, zeigen gewisse Ereignisse, die in einer gewissen Reihenfolge auftreten. Bei alternativen Ausführungsformen können gewisse Vorgänge in einer unterschiedlichen Reihenfolge, mit Änderungen oder Entfernungen durchgeführt werden. Ferner können Schritte zu der oben beschriebenen Logik hinzugefügt werden und immer noch den beschriebenen Ausführungsformen entsprechen. Darüber hinaus können hier beschriebene Vorgänge sequentiell auftreten oder gewisse Vorgänge können parallel verarbeitet werden. Außerdem können Vorgänge durch eine einzelne Verarbeitungseinheit oder durch verteilte Verarbeitungseinheiten durchgeführt werden.
  • Die vorstehende Beschreibung verschiedener Ausführungsformen der Erfindung dient der Veranschaulichung und Beschreibung. Sie soll nicht erschöpfend sein oder die Erfindung auf die offenbarte genaue Form einschränken. Angesichts der obigen Lehre sind viele Änderungen und Variationen möglich. Der Umfang der Erfindung soll nicht durch diese ausführliche Beschreibung eingeschränkt sein, sondern durch die beiliegenden Ansprüche. Die obige Beschreibung, die obigen Beispiele und die obigen Daten stellen eine vollständige Beschreibung der Herstellung und Verwendung der Zusammensetzung der Erfindung bereit. Da viele Ausführungsformen der Erfindung gebildet werden können, ohne sich vom Geist und Umfang der Erfindung zu entfernen, liegt die Erfindung in den hier nachfolgenden Ansprüchen.

Claims (9)

  1. Verfahren, aufweisend: Empfangen einer Anforderung durch einen Controller zum Durchführen von Zwischenspeicherungs- oder Auslagerungsvorgängen in Bezug auf einen Bereich eines Cachespeichers; Ermitteln, ob ein oder mehrere Löschscans für den Bereich des Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind; und in Reaktion darauf, dass ermittelt wird, dass ein oder mehrere Löschscans für den Bereich des Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind, Vermeiden, dass die Anforderung zum Durchführen der Zwischenspeicherungs- oder der Auslagerungsvorgänge oder ein Lesetreffer in Bezug auf den Bereich des Cachespeichers bedient wird.
  2. Verfahren nach Anspruch 1, wobei das Verfahren ferner aufweist: in Reaktion darauf, dass ermittelt wird, dass ein oder mehrere Löschscans für den Bereich des Cachespeichers nicht durchgeführt werden oder in die Warteschlange gereiht sind, Bedienen der Anforderung zum Durchführen der Zwischenspeicherungs- oder der Auslagerungsvorgänge oder des Lesetreffers in Bezug auf den Bereich des Cachespeichers.
  3. Verfahren nach Anspruch 1, wobei es sich beim Cachespeicher um einen Flash-Cachespeicher handelt und Löschscans in Bezug auf eine Anforderung zum Freigeben von Speicherplatz im Flash-Cachespeicher von einem Host an den Controller asynchron durchgeführt werden.
  4. Verfahren nach Anspruch 1, wobei der Bereich des Cachespeichers einem Extent, einer Spur, einem Datenträger, einem logischen Subsystem oder einer anderen Speicherrepräsentation entspricht.
  5. Verfahren nach Anspruch 1, wobei es sich beim Cachespeicher um einen Flash-Cachespeicher handelt, wobei der Controller eine Vielzahl von logischen Subsystemen pflegt, wobei jedes logische Subsystem eine Vielzahl von Datenträgern speichert, wobei eine logische Speichergruppe eine Vielzahl von logischen Subsystemen ist, die für Eingabe/Ausgabe-(E/A)-Vorgänge vorgesehen sind; und in Reaktion darauf, dass ermittelt wird, dass ein oder mehrere Löschscans für die logische Speichergruppe durchgeführt werden oder in die Warteschlange gereiht sind, Umgehen des Flash-Zwischenspeichers in Bezug auf Zwischenspeichern und Auslagern und direktes Zwischenspeichern aus Plattenlaufwerken oder direktes Auslagern in die Plattenlaufwerke.
  6. Verfahren nach Anspruch 1, wobei der Controller eine Vielzahl von logischen Subsystemen pflegt, wobei jedes logische Subsystem eine Vielzahl von Datenträgern speichert, wobei das Verfahren ferner aufweist: Empfangen einer Anforderung für einen Löschscan aus dem Cachespeicher; In-die-Warteschlange-Reihen eines Lösch-Aufgabensteuerblocks für den Löschscan für den Datenträger, für den der Löschscan angefordert wurde; Ermitteln anhand der Lösch-Aufgabensteuerblöcke, ob Zwischenspeicherungs- oder Auslagerungsvorgänge für Spuren in einem Bereich von Spuren sind, die über Löschscans gelöscht werden; und in Reaktion darauf, dass anhand der Lösch-Aufgabensteuerblöcke ermittelt werden, dass die Zwischenspeicherungs- oder Auslagerungsvorgänge für Spuren im Bereich von Spuren sind, die über die Löschscans gelöscht werden, Vermeiden, dass die Anforderung zum Durchführen der Zwischenspeicherungs- oder der Auslagerungsvorgänge bedient wird.
  7. System, das mit einem Cachespeicher verbunden ist, wobei das System aufweist: einen Hauptspeicher; und einen mit dem Hauptspeicher verbundenen Prozessor, wobei der Prozessor Vorgänge durchführt, wobei die Vorgänge aufweisen: Empfangen einer Anforderung zum Durchführen von Zwischenspeicherungs- oder Auslagerungsvorgängen in Bezug auf einen Bereich eines Cachespeichers; Ermitteln, ob ein oder mehrere Löschscans für den Bereich des Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind; und in Reaktion darauf, dass ermittelt wird, dass ein oder mehrere Löschscans für den Bereich des Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind, Vermeiden, dass die Anforderung zum Durchführen der Zwischenspeicherungs- oder der Auslagerungsvorgänge oder ein Lesetreffer in Bezug auf den Bereich des Cachespeichers bedient wird.
  8. Computerprogrammprodukt, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das einen computerlesbaren Programmcode beinhaltet, wobei der computerlesbare Programmcode so konfiguriert ist, dass er Vorgänge auf einem Controller durchführt, der mit einem Cachespeicher verbunden ist, wobei die Vorgänge aufweisen: Empfangen einer Anforderung durch den Controller zum Durchführen von Zwischenspeicherungs- oder Auslagerungsvorgängen in Bezug auf einen Bereich des Cachespeichers; Ermitteln, ob ein oder mehrere Löschscans für den Bereich des Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind; und in Reaktion darauf, dass ermittelt wird, dass ein oder mehrere Löschscans für den Bereich des Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind, Vermeiden, dass die Anforderung zum Durchführen der Zwischenspeicherungs- oder der Auslagerungsvorgänge oder ein Lesetreffer in Bezug auf den Bereich des Cachespeichers bedient wird.
  9. Speichercontroller, der mit einem Host verbunden ist, wobei der Speichercontroller aufweist: einen Prozessor, einen mit dem Prozessor verbundenen Cachespeicher, wobei der Speichercontroller Vorgänge durchgeführt, wobei die Vorgänge aufweisen: Empfangen einer Anforderung zum Durchführen von Zwischenspeicherungs- oder Auslagerungsvorgängen in Bezug auf einen Bereich des Cachespeichers; Ermitteln, ob ein oder mehrere Löschscans für den Bereich des Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind; und in Reaktion darauf, dass ermittelt wird, dass ein oder mehrere Löschscans für den Bereich des Cachespeichers durchgeführt werden oder in die Warteschlange gereiht sind, Vermeiden, dass die Anforderung zum Durchführen der Zwischenspeicherungs- oder der Auslagerungsvorgänge oder ein Lesetreffer in Bezug auf den Bereich des Cachespeichers bedient wird.
DE102013209318.7A 2012-06-08 2013-05-21 Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen Active DE102013209318B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/491,818 2012-06-08
US13/491,818 US9336150B2 (en) 2012-06-08 2012-06-08 Performing asynchronous discard scans with staging and destaging operations

Publications (2)

Publication Number Publication Date
DE102013209318A1 true DE102013209318A1 (de) 2013-12-12
DE102013209318B4 DE102013209318B4 (de) 2019-02-21

Family

ID=49626028

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013209318.7A Active DE102013209318B4 (de) 2012-06-08 2013-05-21 Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen

Country Status (2)

Country Link
US (3) US9336150B2 (de)
DE (1) DE102013209318B4 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9336150B2 (en) 2012-06-08 2016-05-10 International Business Machines Corporation Performing asynchronous discard scans with staging and destaging operations
US9195598B2 (en) 2012-06-08 2015-11-24 International Business Machines Corporation Synchronous and asynchronous discard scans based on the type of cache memory
US9208099B2 (en) 2012-08-08 2015-12-08 International Business Machines Corporation Adjustment of the number of task control blocks allocated for discard scans
US9176892B2 (en) 2013-01-22 2015-11-03 International Business Machines Corporation Performing staging or destaging based on the number of waiting discard scans
US10782904B2 (en) * 2017-09-28 2020-09-22 Intel Corporation Host computing arrangement, remote server arrangement, storage system and methods thereof
US11054994B2 (en) * 2017-12-14 2021-07-06 International Business Machines Corporation Copy source to target management in a data storage system
US10521139B2 (en) 2017-12-14 2019-12-31 International Business Machines Corporation Copy source to target management in a data storage system
KR20200076244A (ko) * 2018-12-19 2020-06-29 삼성전자주식회사 데이터 스토리지 장치를 포함하는 시스템 및 데이터 스토리지 장치의 디스카드 동작 제어 방법

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4875155A (en) * 1985-06-28 1989-10-17 International Business Machines Corporation Peripheral subsystem having read/write cache with record access
EP1030243B1 (de) 1999-02-18 2002-10-30 Texas Instruments France Optimierte Hardware-Reinigungsfunktion für einen Daten-Cache-Speicher mit virtuellen Indizes und Tags
US6356980B1 (en) 1999-11-09 2002-03-12 International Business Machines Corporation Method and system for bypassing cache levels when casting out from an upper level cache
US6922754B2 (en) * 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
US7191207B2 (en) 2003-06-11 2007-03-13 International Business Machines Corporation Apparatus and method to dynamically allocate bandwidth in a data storage and retrieval system
US7085892B2 (en) * 2003-06-17 2006-08-01 International Business Machines Corporation Method, system, and program for removing data in cache subject to a relationship
US7769802B2 (en) * 2003-12-04 2010-08-03 Microsoft Corporation Systems and methods that employ correlated synchronous-on-asynchronous processing
US20060069888A1 (en) * 2004-09-29 2006-03-30 International Business Machines (Ibm) Corporation Method, system and program for managing asynchronous cache scans
US7539815B2 (en) * 2004-12-29 2009-05-26 International Business Machines Corporation Method, system and circuit for managing task queues in a disk device controller
US8683139B2 (en) 2006-10-31 2014-03-25 Hewlett-Packard Development Company, L.P. Cache and method for cache bypass functionality
US8549222B1 (en) 2008-02-12 2013-10-01 Netapp, Inc. Cache-based storage system architecture
US20090222621A1 (en) 2008-02-29 2009-09-03 International Business Machines Corporation Managing the allocation of task control blocks
US8738840B2 (en) 2008-03-31 2014-05-27 Spansion Llc Operating system based DRAM/FLASH management scheme
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US9430395B2 (en) 2008-08-11 2016-08-30 International Business Machines Corporation Grouping and dispatching scans in cache
US8055850B2 (en) * 2009-04-06 2011-11-08 International Business Machines Corporation Prioritization of directory scans in cache
US8621145B1 (en) * 2010-01-29 2013-12-31 Netapp, Inc. Concurrent content management and wear optimization for a non-volatile solid-state cache
JP4988008B2 (ja) 2010-05-13 2012-08-01 株式会社東芝 情報処理装置およびドライバ
CN102595450B (zh) 2011-01-10 2014-12-24 华为技术有限公司 测量间隙的配置方法和通信装置
US8966184B2 (en) * 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US9075723B2 (en) 2011-06-17 2015-07-07 International Business Machines Corporation Efficient discard scans
US8909996B2 (en) * 2011-08-12 2014-12-09 Oracle International Corporation Utilizing multiple storage devices to reduce write latency for database logging
US20130138884A1 (en) * 2011-11-30 2013-05-30 Hitachi, Ltd. Load distribution system
US8918581B2 (en) * 2012-04-02 2014-12-23 Microsoft Corporation Enhancing the lifetime and performance of flash-based storage
US9645917B2 (en) * 2012-05-22 2017-05-09 Netapp, Inc. Specializing I/O access patterns for flash storage
US9336150B2 (en) 2012-06-08 2016-05-10 International Business Machines Corporation Performing asynchronous discard scans with staging and destaging operations
US9195598B2 (en) 2012-06-08 2015-11-24 International Business Machines Corporation Synchronous and asynchronous discard scans based on the type of cache memory
US9208099B2 (en) 2012-08-08 2015-12-08 International Business Machines Corporation Adjustment of the number of task control blocks allocated for discard scans
US9176892B2 (en) 2013-01-22 2015-11-03 International Business Machines Corporation Performing staging or destaging based on the number of waiting discard scans

Also Published As

Publication number Publication date
US9335930B2 (en) 2016-05-10
US20130332646A1 (en) 2013-12-12
US20140068163A1 (en) 2014-03-06
US20160085454A1 (en) 2016-03-24
DE102013209318B4 (de) 2019-02-21
US9336151B2 (en) 2016-05-10
US9336150B2 (en) 2016-05-10

Similar Documents

Publication Publication Date Title
DE102013209318A1 (de) Durchführen von asynchronen Löschscans mit Zwischenspeicherungs- und Auslagerungsvorgängen
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE102013215535B4 (de) Sicherung oder wiederherstellung von daten mit hilfe eines hauptspeichers und nichtflüchtiger speichermedien
DE112011100112B4 (de) Pufferspeicher-platte in blitzkopie-kaskade
DE112012004798B4 (de) Anpassung der Auslagerungsgeschwindigkeit auf Grundlage von Anforderungen an Lese- und Schreib-Antwortzeiten
DE112012002615T5 (de) Vorabladen von Datenspuren und Paritätsdaten zur Verwendung zum Auslagern aktualisierter Spuren
DE112011102076B4 (de) Neuordnen des Zugriffs zum Verringern der Gesamtsuchzeit auf Bandmedien
DE112011103290B4 (de) Intelligente Schreibcacheoperationen für sequenzielle Datenspuren
DE112013004400B4 (de) Herstellen einer Zeitpunktkopie-Beziehung zwischen logischen Quellenadressen und logischen Zieladressen
DE112013001284T5 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE112012001302T5 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE112013000465B4 (de) Verwaltung einer fernen Datenreplikation
DE102013200032B4 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE102012219098A1 (de) Verwaltung von Teildatensegmenten in Systemen mit doppeltem Cachespeicher
DE102014116031A1 (de) SWAT-Befehl und API für atomare Auslagerung und Trimmen von LBAs
DE112018002951T5 (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
DE202010017613U1 (de) Datenspeichervorrichtung mit host-gesteuerter Speicherbereinigung
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE112011100618T5 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE112012001808B4 (de) Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher
DE602004002674T2 (de) Speichersystem und Verfahren zur Erfassung und Verwendung von Schnappschüssen
DE112013006655T5 (de) Speichervorrichtung und Verfahren zum Steuern der Speichervorrichtung
DE112008000180T5 (de) Verfahren und System für die Umsetzung eines Fast-Wakeup eines Flashspeichersystems
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE102019116546A1 (de) Verfahren für schnelles boot-lesen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final