-
GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung betrifft allgemein Datenverarbeitungssysteme und insbesondere Systeme und Verfahren zum Verwalten von Auslagerungs-Überprüfungszeiten in einem Cachespeicher.
-
HINTERGRUND DER ERFINDUNG
-
Ein Ziel von Computerspeichersystemen besteht im Verringern der Anzahl von Auslagerungskonflikten beim Auslagern von Speicherspuren aus einem Schreibcachespeicher, damit das Speichersystem effizienter und/oder schneller arbeitet. Ein Auslagerungskonflikt kann auftreten, wenn eine Speicherspur aus dem Schreibcachespeicher ausgelagert wird, während ein Host versucht, Daten in die Speicherspur zu schreiben. Diese Situation kann entstehen, weil heutige Speichersysteme üblicherweise Speicherspuren auslagern, kurz nachdem in die Speicherspur geschrieben wurde, und der Host warten muss, bis die Speicherspur aus dem Schreibcachespeicher ausgelagert wurde, ehe der Host wieder in die Speicherspur schreiben kann. Eine Technik zum Verringern der Anzahl von Auslagerungskonflikten beinhaltet das längere Halten von Speicherspuren im Schreibcachespeicher vor dem Auslagern der Speicherspuren, so dass mehrfach in eine Speicherspur geschrieben werden kann, ehe die Speicherspur ausgelagert wird.
-
Dies ist zwar eine wirkungsvolle Technik zum Verringern von Auslagerungskonflikten, aber es ist ebenfalls wünschenswert, dass Speicherspuren nicht zu lange im Schreibcachespeicher bleiben, so dass der Cachespeicher vollständig gefüllt wird. Es ist außerdem wünschenswert, dass im Cachespeicher keine Schwankungen zwischen beinahe voll und beinahe leer, bekannt als Schwingungen, in einem unangemessenen Ausmaß auftreten.
-
In der veröffentlichten US-Patentanmeldung
US 2010/0037226 A1 wird das Gruppieren mehrerer Überprüfungen des Cachespeicherverzeichnisses offenbart, die zum Löschen von Spuren aus dem Cachespeicher verwendet werden, wodurch die Anzahl von Überprüfungen verringert wird, die zu einem beliebigen Zeitpunkt zum Zweck des Auslagerns von Spuren ausgeführt werden. Beim Überprüfen eines Cachespeichers werden die mit dem Cachespeicher in Zusammenhang stehenden Spuren untersucht und geeignete Maßnahmen ergriffen. Die geeigneten Maßnahmen können das Auslagern von Daten aus dem Cachespeicher oder das Löschen von Daten aus dem Cachespeicher beinhalten. Die geeigneten Maßnahmen können auch abhängig von der Art der Überprüfung des Cachespeichers unterschiedlich sein.
-
In der veröffentlichten US-Patentanmeldung
US 2003/0225948 A1 werden das Vorkonfigurieren und Vorermitteln der Anzahl von Überprüfungsprozessen offenbart, wobei die Überprüfungsprozesse zum Auslagern von Daten aus Spuren in dem Cachespeicher verwendet werden, und sich außerdem die Anzahl der Überprüfungsprozesse im Lauf der Zeit ändern kann.
-
In der US-Patentschrift
US 7 085 892 B2 wird das Verzögern einer Überprüfungsanforderung zum Auslagern von Daten aus dem Cachespeicher offenbart, nachdem ermittelt wurde, ob eine mit einer in eine Warteschlange eingereihten Überprüfungsanforderung in Zusammenhang stehende Zeit kürzer als eine Zeitspanne ist.
-
Weiterhin sind in diesem Zusammenhang noch folgende Dokumente bekannt: das Dokument
JP H05- 303 528 A beschreibt einen Cache für ein Zurückschreiben, um den Frequenz des Zurückschreibens zu verringern und den Durchsatz zu erhöhen. Das Dokument
US 2004 / 0 260 882 A1 beschreibt ein Verfahren und ein System zum Verwalten von Daten. Dabei wird eine Scan-Anforderung empfangen, um Daten aus einem Cache-Speicher zu entfernen, die in einer Beziehung enthalten sind, nachdem die Beziehung etabliert wurde. Hierzu wird die Scan-Anforderung nach dem Empfang etwas verzögert.
-
Darüber hinaus beschreibt das Dokument
US 2003 / 0 084 251 A1 ein Cache-Speicher-System, bei dem die Computerleistung durch eine Zeitanpassung für eine vorausschauende Vernichtung/Löschung von Cache-Einträgen angepasst wird. Dazu wird festgestellt, dass ein Eintrag im Cache veraltet ist, wenn nicht auf ihn zugegriffen wurde oder er nicht verändert wurde. Wenn der Eintrag veraltet ist, kann er vorausschauend aufgegeben werden. Zusätzlich beschreibt das Dokument
DE 696 16 148 T2 ein Verfahren für eine Datenübertragung und -speicherung, insbesondere ein Verfahren für eine Datenübertragung von einem Host auf ein Speichermedium. Dabei wird auch vom Write-Back-Caching-Verfahren Gebrauch gemacht.
-
OFFENBARUNG DER ERFINDUNG
-
Durch verschiedene Ausführungsformen werden Systeme zum Verwalten von Auslagerungs-Überprüfungszeiten in einem Cachespeicher bereitgestellt. Ein System weist einen Cachespeicher und einen mit dem Cachespeicher verbundenen Prozessor auf. Bei einer Ausführungsform ist der Prozessor dafür konfiguriert, einen ersten Thread zu verwenden, um fortlaufend eine gewünschte Überprüfungszeit für das Überprüfen der Mehrzahl von Speicherspuren in dem Cachespeicher zu ermitteln, und einen zweiten Thread zu verwenden, um fortlaufend eine tatsächliche Überprüfungszeit der Mehrzahl von Speicherspuren in dem Cachespeicher auf der Grundlage der fortlaufend ermittelten gewünschten Überprüfungszeit zu steuern.
-
Es werden außerdem Verfahren zum Verwalten von Auslagerungs-Überprüfungszeiten in einem Cachespeicher bereitgestellt. Bei einem Verfahren wird ein erster Thread verwendet, um fortlaufend eine gewünschte Überprüfungszeit für das Überprüfen der Mehrzahl von Speicherspuren in dem Cachespeicher zu ermitteln, und ein zweiter Thread wird verwendet, um fortlaufend eine tatsächliche Überprüfungszeit für die Mehrzahl von Speicherspuren in dem Cachespeicher auf der Grundlage der fortlaufend ermittelten gewünschten Überprüfungszeit zu steuern.
-
Außerdem werden physische Computerspeichermedien bereitgestellt (z.B. eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer, programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination von diesen), die ein Computerprogrammprodukt zum Verwalten von Auslagerungs-Überprüfungszeiten in einem Cachespeicher aufweisen. Ein physisches Computerspeichermedium weist Computercode zum Verwenden eines ersten Thread auf, um fortlaufend eine gewünschte Überprüfungszeit für das Überprüfen der Mehrzahl von Speicherspuren in dem Cachespeicher zu ermitteln, und weist Computercode zum Verwenden eines zweiten Thread auf, um fortlaufend eine tatsächliche Überprüfungszeit der Mehrzahl von Speicherspuren in dem Cachespeicher auf der Grundlage der fortlaufend ermittelten gewünschten Überprüfungszeit zu steuern.
-
Figurenliste
-
Damit die Vorteile der Erfindung leicht verständlich sind, wird eine spezifischere Beschreibung der vorstehend kurz beschriebenen Erfindung durch Bezugnahme auf spezifische Ausführungsformen gegeben, die in den angefügten Zeichnungen veranschaulicht sind. Unter der Voraussetzung, dass diese Zeichnungen lediglich typische Ausführungsformen der Erfindung zeigen und daher nicht als deren Schutzumfang einschränkend anzusehen sind, wird die Erfindung mit zusätzlicher Genauigkeit und zusätzlichen Einzelheiten durch Verwendung der begleitenden Zeichnungen erläutert, die Folgendes zeigen:
- 1 ist ein Blockschaltbild einer Ausführungsform eines Systems zum Verwalten von Auslagerungsüberprüfungszeiten in einem Cachespeicher;
- 2 ist ein Ablaufplan einer Ausführungsform eines Verfahrens zum Ermitteln einer gewünschten Überprüfungszeit für den Cachespeicher aus 1 und
- 3 ist ein Ablaufplan einer Ausführungsform eines Verfahrens zum Steuern einer tatsächlichen Überprüfungszeit für den Cachespeicher aus 1.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
Durch verschiedene Ausführungsformen werden Systeme und Verfahren zum Verwalten von Auslagerungs-Überprüfungszeiten in einem Cachespeicher bereitgestellt. Außerdem werden physische Computerspeichermedien bereitgestellt (z.B. eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer, programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination von diesen), die ein Computerprogrammprodukt zum Verwalten von Auslagerungs-Überprüfungszeiten in einem Cachespeicher aufweisen.
-
Im Folgenden wird auf die Figuren eingegangen. 1 ist ein Blockschaltbild einer Ausführungsform eines Systems 100 zum Verwalten von Auslagerungsüberprüfungszeiten in einem Cachespeicher. Zumindest bei der veranschaulichten Ausführungsform weist das System 100 einen Arbeitsspeicher 110 auf, der über einen Bus 140 (z.B. einen kabelgebundenen und/oder drahtlosen Bus) mit einem Cachespeicher 120 und einem Prozessor 130 verbunden ist.
-
Bei dem Arbeitsspeicher 110 kann es sich um einen beliebigen in der Technik bekannten oder in der Zukunft entwickelten Speichereinheitentyp handeln. Beispiele für den Arbeitsspeicher 110 sind unter anderem, aber ohne darauf beschränkt zu sein: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (RAM), ein löschbarer, programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination von diesen. Bei den verschiedenen Ausführungsformen des Arbeitsspeichers 110 können Speicherspuren in den Arbeitsspeicher 110 gespeichert werden. Überdies kann jede der Speicherspuren aus dem Cachespeicher 120 in den Arbeitsspeicher 110 ausgelagert werden, wenn Daten in die Speicherspuren geschrieben werden.
-
Bei einer Ausführungsform weist der Cachespeicher 120 einen Schreibcachespeicher auf, der in eine oder mehrere Reihenfolgezeilen partitioniert ist, wobei jede Reihenfolgezeilen eine oder mehrere Speicherspuren enthält. Der Cachespeicher 120 kann jeder in der Technik bekannte oder in der Zukunft entwickelte Cachespeicher sein.
-
Während des Betriebs werden die Speicherspuren in jeder Reihenfolgezeile in einem „Vordergrund“-Auslagerungsprozess in den Arbeitsspeicher 110 ausgelagert, nachdem in die Speicherspuren geschrieben wurde. Das heißt, bei dem Vordergrund-Auslagerungsprozess werden Speicherspuren aus den Reihenfolgezeilen in den Arbeitsspeicher 110 ausgelagert, während ein Host (nicht gezeigt) aktiv in verschiedene Speicherspuren in den Reihenfolgezeilen des Cachespeichers 120 schreibt. Idealerweise wird eine bestimmte Speicherspur nicht ausgelagert, wenn ein oder mehrere Hosts in diese bestimmte Speicherspur schreiben möchten, was als Auslagerungskonflikt bekannt ist, und wenn in dem Cachespeicher 120 keine großen Schwankungen zwischen beinahe voll und beinahe leer auftreten, die als Schwingungen bekannt sind. Um die Anzahl der Auslagerungskonflikte und die Zeit zu verringern, während derer sich die Speicherspuren in dem Cachespeicher 120 befinden, ist der Prozessor 130 dafür konfiguriert, ein Verfahren zum Verwalten von Auslagerungsüberprüfungszeiten in dem Cachespeicher 120 auszuführen.
-
Bei verschiedenen Ausführungsformen weist der Prozessor 130 ein Auslagerungsüberprüfungszeit-Verwaltungsmodul 1310 auf oder kann auf ein solches zugreifen, das computerlesbaren Code aufweist, der beim Ausführen durch den Prozessor 130 den Prozessor 130 dazu veranlasst, das Verfahren zum Verwalten von Auslagerungsüberprüfungszeiten in dem Cachespeicher 120 auszuführen. Beim Ausführen des computerlesbaren Codes in dem Auslagerungsüberprüfungszeit-Verwaltungsmodul 1310 ist der Prozessor 130 dafür konfiguriert, einen ersten Thread zu verwenden, um eine gewünschte Überprüfungszeit für das Überprüfen der Speicherspuren in dem Cachespeicher 120 zu ermitteln, und einen zweiten Thread zu verwenden, um die tatsächliche Überprüfungszeit der Speicherspuren in dem Cachespeicher 120 auf der Grundlage der ermittelten gewünschten Überprüfungszeit zu steuern. Bei einer Ausführungsform dienen der erste Thread und der zweite Thread fortlaufend oder im Wesentlichen fortlaufend zum Ermitteln der gewünschten Überprüfungszeit und entsprechend zum Steuern der tatsächlichen Überprüfungszeit.
-
Beim Verwenden des ersten Thread zum Ermitteln der gewünschten Überprüfungszeit ist der Prozessor 130 dafür konfiguriert, den Cachespeicher 120 auf eine fortlaufende Weise, im Wesentlichen fortlaufende Weise oder auf der Grundlage eines vorgegebenen Intervalls auf Auslagerungskonflikte zu überwachen und die gewünschte Überprüfungszeit um eine vorgegebene Zeitspanne zu verlängern, wenn in dem Cachespeicher 120 Auslagerungskonflikte auftreten. Bei einer Ausführungsform beträgt die verlängerte vorgegebene Zeitspanne jedes Mal, wenn der Prozessor 130 Auslagerungskonflikte in dem Cachespeicher 120 entdeckt, 100 Millisekunden. Bei anderen Ausführungsformen ist die verlängerte vorgegebene Zeitspanne jedes Mal, wenn der Prozessor 130 Auslagerungskonflikte in dem Cachespeicher 120 entdeckt, eine Zeitspanne von weniger als 100 Millisekunden (z.B. circa 10 Millisekunden bis circa 99 Millisekunden). Bei noch anderen Ausführungsformen ist die verlängerte vorgegebene Zeitspanne jedes Mal, wenn der Prozessor 130 Auslagerungskonflikte in dem Cachespeicher 120 entdeckt, eine Zeitspanne von mehr als 100 Millisekunden (z.B. 101 Millisekunden bis etwa eine Sekunde). Die verlängerte vorgegebene Zeitspanne kann gemäß den Erfordernissen einer bestimmten Anwendung des Systems 100 eingestellt werden.
-
Der Prozessor 130 ist außerdem dafür konfiguriert, den Cachespeicher 120 auf eine fortlaufende Weise, im Wesentlichen fortlaufende Weise oder auf der Grundlage eines vorgegebenen Intervalls auf Schwingungen zu überwachen und die gewünschte Überprüfungszeit um eine vorgegebene Zeitspanne zu verkürzen, wenn in dem Cachespeicher 120 Schwingungen auftreten. Bei einer Ausführungsform ist der Prozessor 130 dafür konfiguriert, die gewünschte Überprüfungszeit um fünfzig Prozent (50 %) zu verkürzen, wenn der Prozessor 130 ermittelt, dass in dem Cachespeicher 120 Schwingungen auftreten. Bei einer anderen Ausführungsform ist der Prozessor 130 dafür konfiguriert, die gewünschte Überprüfungszeit um weniger als fünfzig Prozent (z.B. etwa 10 % bis etwa 49 %) verkürzen kann, wenn der Prozessor 130 feststellt dass in dem Cachespeicher 120 Schwingungen auftreten. Bei einer noch anderen Ausführungsform ist der Prozessor 130 dafür konfiguriert, die gewünschte Überprüfungszeit um mehr als fünfzig Prozent (z.B. etwa 51 % bis etwa 90 %) zu verkürzen, wenn der Prozessor 130 feststellt, dass in dem Cachespeicher 120 Schwingungen auftreten. Bei einer anderen Ausführungsform ist der Prozessor 130 dafür konfiguriert, die Menge der in dem Cachespeicher 120 gespeicherten Daten auf eine fortlaufende Weise, im Wesentlichen fortlaufende Weise oder auf der Grundlage eines vorgegebenen Intervalls zu überwachen und die gewünschte Überprüfungszeit um eine vorgegebene Zeitspanne zu verkürzen, wenn die in dem Cachespeicher 120 gespeicherte Datenmenge eine vorgegebene Menge überschreitet. Bei einer Ausführungsform ist der Prozessor 130 dafür konfiguriert, die gewünschte Überprüfung zu verkürzen, wenn der Prozessor 130 feststellt, dass in dem Cachespeicher 120 eine Datenmenge gespeichert ist, die gleich siebzig Prozent (70 %) der Gesamtspeicherkapazität des Cachespeichers 120 ist. Bei einer anderen Ausführungsform ist der Prozessor 130 dafür konfiguriert, die gewünschte Überprüfungszeit zu verkürzen, wenn der Prozessor 130 feststellt, dass in dem Cachespeicher 120 eine Datenmenge gespeichert ist, die mehr als siebzig Prozent (z.B. etwa 71 % bis etwa 95 %) der Gesamtspeicherkapazität des Cachespeichers 120 beträgt. Bei einer noch anderen Ausführungsform ist der Prozessor 130 dafür konfiguriert, die gewünschte Überprüfungszeit zu verkürzen, wenn der Prozessor 130 feststellt, dass in dem Cachespeicher 120 eine Datenmenge gespeichert ist, die weniger als siebzig Prozent (z.B. etwa 10 % bis etwa 69 %) der Gesamtspeicherkapazität des Cachespeichers 120 beträgt. Bei jeder dieser Ausführungsformen ist der Prozessor 130 dafür konfiguriert, die gewünschte Überprüfungszeit um fünfzig Prozent (50 %), um weniger als fünfzig Prozent (z.B. etwa 10 % bis etwa 49 %) oder um mehr als fünfzig Prozent (z.B. etwa 51 % bis etwa 90 %) zu verkürzen, wenn der Prozessor 130 feststellt dass die in dem Cachespeicher 120 gespeicherte Datenmenge die vorgegebene Menge überschreitet.
-
Bei verschiedenen Ausführungsformen ist der Prozessor 130 dafür konfiguriert, die aktuelle gewünschte Zeit beizubehalten, wenn in dem Cachespeicher keine Auslagerungskonflikte auftreten, wenn keine Schwingungen in großem Ausmaß auftreten und wenn eine gespeicherte Datenmenge die vorgegebene Datenmenge nicht überschreitet. Aus dem vorstehend Beschriebenen geht hervor, dass der Prozessor 130 dafür konfiguriert ist, die gewünschte Überprüfungszeit um eine kurze Zeitspanne zu verlängern, wenn der Prozessor 130 in dem Cachespeicher 120 Auslagerungskonflikte entdeckt, und die gewünschte Überprüfungszeit um eine relativ große Zeitspanne zu verkürzen, wenn der Prozessor 130 ermittelt, dass in dem Cachespeicher 120 Schwingungen auftreten und/oder dass eine gespeicherte Datenmenge die vorgegebene Datenmenge überschreitet. Bei verschiedenen Ausführungsformen ist der Prozessor 130 dafür konfiguriert, den zweiten Thread zu aktivieren, um die gewünschte Überprüfungszeit beim Steuern der tatsächlichen Überprüfungszeit des Cachespeichers 120 zu verwenden.
-
Beim Verwenden des zweiten Thread zum Steuern der tatsächlichen Überprüfungszeit des Cachespeichers 120 ist der Prozessor 130 dafür konfiguriert, die von dem Prozessor 130 für eine vorherige Überprüfung des Cachespeichers 120 benötigte Zeitspanne zu ermitteln. Der Prozessor 130 ist außerdem dafür konfiguriert, die Zeitspanne zu ermitteln, die zum Fertigstellen des bereits fertiggestellten Anteils der aktuellen Überprüfung des Cachespeichers 120 benötigt wurde, und diese Zeitspanne zu der Zeitspanne der vorherigen Überprüfung des Cachespeichers 120 zu addieren. Wenn für die vorherige Überprüfung des Cachespeichers 120 beispielsweise 750 Millisekunden benötigt wurden und für den Anteil der aktuellen Überprüfung des Cachespeichers 120 260 Millisekunden benötigt wurden, beträgt die Gesamtzeit ab dem Beginn der vorherigen Überprüfung bis zur aktuellen Zeit 1010 Millisekunden bzw. 1,01 Sekunden.
-
Der Prozessor 130 ist außerdem dafür konfiguriert, die Zeitspanne abzuschätzen, die zum Fertigstellen des verbleibenden Anteils der aktuellen Überprüfung des Cachespeichers 120 benötigt wird, und diese Zeitspanne zu der Zeitspanne ab dem Beginn der vorherigen Überprüfung bis zur aktuellen Zeit zu addieren. Bei einer Ausführungsform ist der Prozessor 130 dafür konfiguriert, beim Abschätzen des verbleibenden fertigzustellenden Anteils der aktuellen Überprüfung des Cachespeichers 120 den fertiggestellten Anteil der aktuellen Überprüfung von einer geschätzten Gesamtzeit für die aktuelle Überprüfung abzuziehen, um einen ersten Faktor zu erstellen. Die geschätzte Gesamtzeit kann auf einer geschätzten Anzahl verbleibender zu überprüfender Speicherspuren, einem geschätztem verbleibendem zu überprüfendem Prozentanteil des Cachespeichers 120 und dergleichen Schätzungen beruhen, von denen jede beispielsweise auf der Grundlage der Gesamtzahl der bei der vorherigen Überprüfung überprüften Speicherspuren beruhen kann. Wenn der Prozessor 130 beispielsweise schätzt, dass die 260 Millisekunden aus dem vorherigen Beispiel ein Drittel der zum Fertigstellen der aktuellen Überprüfung benötigten Gesamtzeit sind, schätzt der Prozessor 130, dass die zum Fertigstellen des verbleibenden Anteils der aktuellen Überprüfung des Cachespeichers 120 benötigte Zeit 520 Millisekunden (d.h. 260 Millisekunden x 2 = 520 Millisekunden) beträgt. Bei diesem Beispiel ist der erste Faktor 1530 Millisekunden bzw. 1,53 Sekunden (d.h. 750 ms + 260 ms + 520 ms = 1530 ms).
-
Bei einer anderen Ausführungsform ist der Prozessor 130 beim Abschätzen des verbleibenden fertigzustellenden Anteils der aktuellen Überprüfung des Cachespeichers 120 dafür konfiguriert, die Zeitspanne ab dem Beginn der vorherigen Überprüfung bis zur aktuellen Zeit (d.h. bei dem vorstehenden Beispiel 1010 Millisekunden) von dem ersten Faktor abzuziehen und diesen Betrag durch den ersten Faktor zu teilen (d.h. (1530 ms - 1010 ms)/1530 ms). Das Ergebnis dieser Berechnung wird dann mit der aus dem ersten Thread erhaltenen aktuellen gewünschten Zeit multipliziert (d.h. gewünschte Zeit x [(1530 ms - 1010 ms)/1530 ms]). Dieses Ergebnis wird anschließend zu der Gesamtzeit ab dem Beginn der vorherigen Überprüfung bis zur aktuellen Zeit addiert, um den ersten Faktor zu erhalten.
-
Der Prozessor 130 ist dafür konfiguriert, dann den ersten Faktor durch das Zweifache der aktuellen gewünschten Zeit (d.h. aktuelle gewünschte Zeit x 2) zu teilen, um einen Referenz-Überprüfungsfaktor zu ermitteln, der dazu verwendet werden kann vorherzusagen, ob die nächste tatsächliche Überprüfungszeit zu kurz sein wird. Wenn der Referenz-Überprüfungsfaktor kleiner als eins (1) ist, stellt der Prozessor 130 fest, dass die nächste tatsächliche Überprüfungszeit wahrscheinlich zu kurz sein wird, und der Prozessor 130 verlängert die nächste tatsächliche Überprüfungszeit für die nächste Überprüfung. Bei einer Ausführungsform verringert der Prozessor 130 die Anzahl der Auslagerungsaufgaben, die Speicherspuren in dem Cachespeicher 120 überprüfen und/oder auslagern, um die nächste tatsächliche Überprüfungszeit zu verlängern. Das Verringern der Anzahl von Auslagerungsaufgaben in dem Cachespeicher 120 hat die Wirkung, die Häufigkeit zu verringern, mit der Speicherspuren überprüft und/oder ausgelagert werden, wodurch die zum Ausführen einer tatsächlichen Überprüfung des Cachespeichers 120 benötigte Zeitspanne verlängert wird.
-
Wenn der Referenz-Überprüfungsfaktor größer als eins (1) ist, stellt der Prozessor 130 fest, dass die nächste tatsächliche Überprüfungszeit wahrscheinlich länger als die gewünschte Überprüfungszeit sein wird, und der Prozessor 130 ändert die Überprüfungszeit für die nächste Überprüfung nicht. Das heißt, der Prozessor 130 verringert oder erhöht die Anzahl von Auslagerungsaufgaben nicht, die Speicherspuren in dem Cachespeicher 120 überprüfen und/oder auslagern, was dazu führt, dass die Zeitspanne für die nächste Überprüfung im Wesentlichen dieselbe bleibt wie die Zeitspanne für die aktuelle Überprüfung.
-
Im Folgenden wird auf 2 eingegangen. 2 ist ein Ablaufplan einer Ausführungsform eines Verfahrens 200 zum Ermitteln einer gewünschten Überprüfungszeit für einen Cachespeicher (z.B. den Cachespeicher 120). Zumindest bei der veranschaulichten Ausführungsform beginnt das Verfahren 200 mit dem Überwachen des Cachespeichers (Block 205) und dem Ermitteln, ob in dem Cachespeicher Auslagerungskonflikte auftreten (Block 210).
-
Wenn in dem Cachespeicher Auslagerungskonflikte auftreten, weist das Verfahren 200 das Verlängern der gewünschten Überprüfungszeit um eine vorgegebene Zeitspanne auf (Block 215). Bei einer Ausführungsform beträgt die verlängerte vorgegebene Zeitspanne jedes Mal, wenn Auslagerungskonflikte in dem Cachespeicher entdeckt werden, 100 Millisekunden. Bei anderen Ausführungsformen ist die verlängerte vorgegebene Zeitspanne jedes Mal, wenn Auslagerungskonflikte in dem Cachespeicher entdeckt werden, eine Zeitspanne von weniger als 100 Millisekunden (z.B. circa 10 Millisekunden bis etwa 99 Millisekunden). Bei noch anderen Ausführungsformen ist die verlängerte vorgegebene Zeitspanne jedes Mal, wenn Auslagerungskonflikte in dem Cachespeicher entdeckt werden, eine Zeitspanne von mehr als 100 Millisekunden (z.B. 101 Millisekunden bis etwa eine Sekunde). Das Verfahren 200 stellt dann die verlängerte Überprüfungszeit dem Verfahren 300 zur Verfügung (siehe unten) und kehrt zum Überwachen des Cachespeichers zurück (Block 205).
-
Wenn in dem Cachespeicher keine Auslagerungskonflikte auftreten, weist das Verfahren 200 außerdem das Ermitteln auf, ob in dem Cachespeicher Schwingungen auftreten (Block 220). Wenn in dem Cachespeicher Schwingungen auftreten, weist das Verfahren 200 das Verkürzen der gewünschten Überprüfungszeit um eine vorgegebene Zeitspanne auf (Block 225). Bei einer Ausführungsform wird die gewünschte Überprüfungszeit um fünfzig Prozent (50 %) verkürzt, wenn in dem Cachespeicher Schwingungen auftreten. Bei einer anderen Ausführungsform wird die gewünschte Überprüfungszeit um weniger als fünfzig Prozent (z.B. etwa 10 % bis etwa 49 %) verkürzt, wenn in dem Cachespeicher Schwingungen auftreten. Bei einer noch anderen Ausführungsform wird die gewünschte Überprüfungszeit um mehr als fünfzig Prozent (z.B. etwa 51 % bis etwa 90 %) verkürzt, wenn in dem Cachespeicher Schwingungen auftreten. Das Verfahren 200 stellt dann die verkürzte Überprüfungszeit dem Verfahren 300 zur Verfügung (siehe unten) und kehrt zum Überwachen des Cachespeichers zurück (Block 205).
-
Wenn in dem Cachespeicher keine Schwingungen auftreten, weist das Verfahren 200 das Beibehalten der aktuellen gewünschten Überprüfungszeit auf (Block 230). Das heißt, die aktuelle gewünschte Überprüfungszeit wird beibehalten, wenn in dem Cachespeicher keine Auslagerungskonflikte und keine Schwingungen in großem Ausmaß auftreten. Das Verfahren 200 kehrt dann zum Überwachen des Cachespeichers zurück (Block 205).
-
Im Folgenden wird auf 3 eingegangen. 3 ist ein Ablaufplan einer Ausführungsform eines Verfahrens 300 zum Steuern einer tatsächlichen Überprüfungszeit eines Cachespeichers (z.B. des Cachespeichers 120). Zumindest bei der veranschaulichten Ausführungsform beginnt das Verfahren 300 mit dem Ermitteln der von einem Prozessor (z.B. dem Prozessor 130 zum Ausführen einer vorherigen Überprüfung des Cachespeichers benötigten Zeitspanne (Block 305).
-
Das Verfahren 300 wird fortgesetzt, indem die Zeitspanne ermittelt wird, die zum Fertigstellen eines bereits fertiggestellten Anteils der aktuellen Überprüfung des Cachespeichers benötigt wurde (Block 310) und diese Zeitspanne zu der Zeitspanne addiert wird, die zum Ausführen der vorherigen Überprüfung des Cachespeichers benötigt wurde (Block 315). Das Verfahren 300 weist außerdem das Abschätzen der zum Fertigstellen des verbleibenden Anteils der aktuellen Überprüfung des Cachespeichers benötigten Zeitspanne (Block 320) und das Addieren dieser Zeitspanne zu der Zeitspanne ab dem Beginn der vorherigen Überprüfung bis zur aktuellen Zeit auf, die bei Block 315 berechnet wurde (Block 325). Bei einer Ausführungsform weist das Abschätzen des verbleibenden fertigzustellenden Anteils der aktuellen Überprüfung des Cachespeichers das Subtrahieren des fertiggestellten Anteils der aktuellen Überprüfung von einer geschätzten Gesamtzeit für die aktuelle Überprüfung auf, um einen ersten Faktor zu erstellen. Die geschätzte Gesamtzeit kann auf einer geschätzten Anzahl verbleibender zu überprüfender Speicherspuren in dem Cachespeicher, einem geschätztem verbleibendem zu überprüfendem Prozentanteil des Cachespeichers und dergleichen Schätzungen beruhen, von denen jede beispielsweise auf der Grundlage der Gesamtzahl der bei der vorherigen Überprüfung überprüften Speicherspuren beruhen kann.
-
Bei einer anderen Ausführungsform weist das Abschätzen des verbleibenden fertigzustellenden Anteils der aktuellen Überprüfung des Cachespeichers das Subtrahieren der Zeitspanne ab dem Beginn der vorherigen Überprüfung bis zur aktuellen Zeit von dem ersten Faktor und das Teilen dieses Betrags durch den ersten Faktor auf. Das Ergebnis dieser Berechnung wird dann mit der aktuellen gewünschten Zeit multipliziert, die wie vorstehend erörtert aus dem Verfahren 200 gewonnen wurde. Dieses Ergebnis wird anschließend zu der Gesamtzeit ab dem Beginn der vorherigen Überprüfung bis zur aktuellen Zeit addiert, um den ersten Faktor zu erhalten.
-
Das Verfahren 300 weist außerdem das Teilen des ersten Faktors durch das Zweifache der aktuellen gewünschten Zeit (d.h. aktuelle gewünschte Zeit x 2) auf, um einen Referenz-Überprüfungsfaktor zu ermitteln (Block 330). Das Verfahren 300 weist anschließend die Vorhersage auf, ob die nächste tatsächliche Überprüfungszeit zu kurz sein wird, in dem ermittelt wird, ob der Referenz-Überprüfungsfaktor kleiner als eins (1) ist (Block 335). Wenn der Referenz-Überprüfungsfaktor kleiner als eins (1) ist, weist das Verfahren 300 das Feststellen auf, dass die nächste tatsächliche Überprüfungszeit wahrscheinlich zu kurz sein wird (Block 340), und die nächste tatsächliche Überprüfungszeit für die nächste Überprüfung wird verlängert (Block 345). Bei einer Ausführungsform weist das Verlängern der nächsten tatsächlichen Überprüfungszeit das Verringern der Anzahl von Auslagerungsaufgaben auf, die Speicherspuren in dem Cachespeicher überprüfen und/oder auslagern, da das Verringern der Anzahl von Auslagerungsaufgaben in dem Cachespeicher die Wirkung hat, die Häufigkeit zu verringern, mit der Speicherspuren überprüft und/oder ausgelagert werden, wodurch die zum Ausführen einer tatsächlichen Überprüfung des Cachespeichers benötigte Zeitspanne verlängert wird. Das Verfahren 300 kehrt dann zum Ermitteln der von einem Prozessor (z.B. dem Prozessor 130 zum Ausführen einer vorherigen Überprüfung des Cachespeichers benötigten Zeitspanne zurück (Block 305).
-
Wenn der Referenz-Überprüfungsfaktor größer oder gleich eins (1) ist, weist das Verfahren 300 das Ermitteln auf, dass die nächste tatsächliche Überprüfungszeit wahrscheinlich länger als die gewünschte Überprüfungszeit sein wird (Block 350), und die Überprüfungszeit für die nächste Überprüfung wird nicht abgeändert bzw. ein Abändern wird abgelehnt (Block 355). Das heißt, die Anzahl von Auslagerungsaufgaben, die Speicherspuren in dem Cachespeicher überprüfen und/oder auslagern, wird nicht erhöht oder verringert, was dazu führt, dass die Zeitspanne für die nächste Überprüfung im Wesentlichen dieselbe bleibt wie die Zeitspanne für die aktuelle Überprüfung. Das Verfahren 300 kehrt dann zum Ermitteln der von einem Prozessor (z.B. dem Prozessor 130 zum Ausführen einer vorherigen Überprüfung des Cachespeichers benötigten Zeitspanne zurück (Block 305).
-
Obwohl mindestens eine beispielhafte Ausführungsform in der vorstehenden ausführlichen Beschreibung der Erfindung vorgestellt wurde, sollte beachtet werden, dass es eine große Anzahl von Abwandlungen gibt.
-
Wie Fachleute verstehen werden, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert sein. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (darunter Firmware, speicherresidente Software, Mikrocode usw.) oder die einer Ausführungsform annehmen, bei der Software- und Hardwareaspekte kombiniert werden, die hier alle allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet sein können. Aspekte der vorliegenden Erfindung können außerdem in der Form eines Computerprogrammprodukts vorliegen, das in einem oder mehreren computerlesbaren Medien mit in dem Medium enthaltenem computerlesbarem Programmcode verkörpert ist.
-
Es kann eine beliebige Kombination von einem oder mehreren computerlesbaren Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein physisches computerlesbares Speichermedium handeln. Ein physisches computerlesbares Speichermedium kann beispielsweise, aber ohne darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, Kristall-, Polymer-, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede beliebige Kombination von diesen sein. Zu Beispielen für ein physisches computerlesbares Speichermedium gehören unter anderem, aber ohne darauf beschränkt zu sein: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Speicher mit wahlfreiem Zugriff (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer, programmierbarer Nur-Lese-Speicher (EPROM), ein Flash-Speicher, ein Lichtwellenleiter, ein tragbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination von diesen. Im Zusammenhang dieses Dokuments kann ein computerlesbares Speichermedium ein beliebiges physisches Medium sein, das ein Programm oder Daten für die Nutzung durch ein Anweisungen ausführendes System, eine solche Vorrichtung oder Einheit oder für die Nutzung in Verbindung mit einem Anweisungen ausführenden System, einer solchen Vorrichtung oder Einheit enthalten oder speichern kann.
-
Auf einem computerlesbaren Medium enthaltener Computercode kann mithilfe jedes geeigneten Mediums übermittelt werden, einschließlich, aber ohne darauf beschränkt zu sein, ein drahtloses oder drahtgebundenes Medium, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder jede geeignete Kombination von diesen. Computercode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen statischen Sprache wie beispielsweise der Programmiersprache „C“ oder einer anderen, ähnlichen Programmiersprache geschrieben sein. Der Computercode kann vollständig oder teilweise auf dem Computer des Benutzers, als ein eigenständiges Softwarepaket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Bei dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch ein beliebiges Netzwerk oder Datenübertragungssystem, einschließlich, aber ohne darauf beschränkt zu sein, ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN) oder ein konvergiertes Netzwerk verbunden sein, oder es kann eine Verbindung mit einem externen Computer hergestellt werden (zum Beispiel mithilfe eines Internetdienstanbieters über das Internet).
-
Aspekte der vorliegenden Erfindung wurden vorstehend mit Bezug auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammanweisungen realisiert werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine bereitgestellt werden, so dass die Anweisungen, die durch den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Ausführen der in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubilds spezifizierten Funktionen/Handlungen erzeugen.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen ein Erzeugnis samt der Anweisungen herstellen, mithilfe derer die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubilds angegebene Funktion/Handlung realisiert wird. Die Computerprogrammanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von auf dem Computer, der anderen programmierbaren Vorrichtung oder den anderen Einheiten auszuführenden Betriebsschritten zu bewirken, um einen computerimplementierten Prozess zu schaffen, so dass die Anweisungen, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Verfahren zur Realisierung der in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubilds angegebenen Funktionen/Handlungen bereitstellen.
-
Der Ablaufplan und die Blockschaubilder in den vorstehenden Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Beziehung kann jeder Block in dem Ablaufplan oder den Blockschaubildern ein Modul, Segment oder einen Codeabschnitt enthalten, das/der eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktion(en) aufweist. Es sollte auch beachtet werden, dass bei einigen alternativen Realisierungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren angegeben auftreten können. Zum Beispiel können zwei aufeinanderfolgend dargestellte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können in Abhängigkeit von der betreffenden Funktionalität manchmal in der umgekehrten Reihenfolge ausgeführt werden. Es ist ebenfalls zu beachten, dass jeder Block der Blockschaubilder und/oder des Ablaufplans sowie Blockkombinationen in den Blockschaubildern und/oder dem Ablaufplan durch hardwarebasierte Spezialsysteme, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von Spezialhardware und Computeranweisungen realisiert werden können.