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