-
GEBIET
-
Die vorliegende Gebrauchsmusterschrift bezieht sich allgemein auf Datenspeichersysteme.
-
In Übereinstimmung mit den Anforderungen des Gebrauchsmustergesetzes sind nur Vorrichtungen oder Systeme, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren als Gebrauchsmuster zu schützen und Gegenstand des Gebrauchsmusters. Falls in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich zur Veranschaulichung der Vorrichtungen oder Systeme, für die mit den beigefügten Ansprüchen Schutz begehrt wird.
-
HINTERGRUND
-
Um Daten und Anweisungen für verschiedene Computer und ähnliche Systeme zu unterhalten und zu speichern, können eine breite Vielfalt von Datenspeichervorrichtungen verwendet werden. In herkömmlichen Computersystemen wird üblicherweise die Technologie dynamischer Schreib-Lese-Speicher (DRAM) genutzt, um den dynamischen Datenspeicher des Computers zu betreiben, damit eine Anwendung mit hohen Geschwindigkeiten arbeitet. Allerdings skaliert der als Hauptdatenspeicher in Computersystemen verwendete DRAM nicht mehr so schnell wie in der Vergangenheit. Im Ergebnis ist der DRAM-Speicher in Computerumgebungen zu einem beschränkten Betriebsmittel geworden.
-
Ein zweiter Tire des Datenspeichers wie etwa ein nichtflüchtiger Datenspeicher kann verwendet werden, der die Leistungslücke zwischen dem DRAM und langsameren Technologien wie etwa NAND-Flash überbrückt. Auf den zweiten Tire des Datenspeichers kann über einen Datenspeicher- oder EA-Bus oder fern über ein schnelles Netz lokal zugegriffen werden. Allerdings müssen Anwendungen die Datenplatzierung explizit managen oder muss das System ein automatisches Management bereitstellen, das die Daten zwischen Datenspeicher-Tires transparent verschiebt. Somit sind neue Techniken für das automatische Management mit minimaler Leistungsauswirkung notwendig, um die Unzulänglichkeiten vorhandener Techniken, die für langsamere Speichervorrichtungen ausgelegt waren, zu überwinden.
-
ZUSAMMENFASSUNG
-
Ein innovativer Aspekt des in dieser Gebrauchsmusterschrift beschriebenen Gegenstands wird in Systemen und Verfahren verkörpert, die das Bestimmen, ob ein Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag einer Seitentabelle auf der Grundlage einer Absuche der Seitentabelle mit wenigstens einem Seitentabellen-Walker des Prozessors, wobei das Zugriffsbit angibt, ob auf eine Seite, der der Seitentabelleneintrag zugeordnet ist, in einer letzten Absuchperiode zugegriffen wurde; das Inkrementieren eines Zählwerts für jede Seite in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den der Seite zugeordneten Seitentabelleneintrag nicht gesetzt ist; nach dem Bestimmen mit dem Prozessor, ob das Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag, das Zurücksetzen des Zugriffsbits mit dem Prozessor; das Empfangen einer Anforderung zum Zugriff auf eine erste Seite von Daten aus einem Hauptdatenspeicher; das Initiieren eines Seitenfehlers auf der Grundlage der Bestimmung, dass die erste Seite von Daten nicht in dem Hauptdatenspeicher gespeichert ist; und das Bedienen des Seitenfehlers unter Verwendung einer Direktspeicherzugriffs-Engine (DMA-Engine) enthalten.
-
In bestimmten Implementierungen enthält das Bedienen des Seitenfehlers unter Verwendung einer DMA-Engine das Bestimmen einer von zuletzt verwendeten Seiten auf der Grundlage des Zählwerts für jede Seite und das Freigeben einer der zuletzt bestimmten Seiten in den sekundären Datenspeicher und das Übertragen der Daten der ersten Seite aus dem sekundären Datenspeicher in den Hauptdatenspeicher an den Ort der freigegebenen wenigstens einen der zuletzt verwendeten Seiten, falls der Hauptdatenspeicher eine Seitenübertragung nicht empfangen kann; und falls der Hauptdatenspeicher eine Seitenübertragung empfangen kann, das Übertragen der Daten der ersten Seite aus dem sekundären Datenspeicher an den Hauptdatenspeicher.
-
In bestimmten Implementierungen enthält das Initiieren des Seitenfehlers das Blockieren der Ausführung eines Threads, während der Seitenfehler bedient wird; und das Freigeben des Threads zum Zugreifen auf den Hauptdatenspeicher, nachdem der Seitenfehler bedient worden ist. Ferner wird der Zählwert für jede Seite in bestimmten Implementierungen durch wenigstens eines der Folgenden unterhalten: einen Zähler für jede in dem statischen Schreib-Lese-Speicher gespeicherte Seite, Zähl-Bloom-Filter oder einen Zähler für jede in dem dynamischen Schreib-Lese-Speicher gespeicherte Seite.
-
Ein innovativer Aspekt des in dieser Gebrauchsmusterschrift beschriebenen Gegenstands wird in Systemen und Verfahren verkörpert, die das Bestimmen, ob ein Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag einer Seitentabelle auf der Grundlage einer Absuche der Seitentabelle mit wenigstens einem Seitentabellen-Walker, wobei das Zugriffsbit angibt, ob in einer letzten Absuchperiode auf eine Seite, der der Seitentabelleneintrag zugeordnet ist, bei einem Hauptdatenspeicher zugegriffen wurde; das Inkrementieren eines primären Zählwerts für jede Seite in dem Hauptdatenspeicher in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den der Seite zugeordneten Seitentabelleneintrag nicht gesetzt ist; das Zurücksetzen des Zugriffsbits nach der Bestimmung, ob das Zugriffsbit gesetzt ist, für jeden Seitentabelleneintrag; das Bestimmen, ob auf eine Seite in einem sekundären Datenspeicher zugegriffen wird, aufgrund dessen, dass ein Home-Agent eine Anforderung zum Zugriff auf die Seite in dem sekundären Datenspeicher empfängt; das Inkrementieren eines sekundären Zählwerts für jede Seite in dem sekundären Datenspeicher in Ansprechen auf die Bestimmung, dass auf die Seite in dem sekundären Datenspeicher zugegriffen wird, aufgrund dessen, dass der Home-Agent eine Anforderung zum Zugriff auf die Seite in dem sekundären Datenspeicher empfängt; das Identifizieren einer bestimmten Seite in dem sekundären Datenspeicher als eine, auf die häufig zugegriffen wird, auf der Grundlage des sekundären Zählwerts; und das Migrieren der bestimmten Seite, die als eine identifiziert wurde, auf die häufig zugegriffen wird, aus dem sekundären Datenspeicher in den Hauptdatenspeicher, enthalten.
-
Ein anderer Aspekt des in dieser Gebrauchsmusterschrift beschriebenen Gegenstands kann in Systemen und Verfahren verkörpert werden, die das Identifizieren einer bestimmten Seite in dem Hauptdatenspeicher als eine, auf die selten zugegriffen wird, auf der Grundlage des primären Zählwerts; und das Migrieren der bestimmten Seite, die als eine identifiziert wurde, auf die selten zugegriffen wird, aus dem Hauptdatenspeicher in den sekundären Datenspeicher enthalten. Außerdem kann das Migrieren der bestimmten Seite, die als eine identifiziert wurde, auf die selten zugegriffen wird, das Annullieren des der bestimmten Seite zugeordneten Seitentabelleneintrags, das Ausführen eines Translation-Lookaside-Buffer-Shootdowns für irgendwelche der bestimmten Seite zugeordnete Einträge und das Übertragen der bestimmten Seite aus dem Hauptdatenspeicher in den sekundären Datenspeicher enthalten.
-
In bestimmten Implementierungen werden sowohl der primäre Zählwert für jede Seite in dem Hauptdatenspeicher als auch der sekundäre Zählwert für jede Seite in dem sekundären Datenspeicher durch wenigstens eines der Folgenden unterhalten: einen Zähler für jede in dem statischen Schreib-Lese-Speicher gespeicherte Seite, Zähl-Bloom-Filter oder einen Zähler für jede in dem dynamischen Schreib-Lese-Speicher gespeicherte Seite.
-
In bestimmten Implementierungen enthält das Identifizieren einer bestimmten Seite in dem Hauptdatenspeicher als eine, auf die selten zugegriffen wird, auf der Grundlage des primären Zählwerts das Bestimmen, dass eine Zugriffszwischenzeit für die bestimmte Seite einem Zugriffszwischenzeit-Schwellenwert genügt. Außerdem wird in bestimmten Implementierungen die bestimmte Seite, die als eine identifiziert wurde, auf die selten zugegriffen wird, in Ansprechen auf die Bestimmung, dass die Zugriffszwischenzeit für die bestimmte Seite dem Zugriffszwischenzeit-Schwellenwert genügt, aus dem Hauptdatenspeicher in den sekundären Datenspeicher migriert.
-
Andere Ausführungsformen dieser Aspekte enthalten entsprechende Systeme, Vorrichtungen und Computerprogramme, die dafür konfiguriert sind, die Tätigkeiten der Verfahren, die in Computerspeichervorrichtungen codiert sind, auszuführen.
-
Bestimmte Ausführungsformen des in dieser Gebrauchsmusterschrift beschriebenen Gegenstands können in der Weise implementiert werden, dass einer oder mehrere der folgenden Vorteile verwirklicht werden. Zum Beispiel können die Nutzungs- oder Zugriffsstatistiken für Seiten im Datenspeicher, die durch Hardware bestimmt werden, präziser und genauer als in aktuellen Verfahren, die Software und Absuchtechniken umfassen, bestimmt werden. Ferner kann dadurch, dass anstelle der vollen Datenseite zuerst eine bestimmte Cache-Zeile, für die der Zugriff angefordert wird, übertragen wird, die Verzögerung, die dadurch verursacht wird, dass eine Seite in Ansprechen auf eine Anforderung für den Zugriff auf die Seite übertragen wird, verringert werden, was zur schnelleren Ausführung der Anwendung oder des Prozesses, die bzw. der ausgeführt wird, führen kann.
-
In den beigefügten Zeichnungen und in der folgenden Beschreibung sind die Einzelheiten einer oder mehrerer Ausführungsformen der Erfindung dargelegt. Weitere Merkmale und Vorteile der Erfindung gehen aus der Beschreibung, aus den Zeichnungen und aus den Ansprüchen hervor.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt ein Beispiel eines Systems, das eine Datenspeichervorrichtung in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung enthält.
-
2 zeigt ein Beispiel eines Systems, das eine Datenspeichervorrichtung in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung enthält.
-
3A zeigt einen Ablaufplan eines Beispiels eines Prozessors zur Behandlung eines Seitenfehlers in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung.
-
3B zeigt einen Ablaufplan eines Beispiels eines Prozesses für einen Rückschreib-Thread in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung.
-
4 zeigt einen Ablaufplan eines Beispiels eines Prozesses zum Bestimmen einer Häufigkeit der Nutzung einer Seite mit Hardware und zum Bedienen eines Seitenfehlers unter Verwendung einer DMA-Engine in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung.
-
5 zeigt einen Ablaufplan eines Beispiels eines Prozesses zum Bestimmen einer Häufigkeit der Nutzung einer Seite mit Hardware und zum Ausführen einer Seitenmigration auf der Grundlage der bestimmten Nutzung in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung.
-
6 zeigt einen Ablaufplan eines Beispiels eines Prozesses zum Behandeln eines Seitenfehlers dadurch, dass eine entscheidende Cache-Zeile zuerst übertragen wird, in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung.
-
Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen bezeichnen gleiche Elemente.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Auf neue Technologien nichtflüchtiger Datenspeicher kann lokal über einen Datenspeicher- oder EA-Bus oder fern über ein schnelles Netz zugegriffen werden. Die Leistung dieser Technologien hat zwei wichtige Implikationen: Zunächst sind sie schnell genug, damit Software-Overheads, um auf sie zuzugreifen, minimal sein müssen; und zweitens sind sie langsam genug, damit üblicherweise ein DRAM als ein Cache verwendet werden kann. Um von den Vorteilen dieser Arten nichtflüchtiger Datenspeicher zu profitieren, müssen Anwendungen die Datenplatzierung explizit managen oder muss das System ein automatisches Management bereitstellen, das Daten zwischen verschiedenen Abschnitten des Datenspeichers transparent verschiebt.
-
Dementsprechend schaffen Ausführungsformen der vorliegenden Offenbarung ein System für ein automatisches Hochleistungsmanagement eines sekundären Datenspeichers, das entweder lokal über einen Datenspeicher- oder EA-Bus oder fern über ein Netz verfügbar ist. Der sekundäre Datenspeicher kann ein Computerdatenspeicher sein, der dem Wesen nach nichtflüchtig und beständig ist. Auf den sekundären Datenspeicher kann durch den Prozessor nicht direkt zugegriffen werden und er kann langsamer als der primäre Datenspeicher oder Hauptdatenspeicher sein. Auf den Hauptdatenspeicher, der auch als primärer Datenspeicher, als primärer Speicher, als interner Datenspeicher oder als Datenspeicher des ersten Tires bezeichnet wird, kann durch die CPU direkt zugegriffen werden. Wie im Folgenden ausführlicher beschrieben ist, nutzt die Hardware das Cache-Kohärenzprotokoll und die Verdrahtung in modernen prozessorbasierten Systemen, um Zugriffslatenzzeiten zu verringern und die Konsistenz aufrechtzuerhalten. Außerdem kann ein optimierter Kernel-Treiber z. B. einen schnellen Weg zu dem Datenspeicher des zweiten Tires bereitstellen und die gesamte Kommunikation mit der Datenspeichermanagementhardware behandeln. Im Vergleich zu vorhandenen Wegen über den Kernel für den Seitenwechsel, für die für Dinge wie für die Synchronisation, für das Datenspeichermanagement und für Block-EA-Übertragungen hohe Kosten anfallen, ist dieser Prozess ist vorteilhaft.
-
Diese Merkmale und zusätzliche Merkmale sind im Folgenden ausführlicher beschrieben.
-
1 zeigt ein Beispiel eines Systems 100, das eine Datenspeichervorrichtung in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung enthält. Eine Zentraleinheit (CPU) 110 kann mit einem DRAM 120 und mit einer Datenspeicher-Managementeinheit (MMU) 150 in Kommunikation stehen. Ferner kann das System 100 einen fernen Datenspeicher 130 enthalten, auf den über ein Netz zugegriffen werden kann. Ein Cache-Agent 140 und ein Home-Agent 145 können bei dem Management des Datenspeichers mit der MMU 150 zusammenarbeiten. Der Begriff Cache-Agent bezieht sich auf einen Verarbeitungseinheitsagenten, der Cache-Daten speichert und der Datenspeicheranforderungen initiieren kann. Mit anderen Worten, der Begriff Cache-Agent kann eine Entität repräsentieren, die Transaktionen in den kohärenten Datenspeicher initiieren kann und die Kopien in ihrer eigenen Cache-Struktur halten kann. Der Home-Agent 145 kann z. B. ein Datenspeichercontroller sein. Der Begriff Home-Agent bezieht sich auf einen Verarbeitungseinheitsagenten, der ein Gebiet oder einen Abschnitt des Datenspeichers beaufsichtigt oder besitzt. Mit anderen Worten, der Begriff Home-Agent kann eine Entität repräsentieren, die kohärente Transaktionen bedient, einen Abschnitt des kohärenten Datenspeichers beaufsichtigt und/oder Konflikte, die zwischen verschiedenen Cache-Agenten auftreten können, managt. Außerdem können ein Seitentabellen-Walker 160 und ein Translation Look-aside Buffer (TLB) 165 Teil der MMU 150 oder mit ihr implementiert sein.
-
Die MMU 150 ist eine Hardwareeinheit, über die Datenspeicherbezugnahmen übergeben werden können, wobei sie die Übersetzung virtueller Datenspeicheradressen in physikalische Adressen ausführt und die Cache-Steuerung behandelt. Zum Beispiel kann die MMU 150 eine Seitentabelle als eine Tabelle im Datenspeicher verwenden, die einen Seitentabelleneintrag (PTE) pro Seite enthält, um Nummern virtueller Seiten in Nummern physikalischer Seiten im Hauptdatenspeicher abzubilden. Der Translation Look-aside Buffer 165 kann als ein Assoziativ-Cache der PTEs verwendet werden, um die Notwendigkeit, jedes Mal, wenn eine virtuelle Adresse abgebildet wird, auf den Hauptdatenspeicher zuzugreifen, zu vermeiden. Wenn ein PTE den Zugriff auf eine virtuelle Seite verhindert, da z. B. dieser virtuellen Seite kein physikalischer Schreib-Lese-Speicher zugeordnet worden ist, kann die MMU 150 einen Seitenfehler an die CPU 150 signalisieren. Anhand von 1 kann das System 100 zusätzlich einen nichtflüchtigen Datenspeicher 180 enthalten und kann es optional einen privaten DRAM 170 enthalten.
-
2 zeigt ein Beispiel eines Systems 200, das eine Datenspeichervorrichtung in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung enthält. Das System 200 kann eine CPU 210 und einen DRAM 220 enthalten. Ferner kann das System 200 eine Direktdatenspeicherzugriffs-Engine (DMA-Engine) 230 und einen sekundären Speicher 240 enthalten. Die CPU 210, der DRAM 220, die DMA-Engine 230 und der sekundäre Datenspeicher 240 können über einen oder mehrere Busse 215, 225 oder über andere Mittel zur Datenkommunikation in Datenkommunikation stehen.
-
Im Betrieb kann die DMA-Engine 230 zum Bedienen von Seitenfehlern, zum Behandeln von Rückschreibvorgängen oder zur Seitenmigration verwendet werden. Der sekundäre Speicher 240 kann eine Datenspeichervorrichtung sein, die als Datenspeicher des zweiten Tires dient, auf den durch die CPU 210 nicht direkt zugegriffen werden kann. Die DMA-Engine 230 kann mit der CPU 210 direkt verbunden sein oder kann Teil einer getrennten Entität wie etwa eines Cache-Agenten sein. Wenn die CPU 210 auf eine Seite von dem DRAM 220 als Hauptdatenspeicher, d. h. als Datenspeicher des ersten Tires oder primärer Datenspeicher, zuzugreifen versucht und diese Seite ausgelagert ist und in dem sekundären Speicher 240 vorhanden ist, kann ein Seitenfehler auftreten. Der Seitenfehler kann angeben, dass das Betriebssystem (BS) die Seite aus dem sekundären Speicher 240 in den Hauptdatenspeicher DRAM 220 verschieben muss. In Übereinstimmung mit hier beschriebenen Ausführungsformen managt die Hardware-DMA-Engine 230 den Seitenfehler, wobei sie den Versuch, auf die Seite, die nicht in dem Hauptdatenspeicher DRAM 220 ist, zuzugreifen, detektiert. In Ansprechen darauf wird die Ausführung des Threads blockiert, während der Seitenfehler bedient wird. Daraufhin kann der Thread freigegeben werden, um auf den Hauptdatenspeicher DRAM 220 zuzugreifen und die Ausführung fortzusetzen.
-
Auf diese Weise kann die Hardware die Seitenübertragung durch Bedienen von Seitenfehlern unter Verwendung der DMA-Engine 230 initiieren. Dementsprechend gibt es eine programmierbare DMA-Engine 230 zum Beschleunigen von Seitenübertragungen beim Bedienen von Seitenfehlern, zum Zurückschreiben von Dirty-Seiten und zum Migrieren von Seiten. Die DMA-Engine 230 kann das Bedienen mehrerer gleichzeitiger Anforderungen managen. Die Anforderungen der DMA-Engine 230 können unter Verwendung eines Befehls mit niedrigem Overhead und einer Antwortschnittstelle über eine kohärente Verdrahtung, die eine Verdrahtung für den gemeinsam genutzten Datenspeicher sein kann, initiiert und abgeschlossen werden. Die DMA-Engine 230 kann als ein Nutzer des kohärenten Datenspeichers konfiguriert sein, der ein Datenspeicherkohärenzprotokoll nutzt, so dass die DMA-Engine 230 Daten in den Cache der letzten Ebene des Prozessors oder der CPU 210 direkt übertragen kann.
-
3A zeigt einen Ablaufplan eines Beispiels eines Prozesses 300 zum Behandeln eines Seitenfehlers in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung. Wie oben beschrieben wurde, kann ein Seitenfehler auftreten, wenn ein Thread oder ein laufendes Programm auf eine Datenspeicherseite, die in den virtuellen Adressenraum abgebildet ist, aber nicht tatsächlich in den Hauptdatenspeicher geladen ist, zugreift. Die MMU 150 des Prozessors kann den Seitenfehler detektieren. Wenn der Seitenfehler bei 310 detektiert wird, kann bei 320 eine Bestimmung vorgenommen werden, ob es eine freie Seite gibt. Falls es eine freie Seite gibt, "ja", können Seitendaten bei 330 aus dem sekundären Speicher oder Sicherungsspeicher an den freien Seitenort kopiert werden. Falls es keine freie Seite gibt, "nein", kann bei 360 eine Seite von der FIFO-Warteschlange, die alle Seiten im Datenspeicher in einer Warteschlange mit der neuesten Ankunft hinten und der ältesten Ankunft vorn nachführen kann, abgehoben werden. Falls diese Seite dirty ist, d. h. geändert worden ist, kann das System die Seite bei 370 in den sekundären Datenspeicher oder Sicherungsspeicher schreiben. Beim Übertragen der Seite aus dem Hauptdatenspeicher in den sekundären Datenspeicher bei 380 kann der Seitentabelleneintrag, der der Seite zugeordnet ist, annulliert werden und kann für irgendwelche Einträge, die der Seite zugeordnet sind, ein TLB-Shootdown ausgeführt werden, was z. B. veranlasst, dass die TLB-Einträge für andere Prozessoren geräumt werden. Da diese Seite nun frei ist, können bei 330 Seitendaten aus dem sekundären Speicher oder Sicherungsspeicher an den Ort der freien Seite kopiert werden. Bei 340 können die Seitentabellen durch Aktualisieren des der Seite zugeordneten PTE, damit er auf den Ort in dem Hauptdatenspeicher der Seite weist, aktualisiert werden, um einen gültigen PTE zu erzeugen. Wenn der Seitenfehler behandelt worden ist, kann der Thread oder das laufende Programm bei 350 wiederaufgenommen werden.
-
3B zeigt einen Ablaufplan eines Beispiels eines Prozesses 305 für einen Zurückschreib-Thread in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung. Beim Aufwecken bei 315 kann eine Bestimmung vorgenommen werden, ob die Anzahl freier Seiten einer Schwellenanzahl von Seiten genügt, die irgendeine Anzahl von Seiten sein kann, die zu behandeln die gegebene Architektur konfiguriert ist. Zum Beispiel kann bei 325 eine Bestimmung vorgenommen werden, ob die Anzahl freier Seiten kleiner oder gleich einem Schwellenwert ist. Falls die Anzahl freier Seiten dem Schwellenwert nicht genügt ("nein"), z. B., falls sie größer als der Schwellenwert ist, kann der Thread bei 335 schlafen. Falls dagegen bei 325 bestimmt wird, dass die Anzahl freier Seiten dem Schwellenwert genügt ("ja"), kann das System bei 345 die nächste Seite in der FIFO-Warteschlange bestimmen. Falls diese Seite dirty ist, d. h. geändert worden ist, kann das System die Seite bei 370 in den sekundären Datenspeicher oder Sicherungsspeicher schreiben. Beim Übertragen der Seite aus dem Hauptdatenspeicher in den sekundären Datenspeicher kann der der Seite zugeordnete Seitentabelleneintrag bei 380 annulliert werden und für irgendwelche der Seite zugeordnete Einträge ein TLB-Shootdown ausgeführt werden. Wenn diese Seite jetzt frei ist, kann bei 325 erneut eine Bestimmung vorgenommen werden, ob die Anzahl freier Seiten dem Schwellenwert genügt.
-
Die Seitentabellenabsuche, d. h. eine Absuche über die Seitentabelle, kann über Hardware anstelle von Software, die einen CPU-Overhead erfordert, der häufig zu langsameren Datenspeicherzugriff und langsamerer Datenspeicherverarbeitung führt und einige eigentlich nützliche Cache-Informationen verwirft, ausgeführt werden. Allgemein kann die Häufigkeit des Zugriffs auf Seitendaten, z. B., auf welche Seitendaten im Verhältnis zu anderen Seiten von Daten häufig zugegriffen wird und auf welche Seitendaten im Verhältnis zu anderen Seiten von Daten selten zugegriffen wird, durch Absuchen der Seitentabelle bestimmt werden. Jede Seite, die in die Seitentabelle abgebildet wird, d. h. jeder PTE, kann einen Merker oder ein Zugriffsbit aufweisen, der bzw. das jedes Mal, wenn auf die Seite zugegriffen wird, gesetzt und daraufhin, nachdem die Seitentabelle abgesucht worden ist, durch die CPU gelöscht werden kann.
-
Diese Hardware kann durch Ergänzen des Seitentabellen-Walkers oder der MMU, der bzw. die einen oder mehrere Seitentabellen-Walker, z. B. eingebaute Hardware zum Lesen der Seitentabelle und zum automatischen Laden von Virtuell-physikalisch-Übersetzungen in den TLB, enthalten kann, implementiert sein. Somit kann die Hardware Teil der Prozessorarchitektur sein, die den Seitentabellenabsuchmechanismus in dem Prozessor verwendet. Zum Beispiel kann die Hardware eine Routine zum Absuchen über eine Seitentabelle, zum Absuchen der PTEs, zum Bestimmen bei jedem PTE, ob seit dem letzten Absuchen ein Zugriffsbit gesetzt worden ist, implementieren. Nachdem bestimmt worden ist, ob das Zugriffsbit gesetzt worden ist, kann das Zugriffsbit gelöscht werden und können daraufhin die Operationen bis zur nächsten Absuche der Seitentabelle fortfahren. Die Absuche kann periodisch, z. B. mit einer vorgegebenen Zeitperiode zwischen Absuchen, stattfinden oder die Absuche kann durch ein äußeres Ereignis ausgelöst werden. Jedes Mal, wenn bestimmt wird, dass ein Zugriffsbit oder ein Zugriffsmerker nicht gesetzt ist, kann jeweils ein Zählwert für jede Seite inkrementiert werden.
-
Im Zeitablauf kann aus der Absuche ein Profil erzeugt werden, wobei das Profil angibt, wie häufig und/oder wie kürzlich auf jede Seite zugegriffen worden ist. Zum Beispiel kann die Hardware für jede Seite einen oder mehrere Zähler oder Bloom-Filter zum Unterhalten der Nutzungsstatistik, z. B. der Anzahl nicht gesetzter Zugriffsbits oder Zugriffsmerker, enthalten oder können die Ergebnisse im Datenspeicher, z. B. in einem Zweiebenen-Datenspeicher, gespeichert werden, um ein Sortieren und Filtern, z. B. der am meisten und am wenigstens verwendeten Seiten oder der Seiten, auf die häufiger oder weniger häufig zugegriffen wird, zu ermöglichen. Ausführlicher kann die Hardware einen Pro-Seite-Zähler unterhalten, um zu bestimmen, wie kürzlich auf eine Seite zugegriffen wurde, und kann jeder Zähler aktualisiert werden, wenn der jeweilige PTE abgesucht wird. Die Pro-Seite-Zähler können für den schnellen Zugriff im On-Chip-SRAM vorgesehen sein. Da die Größe des sekundären Datenspeichers groß sein kann, was die Flächenkosten der Zähler höher macht, können alternativ Zähl-Bloom-Filter verwendet werden, um die Zugriffsstatistiken über Sätze von Seiten zu unterhalten und dadurch Fläche zu sparen. Alternativ kann die Hardware eine kleine Menge privaten DRAM verwenden oder die Zähler im System-DRAM speichern.
-
In bestimmten Ausführungsformen kann die Seitentabellenabsuche zum Erheben einer Zugriffsstatistik mit einem Hardwaremodul implementiert sein, das in dem Seitentabellen-Walker des Prozessors enthalten oder eng mit ihm gekoppelt ist, oder in der MMU implementiert sein, da die MMU einen oder mehrere Seitentabellen-Walker aufweisen kann, die bereits für EA-Vorrichtungen verfügbar sind. Dementsprechend kann die Hardware wie oben beschrieben die Seitentabellen absuchen und das Zugriffsbit jedes PTE verwenden, um auf der Grundlage der Bestimmung, ob das Zugriffsbit seit der letzten Absuche gesetzt worden ist, jeweils das Alter jeder Seite zu bestimmen. Falls das Zugriffsbit z. B. gesetzt ist, wurde auf die Seite innerhalb der letzten Absuchperiode zugegriffen; falls das Zugriffsbit andernfalls nicht gesetzt ist, ist nicht auf sie zugegriffen worden und kann sie als kalt, z. B. als eine, auf die während der letzten Absuchperiode nicht zugegriffen worden ist, angesehen werden. Vorteilhaft können diese Nutzungs- oder Zugriffsstatistiken, die durch Hardware bestimmt werden, präziser und genauer als aktuelle Verfahren sein, die Software und Absuchtechniken umfassen.
-
Somit kann für den Hauptdatenspeicher für jede Seite die Anzahl gezählt werden, in der das Zugriffsbit nicht gesetzt gewesen ist, wobei die Seite z. B. umso kälter ist, je höher der Zählwert für eine Seite ist. Wenn auf die Seite zugegriffen wird und das Zugriffsbit gesetzt ist, kann der Zählwert auf null zurückgesetzt werden. Die Seitentabellen können periodisch abgesucht werden, um Änderungen des Zugriffsbits zu detektieren, und bei jeder Absuche können alle Zugriffsbits gelöscht werden. Somit kann der Zählwert das Alter der Seite, d. h., wie lange nicht auf die Seite zugegriffen worden ist, repräsentieren.
-
Wie oben beschrieben wurde, kann die DMA-Engine 230 beim Bedienen von Seitenfehlern verwendet werden. In bestimmten Ausführungsformen kann die Zugriffsstatistik verwendet werden, um das Ziel einer Seitenübertragung zu bestimmen oder um eine Richtlinie zu bestimmen, die implementiert werden kann, um zu identifizieren, welche Seiten übertragen werden sollen und wann diese Seiten übertragen werden sollen. Zum Beispiel können die Seiten auf der Grundlage der Zugriffsstatistik von den am meisten verwendeten zu den am wenigstens verwendeten oder umgekehrt geordnet werden. Wenn der Seitenfehler unter Verwendung der DMA-Engine 230 bedient wird, kann ein hardwaregestützter Seitenwechselprozess eine der am wenigstens verwendeten Seiten freigeben oder in den sekundären Datenspeicher zurückschreiben und kann er den Ort der am wenigstens verwendeten Seite verwenden, um die neue Seite in den Hauptdatenspeicher zu übertragen, falls es in dem Hauptdatenspeicher DRAM 220 keine freien Seiten gibt.
-
4 zeigt einen Ablaufplan eines Beispiels eines Prozesses 400 zum Bestimmen einer Häufigkeit der Nutzung einer Seite mit Hardware und zum Bedienen eines Seitenfehlers unter Verwendung einer DMA-Engine in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung. Der Prozess 400 enthält bei 410 für jeden PTE einer Seitentabelle auf der Grundlage einer Absuche der Seitentabelle mit einer Seitentabellen-Absucheinrichtung unter Verwendung des Prozessors das Bestimmen, ob ein Zugriffsbit gesetzt ist. Wenigstens ein Seitentabellen-Walker des Prozessors kann z. B. geändert werden, um die Seitentabelle darauf abzusuchen, ob das Zugriffsbit gesetzt ist. Zum Beispiel kann zu dem Seitentabellen-Walker ein Thread zum Absuchen der Seitentabelle hinzugefügt werden oder kann das Absuchen getrennt von dem Seitentabellen-Walker durch Hardware erfolgen. Das Zugriffsbit kann angeben, ob auf eine dem PTE zugeordnete Seite innerhalb der letzten Absuchperiode, z. B. zwischen der letzten Absuche und der aktuellen Absuche der Seitentabelle, zugegriffen wurde.
-
Bei 420 kann in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den der Seite zugeordneten PTE nicht gesetzt ist, ein Zählwert für jede Seite inkrementiert werden. Nach der Bestimmung, ob das Zugriffsbit gesetzt ist, für jeden PTE kann der Prozessor das Zugriffsbit bei 430 zurücksetzen. Der Zählwert für jede Seite kann für jede in dem statischen Schreib-Lese-Datenspeicher gespeicherte Seite durch einen Zähler unterhalten werden oder Zähl-Bloom-Filter können die Zugriffsstatistik über Sätze von Seiten unterhalten. Alternativ kann ein Zähler für jede Seite im dynamischen Schreib-Lese-Speicher, z. B. in einer kleinen Menge privatem DRAM oder im System-DRAM, gespeichert werden.
-
Ferner kann der Prozess 400 bei 440 das Empfangen einer Anforderung zum Zugreifen auf eine Seite von Daten von dem Hauptdatenspeicher enthalten. Bei 450 kann auf der Grundlage der Bestimmung, dass die Seite von Daten, für die ein Zugriff angefordert wird, nicht in dem Hauptdatenspeicher gespeichert ist, ein Seitenfehler initiiert werden. Bei 460 kann eine Seitenfehlerbehandlungsroutine den Seitenfehler detektieren und den Seitenfehler unter Verwendung der DMA-Engine 230 bedienen.
-
Zum Beispiel kann auf der Grundlage des Zählwerts für jede Seite bei 470 eine bestimmte Seite im Hauptdatenspeicher, z. B. eine der zuletzt verwendeten Seiten im Hauptdatenspeicher, bestimmt werden, falls der Hauptdatenspeicher keine freie Seite aufweist und die Seitenübertragung nicht empfangen kann. Die DMA-Engine 230 kann die Seitenübertragung managen und bei 470 kann die bestimmte eine der Seiten freigegeben werden oder in den sekundären Datenspeicher zurückgeschrieben werden. Ferner kann die Seite von Daten, für die ein Zugriff angefordert wird, bei 470 aus dem sekundären Datenspeicher in den Hauptdatenspeicher an den Ort der freigegebenen einen der zuletzt verwendeten Seiten übertragen werden. Alternativ kann die DMA-Engine 230 bei 480 die Übertragung der Seitendaten aus dem sekundären Datenspeicher in den Hauptdatenspeicher managen, falls der Hauptdatenspeicher eine freie Seite aufweist und die Seitenübertragung empfangen kann.
-
In bestimmten Ausführungsformen kann die Ausführung des Threads oder des laufenden Programms, wie oben beschrieben wurde, blockiert werden, während die DMA-Engine 230 die Datenübertragung managt, um den Seitenfehler zu bedienen, wenn der Seitenfehler initiiert wird. Nachdem der Seitenfehler bedient worden ist, kann der Thread freigegeben werden, um auf die Seite in dem Hauptdatenspeicher zuzugreifen.
-
Anstelle einer EA-Anforderung zum Zugreifen auf Daten und zum Initiieren eines Seitenfehlers, um Seitendaten aus dem sekundären Datenspeicher zu übertragen, kann in einigen Systemen durch den Prozessor mit Ladevorgängen und Speichervorgängen unter Verwendung der Seitenmigration direkt auf den sekundären Datenspeicher zugegriffen werden. In diesen Systemen braucht auf die Daten nicht mit der Seitengranularität zugegriffen zu werden. Allerdings kann es nützlich sein, die oben beschriebene Nutzungs- oder Zugriffsstatistik zu nutzen, um Daten automatisch aufgrund dessen zu migrieren, ob die Daten "heiß" oder "kalt" sind, d. h., wie kürzlich auf sie zugegriffen worden ist, wie häufig der Zugriff erfolgt oder wie hoch die Wahrscheinlichkeit ist, dass erneut zugegriffen wird.
-
Im Allgemeinen kann der Home-Agent 145 unter Nutzung von Merkmalen einer Cache-Kohärenzarchitektur, in der auf Daten in dem sekundären Datenspeicher mit einem Home-Agenten 145, der für ein Gebiet des physikalischen Adressenraums, z. B. für den gesamten Datenspeicher in dem Gebiet, verantwortlich ist, zugegriffen werden kann, jeden Zugriff auf den Datenspeicher, für den der Home-Agent verantwortlich ist, identifizieren und diese Identifizierung verwenden, um eine Zugriffsstatistik zu unterhalten. Der dem sekundären Datenspeicher zugeordnete Home-Agent 145 kann Daten darüber unterhalten, auf welche Seiten zugegriffen wird und wann auf diese Seiten zugegriffen wird. Auf der Grundlage der Häufigkeit des Zugriffs, z. B. aufgrund dessen, ob die Häufigkeit des Zugriffs einem Schwellenwert genügt, kann der Home-Agent 145 bestimmen, dass die Daten, auf die häufig zugegriffen wird, aus dem sekundären Datenspeicher in den Hauptdatenspeicher DRAM 120 übertragen werden können.
-
Um diese Migration auszuführen, ist es vorteilhaft, nicht nur zu bestimmen, welche Seiten in dem sekundären Datenspeicher "heiß" werden, d. h. eine Erhöhung der Häufigkeit der Zugriffe, sondern auch zu bestimmen, welche Seiten in dem Hauptdatenspeicher DRAM "kalt" werden, d. h. eine Verringerung der Häufigkeit des Zugriffs, mit anderen Worten zu bestimmen, auf welche Seiten in dem sekundären Datenspeicher, der langsamer als der Hauptdatenspeicher sein kann, häufiger zugegriffen wird und auf welche Seiten in dem Hauptdatenspeicher weniger häufig zugegriffen wird. Ein Prozess zum Bestimmen, auf welche Seiten in dem Hauptdatenspeicher weniger häufig zugegriffen wird, ist oben mit Bezug auf die Nutzungs- oder Zugriffsstatistik für den Hauptdatenspeicher DRAM z. B. aufgrund eines Zählwerts, dass das Zugriffsbit nicht gesetzt ist, beschrieben. Das System kann auf der Grundlage der oben beschriebenen Zugriffsstatistik für den Hauptdatenspeicher und unter Nutzung des Home-Agenten, der an den sekundären Datenspeicher gebunden ist, um die Zugriffsstatistik für den sekundären Datenspeicher zu bestimmen, bestimmen, wann Daten aus dem Hauptdatenspeicher DRAM in den sekundären Datenspeicher verschoben werden sollen und wann Daten aus dem sekundären Datenspeicher in den Hauptdatenspeicher DRAM verschoben werden sollen.
-
Somit kann die Hardware bestimmen, wann Seiten zwischen dem Hauptdatenspeicher, z. B. dem DRAM 220, und dem sekundären Datenspeicher, z. B. dem sekundären Speicher 240, migriert werden sollen. Zum Beispiel kann die Hardware eine Kombination von Cache-Kohärenznachrichten mit dem Home-Agenten und den PTEs mit dem Zugriffsbit verwenden, um die "Temperatur" von Daten, d. h., wie "heiß" bestimmte Daten sind oder wie häufig auf sie zugegriffen wird bzw. wie "kalt" bestimmte Daten sind oder wie selten auf sie zugegriffen wird, zu bestimmen. Dementsprechend werden Seiten mit einer Rate erhöhter Zugriffshäufigkeit aus dem sekundären Datenspeicher in den Hauptdatenspeicher migriert. Wie oben beschrieben wurde, können jene Seiten, die sich "erwärmen" oder auf die häufiger zugegriffen wird, dadurch bestimmt werden, dass die Hardware Speicherzugriffe auf den sekundären Datenspeicher über den Home-Agenten überwacht, der diese Zugriffe detektiert, da der Home-Agent den physikalischen Adressenbereich besitzt. Auf der Grundlage dieser bestimmten Zugriffe kann z. B. im On-Chip-SRAM ein Pro-Seite-Zugriffszähler unterhalten werden. Da die Größe des sekundären Datenspeichers groß sein kann, was die Hardwareflächenkosten der Zähler erhöht, können alternativ Zähl-Bloom-Filter verwendet werden, um die Zugriffsstatistik über Sätze von Seiten zu unterhalten und dadurch Fläche zu sparen. Alternativ kann die Hardware eine kleine Menge privaten DRAM verwenden oder die Zähler im System-DRAM speichern.
-
Wie oben ausführlicher beschrieben ist, können außerdem Seiten, die sich abkühlen oder auf die weniger häufig zugegriffen wird, durch Überwachen der PTEs bestimmt werden. Zum Beispiel kann das System die Übertragung der Seite aus dem Hauptdatenspeicher DRAM in den sekundären Datenspeicher durch Annullieren des der Seite zugeordneten PTE, durch Ausführen eines TLB-Shootdown für irgendwelche der Seite zugeordnete Einträge und durch Übertragen der Seite aus dem Hauptdatenspeicher DRAM in den sekundären Speicher initiieren, wenn Zugriffszwischenzeit für eine Seite einem Schwellenwert der Zeit zwischen Zugriffen genügt.
-
5 zeigt einen Ablaufplan eines Beispiels eines Prozesses 500 zum Bestimmen einer Häufigkeit der Nutzung einer Seite mit Hardware und zum Ausführen der Seitenmigration auf der Grundlage der bestimmten Nutzung in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung. Der Prozess 500 enthält bei 510 das Bestimmen, ob ein Zugriffsbit gesetzt ist, für jeden PTE einer Seitentabelle auf der Grundlage einer Absuche der Seitentabelle mit einer Seitentabellen-Absucheinrichtung des Prozessors. Das Zugriffsbit kann angeben, ob auf eine Seite, der der PTE zugeordnet ist, innerhalb der letzten Absuchperiode, z. B. zwischen der letzten Absuche und der aktuellen Absuche der Seitentabelle, zugegriffen wurde. Bei 520 kann in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den PTE, der der Seite zugeordnet ist, nicht gesetzt ist, ein Zählwert für jede Seite in dem Hauptdatenspeicher inkrementiert werden. Alternativ kann in Ansprechen auf die Bestimmung, dass das Zugriffsbit für den der Seite zugeordneten PTE gesetzt ist, ein Zählwert für jede Seite in dem Hauptdatenspeicher inkrementiert werden. Nach der Bestimmung, ob das Zugriffsbit gesetzt ist, für jeden PTE kann der Prozessor 530 das Zugriffsbit zurücksetzen. Der Zählwert für jede Seite in dem Hauptdatenspeicher kann für jede in dem statischen Schreib-Lese-Datenspeicher gespeicherte Seite durch einen Zähler unterhalten werden oder Zähl-Bloom-Filter können die Zugriffsstatistik über Sätze von Seiten unterhalten. Alternativ kann ein Zähler für jede Seite im dynamischen Schreib-Lese-Speicher, z. B. einer kleinen Menge privatem DRAM oder im System-DRAM, gespeichert werden.
-
Ferner kann der Prozess 500 bei 540 auf der Grundlage dessen, dass ein Home-Agent eine Anforderung zum Zugriff auf die Seite in dem sekundären Datenspeicher empfängt, das Bestimmen enthalten, ob auf eine Seite in einem sekundären Datenspeicher zugegriffen wird. Außerdem kann bei 540 in Ansprechen auf die Bestimmung, dass auf die Seite in dem sekundären Datenspeicher zugegriffen wird, aufgrund dessen, dass der Home-Agent eine Anforderung für den Zugriff auf die Seite in dem sekundären Datenspeicher empfängt, ein Zählwert für jede Seite in dem sekundären Datenspeicher inkrementiert werden. Auf der Grundlage dieses Zählwerts kann bei 550 eine Seite in dem sekundären Datenspeicher als eine, auf die häufig zugegriffen wird, identifiziert werden. Außerdem kann diese als eine, auf die häufig zugegriffen wird, identifizierte Seite bei 550 aus dem sekundären Datenspeicher in den Hauptdatenspeicher migriert werden. In bestimmten Ausführungsformen können Gruppen von Seiten oder Abschnitte des Datenspeichers als solche, auf die häufig zugegriffen wird, identifiziert werden und aus dem sekundären Datenspeicher in den Hauptdatenspeicher migriert werden.
-
Ferner kann der Prozess 500 bei 560 das Identifizieren einer Seite in dem Hauptdatenspeicher als eine, auf die selten zugegriffen wird, auf der Grundlage des Zählwerts für jede Seite in dem Hauptdatenspeicher enthalten. Die Seite, die als eine identifiziert wird, auf die selten zugegriffen wird, kann bei 560 aus dem Hauptdatenspeicher in den sekundären Datenspeicher migriert werden. In bestimmten Ausführungsformen können Gruppen von Seiten oder Abschnitte des Datenspeichers als solche, auf die selten zugegriffen wird, identifiziert werden und aus dem Hauptdatenspeicher in den sekundären Datenspeicher migriert werden. Das Identifizieren einer Seite in dem Hauptdatenspeicher als eine, auf die selten zugegriffen wird, auf der Grundlage des Zählwerts bei 560 kann das Bestimmen enthalten, dass eine Zugriffszwischenzeit, d. h. eine Zeit zwischen Zugriffen, für die Seite einem Zugriffszwischenzeit-Schwellenwert genügt, z. B., dass die Zugriffszwischenzeit für die Seite größer oder dass sie größer oder gleich einem Zugriffszwischenzeit-Schwellenwert ist. Somit kann die Seite oder die Gruppe von Seiten, die als solche identifiziert wurden, auf die selten zugegriffen wird, in Ansprechen auf die Bestimmung, dass die Zugriffszwischenzeit für die Seite oder für die Gruppe von Seiten dem Zugriffszwischenzeit-Schwellenwert genügt, aus dem Hauptdatenspeicher in den sekundären Datenspeicher migriert werden.
-
Der Prozess des Migrierens der Seite, die bei 560 als eine identifiziert worden ist, auf die selten zugegriffen wird, kann das Annullieren des PTE oder der PTEs, der bzw. die der Seite oder Gruppe von Seiten zugeordnet ist bzw. sind, das Ausführen eines Translation-Look-aside-Buffer-Shootdowns für irgendwelche der Seite oder der Gruppe von Seiten zugeordnete Einträge und das Übertragen der Seite oder Gruppe von Seiten aus dem Hauptdatenspeicher in den sekundären Datenspeicher enthalten. Der Zählwert für jede Seite in dem sekundären Datenspeicher kann für jede in dem statischen Schreib-Lese-Datenspeicher gespeicherte Seite durch einen Zähler unterhalten werden oder Zähl-Bloom-Filter können die Zugriffsstatistik über Sätze von Seiten unterhalten. Alternativ kann ein Zähler für jede Seite im dynamischen Schreib-Lese-Speicher, z. B. in einer kleinen Menge privatem DRAM oder im System-DRAM, gespeichert sein.
-
Wie oben diskutiert wurde, tritt ein Seitenfehler auf, wenn z. B. eine Anwendung auf den Datenspeicher, z. B. auf eine Seite, zuzugreifen versucht und wenn die Seite nicht in dem Hauptdatenspeicher vorhanden ist. Der Seitenfehler kann eine Übertragung der gesamten Seite aus dem sekundären Datenspeicher in den Hauptdatenspeicher DRAM auslösen und daraufhin kann die Anwendung die Ausführung fortsetzen. Allerdings kann dieser Prozess eine Verzögerung verursachen, während die Daten der Seite gelesen werden. Zum Beispiel können für eine Seite mit einer Größe von 4 kB die gesamten 4 kB übertragen werden, was während des Lesens der 4 kB Daten eine Verzögerung verursachen kann. In Übereinstimmung mit hier beschriebenen Ausführungsformen kann diese Verzögerung vorteilhaft verringert werden, was zur schnelleren Ausführung der Anwendung oder des Prozesses, die bzw. der ausgeführt wird, führen kann.
-
Anstatt die gesamte Seite, z. B. in dem obigen Beispiel die gesamten 4 kB, zu übertragen, identifiziert das System, auf welche Cache-Zeile, z. B. auf welchen Block von Daten, die Anwendung zuzugreifen versucht hat, und überträgt es anfangs nur diese Cache-Zeile aus den sekundären Datenspeicher in den Hauptdatenspeicher. Während die Cache-Zeile, für die der Zugriff angefordert wurde, übertragen wird, kann die Anwendung ihr Lesen oder Schreiben dieser Daten ausführen und weiter ausgeführt werden. Nachdem diese entscheidende Cache-Zeile übertragen worden ist, ohne die gesamte Seite zu übertragen, kann der verbleibende Abschnitt der Seite, z. B. der verbleibende Abschnitt der 4 kB, im Hintergrund übertragen werden.
-
In bestimmten Ausführungsformen kann die entscheidende Cache-Zeile für die CPU bereitgestellt werden und kann der Cache-Kohärenzmechanismus oder das Cache-Kohärenzprotokoll verwendet werden. Dieser Prozess erzielt eine schnellere Ausführung zum Behandeln von Seitenfehlern. Zum Beispiel kann im Betrieb eine Anwendung nur anfordern, auf eine oder zwei Cache-Zeilen von der Seite zuzugreifen, und können die entscheidenden Cache-Zeilen bereitgestellt werden, ohne darauf zu warten, dass die gesamte Seite übertragen wird. Nachdem die angeforderten Daten, z. B. die entscheidenden Cache-Zeilen, für die Anwendung bereitgestellt wurden, damit sie ihre Ausführung fortsetzen kann, kann der verbleibende Abschnitt der Seite daraufhin im Hintergrund übertragen werden.
-
Somit kann dadurch, dass die Hardware die entscheidende Cache-Zeile zuerst liefert, die Seitenfehlerlatenzzeit verringert werden. Die Hardware kann die angeforderte Cache-Zeile aus dem sekundären Datenspeicher z. B. an den Cache des Prozessors und an den Host-DRAM übertragen. Dementsprechend können die angeforderten Daten bereitgestellt werden, bevor der Rest der Cache-Zeilen in der angeforderten Seite übertragen wird. Ferner kann z. B. eine nutzerdefinierte Seitenfehlerbehandlungsroutine oder die Hardware den PTE aktualisieren, damit er auf die neue Seite in dem Host-DRAM weist. Im Ergebnis können andere Prozessoren auf Cache-Zeilen in der Seite zugreifen, bevor diese Cache-Zeilen tatsächlich in dem Hauptdatenspeicher vorhanden sind.
-
In bestimmten Ausführungsformen kann der Cache-Agent 140 an den Cache-Zeilen in der Seite eine Eignerschaftsanforderung (RFO) ausführen, um sie exklusiv zu halten, während die Seitenübertragung stattfindet, um eine konsistente Ansicht des Datenspeichers aufrechtzuerhalten. Nachdem die Hardware das Übertragen einer Cache-Zeile abgeschlossen hat, kann der Cache-Agent 140 die Eignerschaft dieser Cache-Zeile freigeben, so dass künftige Anforderungen von dem Cache des Hosts oder von dem Host-DRAM bedient werden können. Ferner kann die Hardware z. B. in Übereinstimmung mit dem Cache-Kohärenzmechanismus eine Snoop-Anforderung, z. B. eine Inter-Prozessor-Cache-Kohärenzoperation, für diese andere Cache-Zeile erkennen und in Ansprechen auf die Snoop-Anforderung die andere Cache-Zeile bereitstellen, wenn die andere Cache-Zeile aus dem sekundären Datenspeicher übertragen wird, wenn der Host auf eine der anderen Cache-Zeilen in der Seite zuzugreifen versucht, während die Seite übertragen wird.
-
In bestimmten Ausführungsformen kann die Hardware die Cache-Zeilen für Seiten während des Transports nicht tatsächlich in dem Cache des Cache-Agenten speichern. Vielmehr können die Tags und die Kohärenzzustandsbits für diese Zeilen gespeichert werden und können daraufhin die Daten für eine Anforderung entweder von dem Host-DRAM oder aus einem langsamen Datenspeicher weitergeleitet werden. In beiden Anordnungen kann der On-Chip-SRAM, der erforderlich ist, um Seiten, die übertragen werden, im Cache anzuordnen, verringert werden.
-
6 zeigt einen Ablaufplan eines Beispiels eines Prozesses 600 zum Behandeln eines Seitenfehlers dadurch, dass zuerst eine entscheidende Cache-Zeile übertragen wird, in Übereinstimmung mit Implementierungen der vorliegenden Offenbarung. Der Prozess 600 kann bei 610 das Empfangen einer Anforderung für den Zugriff auf eine Cache-Zeile einer Seite von Daten aus einem Hauptdatenspeicher enthalten. Bei 620 kann eine Bestimmung vorgenommen werden, dass die angeforderte Cache-Zeile nicht in dem Hauptdatenspeicher gespeichert ist, sondern vielmehr in dem sekundären Datenspeicher gespeichert sein kann. Bei 630 kann die angeforderte Cache-Zeile, z. B. der Datenblock, der Seite von Daten aus dem sekundären Datenspeicher in den Hauptdatenspeicher übertragen werden, ohne die gesamte Seite von Daten zu übertragen. Somit wird die angeforderte Cache-Zeile bereitgestellt und kann der verbleibende Abschnitt der Seite von Daten außer der angeforderten Cache-Zeile in dem sekundären Datenspeicher gespeichert bleiben.
-
Bei 640 kann der Prozess 600 das Aktualisieren eines der Seite von Daten zugeordneten PTE in der Weise, dass er auf einen Ort der Seite von Daten in dem Hauptdatenspeicher weist, enthalten. Bei 650 kann der verbleibende Abschnitt der Seite von Daten im Hintergrund aus dem sekundären Datenspeicher in den Hauptdatenspeicher übertragen werden, nachdem die angeforderte Cache-Zeile in Ansprechen auf die Anforderung zum Zugriff auf die Cache-Zeile bereitgestellt worden ist.
-
In bestimmten Ausführungsformen kann ein Cache-Kohärenzmechanismus implementiert werden, während der verbleibende Abschnitt der Seite von Daten bei 650 aus dem sekundären Datenspeicher in den Hauptdatenspeicher übertragen wird, um einen Zugriff auf eine zweite Cache-Zeile der Seite von Daten, die von der angeforderten ersten Cache-Zeile verschieden ist, zu bedienen. Der Cache-Kohärenzmechanismus kann das Ausgeben einer RFO von Cache-Zeilen in der Seite von Daten und das Freigeben der Eignerschaft jeder Cache-Zeile in Ansprechen darauf, dass die Cache-Zeile aus dem sekundären Datenspeicher in den Hauptdatenspeicher übertragen wird, durch den Cache-Agenten 140 enthalten. In Übereinstimmung mit dem Cache-Kohärenzmechanismus können Cache-Zeilen der Seite von Daten im Cache des Cache-Agenten 140 gespeichert werden. Alternativ können die Tags und Kohärenzzustandsbits, die diesen Cache-Zeilen der Seite von Daten zugeordnet sind, gespeichert werden. Ferner kann in Ansprechen auf eine Anforderung zum Zugreifen auf die zweite Cache-Zeile der Seite von Daten, während der verbleibende Abschnitt der Seite von Daten übertragen wird, bei 650 eine Snoop-Anforderung für die zweite Cache-Zeile erkannt werden und die zweite Cache-Zeile in Ansprechen auf die Snoop-Anforderung zurückgegeben werden, wenn die zweite Cache-Zeile aus dem sekundären Datenspeicher übertragen wird. Falls der Hauptdatenspeicher keine Seitenübertragung empfangen kann, z. B., falls es dort keine freien Seiten gibt, kann auf der Grundlage der oben beschriebenen Nutzungsstatistik eine der zuletzt verwendeten in dem Hauptdatenspeicher gespeicherten Seiten bestimmt werden und kann die eine der zuletzt verwendeten Seiten freigegeben oder in den sekundären Datenspeicher zurückgeschrieben werden. Dementsprechend kann die Seite von Daten aus dem sekundären Datenspeicher an den Ort der freigegebenen einen der zuletzt verwendeten Seiten in den Hauptdatenspeicher übertragen werden.
-
Es sind eine Anzahl von Implementierungen beschrieben worden. Dennoch können selbstverständlich viele Änderungen vorgenommen werden, ohne von dem Erfindungsgedanken und von dem Schutzumfang der Offenbarung abzuweichen. Zum Beispiel können verschiedene Formen der oben gezeigten Abläufe verwendet werden, wobei Schritte umgestellt, hinzugefügt oder entfernt worden sind.
-
Implementierungen der Erfindung und aller in dieser Gebrauchsmusterschrift beschriebenen Funktionsoperationen können in einer digitalen elektronischen Schaltungsanordnung, in Firmware oder in Hardware einschließlich der in dieser Gebrauchsmusterschrift offenbarten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen einer oder mehrerer von ihnen implementiert werden. Implementierungen der Erfindung können als ein oder mehrere Computerprogrammprodukte, d. h. als ein oder mehrere Module von Computerprogrammanweisungen, die in einem computerlesbaren Medium zur Ausführung durch die Datenverarbeitungsvorrichtung oder zur Steuerung ihres Betriebs codiert sind, implementiert werden. Das computerlesbare Medium kann eine maschinenlesbare Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine Datenspeichervorrichtung oder eine Kombination eines oder mehrerer von ihnen sein. Der Begriff "Datenverarbeitungsvorrichtung" umfasst alle Geräte, Vorrichtungen und Maschinen zum Verarbeiten von Daten einschließlich beispielhaft eines programmierbaren Prozessors, eines Computers oder mehrerer Prozessoren oder Computer. Das Gerät kann außer Hardware Code, der eine Ausführungsumgebung für das fragliche Computerprogramm erzeugt, z. B. Code, der Prozessorfirmware, einen Protokollstapel, ein Datenbankmanagementsystem, ein Betriebssystem oder eine Kombination eines oder mehrerer von ihnen bildet, enthalten.
-
Obgleich diese Offenbarung viele Spezifika enthält, sind diese nicht als Beschränkungen des Schutzumfangs der Erfindung oder des Beanspruchten, sondern vielmehr als Beschreibungen von Merkmalen, die spezifisch für bestimmte Implementierungen der Erfindung sind, zu verstehen. Bestimmte Merkmale, die in dieser Gebrauchsmusterschrift im Kontext getrennter Implementierungen beschrieben sind, können ebenfalls zusammen in einer einzigen Implementierung implementiert werden. Umgekehrt können verschiedene Merkmale, die im Kontext einer einzelnen Implementierung geschrieben sind, ebenfalls in mehreren Implementierungen getrennt oder in irgendeiner geeigneten Teilkombination implementiert werden. Obgleich Merkmale oben in der Weise beschrieben worden sein können, dass sie in bestimmten Kombinationen wirken, und anfangs sogar in der Weise beansprucht sind, können darüber hinaus ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination ausgenommen werden und kann die beanspruchte Kombination auf eine Teilkombination oder Abwandlung einer Teilkombination gerichtet sein.
-
Obgleich Operationen in den Zeichnungen in einer bestimmten Reihenfolge gezeigt sind, ist dies ähnlich nicht so zu verstehen, dass es erforderlich ist, dass diese Operationen in der bestimmten gezeigten Reihenfolge oder laufenden Folge ausgeführt werden oder dass alle dargestellten Operationen ausgeführt werden, um die gewünschten Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und Parallelverarbeitung vorteilhaft sein. Darüber hinaus ist die Trennung der verschiedenen Systemkomponenten in den oben beschriebenen Implementierungen nicht so zu verstehen, dass diese Trennung in allen Implementierungen erforderlich ist, und können die beschriebenen Programmkomponenten und Systeme selbstverständlich allgemein in einem einzelnen Softwareprodukt miteinander integriert sein oder in mehrere Softwareprodukte gepackt sein.
-
Somit sind bestimmte Implementierungen der vorliegenden Offenbarung beschrieben worden. Weitere Implementierungen liegen im Schutzumfang der folgenden Ansprüche. Zum Beispiel können die in den Ansprüchen dargestellten Tätigkeiten in einer anderen Reihenfolge ausgeführt werden und dennoch gewünschte Ergebnisse erzielen. Es sind eine Anzahl von Implementierungen beschrieben worden. Dennoch können selbstverständlich verschiedene Änderungen vorgenommen werden, ohne von dem Erfindungsgedanken und Schutzumfang der Offenbarung abzuweichen. Zum Beispiel können verschiedene Formen der oben gezeigten Abläufe verwendet werden, wobei Schritte umgestellt, hinzugefügt oder entfernt sind. Dementsprechend liegen weitere Implementierungen im Schutzumfang der folgenden Ansprüche.