-
GEBIET DER ERFINDUNG
-
Diese
Erfindung betrifft Caching, und spezieller, aber nicht ausschließlich,
energieausfallsicheres Write-back- oder Write-through-Caching in
einem nicht flüchtigen Medium.
-
HINTERGRUND DER BESCHREIBUNG
-
Das
Speichersubsystem ist eines der langsamsten Subsysteme eines Computersystems,
insbesondere wenn das Speichersubsystem ein Speichermedium, wie
z. B. ein Festplattenlaufwerk (hard-disk drive, HDD), verwendet.
Ein HDD erfordert eine relativ lange Zugriffszeit, da die Schreib-Lese-Köpfe
mechanisch zu einem bestimmten Ort auf den Scheiben des HDD bewegt
werden müssen, um Daten zu lesen/schreiben.
-
Um
die Leistung des HDD zu verbessern, kann ein nicht flüchtiger
Cache-Speicher verwendet werden, um die Ergebnisse letzter Lesevorgänge
von dem HDD und Schreibvorgänge auf das HDD festzuhalten.
Dadurch, dass die Daten des HDD gecacht werden, kann die Leistung
des Computersystems erhöht werden, und das HDD kann längere
Zeit heruntergefahren bleiben, um den Energieverbrauch des Computersystems
zu verringern.
-
Wenn
jedoch die Energiezufuhr an das Computersystem unerwartet abgeschaltet
wird, müssen die Daten in dem nicht flüchtigen
Cache-Speicher wieder mit dem HDD assoziiert werden, um Datenfehler
zu vermeiden. Geeignete Caching-Hardware, die Schreibvorgänge
von atomaren Metadaten mit den Schreibvorgängen von Cache-Daten
unterstützt, kann verwendet werden, um sicherzustellen,
dass diese Wiederherstellung korrekt ausgeführt wird, aber
sie erhöht die Kosten des Computersystems.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
Merkmale und Vorteile von erfindungsgemäßen Ausführungsformen
werden aus der folgenden ausführlichen Beschreibung des
Gegenstands ersichtlich, bei der:
-
1 ein
System veranschaulicht, um die hierin offenbarten Verfahren in Übereinstimmung
mit einer erfindungsgemäßen Ausführungsform
zu implementieren;
-
2 ein
Blockdiagramm eines Eingangs-/Ausgangs-(I/O-Input/Output-)Controllers
in Übereinstimmung mit einer erfindungsgemäßen
Ausführungsform veranschaulicht;
-
3 ein
Blockdiagramm der Module in einem Betriebssystem in Übereinstimmung
mit einer erfindungsgemäßen Ausführungsform
veranschaulicht;
-
4 eine
Konfiguration einer Caching-Einheit in Übereinstimmung
mit einer erfindungsgemäßen Ausführungsform
veranschaulicht;
-
5 ein
Ablaufdiagramm eines Write-through-Caching-Schemas in Übereinstimmung
mit einer erfindungsgemäßen Ausführungsform
veranschaulicht;
-
6A ein
Ablaufdiagramm eines Write-back-Caching-Schemas in Übereinstimmung
mit einer erfindungsgemäßen Ausführungsform
veranschaulicht;
-
6B ein
Ablaufdiagramm eines Write-back-Caching-Schemas in Übereinstimmung
mit einer erfindungsgemäßen Ausführungsform
veranschaulicht;
-
6C ein
Ablaufdiagramm eines Write-back-Caching-Schemas in Übereinstimmung
mit einer erfindungsgemäßen Ausführungsform
veranschaulicht;
-
7 ein
Ablaufdiagramm eines Verfahrens veranschaulicht, um Daten in Übereinstimmung
mit einer erfindungsgemäßen Ausführungsform
in eine Cache-Line einzufügen, und
-
8A und 8B einen
Pseudo-Code veranschaulichen, um ein Write-back-Caching-Schema in Übereinstimmung
mit einer erfindungsgemäßen Ausführungsform
zu implementieren.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Hierin
beschriebene erfindungsgemäße Ausführungsformen
werden in den beigefügten Figuren in beispielhafter und
nicht einschränkender Weise veranschaulicht. Der Einfachheit
und Deutlichkeit der Veranschaulichung halber sind in den Figuren
veranschaulichte Elemente nicht notwendigerweise maßstabsgetreu.
Beispielsweise können die Abmessungen einiger Elemente
im Verhältnis zu anderen Elementen zur Verdeutlichung übermäßig
groß dargestellt sein. Wo es zweckmäßig
erschien, wurden weiter Bezugszeichen in den Figuren wiederholt,
um entsprechende oder analoge Elemente zu kennzeichnen. Verweise
in der Beschreibung auf „eine erfindungsgemäße
Ausführungsform” bedeuten, dass ein bestimmtes
Merkmal, eine Struktur oder Charakteristikum, das in Verbindung
mit der Ausführungsform beschrieben wird, in zumindest
einer erfindungsgemäßen Ausführungsform
enthalten ist. Somit bezieht sich das Auftreten des Ausdrucks „bei
einer Ausführungsform” an verschiedenen Stellen
in der Beschreibung nicht immer zwingend alle auf dieselbe Ausführungsform.
-
Erfindungsgemäße
Ausführungsformen stellen ein Verfahren und System bereit,
um ein energieausfallsicheres Write-back- oder Write-through-Caching
von Daten in einem persistenten Speichergerät in eine oder
mehr Cache-Lines einer Caching-Einheit zu ermöglichen,
die keine atomaren Metadaten erfordert. Keine mit irgendeiner der
Cache-Lines verbundenen Metadaten werden atomar in die Caching-Einheit
geschrieben, wenn die Daten in dem Speichergerät gecacht
sind. Somit wird keine besondere Cache-Hardware benötigt,
um ein atomares Schreiben von Metadaten während des Cachens
von Daten zu ermöglichen.
-
Bei
einer erfindungsgemäßen Ausführungsform
beinhalten die mit den Cache-Lines verbundenen Metadaten den Ort
der Daten auf dem gecachten Speichergerät, wie z. B. die
logische Blockadresse (logical block address, LBA) der Daten, die
Sequenznummer, den Zustand der Cache-Line, wie z. B. ob die Daten
gültig oder ungültig sind, die Verankerungsinformationen
oder gecachten LBAs des Speichergeräts und dergleichen,
sind aber nicht darauf beschränkt. Das Speichergerät
beinhaltet ein Festkörperlaufwerk (solid state drive, SSD),
ein HDD, ein RAID-Volumen (Redundant Array of Independent Disks),
ein Bandlaufwerk, ein Compact-Disk-(CD-), ein Disketten-, ein universelles
serielles Bus-(universal serial bus, USB-)Flash-Speicher-Laufwerk
oder jede andere Art Speichermedium für nicht flüchtige oder
persistente Computerdaten, ist aber nicht darauf beschränkt.
Die Caching-Einheit beinhaltet, ist aber nicht beschränkt
auf, ein nicht flüchtiges Medium, ein SSD, einen NAND-Flash-Speicher,
einen Phasenwechselspeicher oder jede andere Art Speichermedium
für nicht flüchtige oder persistente Computerdaten.
-
1 veranschaulicht
ein System 100, um die hierin offenbarten Verfahren in Übereinstimmung mit
einer erfindungsgemäßen Ausführungsform
zu implementieren. Das System 100 beinhaltet, ist aber nicht
darauf beschränkt, einen Desktopcomputer, einen Laptop,
ein Notebook, ein Netbook, einen Minicomputer (personal digital
assistant, PDA), einen Server, eine Workstation, ein Mobiltelefon,
ein mobiles EDV-Gerät, ein Internet-Gerät oder
jede andere Art EDV-Gerät. Bei einer weiteren Ausführungsform kann
das System 100, das verwendet wird, um die hierin offenbarten
Verfahren zu implementieren, ein Ein-Chip-System (system an a chip,
SOC) sein.
-
Das
System 100 beinhaltet einen Memory-/Graphik-Controller 120 und
einen I/O-Controller 150. Der Memory-/Graphik-Controller 120 stellt
typischerweise Speicher- und I/O-Managementfunktionen bereit, sowie
eine Vielzahl von Universal- und/oder Spezialregistern, Zeitgebern
etc., auf die vom Prozessor 110 zugegriffen werden kann
oder die von ihm verwendet werden können. Der Prozessor 110 kann
unter Verwendung eines oder mehrerer Prozessoren oder unter Verwendung
von Mehrkemprozessoren implementiert sein. Der I/O-Controller 150 ermöglicht
ein energieausfallsicheres Write-back- oder Write-through-Caching
von Daten im Speichergerät 160 in eine oder mehrere
Cache-Lines der Caching-Einheit 170 oder des Permanentspeichers 144 in Übereinstimmung
mit einer erfindungsgemäßen Ausführungsform.
-
Der
Memory-/Graphik-Controller 120 führt Funktionen
aus, die es dem Prozessor 110 ermöglichen, auf
einen Hauptspeicher 140, der einen flüchtigen
Speicher 142 und/oder einen Permanentspeicher 144 beinhaltet,
zuzugreifen und damit zu kommunizieren. Bei einer weiteren erfindungsgemäßen Ausführungsform
ist ein weiterer flüchtiger Speicher 142 (nicht
in 1 gezeigt) in das Speichergerät 160 eingebaut,
um die Daten des Speichergeräts 160 zu cachen.
Der Memory-/Graphik-Controller 120 kann, anstatt des I/O-Controllers 150,
ein energieausfallsicheres Write-back- oder Write-through-Caching
von Daten in dem Speichergerät 160 in die eine
oder mehrere Cache-Lines der Caching-Einheit 170 in Übereinstimmung
mit einer weiteren erfindungsgemäßen Ausführungsform
ermöglichen.
-
Der
flüchtige Speicher 142 beinhaltet, ist aber nicht
beschränkt auf, Synchronous Dynamic Random Access Memory
(SDRAM), Dynamic Radom Access Memory (DRAM), RAMBUS DRAM (RDRAM)
und/oder jede andere Art Speichergerät mit wahlfreiem Zugriff
(random access). Der Permanentspeicher 144 beinhaltet,
ist aber nicht beschränkt auf, NAND-Flash-Speicher, Festspeicher (read
only memory, ROM), elektrisch löschbarer programmierbarer
ROM (electrically erasable programmable ROM, EEPROM) und/oder jede
andere gewünschte Art Speichergerät. Der Hauptspeicher 140 speichert
Informationen und Befehle, die von dem Prozessor 110 ausgeführt
werden sollen. Der Hauptspeicher 140 kann ebenfalls temporäre
Variablen oder andere Zwischeninformationen speichern, während
der Prozessor 110 Befehle ausführt. Bei einer weiteren
erfindungsgemäßen Ausführungsform ist der
Memory-/Graphik-Controller 120 Teil des Prozessors 110.
-
Der
Memory-/Graphik-Controller 120 ist mit einem Display-Gerät 130 verbunden,
das Flüssigkristallbildschirme (liquid crystal displays,
LCDs), Röhrenmonitor-(cathode ray tube, CRT-)Displays oder jede
andere Art von visuellem Display-Gerät beinhaltet, aber
nicht darauf beschränkt ist. Der I/O-Controller 150 ist
mit einem Speichergerät(en) 160, einer Caching-Einheit(en) 170,
einem Netzwerk-Interface 180 und einer Tastatur/Maus 190 gekoppelt,
aber nicht darauf beschränkt. Insbesondere führt
der I/O-Controller 150 Funktionen aus, die es dem Prozessor 110 ermöglichen,
mit dem Speichergerät 160, der Caching-Einheit 170,
dem Netzwerk-Interface 180 und der Tastatur/Maus 190 zu
kommunizieren. Bei einer Ausführungsform könnte
die Caching-Einheit 170 Teil des Speichergeräts 160 sein.
-
Das
Netzwerk-Interface 180 ist unter Verwendung jeder Art wohl
bekannten Netzwerk-Interface-Standards implementiert und beinhaltet,
ist aber nicht darauf beschränkt, eine Ethernet-Schnittstelle, eine
USB-Schnittstelle, eine Peripheral-Component-Interconnect-(PCI-)Express-Schnittstelle,
eine Drahtlosschnittstelle und/oder jede andere geeignete Art von
Schnittstelle. Die Drahtlosschnittstelle arbeitet in Übereinstimmung
mit, ist aber nicht darauf beschränkt, der Drahtlosstandardfamilie Institute
of Electrical and Electronics Engineers (IEEE) 802.11, Home
Plug AV (HPAV), Ultra-Breitband (utra wide band, UWB), Bluetooth,
WiMax oder jeder anderen Art von Drahtlos-Kommunikationsprotokoll.
-
Bei
einer erfindungsgemäßen Ausführungsform
ist/sind der/die in 1 gezeigte(n) Bus(se) ein von
allen damit verbundenen Komponenten gemeinsam benutzter Kommunikationslink.
Bei einer weiteren erfindungsgemäßen Ausführungsform
ist/sind der/die in 1 gezeigte(n) Bus(se) ein Punkt-zu-Punkt-Kommunikationslink
zwischen Komponentenpaaren, die miteinander verbunden sind. Während
die in 1 gezeigten Komponenten als getrennte Blöcke
innerhalb des Systems 100 dargestellt sind, können
die von einigen dieser Blöcke ausgeführten Funktionen
innerhalb einer einzigen Halbleiterschaltung integriert sein oder
können unter Verwendung von zwei oder mehreren getrennten
integrierten Schaltungen implementiert sein. Obwohl beispielsweise
der Memory-/Graphik-Controller 120 und der I/O-Controller 150 als
getrennte Blöcke dargestellt sind, ist es für
einen Fachmann sofort selbstverständlich, dass der Memory-/Graphik-Controller 120 und
der I/O-Controller 150 innerhalb einer einzigen Halbleiterschaltung
integriert sein können.
-
2 veranschaulicht
ein Blockdiagramm 200 eines I/O-Controllers 150 in Übereinstimmung mit
einer erfindungsgemäßen Ausführungsform.
Der I/O-Controller 150 verfügt über einen
Wiederherstellungs-Controller 212 und einen Laufzeit-Controller 214.
Bei einer erfindungsgemäßen Ausführungsform weist
der Laufzeit-Controller 214 eine auf Heuristiken basierende
Caching-Richtlinie auf, um zu bestimmen, ob die Daten des Speichergeräts 160 gecacht oder
aus der Caching-Einheit 170 entfernt werden sollen. Die
Heuristiken beinhalten, sind aber nicht beschränkt auf,
zuletzt aufgerufene LBAs, Verankerungsinformationen der LBAs und
dergleichen. Der Laufzeit-Controller 214 führt
ebenfalls Caching-Mechanismen aus, wie z. B. das Erkennen von Cache-Hits
oder Cache Misses, und das Queuing von Befehlen zum Cachen oder
Entfernen bei einer erfindungsgemäßen Ausführungsform.
-
Der
Laufzeit-Controller 214 verwendet die volle Datenkapazität
der Caching-Einheit 170, um die Daten des Speichergeräts 160 bei
einer erfindungsgemäßen Ausführungsform
zu cachen. Bei einer weiteren erfindungsgemäßen
Ausführungsform verwendet der Laufzeit-Controller 214 einen
Teil der vollen Datenkapazität der Caching-Einheit 170,
um die Daten des Speichergeräts 160 zu cachen.
Bei einer erfindungsgemäßen Ausführungsform
beispielsweise verwendet der Laufzeit-Controller 214 die
Hälfte der vollen Datenkapazität der Caching-Einheit 170,
um die Daten des Speichergeräts 160 zu cachen,
und verwendet die andere Hälfte der vollen Datenkapazität
der Caching-Einheit 170 als ein Speichermedium.
-
Der
Wiederherstellungs-Controller 212 und der Laufzeit-Controller 214 ermöglichen
bei einer erfindungsgemäßen Ausführungsform
ein energieausfallsicheres Write-back- oder Write-through-Caching der
Daten in dem Speichergerät 160 in die Caching-Einheit 170.
Für einen Fachmann ist es sofort selbstverständlich,
dass andere Caching-Schemata ebenfalls verwendet werden können,
ohne die erfindungsgemäßen Arbeiten zu beeinträchtigen.
Im Falle eines Systemfehlers 100 bewahren bei einer erfindungsgemäßen
Ausführungsform der Wiederherstellungs-Controller 212 und
der Laufzeit-Controller 214 die Integrität oder
Kohärenz der Daten in dem Speichergerät 160 und
der gecachten Daten in der Caching-Einheit 170. Das Fehlerereignis
des Systems 100 beinhaltet, ist aber nicht beschränkt
auf, Fehler durch Energieverlust, Fehler durch Absturz des Betriebssystems
(operating system, OS), unsachgemäße Beendigung
des Systems 100 und andere Ereignisse, die nicht innerhalb
der normalen Betriebsbedingungen des Systems 100 liegen.
-
Der
Wiederherstellungs-Controller 212 stellt den Cache-Zustand
der Cache-Lines in der Caching-Einheit 170 wieder her,
nachdem ein Fehlerereignis bei einer erfindungsgemäßen
Ausführungsform aufgetreten ist. Bei weiteren erfindungsgemäßen
Ausführungsformen verarbeitet der Wiederherstellungs-Controller 212 weitere
Ereignisse, einschließlich, aber nicht darauf beschränkt,
Abstandserkennung und Verarbeitung, Verarbeitung aller I/O-Daten
vor der Initialisierung des Laufzeit-Controllers 214 und
dergleichen. Obwohl der Wiederherstellungs-Controller 212 und
der Laufzeit-Controller 214 als Teil des I/O-Controllers 150 in 2 dargestellt sind,
soll dies als nicht einschränkend verstanden werden. Der
Wiederherstellungs-Controller 212 und der Laufzeit-Controller 214 können
gemeinsam in demselben Hardware- oder Softwaremodul implementiert
sein oder sie können getrennt in verschiedenen Hardware-
oder Softwaremodulen implementiert sein.
-
Bei
einer erfindungsgemäßen Ausführungsform
sind der Wiederherstellungs-Controller 212 und der Laufzeit-Controller 214 Teil
des Memory-/Graphik-Controllers 120. Der Wiederherstellungs-Controller 212 und
der Laufzeit-Controller 214 können ebenfalls als
ein einziger Controller bei einer weiteren erfindungsgemäßen
Ausführungsform zusammengefasst sein. Für einen
Fachmann ist es sofort selbstverständlich, dass verschiedene
Konfigurationen des Wiederherstellungs-Controllers 212 und
des Laufzeit-Controllers 214 implementiert werden können, ohne
die erfindungsgemäßen Arbeiten zu beeinträchtigen.
Bei einer erfindungsgemäßen Ausführungsform
beispielsweise ist der Wiederherstellungs-Controller 212 als
eine in einem Options-ROM des Systems 100 gespeicherte
Firmware implementiert und der Laufzeit-Controller 214 ist
in einem Blockspeichertreiber eines auf dem System 100 ablaufenden
OS implementiert.
-
3 veranschaulicht
ein Blockdiagramm 300 der Module in einem OS in Übereinstimmung
mit einer erfindungsgemäßen Ausführungsform.
Das OS hat eine Anwendungsschicht 310 und ein Dateisystem 320.
Die Anwendungsschicht 310 ist in der Lage, auf Dateien
zuzugreifen, die von dem Dateisystem 320 organisiert sind.
Das OS verfügt ebenfalls über einen Speichertreiberstapel 330 und
einen Blocktreiber 340. Der Blocktreiber 340 verfügt über
einen Laufzeit-/Wiederherstellungs-Controller 344 in Übereinstimmung
mit einer erfindungsgemäßen Ausführungsform.
Der Blocktreiber 340 kann den Laufzeit-Controller, den
Wiederherstellungs-Controller oder sowohl den Laufzeit- als auch
den Wiederherstellungs-Controller beinhalten.
-
Der
Laufzeit-/Wiederherstellungs-Controller 344 ist mit dem
Speichergerät 160 und der Caching-Einheit 170 gekoppelt,
und er cacht die Daten in dem Speichergerät 160 in
die Caching-Einheit 170. Keine Zustandsinformationen oder
mit irgendeiner der Cache-Lines der Caching-Einheit 170 verbundenen
Metadaten werden atomar in der Caching-Einheit 170 während
des Cachens der Daten in dem Speichergerät 160 gespeichert.
Bei einer erfindungsgemäßen Ausführungsform
verwendet das OS ein Write-back Caching-Schema, bei dem jegliche
Daten, die auf das Speichergerät 160 geschrieben
werden sollen, zuerst auf die Caching-Einheit 170 geschrieben
werden. Das OS schreibt die Daten nicht auf das Speichergerät 160,
sofort nach dem Schreiben auf die Caching-Einheit 170,
sondern wartet eine angemessene Zeit, um die Daten auf das Speichergerät
zu schreiben. Somit ist der Datenzugriff des Speichergeräts 160 minimiert,
und das OS braucht nicht darauf zu warten, dass die Daten auf das
Speichergerät 160 geschrieben werden, bevor weitere Befehle
ausgeführt werden. Das Write-back-Caching-Schema ist vorteilhaft,
um das Speichersubsystem des Systems 100 zu beschleunigen,
da die Datenzugriffsgeschwindigkeit der Caching-Einheit 170 schneller
ist, als die Datenzugriffsgeschwindigkeit des Speichergeräts 160.
-
Es
kann sein, dass die Daten in dem Speichergerät 160 nicht
mit den gecachten Daten in der Caching-Einheit 170 synchron
sind, wenn ein Write-back-Caching-Schema verwendet wird. Bei einer erfindungsgemäßen
Ausführungsform synchronisiert der Laufzeit-/Wiederherstellungs-Controller 344 die gecachten
Daten in der Caching-Einheit 170 mit den Daten im Speichergerät 160,
wenn der Nutzungsgrad des Prozessors 110, Speichergeräts 160 oder
Caching-Einheit 170 des Systems 100 unter dem
verwendeten liegt. Bei einer erfindungsgemäßen
Ausführungsform beispielsweise bestimmt der Laufzeit-/Wiederherstellungs-Controller 344,
dass der Nutzungsgrad des Prozessors 110 bei dem System 100 unterhalb
eines Grenzwertes liegt und synchronisiert die gecachten Daten in
der Caching-Einheit 170, die nicht mit den Daten in dem
Speichergerät 160 synchronisiert worden sind.
Für einen Fachmann ist es sofort selbstverständlich,
dass weitere Schemata oder Richtlinien verwendet werden können,
um eine Hintergrundsynchronisation der Daten in der Caching-Einheit 170 durchzuführen,
ohne die erfindungsgemäßen Arbeiten zu beeinträchtigen.
-
Das
OS kann einen periodischen Flush-Befehl an den I/O-Controller 150 ausgeben,
um sicherzustellen, dass alle vorher geschriebenen Daten nicht flüchtig
sind. Bei einer erfindungsgemäßen Ausführungsform
garantiert der I/O-Controller 150, dass sowohl die Aktualisierungen
der Daten als auch der Metadaten in dem Speichergerät 160 und
der Caching-Einheit 170 nicht flüchtig sind, wenn
ein Flush-Befehl ausgeführt wird, und dass alle vorher geschriebenen
Daten wiederhergestellt werden können, auch wenn eine unsachgemäße
Beendigung, wie z. B. ein Stromausfall des Systems 100 auftritt.
-
Bei
einer weiteren erfindungsgemäßen Ausführungsform
verwendet das OS ein Write-through-Caching-Schema, bei dem die Daten
in dem Speichergerät 160 und die gecachten Daten
in der Caching-Einheit 170 immer synchron sind. Wenn das OS
eine Schreiboperation durchführt, werden sowohl die Caching-Einheit 170 als
auch das Speichergerät 160 mit denselben Daten
beschrieben.
-
Erfindungsgemäße
Ausführungsformen ermöglichen, dass die Entwicklungskosten
des Systems 100 verringert werden, da keine besondere Caching-Hardware
erforderlich ist, um ein energieausfallsicheres Write-through- und
Write-back-Caching zu ermöglichen. Bei einer erfindungsgemäßen
Ausführungsform beispielsweise wird ein relativ kleines SSD
verwendet, um ein oder mehrere große Festplattenlaufwerke,
ohne besondere Caching-Hardware zu benötigen, zu cachen.
-
4 veranschaulicht
eine Konfiguration 400 einer Caching-Einheit 170 in Übereinstimmung mit
einer erfindungsgemäßen Ausführungsform.
Die Konfiguration 400 der Caching-Einheit 170 zeigt
ein logisches Segment gepackter Metadaten 401 und ein weiteres
logisches Segment an Cache-Lines 402. Die Blockbreite 405 der
Caching-Einheit 170 zeigt die Datenbitbreite der Caching-Einheit 170.
Bei einer weiteren erfindungsgemäßen Ausführungsform
kann die Konfiguration 400 der Caching-Einheit 170 ebenfalls
weitere logische Segmente (nicht gezeigt in 4) beinhalten,
die für andere Zwecke verwendet werden, wie z. B. Datensicherung
oder Datenindizierung.
-
Beispielsweise
ist das logische Segment von Cache-Lines 402 mit acht Cache-Lines
(Cache-Lines 0 bis 7) dargestellt, die verwendet werden, um die Daten
des Speichergeräts 160 zu cachen. Das logische
Segment von Cache-Lines 402 beinhaltet keinerlei mit irgendeiner
der Cache-Lines 402 verbundenen Metadaten. Für
einen Fachmann ist es sofort selbstverständlich, dass die
Caching-Einheit 170 mehr als acht Cache-Lines haben kann,
um die Daten des Speichergeräts 160 zu cachen.
Bei einer erfindungsgemäßen Ausführungsform
speichert jede Cache-Line der Caching-Einheit 170 angrenzende Daten
des Speichergeräts 160. Bei einer weiteren erfindungsgemäßen
Ausführungsform speichert jede Cache-Line von Caching-Einheit 170 angrenzende Daten
des Speichergeräts 160 nicht. Die Blockbreite 405 ist
nicht auf eine bestimmte Bitbreite beschränkt. Bei einer
erfindungsgemäßen Ausführungsform entspricht
die Blockbreite 405 der Busbreite des Kommunikationslinks
zwischen der Caching-Einheit und dem Laufzeit-/Wiederherstellungs-Controller 344. Wenn
bei einer erfindungsgemäßen Ausführungsform
beispielsweise die Busbreite des Kommunikationslinks zwischen der
Caching-Einheit und dem Laufzeit-/Wiederherstellungs-Controller 344 64
Bit beträgt, kann die Blockbreite 405 bei einer
Bitbreite gesetzt werden, die einem Vielfachen von 64 Bit entspricht.
Bei einer weiteren erfindungsgemäßen Ausführungsform
wird die Blockbreite 405 gesetzt, um ein Vielfaches der
LBAs des Speichergeräts 160 zu speichern. Beispielsweise
wird jede Cache-Line der Caching-Einheit auf eine Blockbreite 405 gesetzt,
die vier LBAs des Speichergeräts 160 speichern
kann.
-
Bei
dem logischen Segment gepackter Metadaten 401 sind Metadaten
0 bis 7 in einem gepackten Format gespeichert, sodass mehrere Metadaten, jede
mit einer anderen Cache-Line verbunden, bei einer erfindungsgemäßen
Ausführungsform nebeneinander gespeichert werden. Beispielsweise
werden Metadaten 0 410 mit der Cache-Line 0 450 verbunden,
Metadaten 1 411 werden mit Cache-Line 1 451 verbunden
und so weiter. Bei einer erfindungsgemäßen Ausführungsform
weisen die gepackten Metadaten 401 eine Integritätssignatur
für jeden Block Metadaten auf. Die Metadaten 0 bis 3 410, 411, 412 und 413 weisen
eine Integritätssignatur 1 430 auf, und die Metadaten
4 bis 7 414, 415, 416 und 417 weisen
eine Integritätssignatur 2 440 auf. Die Integritätssignaturen 430 und 440 schützen
vor beschädigten Datenstrukturen aufgrund einer unerwarteten
Beendigung von System 100 oder aufgrund eines Fehlerereignisses.
Das logische Segment gepackter Metadaten 401 ist angrenzend
in der Caching-Einheit 170 angeordnet, um einen schnelleren
Zugriff der gepackten Metadaten 401 bei einer erfindungsgemäßen
Ausführungsform zu ermöglichen. Bei einer weiteren
erfindungsgemäßen Ausführungsform ist
das logische Segment gepackter Metadaten 401 nicht angrenzend in
der Caching-Einheit 170 angeordnet. Bei noch einer weiteren
Ausführungsform sind die Integritätssignaturen 430 und 440 nicht
in dem logischen Segment gepackter Metadaten 401 gespeichert.
-
Um
ein Write-back- oder Write-through-Caching in der Caching-Einheit 170 zu
erleichtern, verwaltet das OS bei einer erfindungsgemäßen
Ausführungsform Informationen der Cache-Lines in dem flüchtigen
Speicher 142. Die Informationen der Cache-Lines beinhalten,
sind aber nicht beschränkt auf, eine Liste von Cache-Lines,
die unbenutzt sind oder die keinerlei Daten des Speichergeräts 160 halten, eine
Cache-Tabelle, die Linkinformationen zwischen den Daten oder LBA
in dem Speichergerät 160 und den Cache-Lines in
der Caching-Einheit 170 aufweist, die die Daten oder LBA
speichert, Metadaten aller Cache-Lines in der Caching-Einheit 170,
die in gepacktem Format oder einem anderen Format gespeichert werden
können, eine Liste von Cache-Lines, für die ihre
entsprechenden Metadaten in dem flüchtigen Speicher 142 noch
auf die Metadaten in der Caching-Einheit 170 geschrieben
werden müssen, und dergleichen. Bei einer erfindungsgemäßen Ausführungsform
verwaltet das OS eine Kopie des logischen Segments gepackter Metadaten 401 der Caching-Einheit 170 in
dem flüchtigen Speicher 142, um ein Write-back-
oder Write-through-Caching in der Caching-Einheit 170 zu
erleichtern. Bei einer erfindungsgemäßen Ausführungsform
kann die Cache-Tabelle als eine Hash-Tabelle, ein Baum oder jede
andere Datenstruktur zum Suchen implementiert sein.
-
5 veranschaulicht
ein Ablaufdiagramm 500 eines Write-through-Caching-Schemas
in Übereinstimmung mit einer erfindungsgemäßen
Ausführungsform. In Schritt 510 prüft
der Laufzeit-Controller, ob ein Fehlerereignis aufgetreten ist.
Bei einer erfindungsgemäßen Ausführungsform
prüft der Laufzeit-Controller ein Register oder Flag, das
anzeigt, ob ein Fehlerereignis aufgetreten ist. Bei einer erfindungsgemäßen
Ausführungsform prüft Schritt 510, ob
das System 100 unsachgemäß heruntergefahren wurde.
Bei einer weiteren erfindungsgemäßen Ausführungsform
prüft Schritt 510, ob das OS abgestürzt ist
oder nicht funktioniert. Wenn es ein Fehlerereignis gibt, setzt
der Laufzeit-Controller die Caching-Einheit 170 in Schritt 512 zurück.
-
Der
Ablauf geht zurück zu Schritt 510, nachdem die
Caching-Einheit 170 in Schritt 512 zurückgesetzt
wurde. Bei einer erfindungsgemäßen Ausführungsform
setzt der Laufzeit-Controller die Caching-Einheit 170 zurück,
indem alle Cache-Lines der Caching-Einheit 170 zu einer
Liste freier oder unbenutzter Cache-Lines hinzugefügt werden.
Die Liste freier Cache-Lines zeigt dem Laufzeit-Controller an, dass
die Cache-Lines in der Liste verfügbar sind, um die Daten
des Speichergeräts 160 zu cachen. Bei einer weiteren
erfindungsgemäßen Ausführungsform setzt
der Laufzeit-Controller die Caching-Einheit 170 zurück,
indem er alle Cache-Lines der Caching-Einheit 170 als unbenutzt
auszeichnet oder markiert.
-
Wenn
es kein Fehlerereignis gibt, prüft der Laufzeit-Controller,
ob eine Anfrage vorliegt, das System 100 in Schritt 520 sachgemäß herunterzufahren.
Ein sachgemäßes Herunterfahren oder Beenden des
Systems 100 betrifft ein Ereignis, bei dem das OS einen Befehl
an das System 100 ausgibt, einschließlich, aber
nicht beschränkt auf, einen Neustartbefehl, einen Befehl
zur Beendigung, einen Hibernate-Befehl, einen Standby-Befehl oder
jeden Befehl, der das System 100 herunterfährt.
Wenn eine Anfrage zum sachgemäßen Herunterfahren
des Systems 100 vorliegt, kopiert der Laufzeit-Controller
die gepackten Metadaten, die mit all den Cache-Lines der Caching-Einheit 170 verbunden
sind, in Schritt 522 von dem flüchtigen Speicher 142 in
die Caching-Einheit 170. Bei einer erfindungsgemäßen Ausführungsform
kopiert der Laufzeit-Controller die gepackten Metadaten, die mit
all den Cache-Lines der Caching-Einheit 170 verbunden sind,
von dem flüchtigen Speicher 142 in das logische
Segment gepackter Metadaten 401. Im optionalen Schritt 524 kopiert
der Laufzeit-Controller die Cache-Tabelle von dem flüchtigen
Speicher 142 in die Caching-Einheit 170 und der
Ablauf 500 geht zu Schritt 510 zurück.
-
Wenn
keine Anfrage zum sachgemäßen Herunterfahren des
Systems 100 vorliegt, prüft der Laufzeit-Controller,
ob eine Anfrage vorliegt, Daten in Schritt 530 in die Cache-Line(s)
der Caching-Einheit 170 zu aktualisieren oder einzufügen.
Wenn bei einer erfindungsgemäßen Ausführungsform
beispielsweise das OS Daten auf einen bestimmten Adressort in dem
Speichergerät 160 schreiben möchte, prüft
der Laufzeit-Controller die Cache-Tabelle, ob die Daten an dem bestimmten
Adressort in dem Speichergerät 160 in die Caching-Einheit 170 gecacht
sind. Wenn es einen Cache-Hit gibt, d. h. die Daten an dem bestimmten
Adressort sind in der Caching-Einheit 170 gecacht, empfängt
der Laufzeit-Controller eine Anfrage, um die übereinstimmende(n)
Cache-Line(s), die die Daten des bestimmten Adressortes speichert/speichern,
zu aktualisieren. Wenn es einen Cache-Miss gibt, d. h. die Daten
an dem bestimmten Adressort sind nicht in der Caching-Einheit 170 gecacht,
empfängt der Laufzeit-Controller eine Anfrage, um die Daten
des bestimmten Adressortes in die Cache-Line(s) der Caching-Einheit 170 einzufügen.
-
Wenn
eine Anfrage vorliegt, Daten in die Cache-Line(s) der Caching-Einheit 170 zu
aktualisieren oder einzufügen, aktualisiert der Laufzeit-Controller in
Schritt 532 die gepackten Metadaten oder Zustandsinformationen,
die mit der/den Cache-Line(s) verbunden sind, basierend auf den
neuen zu schreibenden Daten, in dem flüchtigen Speicher 142.
In Schritt 534 aktualisiert der Laufzeit-Controller die
Cache-Line(s) und das Speichergerät 160 mit den
neuen Daten. Die Daten in der Caching-Einheit 170 und dem
Speichergerät 160 werden synchronisiert, wenn Schritt 534 ausgeführt
ist.
-
Wenn
keine Anfrage vorliegt, Daten in der/den Cache-Line(s) der Caching-Einheit 170 zu aktualisieren
oder einzufügen, prüft der Wiederherstellungs-Controller,
ob irgendeine Benachrichtigung zum Hochfahren des Systems 100 in
Schritt 540 vorliegt. Wenn ja, speichert der Wiederherstellungs-Controller
die gepackten Metadaten in der Caching-Einheit 170 in Schritt 542 erneut
in den flüchtigen Speicher 142 oder kopiert sie
dorthin. Im optionalen Schritt 544 speichert der Wiederherstellungs-Controller
die Cache-Tabelle in der Caching-Einheit 170 erneut in
den flüchtigen Speicher 142 oder kopiert sie dorthin,
wenn die Cache-Tabelle bei einer vorherigen Beendigung des Systems 100 gespeichert
wurde und der Ablauf 500 geht zu Schritt 510 zurück.
-
Wenn
nicht, prüft der Laufzeit-Controller, ob eine Anfrage vorliegt,
die Daten von der Caching-Einheit 170 in Schritt 550 zu
lesen. Wenn bei einer erfindungsgemäßen Ausführungsform
beispielsweise das OS Daten aus einem bestimmten Adressort in dem Speichergerät 160 lesen
möchte, empfängt der Laufzeit-Controller eine
Anfrage, Daten aus der Caching-Einheit 170 zu lesen. Wenn
eine Anfrage vorliegt, die Daten aus der Caching-Einheit 170 zu
lesen, prüft der Laufzeit-Controller die Cache-Tabelle, ob
die Daten an dem bestimmten Adressort in dem Speichergerät 160 in
Schritt 552 in der Caching-Einheit 170 gecacht
sind. Wenn keine Anfrage vorliegt, die Daten aus der Caching-Einheit 170 zu
lesen, geht der Ablauf zu Schritt 510 zurück.
-
In
Schritt 554 prüft der Laufzeit-Controller, ob es
einen Cache-Hit gibt, d. h. die Daten an dem bestimmten Adressort
in dem Speichergerät 160 sind in der Caching-Einheit 170 gecacht.
Wenn ja, liest der Laufzeit-Controller die Daten aus der Caching-Einheit 170 und
liefert die Daten in Schritt 556 an das OS zurück
und der Ablauf 500 geht zu Schritt 510 zurück. Wenn
nicht, sendet der Laufzeit-Controller in Schritt 558 einen
Cache-Miss an das OS. Bei einer erfindungsgemäßen
Ausführungsform greift der Laufzeit-Controller auf die
Daten an dem bestimmten Adressort in dem Speichergerät 160 zu,
wenn es einen Cache-Miss gibt, und liefert in Schritt 558 die
Daten an das OS zurück und der Ablauf 500 geht
zu Schritt 510 zurück.
-
Bei
einer erfindungsgemäßen Ausführungsform
schreibt oder aktualisiert der Laufzeit-Controller die gepackten
Metadaten in der Caching-Einheit 170 nicht während
der Laufzeit, wenn ein Write-through-Caching-Schema verwendet wird.
Da die Daten in dem Speichergerät 160 und Caching-Einheit 170 immer
synchronisiert sind, kann die Caching-Einheit 170 zurückgesetzt
werden, wenn ein Fehlerereignis, wie z. B. ein Energieverlustereignis, auftritt.
Das System 100 ist energieausfallsicher, da die Integrität
der Daten in dem Speichergerät 160 sogar während
eines Energieverlustereignisses aufrechterhalten wird.
-
6A veranschaulicht
ein Ablaufdiagramm 600 eines Write-back-Caching-Schemas
in Übereinstimmung mit einer erfindungsgemäßen
Ausführungsform. In Schritt 610 prüft
der Laufzeit-Controller, ob eine Anfrage vorliegt, eine Cache-Line(s)
der Caching-Einheit 170 zu aktualisieren. Wenn eine Anfrage
zum Aktualisieren der Cache-Line(s) vorliegt, aktualisiert der Laufzeit-Controller
die entsprechende(n) Cache-Line(s) mit den neuen Daten in Schritt 612.
In Schritt 614 aktualisiert der Laufzeit-Controller die
gepackten Metadaten oder Zustandsinformationen, die mit der/den
Cache-Line(s) verbunden sind, basierend auf den neuen zu schreibenden
Daten in dem flüchtigen Speicher 142. In Schritt 616 aktualisiert
der Laufzeit-Controller die gepackten Metadaten oder Zustandsinformationen,
die mit der/den Cache-Line(s) verbunden sind, basierend auf den
neuen zu schreibenden Daten in der Caching-Einheit 170.
Bei einer weiteren Ausführungsform kopiert der Laufzeit-Controller
in Schritt 616 die gepackten Metadaten oder Zustandsinformationen,
die mit der/den Cache-Line(s) in dem flüchtigen Speicher 142 verbunden
sind, in die entsprechenden gepackten Metadaten, die mit der/den
Cache-Line(s) in dem logischen Segment gepackter Metadaten 401 der
Caching-Einheit 170 verbunden sind. Der Ablauf 600 geht
zu Schritt 610 zurück, nachdem Schritt 616 ausgeführt
ist.
-
Wenn
keine Anfrage zum Aktualisieren der Cache-Line(s) vorliegt, prüft
der Laufzeit-Controller, ob eine Anfrage vorliegt, das System 100 sachgemäß in
Schritt 620 herunterzufahren. Wenn eine Anfrage vorliegt,
das System 100 sachgemäß herunterzufahren,
kopiert der Laufzeit-Controller in einem optionalen Schritt 624 die
Cache-Tabelle von dem flüchtigen Speicher 142 in
die Caching-Einheit 170 und der Ablauf 600 geht
zu Schritt 610 zurück. Wenn keine Anfrage vorliegt,
das System 100 sachgemäß herunterzufahren,
prüft der Laufzeit-Controller, ob das OS einen Flush-Befehl
in Schritt 630 ausgegeben hat. Wenn das OS einen Flush-Befehl
ausgegeben hat, flusht der Laufzeit-Controller in Schritt 632 jegliche
flüchtigen Daten sowohl in dem Speichergerät 160 als
auch in der Caching-Einheit 170.
-
Wenn
das OS keinen Flush-Befehl ausgegeben hat, prüft der Wiederherstellungs-Controller,
ob irgendeine Benachrichtigung zum Hochfahren des Systems 100 in
Schritt 640 vorliegt. Wenn ja, speichert der Wiederherstellungs-Controller
die gepackten Metadaten in der Caching-Einheit 170 in Schritt 642 erneut
in den flüchtigen Speicher 142 oder kopiert sie
dorthin. Im optionalen Schritt 644 speichert der Wiederherstellungs-Controller
die Cache-Tabelle in der Caching-Einheit 170 erneut in
den flüchtigen Speicher 142 oder kopiert sie dorthin,
wenn die Cache-Tabelle bei einer vorherigen Beendigung des Systems 100 gespeichert
wurde, und der Ablauf 600 geht zu Schritt 610 zurück.
-
Wenn
nicht, prüft der Laufzeit-Controller, ob eine Anfrage vorliegt,
die Daten von der Caching-Einheit 170 in Schritt 650 zu
lesen. Wenn eine Anfrage vorliegt, die Daten aus der Caching-Einheit 170 zu
lesen, prüft der Laufzeit-Controller die Cache-Tabelle, ob
die Daten an dem bestimmten Adressort in dem Speichergerät 160 in
Schritt 652 in der Caching-Einheit 170 gecacht
sind. Wenn keine Anfrage vorliegt, die Daten aus der Caching-Einheit 170 zu
lesen, geht der Ablauf zu Schritt 610 zurück.
-
In
Schritt 654 prüft der Laufzeit-Controller, ob es
einen Cache-Hit gibt, d. h. die Daten an dem bestimmten Adressort
in dem Speichergerät 160 sind in der Caching-Einheit 170 gecacht.
Wenn ja, liest der Laufzeit-Controller die Daten aus der Caching-Einheit 170 und
liefert die Daten in Schritt 656 an das OS zurück
und der Ablauf 600 geht zu Schritt 610 zurück. Wenn
nicht, sendet der Laufzeit-Controller in Schritt 658 einen
Cache-Miss an das OS. Bei einer erfindungsgemäßen
Ausführungsform greift der Laufzeit-Controller auf die
Daten an dem bestimmten Adressort in dem Speichergerät 160 zu,
wenn es einen Cache-Miss gibt, und liefert in Schritt 658 die
Daten an das OS zurück, und der Ablauf 600 geht
zu Schritt 610 zurück. Das Write-back-Caching-Schema von 6A erfordert
einen zusätzlichen Schreibvorgang auf die Caching-Einheit 170,
um die gepackten Metadaten, die mit der/den Cache-Line(s) für
jeden Cache-Line-Schreibvorgang für neue Daten verbunden
sind, zu aktualisieren.
-
6B veranschaulicht
ein Ablaufdiagramm 660 eines Write-back-Caching-Schemas
in Übereinstimmung mit einer erfindungsgemäßen
Ausführungsform. In Schritt 610 prüft
der Laufzeit-Controller, ob eine Anfrage vorliegt, eine Cache-Line(s)
der Caching-Einheit 170 zu aktualisieren. Wenn eine Anfrage
zum Aktualisieren der Cache-Line(s) vorliegt, aktualisiert der Laufzeit-Controller
die entsprechende(n) Cache-Line(s) mit den neuen Daten in Schritt 612.
In Schritt 614 aktualisiert der Laufzeit-Controller die
gepackten Metadaten oder Zustandsinformationen, die mit der/den
Cache-Line(s) verbunden sind, basierend auf den neuen zu schreibenden
Daten in dem flüchtigen Speicher 142. In Schritt 615 zeichnet der
Laufzeit-Controller die Cache-Line(s) basierend auf den neuen Daten
in der Caching-Einheit 170 als eine ausstehende Aktualisierung
der gepackten Metadaten, die mit den Cache-Lines verbunden sind, aus.
Bei einer erfindungsgemäßen Ausführungsform zeichnet
der Laufzeit-Controller die Cache-Line(s) aus, indem er die Cache-Line(s)
zu einer Liste der ausstehenden Metadaten-Schreibvorgänge
im flüchtigen Speicher 142 hinzufügt.
Die Liste ausstehender Metadaten-Schreibvorgänge beinhaltet
Cache-Line(s), die verbundene gepackte Metadaten aufweisen, die
nicht zwischen dem flüchtigen Speicher 142 und
der Caching-Einheit 170 synchronisiert wurden.
-
Wenn
keine Anfrage zum Aktualisieren der Cache-Line(s) vorliegt, prüft
der Laufzeit-Controller, ob eine Anfrage vorliegt, das System 100 sachgemäß in
Schritt 620 herunterzufahren. Wenn eine Anfrage vorliegt,
das System 100 sachgemäß herunterzufahren,
schreibt der Laufzeit-Controller alle ausstehenden gepackten Metadaten
in dem flüchtigen Speicher 142 in die gepackten
Metadaten in der Caching-Einheit 170. Bei einer erfindungsgemäßen Ausführungsform
bestimmt der Laufzeit-Controller aus der Liste ausstehender Metadaten-Schreibvorgänge,
welche Metadaten aktualisiert oder geschrieben werden sollen. Im
optionalen Schritt 624 kopiert der Laufzeit-Controller
die Cache-Tabelle von dem flüchtigen Speicher 142 in
die Caching-Einheit 170 und der Ablauf 660 geht
zu Schritt 610 zurück.
-
Wenn
keine Anfrage vorliegt, das System 100 sachgemäß herunterzufahren,
prüft der Laufzeit-Controller, ob das OS einen Flush-Befehl
in Schritt 630 ausgegeben hat. Wenn ein Flush-Befehl ausgegeben
wurde, aktualisiert der Laufzeit-Controller in Schritt 631 alle
ausstehenden gepackten Metadaten in dem flüchtigen Speicher 142 in
die gepackten Metadaten in der Caching-Einheit 170. Bei
einer weiteren erfindungsgemäßen Ausführungsform
aktualisiert oder kopiert der Laufzeit-Controller in einer einzigen
sequentiellen Schreiboperation in Schritt 631 die gesamten
gepackten Metadaten von dem flüchtigen Speicher 142 in
die Caching-Einheit 170. In Schritt 632 flusht
der Laufzeit-Controller jegliche flüchtigen Daten sowohl
in dem Speichergerät 160 als auch in der Caching-Einheit 170.
-
Wenn
kein Flush-Befehl ausgegeben wurde, prüft der Wiederherstellungs-Controller,
ob irgendeine Benachrichtigung zum Hochfahren des Systems 100 in
Schritt 640 vorliegt. Wenn ja, speichert der Wiederherstellungs-Controller
die gepackten Metadaten in der Caching-Einheit 170 in Schritt 642 erneut in
den flüchtigen Speicher 142 oder kopiert sie dorthin.
Im optionalen Schritt 644 speichert der Wiederherstellungs-Controller
die Cache-Tabelle in der Caching-Einheit 170 erneut in
den flüchtigen Speicher 142 oder kopiert sie dorthin,
wenn die Cache-Tabelle bei einer vorherigen Beendigung des Systems 100 gespeichert
wurde, und der Ablauf 660 geht zu Schritt 610 zurück.
-
Wenn
nicht, prüft der Laufzeit-Controller, ob eine Anfrage vorliegt,
die Daten aus der Caching-Einheit 170 in Schritt 650 zu
lesen. Wenn eine Anfrage vorliegt, die Daten aus der Caching-Einheit 170 zu
lesen, prüft der Laufzeit-Controller die Cache-Tabelle, ob
die Daten an dem bestimmten Adressort in dem Speichergerät 160 in
Schritt 652 in der Caching-Einheit 170 gecacht
sind. Wenn keine Anfrage vorliegt, die Daten aus der Caching-Einheit 170 zu
lesen, geht der Ablauf 660 zu Schritt 610 zurück.
-
In
Schritt 654 prüft der Laufzeit-Controller, ob es
einen Cache-Hit gibt, d. h. ob die Daten an dem bestimmten Adressort
in dem Speichergerät 160 in der Caching-Einheit 170 gecacht
sind. Wenn ja, liest der Laufzeit-Controller die Daten aus der Caching-Einheit 170 und
liefert die Daten in Schritt 656 an das OS zurück,
und der Ablauf 660 geht zu Schritt 610 zurück.
Wenn nicht, sendet der Laufzeit-Controller in Schritt 658 einen
Cache-Miss an das OS. Bei einer erfindungsgemäßen
Ausführungsform greift der Laufzeit-Controller auf die
Daten an dem bestimmten Adressort in dem Speichergerät 160 zu,
wenn es einen Cache-Miss gibt, und liefert in Schritt 658 die
Daten an das OS zurück, und der Ablauf 660 geht
zu Schritt 610 zurück. Das Write-back-Caching-Schema von 6B erfordert
einen optionalen zusätzlichen Schreibvorgang auf die Caching-Einheit 170,
um die gepackten Metadaten, die mit der/den Cache-Line(s) für
jedes Ereignis zum Flushen oder Herunterfahren verbunden sind, zu
aktualisieren.
-
6C veranschaulicht
ein Ablaufdiagramm 680 eines Write-back-Caching-Schemas
in Übereinstimmung mit einer erfindungsgemäßen
Ausführungsform. 6C wird
mit Bezug auf 6B erörtert, da der
Ablauf 680 eine Variante des Ablaufs 660 ist.
Alle Schritte in Ablauf 660, mit Ausnahme von Schritt 631,
gelten für Ablauf 680, und diese Schritte sollen
hierin nicht wiederholt werden. In Ablauf 680 prüft
der Laufzeit-Controller, nachdem ein Flush-Befehl vom OS in Schritt 630 empfangen
wurde, ob angrenzende ausstehende Schreibvorgänge in der
Liste ausstehender Metadaten-Schreibvorgänge in Schritt 662 vorliegen.
Zum Zwecke der Veranschaulichung wird angenommen, dass die Liste
ausstehender Metadaten-Schreibvorgänge ausstehende Metadaten-Schreibvorgänge
für sieben Cache-Lines (Cache-Lines 5, 6, 7, 9, 12, 13
und 45) aufweist.
-
Bei
dem angenommenen Szenario geht der Ablauf 680 zu Schritt 664,
da Cache-Lines 5, 6 und 7 angrenzend sind und Cache-Lines 12 und
13 ebenfalls angrenzend sind. In Schritt 664 kombiniert
der Laufzeit-Controller die Metadaten-Schreibvorgänge für
Cache-Lines 5, 6 und 7 in einen einzigen Metadaten-Schreibvorgang.
Er kombiniert ebenfalls die Metadaten-Schreibvorgänge für
Cache-Lines 12 und 13 in einen weiteren einzigen Metadaten-Schreibvorgang.
Daher hat der Laufzeit-Controller vier Metadaten-Schreibvorgänge
(kombinierter Schreibvorgang von 5, 6 und 7, 9, kombinierter Schreibvorgang
von 12 und 13 sowie 45) anstatt der ursprünglich sieben Metadaten-Schreibvorgänge.
In Schritt 670 führt der Laufzeit-Controller die
vier Metadaten-Schreibvorgänge von Schritt 664 aus.
-
Bei
einem weiteren veranschaulichenden Beispiel wird angenommen, dass
die Liste ausstehender Metadaten-Schreibvorgänge ausstehende Metadaten-Schreibvorgänge
für fünf Cache-Lines (Cache-Lines 3, 9, 11, 14
und 45) aufweist. Bei dem angenommenen Szenario geht der Ablauf 680 zu Schritt 662,
um zu prüfen, ob es einen kleinen Abstand bei dem Adressort
der ausstehenden zu schreibenden Cache-Lines gibt. Der Abstand zwischen
den Cache-Lines wird als klein bezeichnet, wenn die Zeit, die benötigt
wird, um die Cache-Lines gemeinsam zu schreiben, kürzer
ist als die Zeit, die benötigt wird, bei einer erfindungsgemäßen
Ausführungsform die Cache-Lines getrennt zu schreiben.
Wenn beispielsweise die Zeit, die erforderlich ist, um die mit Cache-Lines
9, 10 und 11 verbundenen Metadaten zu aktualisieren, kürzer
ist als die Zeit, die erforderlich ist, um die mit Cache-Lines 9
und 11 verbundenen Metadaten getrennt zu aktualisieren, wird der
Abstand zwischen Cache-Lines 9 und 11 als klein angesehen. Obwohl
die mit Cache-Line 10 verbundenen Metadaten nicht aktualisiert werden
müssen, verringert eine Kombination der Metadaten-Aktualisierung
der Cache-Lines die erforderliche Zeit, um die Cache-Lines bei einer
erfindungsgemäßen Ausführungsform zu aktualisieren.
-
Bei
dem angenommenen Szenario wird der Abstand zwischen Cache-Lines
9 und 11 und zwischen Cache-Lines 11 und 14 als klein angenommen und
der Ablauf geht zu Schritt 668. In Schritt 668 kombiniert
der Laufzeit-Controller die Cache-Lines mit einem kleinen Abstand
zwischen ihnen zu einem großen Metadaten-Cache-Schreibvorgang.
Bei dem angenommenen Szenario beispielsweise kombiniert der Laufzeit-Controller
eine Metadaten-Aktualisierung für Cache-Lines 9, 11 und
14 in eine einzige Metadaten-Aktualisierung für Cache-Lines
9–14, obwohl Cache-Lines 10, 12 und 13 nicht modifiziert
werden müssen. In Schritt 670 führt der
Laufzeit-Controller die kombinierten Metadaten-Schreibvorgänge
von Schritt 664 aus und der Ablauf geht zu Schritt 634 in Ablauf 660.
Die Schritte 664 und 668 optimieren die Operationen,
um die ausstehenden gepackten Metadaten in der Caching-Einheit 170 zu
aktualisieren. In Ablauf 680 bei einer weiteren erfindungsgemäßen Ausführungsform
kann nur einer der Schritte 662 und 664 sowie
der Schritte 666 und 668 ausgeführt werden.
Für einen Fachmann ist es sofort selbstverständlich,
dass weitere Optimierungen durchgeführt werden können,
um die Zeit zum Aktualisieren der ausstehenden Metadaten-Aktualisierungen
in der Caching-Einheit 170 zu verringern, ohne die erfindungsgemäßen
Arbeiten zu beeinträchtigen.
-
Die
in 6A, 6B und 6C veranschaulichten
Write-back-Caching-Schemata sollen als nicht einschränkend
verstanden werden. Für einen Fachmann ist es sofort selbstverständlich,
dass verschiedene Kombinationen oder Modifikationen der Schritte
durchgeführt werden können, ohne die erfindungsgemäßen
Arbeiten zu beeinträchtigen. Ein Benutzer des Systems 100 kann
sich entscheiden, eines der drei Write-back-Caching-Schemata von 6A, 6B und 6C zu
verwenden, und kann ebenfalls jede Kombination der drei Write-back-Schemata
von 6A, 6B und 6C verwenden.
-
7 veranschaulicht
ein Ablaufdiagramm 700 eines Verfahrens, um Daten in Übereinstimmung mit
einer erfindungsgemäßen Ausführungsform
in eine Cache-Line der Caching-Einheit 170 einzufügen.
In Schritt 710 prüft der Laufzeit-Controller,
ob eine Anfrage vorliegt, Daten in die Cache-Line(s) der Caching-Einheit 170 einzufügen.
Wenn bei einer erfindungsgemäßen Ausfühnmgsform
beispielsweise das OS Daten auf einen bestimmten Adressort in dem
Speichergerät 160 schreiben möchte, prüft
der Laufzeit-Controller die Cache-Tabelle, ob die Daten an dem bestimmten
Adressort in dem Speichergerät 160 in die Caching-Einheit 170 gecacht
sind. Wenn es keinen Cache-Hit gibt, d. h. die Daten an dem bestimmten
Adressort nicht in der Caching-Einheit 170 gecacht sind,
kann der Laufzeit-Controller eine Anfrage empfangen, um die Daten
in die Cache-Line(s) der Caching-Einheit 170 einzufügen.
-
Wenn
keine Anfrage vorliegt, Daten in die Cache-Line(s) einzufügen,
endet der Ablauf. Wenn eine Anfrage vorliegt, Daten in die Cache-Line(s)
einzufügen, prüft der Laufzeit-Controller, ob
es irgendwelche freien Cache-Lines in der Caching-Einheit 170 in
Schritt 720 gibt. Bei einer erfindungsgemäßen Ausführungsform
werden alle unbenutzten Cache-Lines in der Caching-Einheit 170 als
freie Cache-Lines ausgezeichnet oder markiert. Bei einer weiteren
erfindungsgemäßen Ausführungsform wird
ein fester Anteil der unbenutzten Cache-Lines in der Caching-Einheit 170 als
freie Cache-Lines ausgezeichnet oder markiert. Bei einer Ausführungsform
beispielsweise kann der Laufzeit-Controller fünf Cache-Lines
der Caching-Einheit 170 als freie Cache-Lines auszeichnen.
Wenn es keine freien Cache-Lines gibt, wählt der Laufzeit-Controller
basierend auf einer Richtlinie zum Entfernen in Schritt 722 eine
oder mehr Cache-Lines der Caching-Einheit 170 zum Entfernen
aus. Die Richtlinie zum Entfernen beinhaltet, ist aber nicht darauf
beschränkt, dass die zuletzt benutzte(n) Cache-Line(s)
entfernt wird/werden, dass die erste Cache-Line der Caching-Einheit 170 entfernt
wird oder dergleichen.
-
In
Schritt 724 wird/werden die ausgewählte(n) Cache-Line(s)
durch den Laufzeit-Controller entfernt. Bei einer erfindungsgemäßen
Ausführungsform entfernt der Laufzeit-Controller die ausgewählte(n)
Cache-Line(s), indem die gecachten Daten in der/den ausgewählten
Cache-Line(s) in das Speichergerät 160 geschrieben
werden, sofern sie noch nicht synchronisiert wurden. In Schritt 726 markiert der
Laufzeit-Controller die entfernte(n) Cache-Line(s) als freie Cache-Line(s)
oder zeichnet sie so aus, und der Ablauf geht zu Schritt 730.
Wenn es freie Cache-Line(s) gibt, wählt der Laufzeit-Controller
eine oder mehrere freie Cache-Line(s) der Caching-Einheit 170 aus,
um die Daten, die in Schritt 730 geschrieben werden sollen,
zu cachen. Die Auswahl-Richtlinie der freien Cache-Line(s) beinhaltet, ist
aber nicht beschränkt auf, erste verfügbare freie Cache-Line,
zuletzt verwendete freie Cache-Line und dergleichen. In Schritt 740 schreibt
der Laufzeit-Controller die Daten auf die ausgewählte(n)
freie(n) Cache-Line(s).
-
In
Schritt 750 aktualisiert der Laufzeit-Controller die gepackten
Metadaten oder Zustandsinformationen, die mit der/den ausgewählten
Cache-Line(s) verbunden sind, basierend auf den neuen Daten in dem
flüchtigen Speicher 142. Nach Schritt 750 kann
der Ablauf 700 einen optionalen Schritt 760 ausführen,
bei dem der Laufzeit-Controller die Cache-Line(s) als eine ausstehende
Aktualisierung der gepackten Metadaten, die mit den Cache-Lines
verbunden sind, basierend auf den neuen Daten in der Caching-Einheit 170 auszeichnet,
wenn das Write-back-Caching-Schema von Ablauf 660 oder 680 verwendet
wird, oder er kann einen optionalen Schritt 770 ausführen,
bei dem der Laufzeit-Controller die gepackten Metadaten oder Zustandsinformationen,
die mit der/den ausgewählten Cache-Line(s) verbunden sind,
basierend auf den neuen Daten in der Caching-Einheit 170 aktualisiert, wenn
das Write-back-Caching-Schema von Ablauf 600 verwendet
wird. Der Ablauf endet, nachdem entweder optionaler Schritt 760 oder 770 ausgeführt
ist.
-
Wenn
Cache-Line(s) entfernt werden, wird ein sofortiges Aktualisieren
der gepackten Metadaten, die mit der/den Cache-Line(s) in der Caching-Einheit 170 verbunden
sind, erforderlich, da ein Fehlerereignis, wie z. B. ein Energieausfall
des Systems 100, ein Datenintegritätsproblem in
dem Speichergerät 160 und der Caching-Einheit 170 hervorrufen
kann. Somit ist beim Entfernen von Cache-Line(s) ein Metadaten-Schreibvorgang,
die mit der/den Cache-Line(s) in der Caching-Einheit 170 verbunden
sind, nach jedem Entfernen erforderlich. Jedoch führt ein
Durchführen eines zusätzlichen Metadaten-Schreibvorganges
nach jedem Entfernen der Cache-Line(s) zu Mehraufwand. Um den Mehraufwand
zu vermeiden, beinhaltet das in 7 erörterte Verfahren
zum Einfügen von Daten in eine Cache-Line(s) der Caching-Einheit 170,
dass neue Daten in freie Cache-Line(s) anstatt in eine Cache-Line(s)
mit gecachten Daten eingefügt werden.
-
Zum
Zwecke der Veranschaulichung wird beispielsweise angenommen, dass
der Laufzeit-Controller eine Anfrage zum Einfügen von Daten
für LBA 1 des Speichergeräts 160 empfängt.
Es wird angenommen, dass Cache-Line 4 die Daten von LBA 5 des Speichergeräts 160 speichert.
Wenn ein Fehlerereignis auftritt, nachdem die Daten von LBA 1 des Speichergeräts 160 auf
Cache-Line 4 geschrieben wurden, aber bevor die mit Cache-Line 4
verbundenen Metadaten aktualisiert wurden, wird das System 100 bei
einem Neustart- oder Rebootereignis erkennen, dass Cache-Line 4 über
die Daten von LBA 5 basierend auf den mit Cache-Line 4 verbundenen Metadaten
verfügt. Dies ist jedoch falsch, da die Cache-Line 4 mit
den Daten von LBA 1 des Speichergeräts 160 aktualisiert
wurde.
-
Dadurch,
dass neue Daten in freie Cache-Lines, wie in dem Ablauf 700 von 7 beschrieben, eingefügt
werden, beeinträchtigt ein auftretendes Fehlerereignis
die Datenintegrität des Speichergeräts 160 und
Caching-Einheit 170 nicht. Wenn zum Zwecke der Veranschaulichung
beispielsweise der Laufzeit-Controller eine Anfrage empfängt,
um die Daten von LBA 1 des Speichergeräts 160 in
die Caching-Einheit 170 einzufügen, wählt
die Laufzeit eine freie Cache-Line aus, um die Daten von LBA 1 des Speichergeräts 160 zu
cachen. Wenn ein Fehlerereignis auftritt, nachdem die freie Cache-Line
mit den Daten von LBA 1 des Speichergeräts 160 aktualisiert wurde,
aber bevor die mit der freien Cache-Line verbundenen Metadaten aktualisiert
werden, beeinträchtigt das Fehlerereignis die Datenintegrität
in dem Speichergerät 160 und der Caching-Einheit 170 nicht.
Da es sich um ein Fehlerereignis handelt und kein Flush-Ereignis
aufgetreten ist, können die neuen Daten verworfen werden,
ohne das System 100 zu beeinträchtigen.
-
Das
Write-through-Caching-Schema ist nicht auf den in 5 gezeigten
Algorithmus beschränkt. Bei einer weiteren erfindungsgemäßen
Ausführungsform kann das Write-through-Caching-Schema einen der
in 6A, 6B und 6C gezeigten
Write-back-Caching-Algorithmen verwenden. Das Write-back-Caching-Schema
kann einen der in 6A, 6B und 6C gezeigten
Write-back-Caching-Algorithmen und die in 7gezeigten
Algorithmen verwenden. Wenn das Write-through-Caching-Schema einen
der in 6A, 6B und 6C gezeigten
Write-back-Caching-Algorithmen und die in 7 gezeigten
Algorithmen verwendet, kann der Write-through-Cache auch über
unsachgemäße Beendigungen warm gehalten werden.
-
8A und 8B veranschaulichen
einen Pseudo-Code 800 und 850, um ein Write-back-Caching-Schema
in Übereinstimmung mit einer erfindungsgemäßen
Ausführungsform zu implementieren. Zum Zwecke der Veranschaulichung
wird ein HDD verwendet, um das Speichergerät 160 beispielhaft
darzustellen, und ein SSD wird verwendet, um die Caching-Einheit 170 beispielhaft
darzustellen. Für einen Fachmann werden die Arbeiten des
Pseudo-Codes 800 und 850 sofort selbstverständlich
sein, und die Arbeiten des Pseudo-Codes 800 und 850 sollen
nicht ausführlich erörtert werden.
-
Obwohl
Beispiele der Ausführungsformen des offenbarten Gegenstands
beschrieben sind, ist es für einen Fachmann sofort selbstverständlich, dass
viele andere Verfahren zum Implementieren des offenbarten Gegenstands
alternativ verwendet werden können. Bei der vorstehenden
Beschreibung sind verschiedene Ausführungsformen des offenbarten
Gegenstands beschrieben worden. Zum Zwecke der Erklärung
wurden spezifische Anzahlen, Systeme und Konfigurationen dargelegt,
um ein gründliches Verständnis des Gegenstands
bereitzustellen. Es ist jedoch einem Fachmann, der den Vorteil dieser Offenbarung
hat, selbstverständlich, dass der Gegenstand ohne die spezifischen
Details umgesetzt werden kann. In anderen Fällen wurden
wohl bekannte Merkmale, Komponenten oder Module weggelassen, vereinfacht,
kombiniert oder aufgeteilt, um den offenbarten Gegenstand nicht
zu verschleiern.
-
Der
hierin verwendete Begriff „arbeitet” bedeutet,
dass das Gerät, System, Protokoll etc. in der Lage ist
oder dazu ausgelegt ist, für seine gewünschte
Funktionalität zu arbeiten, wenn sich das Gerät oder
System in einem ausgeschalteten Zustand befindet. Verschiedene Ausführungsformen
des offenbarten Gegenstands können in Hardware, Firmware, Software
oder Kombinationen davon implementiert sein, und können
unter Bezugnahme auf oder in Verbindung mit Programmcode, wie z.
B. Befehlen, Funktionen, Verfahrensweisen, Datenstrukturen, Logik,
Anwendungsprogrammen, Designdarstellungen oder Formaten zur Simulation,
Emulation und Herstellung eines Designs beschrieben werden, die, wenn
von einer Maschine darauf zugegriffen wird, dazu führen,
dass die Maschine Aufgaben ausführt, wobei abstrakte Datentypen
oder hardwarenaher Zusammenhang definiert wird oder ein Ergebnis
erzeugt wird.
-
Die
in den Figuren gezeigten Techniken können unter Verwendung
von Code und Daten implementiert werden, die auf einem oder mehr
EDV-Geräten, wie z. B. Universalrechnern oder EDV-Geräten,
gespeichert und ausgeführt werden. Solche EDV-Geräte
speichern und kommunizieren (intern und mit anderen EDV-Geräten über
ein Netzwerk) Code und Daten unter Verwendung maschinenlesbarer
Medien, wie z. B. maschinenlesbare Speichermedien (z. B. Magnetplatten,
optische Platten, Direktzugriffsspeicher, Festspeicher, Flash-Speicher-Geräte, Phasenwechselspeicher)
und maschinenlesbarer Kommunikationsmedien (z. B. elektrische, optische, akustische
oder andere Formen sich ausbreitender Signale – wie z.
B. Trägersignale, Infrarotsignale, digitale Signale etc.).
-
Während
der offenbarte Gegenstand unter Bezugnahme auf veranschaulichende
Ausführungsformen beschrieben wurde, soll diese Beschreibung nicht
einschränkend ausgelegt werden. Verschiedene Modifikationen
der veranschaulichenden Ausführungsformen sowie weiterer
Ausführungsformen des Gegenstands, die Fachleuten, die
der offenbarte Gegenstand betrifft, offensichtlich sind, sollen
als im Umfang des offenbarten Gegenstands liegend erachtet werden.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste
der vom Anmelder aufgeführten Dokumente wurde automatisiert
erzeugt und ist ausschließlich zur besseren Information
des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen
Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt
keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- - Institute
of Electrical and Electronics Engineers (IEEE) 802.11 [0024]