DE102013022166B4 - Seitenzustandsverzeichnis zur verwaltung eines vereinheitlichten virtuellen speichers - Google Patents

Seitenzustandsverzeichnis zur verwaltung eines vereinheitlichten virtuellen speichers Download PDF

Info

Publication number
DE102013022166B4
DE102013022166B4 DE102013022166.8A DE102013022166A DE102013022166B4 DE 102013022166 B4 DE102013022166 B4 DE 102013022166B4 DE 102013022166 A DE102013022166 A DE 102013022166A DE 102013022166 B4 DE102013022166 B4 DE 102013022166B4
Authority
DE
Germany
Prior art keywords
memory
page
ppu
cpu
processing unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102013022166.8A
Other languages
English (en)
Other versions
DE102013022166A1 (de
Inventor
Jerome F. Duluk jun.
Cameron Buschardt
Sherry CHEUNG
James Leroy Deming
Samuel H. Duncan
Lucien DUNNING
Robert George
Arvind GOPALAKRISHNAN
Mark HAIRGROVE
Chenghuan JIA
John Mashey
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/055,318 external-priority patent/US9767036B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013022166A1 publication Critical patent/DE102013022166A1/de
Application granted granted Critical
Publication of DE102013022166B4 publication Critical patent/DE102013022166B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Ein System zur Verwaltung von Zuordnungen von virtuellem Speicher zu physikalischem Speicher mittels eines erstem Seitenzustandsverzeichnisses (210), wobei das System umfasst:eine erste Verarbeitungseinheit (102), die ausgebildet ist, eine erste Operation auszuführen, die eine erste virtuelle Speicheradresse referenziert;eine erste Speicherverwaltungseinheit (MMU), die mit der ersten Verarbeitungseinheit (102) verbunden und ausgebildet ist, einen ersten Seitenfehler zu erzeugen, wenn ermittelt wird, dass eine erste Seitentabelle (206), die in einer zu der ersten Verarbeitungseinheit (102) gehörenden ersten Speichereinheit (104) gespeichert ist, eine Zuordnung, die der ersten virtuellen Speicheradresse entspricht, nicht enthält; undeine erste Kopiereinheit, die mit der ersten Verarbeitungseinheit verbunden und ausgebildet ist, um:eine erste Speicherseite aus einer zweiten Speichereinheit (204), die mit einer zweiten Verarbeitungseinheit (202) verknüpft ist, in die erste Speichereinheit (104) zu migrieren, wobei die erste Verarbeitungseinheit (102) eine zentrale Verarbeitungseinheit und die zweite Verarbeitungseinheit (202) eine Parallelverarbeitungseinheit ist, wobei das Seitenzustandsverzeichnis (210) eine Zuordnung von virtuellen Speicheradressen zu realen Speicheradressen für Speicherseiten in der ersten Speichereinheit (104) und für Speicherseiten in der zweiten Speichereinheit (204) enthält, wobei ein erster Eintrag in dem Seitenzustandsverzeichnis eine Zuordnung der ersten virtuellen Speicheradresse zu einer ersten physikalischen Adresse aufweist, die mit der ersten Speicherseite verbunden ist.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Ausführungsformen der vorliegenden Erfindung betreffen generell virtuelle Speicher und insbesondere System zur Verwaltung eines virtuellen Speichers.
  • Beschreibung des Stands der Technik
  • Die meisten modernen Computersysteme realisieren typischerweise eine gewisse Art an virtueller Speicherarchitektur. Unter anderem macht es die virtuelle Speicherarchitektur möglich, auf einen Speicher unter Anwendung virtueller Speicheradressen anstatt physikalische Speicheradressen zuzugreifen. Durch die Bereitstellung dieser virtuellen Speicherschicht zwischen dem physikalischen Speicher und einer Anwendungssoftware wird die Software auf Anwenderebene von den Details der physikalischen Speicherverwaltung abgeschirmt, die einem speziellen Speicherverwaltungssystem überlassen werden.
  • Ein typisches Computersystem, das eine virtuelle Speicherarchitektur realisiert, umfasst eine zentrale Recheneinheit (CPU) und eine oder mehrere Parallelverarbeitungseinheiten (GPU). Im Betrieb kann ein Softwareprozess, der in einer CPU oder einer GPU ausgeführt wird, Daten über eine virtuelle Speicheradresse anfordern. In vielen üblichen Architekturen sind die virtuellen Speichersysteme, die Anforderungen für Daten über virtuelle Speicheradressen für eine CPU und eine GPU handhaben, unabhängig. Insbesondere können ein separates CPU-Speicherverwaltungssystem und ein separates GPU-Speicherverwaltungssystem Anforderungen für Daten entsprechend aus der CPU und der GPU behandeln.
  • Es gibt einige Nachteile, die mit derartigen unabhängigen Speicherverwaltungssystemen einhergehen. Beispielsweise hat nicht jedes unabhängige Speicherverwaltungssystem notwendigerweiser Kenntnis über den Inhalt der Speichereinheiten, die zu dem anderen Speicherverwaltungssystem gehören. Daher können die Speicherverwaltungssysteme gegebenenfalls nicht miteinander zusammenarbeiten, um gewisse Effizienzen bereitzustellen, etwa die Bestimmung, wo Daten im Hinblick auf eine verbesserte Zugriffsverarbeitungszeit gespeichert werden sollten. Da ferner die Speicherverwaltungssysteme unabhängig sind, sind Zeiger für ein derartiges System nicht notwendigerweise kompatibel mit dem anderen System. Daher muss ein Programmierer einer Anwendung die zwei unterschiedlichen Arten von Zeigern überwachen. Weiterhin sind auf diesem Gebiet die US 2008/0 005 546 A1 , die US 6 961 840 B2 und die US 6 286 092 B1 bekannt
  • Wie das Vorhergehende zeigt, ist das, was auf diesem Gebiet der Technik benötigt wird, eine effizientere Vorgehensweise zur Verwaltung eines virtuellen Speichers in einem System mit heterogenen Prozessoren, hier einer CPU und einer GPU.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Eine Ausführungsform der vorliegenden Erfindung stellt ein System zur Verwaltung von Zuordnungen von einem virtuellen Speicher zu einem physikalischen Speicher mittels eines Seitenzustandsverzeichnisses gemäß Anspruch 1 bereit. Das System umfasst unter anderem eine erste Verarbeitungseinheit, die ausgebildet ist, eine erste Operation auszuführen, die eine erste virtuelle Speicheradresse referenziert bzw. auf diese verweist. Das System umfasst ferner eine erste Speicherverwaltungseinheit (MMU), die mit der ersten Verarbeitungseinheit verbunden und ausgebildet ist, einen ersten Speicherfehler zu erzeugen, wenn ermittelt wird, dass eine erste Seitentabelle, die in einer mit der erste Verarbeitungseinheit verbundenen ersten Speichereinheit gespeichert ist, keine Zuordnung, die der ersten virtuellen Speicheradresse entspricht, enthält. Das System umfasst ferner eine erste Kopiereinheit, die mit der Datenverarbeitungseinheit verbunden ist. Die erste Kopiereinheit ist ausgebildet, eine erste Befehlswarteschlange auszulesen, um eine erste Zuordnung zu ermitteln, die mit der ersten virtuellen Speicheradresse verknüpft ist, und die in einem ersten Seitenzustandsverzeichnis enthalten ist. Die erste Kopiereinheit ist ferner ausgebildet, die erste Seitentabelle so zu aktualisieren, dass sie die erste Zuordnung enthält.
  • Ein Vorteil der offenbarten Vorgehensweise besteht darin, dass Anwendungen auf Anwenderebene nicht mehrere Zeiger überwachen müssen, abhängig davon, wo ein spezielles Datenelement gespeichert ist. Ein weiterer Vorteil besteht darin, dass Speicherseiten zwischen Speichereinheiten auf der Grundlage der Verwendung migriert bzw. verschoben werden, was es möglich macht, dass Speicherseiten lokal für die Einheiten angeordnet werden können, die auf die Speicherseiten häufiger zugreifen. Ein weiterer Vorteil besteht darin, dass ein Fehlerpuffer bereitgestellt ist, der es ermöglicht, dass von der PPU erzeugte Fehler für eine effiziente Ausführung vereinigt werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Um die Art und Weise, in der die oben genannten Merkmale der vorliegenden Erfindung detailliert verstanden werden können, anzugeben, wird eine speziellere Beschreibung der Erfindung, die zuvor kurz zusammengefasst ist, durch Bezugnahme zu Ausführungsformen angegeben, wovon einige in den angefügten Zeichnungen dargestellt sind. Es ist jedoch zu beachten, dass die angefügten Zeichnungen nur typische Ausführungsformen dieser Erfindung zeigen und daher nicht als Einschränkung ihres Schutzbereichs zu betrachten sind, da die Erfindung andere gleichermaßen effektive Ausführungsformen zulässt.
    • 1 ist eine Blockansicht, die ein Computersystem darstellt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren;
    • 2 ist eine Blockansicht, dieein vereinheitlichtes bzw. vereinigtes virtuelles Speichersystem gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
    • 3 ist eine Konzeptdarstellung eines Systems 300 zur Verfolgung des Zustands von Speicherseiten gemäß einer Ausführungsform der vorliegenden Erfindung;
    • 4 ist eine Konzeptdarstellung eines Systems, das eine Migrationsoperation gemäß einer Ausführungsform der vorliegenden Erfindung realisiert;
    • 5 zeigt ein virtuelles Speichersystem zur Speicherung von Fehlern in einem Fehlerpuffer gemäß einer Ausführungsform der vorliegenden Erfindung;
    • 6 zeigt ein virtuelles Speichersystem zur Auflösung von Seitenfehlern, die von der GPU erzeugt werden, gemäß einer Ausführungsform der vorliegenden Erfindung;
    • 7 gibt ein Flussdiagramm von Verfahrensschritten zur Verwaltung von Zuordnungen vom virtuellen Speicher zum physikalischen Speicher mittels eines Seitenzustandsverzeichnis gemäß einer Ausführungsform der vorliegenden Erfindung an;
    • 8 gibt ein Flussdiagramm von Verfahrensschritten zur Verfolgung von Seitenfehlern gemäß einer Ausführungsform der vorliegenden Erfindung an;
    • 9 gibt ein Flussdiagramm von Verfahrensschritten zur Auflösung von Seitenfehlern in einem Fehlerpuffer gemäß einer Ausführungsform der vorliegenden Erfindung an;
    • 10 gibt ein Flussdiagramm von Verfahrensschritten zur Erzeugung und zur Verwaltung gemeinsamer Zeiger in einer virtuellen Speicherarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung an; und
    • 11 zeigt ein Flussdiagramm von Verfahrensschritten zur Verwaltung des Besitzzustands in einem virtuellen Speichersubsystem gemäß einer Ausführungsform der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung sind zahlreiche spezielle Details angegeben, um ein gründlicheres Verständnis der vorliegenden Erfindung zu ermöglichen. Der Fachmann erkennt jedoch, dass die vorliegende Erfindung ohne eines oder mehrere dieser speziellen Details in die Praxis umgesetzt werden kann.
  • Systemüberblick
  • 1 ist eine Blockansicht, die ein Computersystem 100 zeigt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren. Das Computersystem 100 umfasst eine zentrale Recheneinheit (CPU) 102 und einen Systemspeicher 104, die über einen Verbindungspfad, der eine Speicherbrücke 105 enthalten kann, kommunizieren. Die Speicherbrücke 105, die beispielsweise ein Nordbrücken-Chip sein kann, ist über einen Bus oder einen anderen Kommunikationspfad 106 (beispielsweise eine HyperTransport-Verbindung) mit einer I/O-(Eingabe/Ausgabe-) Brücke 107 verbunden. Die I/O-Brücke 107, die beispielsweise ein Südbrücken-Chip sein kann, empfängt eine Anwendereingabe aus einem oder mehreren Anwender-Eingabegeräten 108 (beispielsweise Tastatur, Maus) und leitet die Eingabe an die CPU 102 über den Kommunikationspfad 106 und die Speicherbrücke 105 weiter. Ein Parallelverarbeitungssubsystem 112 ist mit der Speicherbrücke 105 über einen Bus oder einen zweiten Kommunikationspfad 113 (beispielsweise ein peripherer Komponenten-Verbindungs-(PCI-) Express, beschleunigter Graphikport oder HyperTransport-Verbindung) verbunden; in einer Ausführungsform ist das Parallelverarbeitungssubsystem 112 ein grafisches Subsystem, das Pixel an ein Anzeigegerät 110 liefert, das eine konventionelle Kathodenstrahlröhre, eine Flüssigkristallanzeige, eine Anzeige mit lichtemittierenden Dioden oder dergleichen sein kann. Eine Systemdiskette 114 ist ebenfalls mit der I/O-Brücke 107 verbunden und ist ausgebildet, Inhalt und Anwendungen und Daten zur Verwendung durch die CPU 102 und das Parallelverarbeitungssubsystem 112 zu speichern. Die Systemdiskette 114 stellt nicht-flüchtigen Speicherplatz für Anwendungen und Daten bereit und kann fest installierte oder entfernbare Festplattenlaufwerke, Flash-Speichereinrichtungen und CD-(Kompaktdisketten-Nur-Lese-Speicher), DVD-(digitale Vielseitigkeitsdisketten-ROM), Blu-ray, HD-DVD (DVD mit hoher Auflösung) oder andere magnetische, optische oder Halbleiterspeichereinrichtungen umfassen.
  • Ein Schalter 116 stellt Verbindungen zwischen der I/O-Brücke 107 und anderen Komponenten, etwa einem Netzwerkadapter 118 und diversen Zusatzkarten 120 und 121 bereit. Andere Komponenten (nicht explizit gezeigt), einschließlich eines universellen seriellen Busses (USB) oder anderer Portverbindungen, Kompaktdisketten-(CD) Laufwerke, digitale Vielseitigkeitsdisketten-(DVD) Laufwerke, Filmaufzeichnungsgeräte und dergleichen können ebenfalls mit der I/O-Brücke 107 verbunden sein. Die in 1 gezeigten diversen Kommunikationspfade, einschließlich der speziell bezeichneten Kommunikationspfade 106 und 113, können unter Anwendung beliebiger geeigneter Protokolle eingerichtet werden, etwa durch PCI-Express, AGP (beschleunigter Graphikport), HyperTransport oder durch ein oder mehrere andere Busprotokolle oder Punkt-Zu-Punkt-Kommunikationsprotokolle, und Verbindungen zwischen unterschiedlichen Einrichtungen können unterschiedliche Protokolle benutzen, wie dies im Stand der Technik bekannt ist.
  • In einer Ausführungsform enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für Grafik-und Videoverarbeitung optimiert ist, wozu beispielsweise eine Videoausgabeschaltung gehört, und sie bildet eine oder mehrere Parallelverarbeitungseinheiten (PPU) 202. In einer weiteren Ausführungsform enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für eine Verarbeitung für Allgemeinzwecke optimiert ist, wobei die zu Grunde liegende Rechenarchitektur, wie nachfolgend detaillierter beschrieben ist, beibehalten wird. In einer noch weiteren Ausführungsform kann das Parallelverarbeitungssubsystem 112 mit einem oder mehreren anderen Systemelementen in einem einzelnen Subsystem integriert sein, etwa durch die Vereinigung der Speicherbrücke 105, der CPU 102 und der I/O-Brücke 107, um ein System auf einem Chip (SoC) zu bilden. Wie gut bekannt ist, sind viele grafische Verarbeitungseinheiten (GPU) so gestaltet, dass sie Operationen und Berechnungen parallel ausführen und können daher als eine Klasse von Parallelverarbeitungseinheiten (PPU) betrachtet werden.
  • Es kann eine beliebige Anzahl an PPUs 202 in einem Parallelverarbeitungssubsystem 112 enthalten sein. Beispielsweise können mehrere PPUs 202 in einer einzelnen Zusatzkarte bereitgestellt sein, oder es können mehrere Zusatzkarten mit dem Kommunikationspfad 113 verbunden sein, oder eine oder mehrere PPUs 202 können in einem Brückenchip integriert sein. Die PPUs 202 in einem Multi-PPU-System können identisch oder unterschiedlich zueinander sein. Beispielsweise können unterschiedliche PPUs 202 eine unterschiedliche Anzahl an Verarbeitungskernen, unterschiedliche Größen des lokalen Parallelverarbeitungsspeichers, usw. aufweisen. Wenn mehrere PPUs 202 vorhanden sind, können diese PPUs parallel betrieben werden, um Daten mit einem höheren Durchsatz zu verarbeiten, als dies mit einer einzelnen PPU 202 möglich wäre. Systeme, die eine oder mehrere PPUs 202 enthalten, können in einer Vielzahl von Konfigurationen und Formfaktoren realisiert werden, wozu Tischrechner, mobile Rechner oder Personalcomputer in Form von Handgeräten, Dienstleister, Arbeitsplatzrechner, Spielekonsolen, eingebettete Systeme und dergleichen gehören.
  • Die PPU 202 realisiert vorteilhafterweise eine äußerst parallele Verarbeitungsarchitektur. Die PPU 202 enthält eine Anzahl von allgemeinen Verarbeitungs-Clustern (GPC). Jeder GPC ist in der Lage, eine große Anzahl (beispielsweise hunderte oder tausende) von Strängen gleichzeitig auszuführen, wobei jeder Strang eine Instanz eines Programms ist. In einigen Ausführungsformen werden Einzelbefehl-Mehrfachdaten-(SIMD-) Befehlsausgabetechniken eingesetzt, um eine parallele Ausführung einer großen Anzahl an Strängen zu handhaben, ohne dass mehrere unabhängige Befehlseinheiten vorgesehen sind. In anderen Ausführungsformen werden Einzelbefehl-Mehrfach-Strang-(SIMT-) Techniken eingesetzt, um eine parallele Ausführung einer großen Anzahl an allgemein synchronisierten Strängen zu handhaben. Anders als ein SIMD-Ausführungsregime, in welchem alle Verarbeitungseinheiten typischerweise identische Befehle ausführen, erlaubt es die SIMT-Ausführung, dass unterschiedliche Stränge besser divergenten Ausführungspfaden durch ein gegebenes Strangprogramm hindurch folgen können.
  • GPCs enthalten eine Anzahl an Datenstrom-Multiprozessoren (SM), wobei jeder SM ausgebildet ist, eine oder mehrere Stranggruppen zu verarbeiten. Die Reihe von Befehlen, die einem speziellen GPC zugeleitet wird, bildet einen Strang, wie dies zuvor hierin definiert ist, und die Ansammlung einer gewissen Anzahl an gleichzeitig ausgeführten Strängen über die Parallelverarbeitungseinheiten innerhalb eines SM hinweg, wird hierin als eine „Kette“ oder „Stranggruppe“ bezeichnet. Im hierin verwendeten Sinne bezeichnet eine „Stranggruppe“ eine Gruppe von Strängen, die gleichzeitig das gleiche Programm an unterschiedlichen Eingangsdaten ausführen, wobei ein einzelner Strang der Stranggruppe jeweils einer anderen Verarbeitungseinheit innerhalb eines SM zugeordnet ist. Ferner können mehrere zusammengehörende Stranggruppen gleichzeitig (in unterschiedlichen Phasen der Ausführung) innerhalb eines SM aktiv sein. Diese Ansammlung an Stranggruppen wird hierin als ein „kooperatives Strang- Array“ („CTA“) oder „Strang-Array“ bezeichnet.
  • In Ausführungsformen der vorliegenden Erfindung ist es wünschenswert, die PPU 202 oder einen oder mehrere andere Prozessoren eines Rechensystems zu verwenden, um Berechnungen für Allgemeinzwecke unter Anwendung von Strang-Arrays auszuführen. Jeder Strang in dem Strang-Array hat eine zugeordnete eindeutige Strangkennung-Kennung („Strang-ID“), auf die der Strang während der Ausführung des Strangs zugreifen kann. Die Strang-ID, die als ein eindimensionaler oder mehrdimensionaler numerischer Wert definiert sein kann, steuert diverse Aspekte des Verarbeitungsverhaltens des Strangs. Beispielsweise kann eine Strang-ID verwendet werden, um zu bestimmen, welchen Bereich des Eingangsdatensatzes ein Strang zu verarbeiten hat, und/oder um zu bestimmen, welchen Bereich eines Ausgangsdatensatzes ein Strang zu erzeugen oder zu schreiben hat.
  • Während des Betriebs ist die CPU 102 der übergeordnete Prozessor des Computersystems 100, um den Betrieb anderer Systemkomponenten zu steuern und zu koordinieren. Insbesondere gibt die CPU 102 Befehle aus, die den Betrieb der PPUs 202 steuern. In einer Ausführungsform ist der Kommunikationspfad 113 eine PCI-Express-Verbindung, in der spezielle Bahnen jeder PPU 202 zugewiesen sind, wie dies im Stand der Technik bekannt ist. Andere Kommunikationspfade können ebenfalls verwendet werden. Die PPU 202 realisiert vorteilhafterweise eine äußerst parallele Verarbeitungsarchitektur. Eine PPU 202 kann mit einer beliebigen Größe an lokalem Parallelverarbeitungsspeicher (PPU-Speicher) versehen sein.
  • In einigen Ausführungsformen umfasst der Systemspeicher 104 einen vereinheitlichten bzw. vereinigten virtuellen Speicher-(UVM) Treiber 101. Der UVM-Treiber 101 enthält Befehle zur Ausführung diverser Aufgaben, die die Verwaltung eines vereinheitlichten virtuellen Speicher-(UVM) Systems, das gemeinsam für die CPU 102 und die PPUs 202 vorliegt, betrifft. Unter anderem ermöglicht die Architektur, dass die CPU 102 und die PPU 202 auf eine physikalische Speicherstelle zugreifen, wobei eine gemeinsame virtuelle Speicheradresse verwendet wird, unabhängig davon, ob die physikalische Speicherstelle innerhalb des Systemspeichers 104 oder in einem Speicher liegt, der für die PPU 202 lokal ist.
  • Zu beachten ist, dass das hierin gezeigte System anschaulicher Natur ist und dass Variationen und Modifizierungen möglich sind. Die Verbindungstopologie, einschließlich der Anzahl und der Anordnung von Brücken, die Anzahl an CPUs 102 und die Anzahl an Parallelverarbeitungssubsystemen 112 können nach Bedarf modifiziert werden. Beispielsweise ist in einigen Ausführungsformen der Systemspeicher 104 mit der CPU 102 direkt anstatt über eine Brücke verbunden, und andere Einrichtungen kommunizieren mit dem Systemspeicher 104 über die Speicherbrücke 105 und die CPU 102. In anderen alternativen Topologien ist das Parallelverarbeitungssubsystem 112 mit der I/O-Brücke 107 oder direkt mit der CPU 102 anstatt mit der Speicherbrücke 105 verbunden. In noch anderen Ausführungsformen können die I/O-Brücke 107 und die Speicherbrücke 105 in einem einzelnen Chip integriert sein, anstatt dass sie als eine oder mehrere diskrete Einrichtungen vorliegen. Große Ausführungsformen können zwei oder mehr CPUs 102 und zwei oder mehr Parallelverarbeitungssubsysteme 112 aufweisen. Die speziellen hierin gezeigten Komponenten sind optional; beispielsweise kann eine beliebige Anzahl an Zusatzkarten oder peripheren Geräten gehandhabt werden. In einigen Ausführungsformen ist der Schalter 116 weggelassen und der Netzwerkadapter 118 und die Zusatzkarten 120, 121 sind direkt mit der I/O-Brücke 107 verbunden.
  • Vereinheitlichte virtuelle Speichersystem Architektur
  • 2 ist eine Blockansicht, die ein vereinheitlichtes bzw. vereinigtes virtuelles Speicher-(UVM) System 200 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wie gezeigt, umfasst das vereinheitlichte virtuelle Speichersystem 200, ohne Einschränkung, die CPU 102, den Systemspeicher 104 und die Parallelverarbeitungseinheit (PPU) 202, die mit einem Speicher der Parallelverarbeitungseinheit (PPU-Speicher) 204 verbunden ist. Die CPU 102 und der Systemspeicher 104 sind miteinander und mit der PPU 202 über die Speicherbrücke 105 verbunden.
  • Die CPU 102 führt Stränge aus, die Daten, die in dem Systemspeicher 104 oder in dem PPU-Speicher 204 gespeichert sind, über eine virtuelle Speicheradresse anfordern können. Virtuelle Speicheradressen verhindern, dass Stränge, die in der CPU 102 ausgeführt werden, Kenntnis über die interne Arbeitsweise eines Speichersystems haben müssen. Daher kann ein Strang gegebenenfalls nur Kenntnis über virtuelle Speicheradressen haben, und kann auf Daten zugreifen, indem Daten über eine virtuelle Speicheradresse angefordert werden.
  • Die CPU 102 umfasst eine CPU MMU 209, die Anforderungen aus der CPU 102 zur Übersetzung virtueller Speicheradressen in physikalische Speicheradressen verarbeitet. Die physikalischen Speicheradressen sind erforderlich, um auf Daten zuzugreifen, die in einer physikalischen Speichereinheit, etwa dem Systemspeicher 104 und dem PPU-Speicher 204 gespeichert sind. Die CPU 102 umfasst eine CPU-Fehlerbehandlungseinheit 211, die Schritte in Reaktion daraufhin ausführt, dass die CPU MMU 209 einen Seitenfehler erzeugt, um angeforderte Daten für die CPU 102 verfügbar zu machen. Die CPU-Fehlerbehandlungseinheit 211 ist generell eine Software, die in dem Systemspeicher 104 liegt und in der CPU 102 ausgeführt wird, wobei die Software von einem Interrupt der CPU 102 aufgerufen wird.
  • Der Systemspeicher 104 speichert diverse Speicherseiten (nicht gezeigt), die Daten zur Verwendung durch die Stränge, die in der CPU 102 oder der PPU 202 ausgeführt werden, enthalten. Wie gezeigt, speichert der Systemspeicher 104 eine CPU-Seitentabelle 206, die Zuordnungen zwischen virtuellen Speicheradressen und physikalischen Speicheradressen enthält. Der Systemspeicher 104 speichert ferner ein Seitenzustandsverzeichnis 210, das als eine „Haupt-Seitentabelle“ für das UVM-System 200 fungiert, wie dies nachfolgend detaillierter erläutert ist. Der Systemspeicher 104 enthält einen Fehlerpuffer 216, der Einträge enthält, die von der PPU 202 beschrieben werden, um die CPU 102 über einen Seitenfehler zu informieren, der von der PPU 202 erzeugt wurde. In einigen Ausführungsformen enthält der Systemspeicher 104 den vereinheitlichten virtuellen Speicher-(UVM) Treiber 101, der Befehle enthält, die, wenn sie ausgeführt werden, die CPU 102 veranlassen, Befehle für, unter anderem, die Behebung eines Seitenfehlers auszuführen. In alternativen Ausführungsformen kann eine beliebige Kombination des Seitenzustandsverzeichnisses 210, des Fehlerpuffers 216 und einer oder mehrerer Befehlswarteschlangen 214 in dem PPU-Speicher 204 gespeichert sein. Ferner kann eine PPU-Seitentabelle 208 in dem Systemspeicher 104 gespeichert sein.
  • Ähnlich wie bei der CPU 102 führt die PPU 202 Befehle aus, die Daten, die in dem Systemspeicher 104 oder in dem PPU-Speicher 204 gespeichert sind, über eine virtuelle Speicheradresse anfordern können. Die PPU 202 umfasst eine PPU MMU 213, die Anforderungen aus der PPU 202 zur Übersetzung virtueller Speicheradressen in physikalische Speicheradressen verarbeitet. Die PPU 202 enthält eine Kopiereinheit 212, die Befehle ausführt, die in der Befehlswarteschlange 214 gespeichert sind, um Speicherseiten zu kopieren, Daten in der PPU-Speichertabelle 208 zu modifizieren, und führt auch andere Befehle aus. Eine PPU-Fehlerbehandlungseinheit 215 führt Schritte in Reaktion auf einen Seitenfehler in der PPU 202 aus. Die PPU-Fehlerbehandlungseinheit 215 kann eine Software sein, die in einem Prozessor oder in einer speziellen Mikrosteuerung in der PPU 202 ausgeführt wird, oder die PPU-Fehlerbehandlungseinheit 215 kann eine Software sein, die in der CPU 102 ausgeführt wird, wobei das zuletzt genannte die bevorzugte Wahl ist. In einigen Ausführungsformen sind die CPU-Fehlerbehandlungseinheit 211 und die PPU-Fehlerbehandlungseinheit 215 ein vereinheitlichtes bzw. vereinigtes Softwareprogramm, das durch einen Fehler in der CPU 102 oder in der PPU 202 aufgerufen wird. Die Befehlswarteschlange 214 kann in dem PPU-Speicher 204 oder in dem Systemspeicher 104 liegen, ist aber vorzugsweise in dem Systemspeicher 104 angeordnet.
  • In einigen Ausführungsformen sind die CPU-Fehlerbehandlungseinheit 211 und der UVM-Treiber 101 ein vereinheitlichtes Softwareprogramm. In derartigen Fällen kann das vereinheitlichte Softwareprogramm eine Software sein, die in dem Systemspeicher 104 liegt und in der CPU 102 ausgeführt wird. Die PPU-Fehlerbehandlungseinheit 215 kann ein separates Softwareprogramm sein, das in einem Prozessor oder einer speziellen Mikrosteuerung in der PPU 202 abläuft, oder die PPU-Fehlerbehandlungseinheit 215 kann ein separates Softwareprogramm sein, das in der CPU 102 ausgeführt wird.
  • In anderen Ausführungsformen sind die PPU-Fehlerbehandlungseinheit 215 und der UVM-Treiber 101 ein vereinheitlichtes Softwareprogramm. In derartigen Fällen kann das vereinheitlichte Softwareprogramm eine Software sein, die in dem Systemspeicher 104 liegt und in der CPU 102 ausgeführt wird. Die CPU-Fehlerbehandlungseinheit 211 kann ein separates Softwareprogramm sein, das in dem Systemspeicher 104 liegt und in der CPU 102 ausgeführt wird.
  • In anderen Ausführungsformen sind die CPU-Fehlerbehandlungseinheit 211, die PPU-Fehlerbehandlungseinheit 215 und der UVM-Treiber 101 ein vereinheitlichtes Softwareprogramm. In derartigen Fällen kann das vereinheitlichte Softwareprogramm eine Software sein, die in dem Systemspeicher 104 liegt und in der CPU 102 ausgeführt wird.
  • In einigen Ausführungsformen können die CPU-Fehlerbehandlungseinheit 211, die PPU-Fehlerbehandlungseinheit 215 und der UVM-Treiber 101 jeweils in dem Systemspeicher 104 liegen, wie dies zuvor beschrieben ist. Wie in 2 gezeigt ist, liegt der UVM-Treiber 101 in dem Systemspeicher 104, während die CPU-Fehlerbehandlungseinheit 211 und die PPU-Fehlerbehandlungseinheit 215 in der CPU 102 liegen.
  • Die CPU-Fehlerbehandlungseinheit 211 und die PPU-Fehlerbehandlungseinheit 215 reagieren auf Hardware-Interrupte, die aus der CPU 102 oder der PPU 202 stammen, etwa Interrupte, die sich aus einem Seitenfehler ergeben. Wie nachfolgend beschrieben ist, enthält der UVM-Treiber 101 Befehle zur Ausführung diverser Aufgaben, die mit der Verwaltung des UVM-Systems 200 in Beziehung stehen, wozu gehören, ohne Einschränkung, die Behebung eines Seitenfehlers und der Zugriff auf die CPU-Seitentabelle 206, das Seitenzustandsverzeichnis 210, die Befehlswarteschlange 214 und/oder den Fehlerpuffer 216.
  • In einigen Ausführungsformen haben die CPU-Seitentabelle 206 und die PPU-Seitentabelle 208 unterschiedliche Formate und enthalten eine unterschiedliche Information; beispielsweise kann die PPU-Seitentabelle 208 das folgende enthalten, während die CPU-Seitentabelle 206 dies nicht tut: ein Atomar-Deaktivierungs-Bit; Komprimierungsmarken; und Speicheraustauschtyp.
  • Ähnlich wie bei dem Systemspeicher 104 enthält der PPU-Speicher 204 diverse Speicherseiten (nicht gezeigt). Wie gezeigt, kann der PPU-Speicher 204 auch die PPU-Seitentabelle 208 enthalten, die Zuordnungen zwischen virtuellen Speicheradressen und physikalische Speicheradressen enthält. Alternativ kann die PPU-Seitentabelle 208 in dem Systemspeicher 104 gespeichert sein.
  • Seitenzustandsverzeichnis
  • 3 ist eine Konzeptansicht eines Systems 300 zur Verfolgung des Zustands von Speicherseiten gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt, umfasst das System 301 ein Seitenzustandsverzeichnis 210, das mit einer CPU-Seitentabelle 206 und eine PPU-Seitentabelle 208 gekoppelt ist.
  • Das Seitenzustandsverzeichnis 210 ist eine Datenstruktur, die Zuordnungen speichert, die jeder Speicherseite in einem speziellen virtuellen Speicheradressenraum verknüpft sind. Um eine physikalische Adresse aus dem PSD 210 zu erhalten, liefert eine Anforderungseinheit eine angeforderte virtuelle Adresse an das PSD 210, das eine Nachschlagoperation auf der Grundlage der virtuellen Adresse ausführt. In einigen Ausführungsformen ist das PSD 210 in der Lage, Speicherseiten mit unterschiedlichen Größen zu verfolgen. Um dies zu bewerkstelligen, enthält das PSD 210 mehrere Arrays bzw. Felder. Beispielsweise verwaltet ein erstes Array CPU-dimensionierte Seiten, und ein zweites Array verwaltet PPU-dimensionierte Seiten.
  • Obwohl das Seitenzustandsverzeichnis 210 in einer beliebigen technisch machbaren Weise realisiert werden kann, enthält in einer Ausführungsform das Seitenzustandsverzeichnis 210 eine Mehrebenen-Tabelle. Jede Nicht-Blatt-Ebene enthält ein Array aus Zeigern auf Einträge in der nächsten Ebene. Zeiger können auf Einträge in dem PPU-Speicher 204 oder dem Systemspeicher 104 zeigen.
  • Die CPU 102 oder die PPU 202 aktualisiert das PSD 210. Aktualisierungen an einer Seite des PSD 210 in dem Systemspeicher 104 können bewerkstelligt werden, indem atomare bzw. unteilbare Operationen in Form von vergleichen-undvertauschen über den PCI-E-Bus verwendet werden. Aktualisierungen an Seiten des PSD 210 in dem PPU-Speicher 204 können bewerkstelligt werden, indem eine Aktualisierungsanforderung in einem PSD-Aktualisierung-Ringpuffer angeordnet wird, der in dem Systemspeicher enthalten ist. Ein Agent prüft den Ringpuffer, um Aktualisierungen vor einer Leseoperation an dem PSD 210 anzuwenden.
  • Wie nachfolgend beschrieben ist, können mehrere virtuelle Speicheradressenräume existieren. Zwei unterschiedliche Prozesse, die in der CPU 102 ausgeführt werden, können zwei unterschiedlichen virtuellen Speicheradressenräumen zugeordnet sein. Einige Prozesse können Adressenräume gemeinsam benutzen. Für jeden virtuellen Speicheradressenraum gibt es ein PSD 210.
  • Unterschiedliche PSD 210 können jeweils eine Zuordnung für die gleiche Speicherstelle in dem Systemspeicher 104 oder dem PPU-Speicher 204 enthalten. In einem derartigen Falle kann ein einzelner Prozess als der Besitzer der Speicherstelle ausgewiesen werden. Das PSD 210, das diesem einzelnen Prozess entspricht, wird als das „Besitzer-PSD“ betrachtet. Das Besitzer-PSD enthält eine Zuordnung zu dem Speicherplatz, und das PSD 210 für alle anderen Prozesse, die Zuordnungen für diese Speicherstelle, beinhalten eine Verknüpfung zu der Zuordnung in dem Besitzer-PSD.
  • Wenn ein Prozess, der mit einem speziellen PSD 210 verknüpft ist, eine spezielle Zuordnung, die zu einer speziellen Speicherstelle gehört, nicht mehr benötigt, bewirkt der Prozess, dass die Zuordnung aus dem PSD 210, das zu diesem Prozess gehört, entfernt wird. Die Zuordnung wird in einer Abschlussliste angeordnet. Zu diesem Zeitpunkt können andere PSD 210 weiterhin Zuordnungen auf die Speicherstelle enthalten. Diese PSD 210 enthalten weiterhin diese Zuordnung, bis die mit diesen PSD 210 verknüpften Prozesse ermitteln, dass die Zuordnung nicht mehr benötigt wird. Wenn kein PSD 210 Zuordnungen enthält, die mit der Speicherstelle verknüpft sind, dann wird die Zuordnung aus der Abschlussliste entfernt.
  • Einträge in dem PSD 210 enthalten eine Zuordnung zwischen einer virtuellen Speicheradresse und einer physikalischen Speicheradresse. Die Einträge enthalten ferner eine Zustandsinformation für die Speicherseite, die mit dem Eintrag verknüpft ist. Die folgende Liste enthält einige beispielhafte Zustände, die in den PSD- Einträgen in diversen Ausführungsformen der Erfindung enthalten sein können. „Exklusiv“ - eine Speicherseite kann als „Exklusiv“ betrachtet werden, was bedeutet, dass die Speicherseite nicht dupliziert und sichtbar ist für eine PPU 202 oder eine CPU 102 oder für beide. Der „exklusive“ Zustand ist ähnlich zu dem „PPUeigen“ oder „CPU-eigen“ Zustand, der nachfolgend erläutert wird. „Gemeinsam-nicht zwischengespeichert“ - eine Speicherseite kann als „gemeinsam-nicht zwischengespeichert“ betrachtet werden, was bedeutet, dass die Speicherseite nicht dupliziert ist, dass sie aber für eine oder mehrere PPUs 202 und/oder eine oder mehrere CPUs 102 sichtbar ist. Der „gemeinsam-nicht zwischengespeichert“ Zustand ist ähnlich zu dem „CPU-gemeinsam“ Zustand, der nachfolgend erläutert ist, mit der zusätzlichen Eigenschaft „nicht zwischengespeichert“, was bedeutet „nicht dupliziert“. Eine Speicherseite kann in mehr als einer Speichereinheit vorhanden sein (beispielsweise sowohl in dem Systemspeicher 104 als auch in dem PPU-Speicher 204) und kann somit „dupliziert“ sein. „Lesen-dupliziert“ - eine Speicherseite wird als „Lesen-dupliziert“ betrachtet, was bedeutet, dass mehr als eine Kopie der Speicherseite existiert und das mindestens eine der Kopien lokal für eine CPU 102 oder eine PPU 202 ist und nur für das Lesen durch diese CPU 102 oder PPU 202 verfügbar ist. „Migrieren bzw. Verschieben-nur-lesen“ - eine Speicherseite wird als „Migrieren bzw. Verschieben-nur-lesen“ betrachtet, was bedeutet, dass die Speicherseite gerade dabei ist, verschoben zu werden. Beispielsweise ist das UVM-System 200 im Prozess des Verschiebens der Speicherseite von dem PPU-Speicher 204 zu dem Systemspeicher 104. Da die Speicherseite als „Migrieren bzw. Verschiben-nur-lesen“ betrachtet wird, kann die Speicherseite nur gelesen aber nicht beschrieben werden, wenn sie in diesen Zustand ist. „Migrieren-unsichtbar“ - eine Speicherseite kann als „Migrieren bzw. Verschieben-unsichtbar“ betrachtet werden, was bedeutet, dass die Speicherseite gerade verschoben wird, aber die Speicherseite „unsichtbar“ ist, was bedeutet, dass kein Prozess die Speicherseite lesen oder beschreiben kann. „Eintrag-Weiterleitung-Eintrag“ - ein spezieller Eintrag in einem PSD 210 wird als ein „Eintrag-Weiterleitung-Eintrag“ betrachtet, was bedeutet, dass der Eintrag eine Verknüpfung zu einem anderen Eintrag in dem PSD 210 enthält, der eine Zuordnung enthält, die mit der Speicherseite verknüpft ist.
  • Das UVM-System 200 kann Speicherseiten in einem Hintergrundspeicher speichern, etwa einem Speicherplatz auf einer Festplatte. Der UVM-Treiber 101 oder das Betriebssystem überwacht die Speicherseiten, die in dem Hintergrund Speicher gespeichert sind. Wenn eine Nachschlagoperationen, die an dem PSD 210 ausgeführt wird, anzeigt, dass eine Speicherseite im Hintergrundspeicher gespeichert ist, dann verschiebt der UVM-Treiber 101 die Speicherseite von dem Hintergrundspeicher zu dem Systemspeicher 104 oder dem PPU-Speicher 204. Nachdem die Speicherseite von dem Hintergrund Speicher kopiert ist, wiederholt der UVM-Treiber 101 das Nachschlagen bzw. den Suchvorgang an dem PSD 210.
  • Die folgende Tabelle zeigt Beispiele von PSD-Einträgen. Jede Zeile zeigt einen unterschiedlichen anschaulichen Eintrag.
    Zustand Daten
    es gibt weitere Seiten zu der Seite Weiterleitung der Adresse
    Unzulässiger Eintrag Keine
    Verschieben (nur lesen) Keine
    Verschieben Keine
    (unsichtbar)
    Exklusiver Eintrag Erlaubter Zugriff Physikalische Adresse
    Gemeinsam-nicht zwischengespeicherter-Eintrag Physikalische Adresse Erlaubter Zugriff
    Lesen duplizierter Eintrag Bloom-Filter, für welchen der Prozessor diese Seite hat Physikalische Adresse
  • Übersetzen virtueller Speicheradressen
  • Es sei zurück auf 2 verwiesen; wenn ein Strang, der in der CPU 102 ausgeführt wird, Daten über eine virtuelle Speicheradresse anfordert, dann fordert die CPU 102 die Übersetzung der virtuellen Speicheradresse in eine physikalische Speicheradresse aus der CPU-Speicherverwaltungseinheit (CPU MMU) 209 an. Daraufhin versucht die CPU MMU 209 die virtuelle Speicheradresse in eine physikalische Speicheradresse zu übersetzen, die eine Stelle in einer Speichereinheit, etwa in dem Systemspeicher 104, angibt, die die von der CPU 102 angeforderten Daten speichert.
  • Um eine virtuelle Speicheradresse in eine physikalische Speicheradresse zu übersetzen, führt die CPU MMU 209 eine Nachschlagoperation aus, um zu ermitteln, ob die CPU-Seitentabelle 206 eine Zuordnung, die mit der virtuellen Speicheradresse verknüpft ist, enthält. Zusätzlich zu einer virtuellen Speicheradresse kann eine Anforderung zum Zugreifen auf Daten ferner einen virtuellen Speicheradressenraum angeben. Das vereinheitlichte virtuelle Speichersystem 200 kann mehrere virtuelle Speicheradressenräume realisieren, wovon jeder einem oder mehreren Strängen zugeordnet ist. Virtuelle Speicheradressen sind in einem gegebenen virtuellen Speicheradressenraum eindeutig. Ferner sind virtuelle Speicheradressen innerhalb eines gegebenen virtuellen Speicheradressenraums konsistent in Bezug auf die CPU 102 und die PPU 202, so dass es möglich ist, dass die gleiche virtuelle Adresse die gleichen Daten für die CPU 102 und die PPU 202 kennzeichnet. In einigen Ausführungsformen können zwei virtuelle Speicheradressen in dem gleichen virtuellen Adressenraum die gleichen Daten bezeichnen, aber sind generell nicht der gleichen physikalischen Speicheradresse zugeordnet (beispielsweise haben die CPU 102 und die PPU 202 jeweils eine lokale Kopie der Daten mit nur lesendem Zugriff.)
  • Für eine gegebene virtuelle Speicheradresse kann die CPU-Seitentabelle 206 eine Zuordnung zwischen der virtuellen Speicheradresse und einer physikalischen Speicheradresse enthalten oder auch nicht. Wenn die CPU-Seitentabelle 206 eine Zuordnung enthält, dann liest die CPU MMU 290 diese Zuordnung aus, um eine physikalische Speicheradresse zu ermitteln, die mit der virtuellen Speicheradresse verknüpft ist, und liefert diese physikalische Speicheradresse an die CPU 102. Wenn jedoch die CPU-Seitentabelle 206 keine Zuordnung enthält, die mit der virtuellen Speicheradresse verknüpft ist, dann ist die CPU MMU 209 nicht in der Lage, die virtuelle Speicheradresse in die physikalische Speicheradresse zu übersetzen, und die CPU MMU 209 erzeugt einen Seitenfehler. Um einen Seitenfehler zu beheben und um die angeforderten Daten für die CPU 102 verfügbar zu machen, wird eine „Seitenfehlersequenz“ ausgeführt. Insbesondere liest die CPU 102 das PSD 210, um den aktuellen Zuordnungszustand der Seite zu ermitteln und bestimmt dann die geeignete Seitenfehlersequenz. Die Seitenfehlersequenz ordnet generell die Speicherseite, die mit der angeforderten virtuellen Speicheradresse verknüpft ist, zu oder ändert die Art von Zugriffen, die zulässig sind (beispielsweise Lesezugriff, Schreibzugriff, atomarer bzw. ungeteilter Zugriff), sofern nicht ein fataler Fehler aufgetreten ist. Die unterschiedlichen Arten von Seitenfehlersequenzen, die in den UVM-System 200 eingerichtet sind, sind nachfolgend detaillierter erläutert.
  • In dem UVM-System 200 können Daten, die zu einer gegebenen virtuellen Speicheradresse gehören, in dem Systemspeicher 104, in dem PPU-Speicher 204 oder sowohl in dem Systemspeicher 104 als auch in dem PPU-Speicher 204 als Kopien der gleichen Daten für nur lesenden Zugriff gespeichert werden. Ferner können für derartige Daten die CPU-Seitentabelle 206 und/oder die PPU-Seitentabelle 208 eine Zuordnung enthalten, die mit diesen Daten verknüpft ist. Zu beachten ist, dass gewisse Daten existieren können, für die eine Zuordnung in einer Seitentabelle besteht, aber nicht in der anderen. Jedoch enthält das PSD 210 alle Zuordnungen, die in der PPU-Seitentabelle 208 gespeichert sind und die PPUrelevanten Zuordnungen, die in der CPU-Seitentabelle 206 gespeichert sind. Das PSD 210 dient somit als eine „Haupt-“ Seitentabelle für das vereinheitlichte virtuelle Speichersystem 200. Wenn daher die CPU MMU 209 keine Zuordnung in der CPU-Seitentabelle 206, die mit einer speziellen virtuellen Speicheradresse verknüpft ist, findet, liest die CPU 102 das PSD 210 aus, um zu ermitteln, ob das PSD 210 eine mit dieser speziellen virtuellen Speicheradresse verknüpfte Zuordnung enthält. Diverse Ausführungsformen des PSD 210 können unterschiedliche Arten von Information enthalten, die mit virtuellen Speicheradressen verknüpft sind, zusätzlich zu den Zuordnungen, die mit der virtuellen Speicheradresse verknüpft sind.
  • Wenn die CPU MMU 209 einen Seitenfehler erzeugt, führt die CPU-Fehlerbehandlungseinheit 211 eine Sequenz an Operationen für die geeignete Seitenfehlersequenz aus, um den Seitenfehler zu beheben. Während einer Seitenfehlersequenz liest wiederum die CPU 102 das PSD 210 aus und führt weitere Operationen durch, um die Zuordnungen oder Freigaben in der CPU-Seitentabelle 206 und der PPU-Seitentabelle 208 zu ändern. Derartige Operationen können das Lesen und/oder Modifizieren der CPU-Seitentabelle 206, das Lesen und/oder Modifizieren von Einträgen des Seitenzustandsverzeichnisses 210 und/oder die Migration bzw. Verschiebung von Datenblöcken, die als „Speicherseiten“ bezeichnet werden, zwischen Speichereinheiten (beispielsweise dem Systemspeicher 104 und dem PPU-Speicher 204) beinhalten.
  • 4 ist eine Konzeptdarstellung eines Systems 400 zur Implementierung einer Verschiebungsoperation gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt, umfasst das System 401 ein Seitenzustandsverzeichnis 210, den Systemspeicher 104 und den PPU-Speicher 204.
  • Wie zuvor erläutert ist, speichert das Seitenzustandsverzeichnis 210 PSD-Einträge 401, die die gesamte oder einen Teil einer virtuellen Speicheradresse 402, die gesamte oder einen Teil einer physikalischen Speicheradresse 404 und eine Zustandsinformation 406 angeben. Die PSD-Einträge 401 bilden somit virtuelle Speicheradressen 402 auf physikalische Speicheradressen 404 ab.
  • In Reaktion auf einen Seitenfehler kann der UVM-Treiber 101 ermitteln, dass eine Speicherseite, etwa eine Speicherseite 408, von einer Speichereinheit zu einer anderen Speichereinheit zu migrieren bzw. verschieben ist, um den Seitenfehler zu beheben. Beispielsweise kann der UVM-Treiber 101 ermitteln, dass die Speicherseite 408 von dem Systemspeicher 104 zu dem PPU-Speicher 204 zu verschieben ist. In Reaktion auf diese Ermittlung führt der UVM-Treiber 101 eine Reihe von Operationen, die nachfolgend als eine Seitenfehlersequenz bezeichnet sind, aus, um zu bewirken, dass die Speicherseite 408 verschoben wird. Ferner kann die Seitenfehlersequenz einen Teil des Eintrags des Seitenzustandsverzeichnisses 401 verändern, der mit der Speicherseite 408 verknüpft ist. Insbesondere kann die Seitenfehlersequenz die physikalische Speicheradresse 404 auf die physikalische Stelle der Speicherseite 408 aktualisieren, nachdem die Speicherseite verschoben worden ist. Jedoch bleibt die virtuelle Speicheradresse 402 in dem Eintrag 401 des Seitenzustandsverzeichnisses unverändert, wodurch Zeiger in Anwendungsprogrammen gleichbleiben und auf Speicherseiten 408 verweisen, unabhängig davon, wo die Speicherseiten 408 gespeichert sind.
  • Um zu ermitteln, welche Operationen in einer Seitenfehlersequenz auszuführen sind, ermittelt die CPU 102 die Speicherseite, die zu der virtuellen Speicheradresse gehört. Die CPU 102 liest dann Zustandsinformation für die Speicherseite aus dem PSD 210 aus, die die virtuelle Speicheradresse betrifft, die mit der Speicherzugriffsanforderung verknüpft ist, die einen in Seitenfehler hervorgerufen hat. Eine derartige Zustandsinformation kann unter anderem den Besitzzustand für die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist, umfassen. Für eine gegebene Speicherseite sind mehrere Besitzzustände möglich. Beispielsweise kann eine Speicherseite „CPU-Eigen“, „PPU-Eigen“ oder „CPU-gemeinsam“ sein. Eine Speicherseite wird als CPU-Eigen betrachtet, wenn die CPU 102 auf die Speicherseite über eine virtuelle Adresse zugreifen kann, und wenn die PPU 202 auf die Speicherseite nicht über eine virtuelle Adresse zugreifen kann, ohne dass ein Seitenfehler hervorgerufen wird. Vorzugsweise liegt eine CPU-eigene Seite in dem Systemspeicher 104, kann aber auch in dem PPU-Speicher 204 liegen. Eine Speicherseite wird als PPU-Eigen betrachtet, wenn die PPU 202 auf die Seite über eine virtuelle Adresse zugreifen kann, und wenn die CPU 102 nicht auf die Speicherseite mittels einer virtuellen Adresse zugreifen kann, ohne einen Seitenfehler hervorzurufen. Vorzugsweise liegt eine PPU-eigene Seite in dem PPU-Speicher 204, kann aber auch in dem Systemspeicher 104 liegen, wenn eine Verschiebung aus dem Systemspeicher 104 in den PPU-Speicher 204 allgemein aufgrund der kurzzeitigen Natur des PPU-Besitzzustand nicht ausgeführt wird. Eine Speicherseite wird als CPU-gemeinsam betrachtet, wenn die Speicherseite in dem Systemspeicher 104 gespeichert ist und eine Zuordnung zu der Speicherseite in der PPU-Seitentabelle 208 existiert, die es der PPU 202 ermöglicht, auf die Speicherseite in dem Systemspeicher 104 mittels einer virtuellen Speicheradresse zuzugreifen.
  • Das UVM-System 200 kann Besitzzustände Speicherseiten auf der Grundlage einer Vielzahl von Faktoren zuweisen, wozu der Verwendungsverlauf der Speicherseite gehört, wobei der Verwendungsverlauf optional in Einträgen in dem PSD 210 gespeichert ist. Der Verwendungsverlauf kann Information im Hinblick darauf enthalten, ob die CPU 102 oder die PPU 202 vor kurzem auf die Speicherseite zugegriffen haben, und wie oft derartige Zugriffe durchgeführt wurden. Beispielsweise kann das UVM-System 200 einen Besitzzustand mit „CPU-Eigen“ für die gegebene Speicherseite zuweisen und die Seite in dem Systemspeicher 104 anordnen, wenn aufgrund des Verwendungsverlaufs der Speicherseite das UVM-System 200 ermittelt, dass die Speicherseite wahrscheinlich hauptsächlich oder ausschließlich von der CPU 102 verwendet wird. In ähnlicher Weise kann das UVM-System 200 einen Besitzzustand mit „PPU-Eigen“ für die gegebene Speicherseite zuweisen und die Seite in dem PPU-Speicher 204 anordnen, wenn auf der Grundlage des Verwendungsverlaufs der Speicherseite das UVM-System 200 ermittelt, dass die Speicherseite wahrscheinlich meisten oder ausschließlich von der PPU 202 verwendet wird. Schließlich kann das UVM-System 200 den Besitzzustand mit „CPU-gemeinsam“ für eine gegebene Speicherseite zuweisen, wenn auf der Grundlage des Verwendungsverlaufs der Speicherseite das UVM-System 200 ermittelt, dass die Speicherseite wahrscheinlich sowohl von der CPU 102 als auch von der PPU 202 verwendet wird, und dass eine Verschiebung der Speicherseite zwischen dem Systemspeicher 104 und dem PPU-Speicher 204 zu viel Zeit erfordern würde.
  • Als Beispiele können die Fehlerbehandlungseinheit 211 und 215 einige oder alle der folgenden heuristischen Aktionen für das Migrieren bzw. die Verschiebung ausführen:
    • (a) bei Zugriff der CPU 102 auf eine nicht zugeordnete Seite, die auf die PPU 202 abgebildet ist, die noch nicht vor kurzem verschoben wurde, Aufheben der Zuordnung der fehlererzeugenden Seite für die PPU 202, Verschieben der Seite zu der CPU 102 und Zuordnen der Seite zu der CPU 102;
    • (b) bei Zugriff der PPU 202 auf nicht zugeordnete Seite, die der CPU 102 zugeordnet ist, die nicht vor kurzem verschoben worden ist, Aufheben der Zuordnung der fehlererzeugenden Seite zu der CPU 102, Verschieben der Seite zu der PPU 202 und Zuordnen der Seite zu der PPU 202;
    • c) bei Zugriff der CPU 102 auf nicht zugeordnete Seite, die der PPU 202 zugeordnet ist und die vor kurzem verschoben wurde, Verschieben der fehlererzeugenden Seite zu der CPU 102 und Zuordnen der Seite zu der CPU 102 und der PPU 202;
    • (d) bei Zugriff der PPU 202 auf nicht zugeordnete Seite, die der CPU 102 zugeordnet ist, die vor kurzem verschoben worden ist, Zuordnen der Seite der CPU 102 und der PPU 202;
    • (d) bei atomarem Zugriff der PPU 102 auf die Seite, die der CPU 102 und der PPU 202 zugeordnet ist, die aber für atomare Operationen durch die PPU 202 nicht freigegeben ist, Aufheben der Zuordnung der Seite zu der CPU 102 und Zuordnen zu der PPU 202, wobei atomare Operationen freigegeben sind;
    • (f) bei Schreibzugriff der PPU 202 auf Seite, die der CPU 102 und der PPU 202 als Kopie-bei-Schreiben (COW) zugeordnet ist, Kopieren der Seite in die PPU 202, wodurch unabhängige Kopien der Seite erzeugt werden, Zuordnen der neuen Seite als Lesen-Schreiben in der PPU und Belassen der aktuellen Seite als der CPU 102 zugeordnet;
    • (d) bei Lesezugriff der PPU 202 auf Seite, die der CPU 102 und der PPU 202 mit Nullen-Auffüllung-auf-Verlangen (ZFOD) zugeordnet ist, Zuweisen einer Seite an physikalischem Speicher in der PPU 202 und Füllen dieser Seite mit Nullen, und Zuordnen dieser Seite der PPU, aber Ändern auf nicht zugeordnet in der CPU 102.
    • (h) bei Zugriff durch eine erste PPU 202(1) auf eine nicht zugeordnete Seite, die einer zweiten PPU 202(2) zugeordnet ist, die nicht vor kurzem verschoben worden ist, Aufheben der Zuordnung der fehlererzeugenden Seite zu der zweiten PPU 202(2), Verschieben der Seite zu der ersten PPU 202(1) und Zuordnen der Seite zu der ersten PPU 202 (1); und
    • (i) bei Zugriff durch eine erste PPU 202(1) auf eine nicht zugeordnete Seite, die einer zweiten PPU 202(2) zugeordnet ist und die nicht vor kurzem verschoben worden ist, Zuordnen der fehlererzeugenden Seite zu der ersten PPU 202(1) und Beibehalten der Zuordnung der Seite zu der zweiten PPU 202(2).
  • Insgesamt sind viele heuristischen Regeln möglich, und der Schutzbereich der vorliegenden Erfindung ist nicht auf diese Beispiele beschränkt.
  • Ferner können beliebige heuristische Konzepte für die Migration bzw. Verschiebung „erweitert“ werden, um mehr Seiten oder eine größere Seitengröße beispielsweise einzuschließen:
    • (j) bei Zugriff der CPU 102 auf eine nicht zugeordnete Seite, die der PPU 202 zugeordnet ist und die nicht vor kurzem verschoben worden ist, Afheben der Zuordnung der fehlerhaften Seite, plus weiterer Seiten, die benachbart zu der fehlerhaften Seite in dem virtuellen Adressenraum liegen, zu der PPU 202, Verschieben der Seiten zu der CPU 102 und Zuordnen der Seiten zu der CPU 102 (in einem detaillierteren Beispiel: für eine 4 kB fehlerhafte Seite, Verschieben des dazu ausgerichteten 64 kB-Gebiets, das die für 4 kB fehlerhafte Seite enthält);
    • (k) bei Zugriff der PPU 202 auf nicht zugeordnete Seite, die der CPU 102 zugeordnet ist und nicht vor kurzem verschoben worden ist, Aufheben der Zuordnung der fehlerhaften Seite plus weiterer Seiten, die benachbart zu der fehlerhaften Seite in dem virtuellen Adressenraum liegen, zu der CPU 102, Verschieben der Seiten zu der PPU 202 und Zuordnen der Seiten zu der PPU 202 (in einem detaillierteren Beispiel: für eine 4 KB fehlerbehaftete Seite, Verschieben des dazugehörenden 64 kB-Gebiets, das die 4 kB fehlerhafte Seite enthält);
    • (l) bei Zugriff der CPU 102 auf nicht zugeordnete Seite, die der PPU 202 zugeordnet ist und die nicht kürzlich verschoben worden ist, Aufheben der Zuordnung der fehlererzeugenden Seite plus weiterer Seiten, die benachbart zu der fehlererzeugenden Seite in dem virtuellen Adressenraum liegen, zu der PPU 202, Verschieben der Seiten zu der CPU 102, Zuordnen der Seiten zu der CPU 102 und Behandeln aller verschobener Seiten als eine oder mehrere größere Seiten in der CPU 102 (in einem detaillierteren Beispiel: für eine 4 kB fehlerhafte Seite, Verschieben des dazu ausgerichteten 64 kB-Gebiets, das die 4 kB fehlerbehaftete Seite enthält, und Behandeln des ausgerichteten 64 kB-Gebiets als eine 64 kB-Seite);
    • (m) bei Zugriff der PPU 202 auf nicht zugeordnete Seite, die der CPU 102 zugeordnet ist, und die nicht kürzlich verschoben worden ist, Aufheben der Zuordnung der fehlererzeugenden Seite plus weiterer Seiten, die benachbart zu der fehlererzeugenden Seite in dem virtuellen Adressenraum liegen, zu der CPU 102, Verschieben der Seiten zu der PPU 202, Zuordnen der Seiten zu der PPU 202 und Behandeln aller verschobener Seiten als eine oder mehrere größere Seiten in der PPU 202 (in einem detaillierteren Beispiel: für eine 4 kB-fehlerbehaftete Seite, Verschieben des dazu ausgerichteten 64 kB-Gebiets, das die 4 kB fehlerbehaftete Seite enthält, und Behandeln des ausgerichteten 64 kB-Gebiets als eine 64 kB-Seite);
    • (n) bei Zugriff durch eine erste PPU 202(1) auf eine nicht zugeordnete Seite, die einer zweiten PPU 202(2) zugeordnet ist und die nicht vor kurzem verschoben worden ist, Aufheben der Zuordnung der fehlererzeugenden Seite plus weiterer Seiten, die benachbart zu der fehlererzeugenden Seite in dem virtuellen Adressenraum liegen, zu der zweiten PPU 202(2), Verschieben der Seiten zu der ersten PPU 202(1) und Zuordnen der Seiten zu der ersten PPU 202(1); und
    • (o) bei Zugriff durch eine erste PPU 202(1) auf eine nicht zugeordnete Seite, die einer zweiten PPU 202(2) zugeordnet ist und vor kurzem verschoben worden ist, Zuordnen der fehlererzeugenden Seite plus weiterer Seiten, die benachbart zu der fehlererzeugenden Seite in dem virtuellen Adressenraum liegen, zu der ersten PPU 202(1), und Beibehalten der Zuordnung der Seite zu der zweiten PPU 202(2).
  • Insgesamt sind viele heuristischen Regeln, die eine „Erweiterung“ enthalten, möglich, und der Schutzbereich der vorliegenden Erfindung ist nicht auf diese Beispiele beschränkt.
  • In einigen Ausführungsformen können die PSD-Einträge Information über Übergangszustände enthalten, um eine korrekte Synchronisierung zwischen diversen Anforderungen sicherzustellen, die von Einheiten innerhalb der CPU 102 und der PPU 202 ausgeführt werden. Beispielsweise kann ein Eintrag des PSD 210 einen Übergangszustand enthalten, der angibt, dass eine spezielle Seite in dem Prozess des Übergangs von CPU-Eigen zu PPU-Eigen ist. Diverse Einheiten in der CPU 102 und der PPU 202, etwa die PPU-Fehlerbehandlungseinheit 211 und die PPU-Fehlerbehandlungseinheit 215 können bei der Erkennung, dass eine Seite in einem derartigen Übergangszustand ist, die Ausführung von Bereichen einer Seitenfehlersequenz unterlassen, um Schritte in der Seitenfehlersequenz zu vermeiden, die von einem früheren virtuellen Speicherzugriff auf die gleiche virtuelle Speicheradresse ausgelöst wurden. Als spezielles Beispiel sei genannt, dass, wenn ein Seitenfehler in einer Seite auftritt, die gerade von dem Systemspeicher 104 zu dem PPU-Speicher 204 verschoben wird, ein anderer Seitenfehler, der die gleiche Verschiebung hervorrufen würde, keine weitere Seitenverschiebung hervorgerufen wird. Wenn es ferner mehr als einen Schreiber in das PSD 210 gibt, können diverse Einheiten in der CPU 102 und der PPU 202 atomare Operationen für die korrekte Anordnung von Operationen an den PSD 210 realisieren. Beispielsweise können für Modifizierungen an Einträgen des PSD 210 die CPU-Fehlerbehandlungseinheit 211 oder die PPU-Fehlerbehandlungseinheit 215 eine atomare bzw. nicht teilbare Vergleichen-und-Austauschen-Operation ausgeben, um den Seitenzustand eines speziellen Eintrags in dem PSD 210 zu modifizieren. Daher wird die Modifizierung ausgeführt, ohne dass eine Störung durch Operationen anderer Einheiten hervorgerufen wird.
  • Es können mehrere PSD 210 in dem Systemspeicher 104 gespeichert sein - eines für jeden virtuellen Speicheradressenraum. Eine Speicherzugriffsanforderung, die von der CPU 102 oder der PPU 202 erzeugt wird, kann daher eine virtuelle Speicheradresse enthalten und kann ferner den virtuellen Speicheradressenraum angeben, der mit dieser virtuellen Speicheradresse verknüpft ist. Weitere Details im Hinblick auf Seitenzustandsverzeichnisse sind nachfolgend mit Bezug zu 3 angegeben.
  • Genauso wie die CPU 102 Speicherzugriffsanforderungen ausführen kann, die virtuelle Speicheradressen enthalten (d.h., Befehle, die Anforderungen zum Zugreifen auf Daten über eine virtuelle Speicheradresse enthalten), kann die PPU 202 ebenfalls ähnliche Arten von Speicherzugriffsanforderungen ausführen. Insbesondere enthält die PPU 202 mehrere Ausführungseinheiten, etwa GPC und SM, die zuvor in Verbindung mit 1 beschrieben sind, die ausgebildet sind, mehrere Stränge und Stranggruppen auszuführen. Während des Betriebs können diese Stränge Daten aus dem Speicher (beispielsweise dem Systemspeicher 104 oder dem PPU-Speicher 204) anfordern, indem eine virtuelle Speicheradresse angegeben wird. Wie bei der CPU 102 und der CPU MMU 209 enthält die PPU 202 die PPU-Speicherverwaltungseinheit (MMU) 213. Die PPU MMU 213 empfängt Anforderungen zur Übersetzung von virtueller Speicheradressen aus der PPU 202 und versucht eine Übersetzung aus der PPU-Seitentabelle 208 für die virtuellen Speicheradressen bereitzustellen. Ähnlich wie bei der CPU-Seitentabelle 206 enthält die PPU-Seitentabelle 208 Zuordnungen zwischen virtuellen Speicheradressen und physikalischen Speicheradressen. Ebenso wie für die CPU-Seitentabelle 206 kann für eine gegebene virtuelle Adresse die PPU-Speichertabelle 208 gegebenenfalls keinen Seitentabelleneintrag enthalten, der die virtuelle Speicheradresse der physikalischen Speicheradressen zuordnet. Wie bei der CPU MMU 209 erzeugt die PPU MMU 213 einen Seitenfehler, wenn die PPU MMU 213 eine Übersetzung für eine virtuelle Speicheradresse aus der PPU-Seitentabelle 208 anfordert und keine Zuordnung in der PPU-Seitentabelle 208 existiert oder die Art des Zugriffes durch die PPU-Seitentabelle 208 nicht zulässig ist. Wiederum sind unterschiedliche Arten von Seitenfehlersequenzen, die in dem SM-System 200 eingerichtet sind, nachfolgend detaillierter beschrieben.
  • Wie zuvor angegeben ist, erzeugt in Reaktion auf den Empfang einer Anforderung für eine Übersetzung einer virtuelle Speicheradresse die CPU MMU 209 einen Seitenfehler, wenn die CPU-Seitentabelle 206 keine Zuordnung enthält, die mit der angeforderten virtuellen Speicheradresse verknüpft ist, oder wenn die Art des angeforderten Zugriffs nicht zulässig ist. In ähnlicher Weise erzeugt in Reaktion auf den Empfang einer Anforderung für die Übersetzung einer virtuellen Speicheradresse die PPU MMU 213 einen Seitenfehler, wenn die PPU-Seitentabelle 208 keine Zuordnung enthält, die mit der angeforderten virtuellen Speicheradresse verknüpft ist, oder wenn diese Art des angeforderten Zugriffes nicht erlaubt ist. Wendet die CPU MMU 209 oder die PPU MMU 213 einen Seitenfehler erzeugen, wird der Strang, der Daten aus der virtuellen Speicheradresse angefordert hat, angehalten, und eine „lokale Fehlerbehandlungseinheit“ - die CPU-Fehlerbehandlungseinheit 211 für die CPU 102 oder die PPU-Fehlerbehandlungseinheit 215 für die PPU 202 - wird den Seitenfehler zu beheben, indem eine „Seitenfehlersequenz“ ausgeführt wird. Wie zuvor angegeben ist, enthält eine Seitenfehlersequenz eine Reihe von Operationen, die es der fehlererzeugenden Einheit (d.h., die Einheit - die CPU 102 oder die PPU 202 - die Seitenfehler erzeugte) erlauben, auf die Daten zu zugreifen, die mit der virtuellen Speicheradresse verknüpft sind. Nachdem die Seitenfehlersequenz abgeschlossen ist, nimmt der Strang, der die Daten über die virtuelle Speicheradresse angefordert hat, die Ausführung wieder auf. In einigen Ausführungsformen wird die Fehlerwiederherstellung vereinfacht, indem es der Fehlerwiederherstellungslogik erlaubt ist, fehlererzeugende Speicherzugriffe im Gegensatz zu fehlererzeugenden Befehlen zu verfolgen.
  • Die Operationen, die während einer Seitenfehlersequenz ausgeführt werden, hängen von der Änderung im Besitzzustand oder einer Änderung für die Freigaben für Zugriffe ab, wenn es welche gibt, die die Speicherseite, die mit dem Seitenfehler verknüpft ist, auszuführen hat. Der Übergang von einem aktuellen Besitzzustand in einen neuen Besitzzustand oder eine Änderung der Freigaben für Zugriffe kann Teil der Seitenfehlersequenz sein. In einigen Fällen ist die Verschiebung der Speicherseite, die mit dem Seitenfehler verknüpft ist, von dem Systemspeicher 104 zu dem PPU-Speicher 204 ebenfalls Teil der Seitenfehlersequenz. In anderen Fällen ist die Verschiebung der Speicherseite, die mit dem Seitenfehler verknüpft ist, von dem PPU-Speicher 204 zu dem Systemspeicher 104 ebenfalls Teil der Seitenfehlersequenz. Es sind diverse heuristische Vorgehensweisen ausführlicher beschrieben, die verwendet werden können, um das UVM-System 200 zu konfigurieren, einen Speicherseiten-Besitzzustand zu ändern oder um Speicherseiten unter diversen Gruppen von Betriebszuständen und Mustern zu verschieben. Nachfolgend sind detaillierter Speicherfehlersequenzen für die folgenden vier Speicherseiten-Besitzzustandsübergänge beschrieben: CPU-Eigen zu CPU-gemeinsam, CPU-Eigen zu PPU-Eigen, PPU-Eigen zu CPU-Eigen, und PPU-Eigen zu PPU-gemeinsam.
  • Ein Fehler durch die PPU 202 kann einen Übergang von CPU-Eigen zu CPU-gemeinsam bewirken. Vor einem derartigen Übergang versucht ein Strang, der in der PPU 202 ausgeführt wird, auf Daten an einer virtuellen Speicheradresse zu zugreifen, die nicht in der PPU-Seitentabelle 208 zugeordnet ist. Dieser Zugriffsversuch bewirkt einen PPU-basierten Seitenfehler, der dann bewirkt, dass auf einen Fehlerpuffereintrag in dem Fehlerpuffer 216 geschrieben wird. Daraufhin liest die PPU-Fehlerbehandlungseinheit 215 den Eintrag im PSD 210, der der virtuellen Speicheradresse entspricht, aus und ermittelt die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist. Nach dem Auslesen des PSD 210 ermittelt die PPU-Fehlerbehandlungseinheit 215, dass der aktuelle Besitzzustand für die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist, CPU-Eigen ist. Auf der Grundlage des aktuellen Besitzzustands sowie andere Faktoren, etwa von Verwendungseigenschaften für die Speicherseite oder die Art des Speicherzugriffs, ermittelt die PPU-Fehlerbehandlungseinheit 215, dass ein neuer Besitzzustand für die Seite CPU-gemeinsam sein sollte.
  • Um den Besitzzustand zu ändern, schreibt die PPU-Fehlerbehandlungseinheit 215 einen neuen Eintrag in die PPU-Seitentabelle 208, der der virtuellen Speicheradresse entspricht, und der die virtuelle Speicheradresse mit der Speicherseite in Beziehung setzt, die durch den Eintrag des PSD 210 gekennzeichnet ist. Die PPU-Fehlerbehandlungseinheit 215 modifiziert ferner den Eintrag des PSD 210 für diese Speicherseite, um anzuzeigen, dass der Besitzzustand CPU-gemeinsam ist. In einigen Ausführungsformen wird ein Eintrag in einem Translations-Nebenschaupuffer (TLB) in der PPU 202 ungültig gemacht, um dem Fall Rechnung zu tragen, in welchem die Übersetzung in einer unzulässigen Seite gespeichert ist. An diesem Punkt ist die Seitenfehlersequenz abgeschlossen. Der Besitzzustand für die Speicherseite ist CPU-gemeinsam, was bedeutet, dass die Speicherseite für die CPU 102 und auch für die PPU 202 ansprechbar ist. Sowohl die CPU-Seitentabelle 206 als auch die PPU-Seitentabelle 208 enthalten Einträge, die die virtuelle Speicheradresse mit der Speicherseite verknüpfen.
  • Ein Fehler durch die PPU 202 kann einen Übergang von CPU-Eigen zu PPU-Eigen hervorrufen. Vor einem derartigen Übergang versucht eine Operation, die in der PPU 202 ausgeführt wird, auf einen Speicher an einer virtuellen Speicheradresse zuzugreifen, die nicht in der PPU-Seitentabelle 208 zugeordnet ist. Dieser Speicherzugriffsversuch ruft einen PPU-basierten Seitenfehler hervor, der dann bewirkt, dass ein Fehlerpuffereintrag in dem Fehlerpuffer 216 beschrieben wird. In Reaktion darauf liest die PPU-Fehlerbehandlungseinheit 215 den Eintrag des PSD 210, der der virtuellen Speicheradresse entspricht, aus und ermittelt die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist. Nach dem Auslesen des PSD 210 ermittelt die PPU-Fehlerbehandlungseinheit 215, dass der aktuelle Besitzzustand für die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist, CPU-Eigen ist. Auf der Grundlage des aktuellen Besitzzustands sowie anderer Faktoren, etwa von Verwendungseigenschaften für die Seite oder die Art Speicherzugriffs, ermittelt die PPU-Fehlerbehandlungseinheit 215, dass ein neuer Besitzzustand für die Seite PPU-Eigen ist.
  • Die PPUs 202 schreibt einen Fehlerpuffereintrag in den Fehlerpuffer 216, der angibt, dass die PPU 202 einen Seitenfehler erzeugt hat, und der die virtuelle Speicheradresse angibt, die mit dem Seitenfehler verknüpft ist. Die PPU-Fehlerbehandlungseinheit 215, die in der CPU 102 ausgeführt wird, liest den Fehlerpuffereintrag aus und darauf reagierend entfernt die CPU 102 die Zuordnung in der CPU-Seitentabelle 206, die mit der virtuellen Speicheradresse verknüpft ist, die den Seitenfehler hervorgerufen hat. Die CPU 102 kann vor und/oder nach der Entfernung der Zuordnung die Cache-Speicher leeren. Die CPU 102 kann ferner Befehle in die Befehlswarteschlange 214 scheiben, die die PPU 202 anweisen, die Speicherseite von dem Systemspeicher 104 in den PPU-Speicher 204 zu kopieren. Die Kopiereinheit 212 in der PPU 202 liest die Befehle in der Befehlswarteschlange 214 aus und kopiert die Seite aus dem Systemspeicher 104 in den PPU-Speicher 204. Die PPU 202 schreibt einen Seitentabelleneintrag in die PPU-Seitentabelle 208, der der virtuellen Speicheradresse entspricht und der die virtuelle Speicheradresse mit der neu kopierten Speicherseite in dem PPU-Speicher 204 verknüpft. Das Schreiben in die PPU-Seitentabelle 208 kann mittels der Kopiereinheit 212 erfolgen. Alternativ kann die CPU 102 die PPU-Seitentabelle 208 aktualisieren. Die PPU-Fehlerbehandlungseinheit 215 modifiziert ebenfalls den Eintrag des PSD 210 für diese Speicherseite, um anzugeben, dass der Besitzzustand PPU-Eigen ist. In einigen Ausführungsformen können die Einträge in TLB in der PPU 202 oder der CPU 102 als ungültig gesetzt werden, um dem Fall Rechnung zu tragen, in welchem die Translationen zwischengespeichert wurden. An diesem Punkt ist die Seitenfehlersequenz abgeschlossen. Der Besitzzustand für die Speicherseite ist PPU-Eigen, was bedeutet, dass auf die Speicherseite nur durch die PPU 202 zugegriffen werden kann. Nur die PPU-Seitentabelle 208 enthält einen Eintrag, der die virtuelle Speicheradresse mit der Speicherseite verknüpft.
  • Ein Fehler durch die CPU 102 kann einen Übergang von PPU-Eigen zu CPU-Eigen in Gang setzen. Vor einem derartigen Übergang versucht eine Operation, die in der CPU 102 ausgeführt wird, einen Speicherzugriff auf eine virtuelle Speicheradresse, die in der CPU-Seitentabelle 206 nicht zugeordnet ist, wodurch ein CPU-basierter Seitenfehler hervorgerufen wird. Die CPU-Fehlerbehandlungseinheit 211 liest den Eintrag des PSD 210, der der virtuellen Speicheradresse entspricht, aus und ermittelt die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist. Nach dem Auslesen des PSD 210 ermittelt die CPU-Fehlerbehandlungseinheit 211, dass der aktuelle Besitzzustand für die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist, PPU-Eigen ist. Auf der Grundlage des aktuellen Besitzzustands sowie anderer Faktoren, etwa von Verwendungseigenschaften für die Seite oder die Art des Zugriffes, ermittelt die CPU-Fehlerbehandlungseinheit 211, dass ein neuer Besitzzustand für die Seite CPU-Eigen ist.
  • Die CPU-Fehlerbehandlungseinheit 211 ändert den Besitzzustand, der zu der Speicherseite gehört, auf CPU-Eigen. Die CPU-Fehlerbehandlungseinheit 211 schreibt einen Befehl in die Befehlswarteschlange 214, um die Kopiereinheit 212 zu veranlassen, den Eintrag aus der PPU-Seitentabelle 208 zu entfernen, der die virtuelle Speicheradresse mit der Speicherseite verknüpft. Es können diverse TLB-Einträge ungültig gemacht werden. Die CPU-Fehlerbehandlungseinheit 211 kopiert ferner die Speicherseite aus dem PPU-Speicher 204 in den Systemspeicher 104, was mittels der Befehlswarteschlange 214 und der Kopiereinheit 212 bewerkstelligt werden kann. Die CPU-Fehlerbehandlungseinheit 211 schreibt einen Seitentabelleneintrag in die CPU-Seitentabelle 206, der die virtuelle Speicheradresse mit der Speicherseite verknüpft, die in den Systemspeicher 104 kopiert wird. Die CPU-Fehlerbehandlungseinheit 211 aktualisiert ferner das PSD 210, um die virtuelle Speicheradresse mit der neu kopierten Speicherseite zu verknüpfen. An diesem Punkt ist die Seitenfehlersequenz abgeschlossen. Der Besitzzustand für die Speicherseite ist CPU-Eigen, was bedeutet, dass auf die Speicherseite nur die CPU 102 zugreifen kann. Nur die CPU-Seitentabelle 206 enthält einen Eintrag, der die virtuelle Speicheradresse mit der Speicherseite verknüpft.
  • Ein Fehler durch die CPU 102 kann einen Übergang von PPU-Eigen zu CPU-gemeinsam hervorrufen. Vor einem derartigen Übergang versucht eine Operation, die in der CPU 102 ausgeführt wird, auf einen Speicher an einer virtuellen Speicheradresse zuzugreifen, die nicht in der CPU-Seitentabelle 206 zugeordnet ist, wodurch ein CPU-basierter Seitenfehler hervorgerufen wird. Die CPU-Fehlerbehandlungseinheit 211 liest den Eintrag des PSD 210 aus, der der virtuellen Speicheradresse entspricht, und ermittelt die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist. Nach dem Auslesen des PSD 210 ermittelt die CPU-Fehlerbehandlungseinheit 211, dass der aktuelle Besitzzustand für die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist, PPU-Eigen ist. Auf der Grundlage des aktuellen Besitzzustands oder der Art des Zugriffes sowie anderer Faktoren, etwa Verwendungseigenschaften für die Seite, ermittelt die CPU-Fehlerbehandlungseinheit 211, dass ein neuer Besitzzustand für die Speicherseite CPU-gemeinsam ist.
  • Die CPU-Fehlerbehandlungseinheit 211 ändert den Besitzzustand, der zu der Speicherseite gehört, auf CPU-gemeinsam. Die CPU-Fehlerbehandlungseinheit 211 schreibt einen Befehl in die Befehlswarteschlange 214, um die Kopiereinheit 212 zu veranlassen, den Eintrag aus der PPU-Seitentabelle 208 zu entfernen, der die virtuelle Speicheradresse mit der Speicherseite verknüpft. Es können diverse TLB-Einträge als ungültig gesetzt werden. Die CPU-Fehlerbehandlungseinheit 211 kopiert ferner die Speicherseite aus dem PPU-Speicher 204 in den Systemspeicher 104. Diese Kopieroperation kann mittels der Befehlswarteschlange 214 und der Kopiereinheit 212 durchgeführt werden. Die CPU-Fehlerbehandlungseinheit 211 schreibt dann einen Befehl in die Befehlswarteschlange 214, um die Kopiereinheit 212 zu veranlassen, den Eintrag in der PPU-Seitentabelle 208 so zu ändern, dass die virtuelle Speicheradresse mit der Speicherseite in dem Systemspeicher 104 verknüpft wird. Es können diverse TLB-Einträge ungültig gesetzt werden. Die CPU-Fehlerbehandlungseinheit 211 schreibt einen Seitentabelleneintrag in die CPU-Seitentabelle 206, um die virtuelle Speicheradresse mit der Speicherseite in dem Systemspeicher 104 zu verknüpfen. Die CPU-Fehlerbehandlungseinheit 211 aktualisiert auch das PSD 210, um die virtuelle Speicheradresse mit der Speicherseite in dem Systemspeicher 104 zu verknüpfen. An diesem Punkt ist die Seitenfehlersequenz beendet. Der Besitzzustand für die Seite ist CPU-gemeinsam, und die Speicherseite ist in den Systemspeicher 104 kopiert worden. Die CPU 102 kann auf die Seite zugreifen, da die CPU-Seitentabelle 206 einen Eintrag enthält, der die virtuelle Speicheradresse mit der Speicherseite in dem Systemspeicher 104 verknüpft. Die Seite ist auch für die PPU 202 ansprechbar, da die PPU-Seitentabelle 208 einen Eintrag enthält, der die virtuelle Speicheradresse mit der Speicherseite in dem Systemspeicher 104 verknüpft.
  • Detailliertes Beispiel einer Seitenfehlersequenz
  • In diesem Zusammenhang wird nun eine detaillierte Beschreibung einer Seitenfehlersequenz, die von der PPU-Fehlerbehandlungseinheit 215 in dem Falle eines Übergangs von CPU-Eigen zu CPU-gemeinsam ausgeführt wird, nunmehr bereitgestellt, um zu zeigen, wie atomare bzw. unteilbare Operationen und Übergangszustände verwendet werden können, um eine Seitenfehlersequenz effektiver zu verwalten. Die Seitenfehlersequenz wird von einem Strang in der PPU 202 ausgelöst, der versucht, auf eine virtuelle Adresse zu zugreifen, für die eine Zuordnung in der PPU-Seitentabelle 208 nicht existiert. Wenn ein Strang versucht, auf Daten über eine virtuelle Speicheradresse zuzugreifen, fordert die PPU 202 (insbesondere ein Strang auf Anwenderebene) eine Übersetzung aus der PPU-Seitentabelle 208 an. In Reaktion darauf tritt ein PPU-Seitenfehler auf, da die PPU-Seitentabelle 208 keine Zuordnung, die mit der angeforderten virtuellen Speicheradresse verknüpft ist, enthält.
  • Nach dem Auftreten des Seitenfehlers tritt der Strang in einen Einfangzustand ein, hält an und die PPU-Fehlerbehandlungseinheit 215 führt eine Seitenfehlersequenz aus. Die PPU-Fehlerbehandlungseinheit 215 liest das PSD 210 aus, um zu ermitteln, welche Speicherseite mit der virtuellen Speicheradresse verknüpft ist, und den Zustand für die virtuelle Speicheradresse zu ermitteln. Die PPU-Fehlerbehandlungseinheit 215 ermittelt aus dem PSD 210, dass der Besitzzustand für diese Speicherseite CPU-Eigen ist. Folglich kann auf die von der PPU 202 angeforderten Daten durch die CPU 202 über eine virtuelle Speicheradresse nicht zugegriffen werden. Eine Zustandsinformation für die Speicherseite gibt ferner an, dass die angeforderten Daten nicht in den PPU-Speicher 204 verschoben werden können.
  • Auf der Grundlage der Zustandsinformation, die aus dem PSD 210 erhalten wird, ermittelt die PPU-Fehlerbehandlungseinheit 215, dass ein neuer Zustand für die Speicherseite CPU-gemeinsam sein sollte. Die PPU-Fehlerbehandlungseinheit 215 ändert den Zustand auf „Übergang zu CPU-gemeinsam“. Dieser Zustand gibt an, dass die Seite aktuell im Prozess des Übergangs zu CPU-gemeinsam ist. Wenn die PPU-Fehlerbehandlungseinheit 215 in einer Mikrosteuerung in der Speicherverwaltungseinheit ausgeführt wird, dann aktualisieren zwei Prozessoren das PSD 210 in asynchroner Weise, wobei atomare vergleichen-und-austauschen („CAS“) Operationen an dem PSD 210 angewendet werden, um den Zustand auf „Übergang zu GPU-sichtbar“ (CPU-gemeinsam) zu ändern.
  • Die PPU 202 aktualisiert die PPU-Seitentabelle 208, um die virtuelle Adresse mit der Speicherseite zu verknüpfen. Die PPU 202 setzt ferner die TLB-Cache-Speichereinträge auf ungültig. Als nächstes führt die PPU 202 eine weitere atomare Vergleichen-und-Austauschen-Operation an dem PSD 210 aus, um den Besitzzustand, der mit der Speicherseite verknüpft ist, auf CPU-gemeinsam zusetzen. Schließlich endet die Seitenfehlerfrequenz und der Strang, der die Daten über die virtuelle Speicheradresse angefordert hat, nimmt die Verarbeitung wieder auf.
  • Fehlerpuffer
  • Die Behebung von Seitenfehlern, die von der CPU 102 erzeugt wurden, beinhaltet nicht den Fehlerpuffer 216. Jedoch die Behebung von Seitenfehlern, die von der PPU MMU 213 erzeugt wurden, betreffen den Fehlerpuffer 216. Die Rolle des Fehlerpuffers 216 bei der Behebung von Seitenfehlern, die von der PPU MMU 213 erzeugt wurden, ist nachfolgend detaillierter mit Bezug zu den 5 und 6 beschrieben.
  • 5 zeigt ein virtuelles Speichersystem 500 zur Speicherung von Fehlern in einem Fehlerpuffer gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt, umfasst das virtuelle Speichersystem 500 eine PPU-Fehlerbehandlungseinheit 215, einen Fehlerpuffer 216 und eine PPU 202 mit mehreren Datenstrom-Multiprozessoren 504.
  • Der Fehlerpuffer 216 speichert Fehlerpuffereinträge 502, die Information angeben, die mit Seitenfehlern in Beziehung steht, die von der PPU 202 erzeugt wurden. Die Fehlerpuffereinträge 502 können beispielsweise die Art des Zugriffs, der versucht wurde (beispielsweise lesen, schreiben oder atomar), die virtuelle Speicheradresse, für die ein versuchter Zugriff einen Seitenfehler hervorrief, den virtuellen Adressenraum und eine Angabe einer Anhaltung eines Strangs, der einen Seitenfehlern hervorgerufen hat, enthalten. Wenn während des Betriebs die PPU 202 einen Seitenfehler hervorruft, kann die PPU 202 einen Fehlerpuffereintrag 502 in den Fehlerpuffer 216 schreiben, um die PPU-Fehlerbehandlungseinheit 215 über die fehlererzeugende Speicherseite und die Art des Zugriffs, die den Fehler hervorrief, zu informieren. Die PPU-Fehlerbehandlungseinheit 215 führt dann Aktionen aus, um den Seitenfehler zu beheben. Der Fehlerpuffer 216 kann mehrere Fehler speichern, da die PPU 202 mehrere Stränge ausführt, wobei jeder Strang einen oder mehrere Fehler aufgrund der Pipeline-Natur der Speicherzugriffe der PPU 202 hervorrufen kann. Jeder der Fehlerpuffereinträge 502 kann von einem oder mehreren Datenstrom-Multiprozessoren 504, die in der PPU 202 enthalten sind, erzeugt werden.
  • 6 zeigt ein virtuelles Speichersystem 600 zur Behebung von Seitenfehlern, die von der PPU 202 erzeugt werden, gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt, umfasst das virtuelle Speichersystem 600 eine PPU-Fehlerbehandlungseinheit 215, einen Fehlerpuffer 216, einen Systemspeicher 104 mit einer Befehlswarteschlange 214, und eine PPU 202 mit einer Kopiereinheit 212.
  • Die PPU-Fehlerbehandlungseinheit 215 liest Fehlerpuffereinträge 502 aus, die in dem Fehlerpuffer 216 gespeichert sind, um zu bestimmen, wie die Seitenfehler aufzulösen sind, die mit den Fehlerpuffereinträgen 502 verknüpft sind. Zur Behebung der Seitenfehler führt die PPU-Fehlerbehandlungseinheit 215 eine Seitenfehlersequenz aus, um unter anderem einen PSD-Eintrag, der mit Speicherseiten verknüpft ist, die den Fehlerpuffereinträgen 502 entsprechen, zu modifizieren, und/oder um Speicherseiten, die mit den Fehlerpuffereinträgen 502 verknüpft sind, zu verschieben. Während einer Seitenfehlersequenz können die CPU 102 oder die PPU 202 Befehle in die Befehlswarteschlange 214 zur Ausführung durch die Kopiereinheit 212 schreiben. Eine derartige Vorgehensweise macht die CPU 102 oder die PPU 202 dafür frei, andere Aufgaben auszuführen, während die Kopiereinheit 212 die Befehle, die in der Befehlswarteschlange 214 gespeichert sind, ausliest und ausführt, ferner ist damit möglich, dass alle Befehle für eine Fehlersequenz gleichzeitig aufgereiht werden, wodurch die Überwachung des Fortschritts der Fehlersequenz vermieden wird. Befehle, die von der Kopiereinheit 212 ausgeführt werden, können unter anderem die Löschung, die Erzeugung oder die Modifizierung von Seitentabelleneinträgen in der PPU-Seitentabelle 208, das Auslesen oder Schreiben von Daten aus dem Systemspeicher 104 und das Auslesen oder Schreiben von Daten in den PPU-Speicher 204 beinhalten.
  • Die CPU 102 und die PPU 202 können separat eine Kontextumschaltung ausführen. Anders ausgedrückt, eine PPU 202 kann einen Fehlerpuffereintrag in den Fehlerpuffer 216 in Reaktion darauf schreiben, dass ein Fehler erkannt wird. Dieser Fehlerpuffer wird gegebenenfalls nicht sofort von der PPU-Fehlerbehandlungseinheit 215 in der CPU abgearbeitet. Stattdessen kann die CPU 102 andere Verarbeitungsaufgaben ausführen und kann dann die PPU-Fehler behandlen. Daher arbeiten die CPU 102 und die PPU 202 gegebenenfalls nicht notwendigerweise gleichzeitig im gleichen Kontext. Anders ausgedrückt, die CPU 102 kann einen Prozess ausführen, der sich von dem Prozess unterscheidet, der die Arbeit erzeugte, die aktuell in der PPU 202 ausgeführt wird. Um die PPU-Fehlerbehandlungseinheit 215 darüber zu informieren, welcher Prozess zu der Arbeit der PPU 202 gehört, die einen Fehlerpuffereintrag 502 erzeugt hat, stellt die PPU 202 einen Instanzenzeiger mit dem Fehlerpuffereintrag bereit, um die CPU 102 über den Adressenraum zu informieren, in welchem die PPU 202 den Fehler erzeugt hat. Der Fehlerpuffer 216 kann mehrere Seitenfehlereinträge enthalten, die mit der gleichen Speicherseite verknüpft sind, da mehrere Datenstrom-Multiprozessoren 504 parallel ausgeführt werden und Seitenfehler erzeugen können, die die gleiche Speicherseite betreffen. Die PPU-Fehlerbehandlungseinheit 215 untersucht den Fehlerpuffer 216, um zu bestimmen, welche Fehler zu beheben sind.
  • Variationen der UVM-Systemarchitektur
  • Es sind diverse Modifizierungen an dem vereinheitlichten virtuellen Speichersystem 200 möglich. Beispielsweise kann in einigen Ausführungsformen nach dem Schreiben eines Fehlerpuffereintrags in den Fehlerpuffer 216 die PPU 202 einen CPU-Interrupt auslösen, um die CPU 102 zu veranlassen, Fehlerpuffereinträge in dem Fehlerpuffer 216 auszulesen und jegliche Operationen auszuführen, die in Reaktion auf den Fehlerpuffereintrag geeignet sind. In anderen Ausführungsformen kann die CPU 102 periodisch den Fehlerpuffer 216 abfragen. Im Falle, dass die CPU 102 einen Fehlerpuffereintrag in dem Fehlerpuffer 216 findet, führt die CPU 102 eine Reihe von Operationen in Reaktion auf den Fehlerpuffereintrag aus.
  • In einigen Ausführungsformen speichert der Systemspeicher 104 anstelle des PPU-Speichers 204 die PPU-Seitentabelle 208. In anderen Ausführungsformen kann eine Cache-Hierarchie mit einer oder mehreren Ebenen, etwa eine Hierarchie mit einer einzelnen oder mehreren Ebenen an Translations-Nebenschaupuffern (TLB) (nicht gezeigt) realisiert werden, um virtuelle Speicherübersetzungen für die CPU-Seitentabelle 206 oder die PPU-Seitentabelle 208 zu speichern.
  • In noch anderen Ausführungsformen kann in dem Falle, dass ein Strang, der in der PPU 202 ausgeführt wird, einen PPU-Fehler hervorruft (ein „fehlererzeugender Strang“) die PPU 202 eine oder mehrere Aktionen durchführen. Diese Aktionen enthalten: Anhalten der gesamten PPU 202, Anhalten des SM, der den fehlererzeugenden Strang ausführt, Anhalten der PPU MMU 213, Anhalten lediglich des fehlererzeugenden Strangs, Anhalten einer Gruppe an Strängen, die den fehlererzeugenden Strang enthält, oder Anhalten einer oder mehrerer Ebenen von TLB. In einigen Ausführungsformen geht, nachdem ein PPU-Seitenfehler auftrat, und eine Seitenfehlersequenz von dem vereinheitlichten virtuellen Speichersystem 200 ausgeführt ist, die Ausführung des fehlererzeugenden Strangs weiter, und der fehlererzeugenden Strang versucht wieder, die Speicherzugriffsanforderung auszuführen, die den Seitenfehler hervorrief. In einigen Ausführungsformen wird das Anhalten eines TLB so ausgeführt, dass dieses als ein Speicherzugriff mit langer Verarbeitungszeit für den fehlererzeugenden SM oder den fehlererzeugenden Strang erscheint, so dass der SM keine spezielle Operation für den Fehler ausführen muss.
  • Schließlich kann in anderen alternativen Ausführungsformen der UVM-Treiber 101 Befehle enthalten, die die CPU 102 veranlassen, eine oder mehrere Operationen zur Verwaltung des UVM-Systems 200 und zur Behebung eines Seitenfehlers auszuführen, etwa Zugreifen auf die CPU-Seitentabelle 206, das PSD 210 und/oder den Fehlerpuffer 216. In anderen Ausführungsformen kann ein Betriebssystem-Kernel (nicht gezeigt) ausgebildet sein, das UVM-System 200 zu verwalten und einen Seitenfehler zu beheben, indem auf die CPU-Seitentabelle 206, das PSD 210 und/oder den Fehlerpuffer 216 zugegriffen wird. In noch anderen Ausführungsformen kann ein Betriebssystem-Kernel in Verbindung mit dem UVM-Treiber 101 arbeiten, um das UVM-System 200 zu verwalten und einen Seitenfehler zu beheben, indem auf die CPU-Seitentabelle 206, das PSD 210 und/oder den Fehlerpuffer 21 zugegriffen wird.
  • 7 zeigt ein Flussdiagramm von Verfahrensschritten zur Verwaltung von Zuordnungen von virtuellem Speicher zu physikalischem Speicher mittels eines Seitenzustandsverzeichnisses gemäß einer Ausführungsform der vorliegenden Erfindung. Obwohl die Verfahrensschritte in Verbindung mit den 1-6 beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Ausführung der Verfahrensschritte in beliebiger Reihenfolge geeignet ist, innerhalb des Schutzbereichs der vorliegenden Erfindung liegt.
  • Wie gezeigt, beginnt das Verfahren 700 beim Schritt 702, in welchem eine PPU 202 eine erste Operation ausführt, die eine erste virtuelle Speicheradresse anspricht. Im Schritt 704 liest die PPU MMU 213 die PPU-Seitentabelle 208 aus und ermittelt, dass die PPU-Seitentabelle 208 keine Zuordnung, die mit der ersten virtuellen Speicherpreise verknüpft ist, enthält. Die PPU MMU 213 erzeugt einen ersten Seitenfehler, wenn diese Ermittelung vorgenommen wird. Im Schritt 706 behebt die PPU-Fehlerbehandlungseinheit 215 Seitenfehler und fügt Befehle in der Befehlswarteschlange 214 ein, die Kopiereinheit 212 in der PPU 202 liest die Befehlswarteschlange 214 aus, um eine Zuordnung zu ermitteln, die der ersten virtuellen Speicheradresse entspricht. Im Schritt 708 aktualisiert die Kopiereinheit 212 die PPU-Seitentabelle 208, so dass sie die Zuordnung enthält.
  • 8 gibt ein Flussdiagramm von Verfahrensschritten zur Verfolgung von Seitenfehlern gemäß einer Ausführungsform der vorliegenden Erfindung an. Obwohl die Verfahrensschritte in Verbindung mit den 1-6 beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Ausführung der Verfahrensschritte in beliebiger Reihenfolge geeignet ist, innerhalb des Schutzbereichs der vorliegenden Erfindung liegt.
  • Wie gezeigt, beginnt das Verfahren 800 im Schritt 802, in welchem eine PPU 202 einen ersten Befehl ausführt, der mit einer ersten virtuellen Speicheradresse verknüpft ist. Im Schritt 804 ermittelt die PPU MMU 213, dass die PPU-Seitentabelle 208 eine erste Zuordnung, die mit der ersten virtuellen Speicheradresse verknüpft ist, nicht enthält. Im Schritt 805 wird der Datenstrom-Multiprozessor 504 oder eine andere Einheit, die den ersten Befehl ausführt, angehalten. Im Schritt 806 sendet die PPU 202 einen ersten Seitenfehler zu dem Fehlerpuffer 216.
  • 9 gibt ein Flussdiagramm von Verfahrensschritten zur Behebung von Seitenfehlern mit einem Fehlerpuffer gemäß einer Ausführungsform der vorliegenden Erfindung an. Obwohl die Verfahrensschritte in Verbindung mit den 1-6 beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Ausführung der Verfahrensschritte in beliebiger Reihenfolge ausgebildet ist, innerhalb des Schutzbereichs der vorliegenden Erfindung liegt.
  • Wie gezeigt, beginnt das Verfahren 900 in einem Schritt 902, in welchem ein Fehlerpuffer 216 mehrere Fehlerpuffereinträge speichert. Im Schritt 904 liest eine PPU-Fehlerbehandlungseinheit 215 die Fehlerpuffereinträge aus, um die Fehlerpuffereinträge zu behandeln. Im Schritt 906 ermittelt die PPU-Fehlerbehandlungseinheit 215, welche Schritte auszuführen sind, um den Fehlerpuffer zu behandeln, und löst eine Seitenfehlersequenz aus, um einen oder mehrere Seitenfehler, die mit den Fehlerpuffereinträgen verknüpft sind, zu beheben. Im Schritt 908 sendet die PPU-Fehlerbehandlungseinheit 215 Befehle an eine Befehlswarteschlange 214, um die PPU-Seitentabelle 208 zu aktualisieren. Im Schritt 910 fahren der Datenstrom-Multiprozessoren 504 oder eine andere Einheit, die angehalten war, mit der Ausführung fort.
  • 10 zeigt ein Flussdiagramm von Verfahrensschritten zur Erzeugung und zur Verwaltung von gemeinsamen Zeigern in einer virtuellen Speicherarchitektur gemäß einer Ausführungsform der vorliegenden Erfindung. Obwohl die Verfahrensschritte in Verbindung mit den 1-6 beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Ausführung der Verfahrensschritte in beliebiger Reihenfolge geeignet ist, innerhalb des Schutzbereichs der vorliegenden Erfindung liegt.
  • Wie gezeigt, beginnt das Verfahren 1000 im Schritt 1002, in welchem der UVM-Treiber 101 einen ersten Eintrag für ein Speicherzustandverzeichnis speichert, der eine Zuordnung zwischen einer ersten virtuellen Speicheradresse und einer ersten physikalischen Speicheradresse enthält. Im Schritt 1004 übersetzt die CPU MMU 209 oder die PPU MMU 213 die erste virtuelle Speicheradresse in die erste physikalische Adresse auf der Grundlage des ersten Seitenzustandsverzeichnisses. Im Schritt 1005 wird eine Speicherseite, die mit der ersten virtuellen Adresse verknüpft ist, kopiert oder verschoben. Im Schritt 1006 speichert der UVM-Treiber 101 einen zweiten Eintrag des Seitenzustandsverzeichnisses (oder modifiziert alternativ den ersten Eintrag des Seitenzustandsverzeichnisses), der eine Zuordnung zwischen der ersten virtuellen Speicheradresse und einer zweiten physikalischen Speicheradresse enthält. Dieser zweite Eintrag des Zustandverzeichnisses wird in Reaktion auf die Modifizierung des Zustands der Speicherseite gespeichert, die mit dem ersten Eintrag des Seitenzustandsverzeichnisses verknüpft ist. Beispielsweise kann die Speicherseite von einer Speichereinheit zu einer weiteren verschoben werden, oder kann von einer Speichereinheit in eine andere kopiert werden. Im Schritt 1008 übersetzt die CPU MMU 209 oder die PPU MMU 213 die erste virtuelle Speicheradresse in die zweite physikalische Speicheradresse auf der Grundlage des zweiten Eintrags des Seitenzustandsverzeichnisses.
  • 11 gibt ein Flussdiagramm von Verfahrensschritten zur Verwaltung des Besitzzustands in einem virtuellen Speichersubsystem gemäß einer Ausführungsform der vorliegenden Erfindung an. Obwohl die Verfahrensschritte in Verbindung mit den 1 - 6 beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Ausführung der Verfahrensschritte in beliebiger Reihenfolge ausgebildet ist, innerhalb des Schutzbereichs der vorliegenden Erfindung liegt.
  • Wie gezeigt, beginnt das Verfahren 1100 im Schritt 1102, in welchem die CPU MMU 209 oder die PPU MMU 213 einen Seitenfehler in Reaktion auf eine Speicherzugriffsanforderung der CPU 102 oder der PPU 202 ausgibt. Im Schritt 1104 ermittelt die CPU-Fehlerbehandlungseinheit 211 oder die PPU-Fehlerbehandlungseinheit 215 einen Eintrag in einem Seitenzustandsverzeichnis 210, der einer Speicherseite entspricht, die mit der virtuellen Speicheradresse verknüpft ist. Im Schritt 1107 wird der Besitzzustand der Speicherseite in dem Seitenzustandsverzeichnis 210 modifiziert und die Speicherseite wird bei Bedarf verschoben. Im Schritt 1106 liest die CPU-Fehlerbehandlungseinheit 211 oder die PPU-Fehlerbehandlungseinheit 215 einen Besitzzustand, der mit der Speicherseite verknüpft ist, aus dem Eintrag in dem Seitenzustandsverzeichnis 210 aus. Im Schritt 1108 aktualisiert die CPU-Fehlerbehandlungseinheit 211 oder die PPU-Fehlerbehandlungseinheit 115 die lokale Seitentabelle derart, dass diese einen Eintrag enthält, der der virtuellen Speicheradresse entspricht, und die virtuelle Speicheradresse mit der Speicherseite verknüpft.
  • Zusammengefasst gilt: es ist ein vereinheitlichtes virtuelles Speichersystem bereitgestellt, das Speicher in gemeinsamer Weise für eine CPU und eine oder mehrere PPUs verwaltet. Das vereinheitlichte virtuelle Speichersystem umfasst ein Seitenzustandsverzeichnis, das Zuordnungen speichert, die in einer Seitentabelle, die zu der CPU gehört, und einer Seitentabelle, die zu der PPU gehört, enthalten sind. Wenn eine PPU oder die CPU einen Seitenfehler auslöst, ist das Seitenzustandsverzeichnis verfügbar, um den Zustand von Speicherseiten, die mit dem Seitenfehler verknüpft sind, bereitzustellen. Wenn ferner eine PPU einen Seitenfehler auslöst, sendet die PPU einen Seitenfehler zu einem Fehlerpuffer. Die PPU-Fehlerbehandlungseinheit untersucht den Inhalt des Fehlerpuffers, um die Seitenfehler zu beheben. Die Bereitstellung eines Fehlerpuffers erlaubt es der PPU-Fehlerbehandlungseinheit, Seitenfehler, die von der PPU ausgeführt werden, „zu vereinigen“. Desweiteren verwaltet ein vereinheitlichter virtueller Speicher-Treiber das Seitenzustandsverzeichnis und zugehörige virtuelle Speicheradressen derart, dass virtuelle Speicheradressen gemeinsam sind für die CPU und die PPU. Schließlich realisiert der vereinheitlichte virtuelle Speicher-Treiber ein Migrationsschema bzw. ein Verschiebungsschema, das Speicherseiten auf der Grundlage einer Nutzung durch die CPU und PPU verschiebt.
  • Ein Vorteil der offenbarten Vorgehensweise besteht darin, dass Anwendungen auf Anwenderebene nicht mehrere Zeiger verfolgen müssen, abhängig davon, wo spezielle Datenelemente gespeichert sind. Ein weiterer Vorteil besteht darin, dass Speicherseiten zwischen Speichereinheiten auf der Grundlage der Verwendung verschoben werden, was es möglich macht, dass Speicherseiten lokal für Einheiten angeordnet werden, die auf die Speicherseiten häufiger zugreifen. Ein weiterer Vorteil besteht darin, dass ein Fehlerpuffer bereitgestellt wird, der es möglich macht, dass von der PPU erzeugte Fehler für eine effiziente Behandlung vereinigt werden.
  • Eine Ausführungsform der Erfindung kann als ein Programmprodukt zur Verwendung in einem Computersystem realisiert werden. Das bzw. die Programme des Programmprodukts definieren Funktionen der Ausführungsformen (einschließlich der hierin beschriebenen Verfahren) und können in einer Vielzahl von computerlesbaren Speichermedien enthalten sein. Zu anschaulichen computerlesbaren Speichermedien gehören, ohne Einschränkung: (i) nichtbeschreibbare Speichermedien (beispielsweise Nur-Lese-Speichereinrichtungen in einem Computer, etwa CD-ROM-Disketten, die von einem CD-ROM-Laufwerk lesbar sind, Flash-Speicher, ROM-Chips oder eine andere Art eines nicht flüchtigen Halbleiterspeichers), auf welchen Information permanent gespeichert ist; und (ii) beschreibbare Speichermedien (beispielsweise Disketten in einem Diskettenlaufwerk oder ein Festplattenlaufwerk oder eine andere Art eines Halbleiterspeichers mit wahlfreiem Zugriff), auf welchen änderbare Information gespeichert ist.

Claims (10)

  1. Ein System zur Verwaltung von Zuordnungen von virtuellem Speicher zu physikalischem Speicher mittels eines erstem Seitenzustandsverzeichnisses (210), wobei das System umfasst: eine erste Verarbeitungseinheit (102), die ausgebildet ist, eine erste Operation auszuführen, die eine erste virtuelle Speicheradresse referenziert; eine erste Speicherverwaltungseinheit (MMU), die mit der ersten Verarbeitungseinheit (102) verbunden und ausgebildet ist, einen ersten Seitenfehler zu erzeugen, wenn ermittelt wird, dass eine erste Seitentabelle (206), die in einer zu der ersten Verarbeitungseinheit (102) gehörenden ersten Speichereinheit (104) gespeichert ist, eine Zuordnung, die der ersten virtuellen Speicheradresse entspricht, nicht enthält; und eine erste Kopiereinheit, die mit der ersten Verarbeitungseinheit verbunden und ausgebildet ist, um: eine erste Speicherseite aus einer zweiten Speichereinheit (204), die mit einer zweiten Verarbeitungseinheit (202) verknüpft ist, in die erste Speichereinheit (104) zu migrieren, wobei die erste Verarbeitungseinheit (102) eine zentrale Verarbeitungseinheit und die zweite Verarbeitungseinheit (202) eine Parallelverarbeitungseinheit ist, wobei das Seitenzustandsverzeichnis (210) eine Zuordnung von virtuellen Speicheradressen zu realen Speicheradressen für Speicherseiten in der ersten Speichereinheit (104) und für Speicherseiten in der zweiten Speichereinheit (204) enthält, wobei ein erster Eintrag in dem Seitenzustandsverzeichnis eine Zuordnung der ersten virtuellen Speicheradresse zu einer ersten physikalischen Adresse aufweist, die mit der ersten Speicherseite verbunden ist.
  2. Das System nach Anspruch 1, wobei das erste Seitenzustandsverzeichnis (210) einen ersten Eintrag aufweist, der eine erste Zuordnung enthält, und wobei das erste Seitenzustandsverzeichnis (210) ferner enthält: eine erste Gruppe an Einträgen, die den ersten Eintrag umfasst, und eine zweite Gruppe an Einträgen, wobei die erste Seitentabelle mehrere erste Einträge auf der Grundlage der ersten Gruppe an Einträgen enthält, und eine zweite Seitentabelle, die mit der zweiten Verarbeitungseinheit verbunden ist und mehrere zweite Einträge auf der Grundlage der zweiten Gruppe an Einträgen enthält.
  3. Das System nach Anspruch 2, wobei jeder Eintrag, der in den mehreren ersten Einträgen enthalten ist, auf einem anderen Eintrag, der in der ersten Gruppe an Einträgen enthalten ist, beruht, und wobei jeder Eintrag, der in den mehreren zweiten Einträgen enthalten ist, auf einem anderen Eintrag, der in der zweiten Gruppe an Einträgen enthalten ist, beruht.
  4. Das System nach Anspruch 2, wobei der erste Eintrag ferner erste Zustandsdaten enthält, die eine oder mehrere Verarbeitungseinheiten angeben, die in mehreren heterogenen Verarbeitungseinheiten enthalten sind, die Zugriff zu einer ersten Speicherseite, die mit der ersten Zuordnung verknüpft ist, haben, und wobei die erste Verarbeitungseinheit (102) und die zweite Verarbeitungseinheit (202) in den mehreren heterogenen Verarbeitungseinheiten enthalten sind.
  5. Das System nach Anspruch 4, wobei der erste Eintrag ferner zweite Zustandsdaten enthält, die einen ersten Migrationszustand, der mit der ersten Speicherseite verknüpft ist, angeben.
  6. Das System nach Anspruch 2, wobei die zweite Verarbeitungseinheit (202) ausgebildet ist, eine zweite Operation auszuführen, die die erste virtuelle Speicheradresse referenziert.
  7. Das System nach Anspruch 6, wobei: der erste Eintrag mit der ersten Verarbeitungseinheit (102) verknüpft ist, das erste Seitenzustandsverzeichnis (210) ferner einen zweiten Eintrag aufweist, der mit der ersten virtuellen Speicheradresse und der zweite Verarbeitungseinheit verknüpft ist, und wobei der zweite Eintrag eine zweite Zuordnung aufweist, die der ersten virtuellen Speicheradresse entspricht, und der erste Eintrag einen weiterleitenden Eintrag enthält, der die zweite Zuordnung referenziert.
  8. Das System nach Anspruch 2, das ferner ein zweites Seitenzustandsverzeichnis umfasst, wobei das erste Seitenzustandsverzeichnis (210) mit einem ersten Prozess und das zweite Seitenzustandsverzeichnis mit einem zweiten Prozess verknüpft ist.
  9. Das System nach Anspruch 8, wobei der erste Eintrag mit einer ersten physikalischen Adresse verknüpft ist, und wobei ein zweiter Eintrag, der in dem Seitenzustandsverzeichnis enthalten ist, ebenfalls mit der ersten physikalischen Adresse verknüpft ist, und wobei der zweite Eintrag eine Verknüpfung zu dem ersten Eintrag umfasst.
  10. Ein Verfahren zur Verwaltung von Zuordnungen von virtuellem Speicher zu physikalischem Speicher mittels eines Seitenzustandsverzeichnisses, wobei das Verfahren umfasst: Ausführen einer ersten Operation, die eine erste virtuelle Speicheradresse referenziert durch eine erste Verarbeitungseinheit (102); Erzeugen eines ersten Seitenfehlers durch eine Speicherverwaltungseinheit, wenn ermittelt wird, dass eine erste Seitentabelle, die in einer ersten mit einer ersten Verarbeitungseinheit (102) verknüpften Speichereinheit (104) gespeichert ist, eine Zuordnung, die der ersten virtuellen Speicheradresse entspricht, nicht enthält; Auslesen einer ersten Befehlswarteschlange durch eine erste Kopiereinheit, um eine erste Speicherseite aus einer zweiten Speichereinheit (204), die mit einer zweiten Verarbeitungseinheit (202) verknüpft ist, in die erste Speichereinheit (104) zu migrieren, wobei die erste Verarbeitungseinheit (102) eine zentrale Verarbeitungseinheit und die zweite Verarbeitungseinheit (202) eine Parallelverarbeitungseinheit ist, wobei das Seitenzustandsverzeichnis eine Zuordnung von virtuellen Speicheradressen zu realen Speicheradressen für Speicherseiten in der ersten Speichereinheit und für Speicherseiten in der zweiten Speichereinheit enthält, wobei ein erster Eintrag in dem Seitenzustandsverzeichnis eine Zuordnung der ersten virtuellen Speicheradresse zu einer ersten physikalischen Adresse aufweist, die mit der ersten Speicherseite verbunden ist.
DE102013022166.8A 2013-03-14 2013-12-29 Seitenzustandsverzeichnis zur verwaltung eines vereinheitlichten virtuellen speichers Active DE102013022166B4 (de)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201361782349P 2013-03-14 2013-03-14
US61/782,349 2013-03-14
US201361800004P 2013-03-15 2013-03-15
US61/800,004 2013-03-15
US14/055,318 US9767036B2 (en) 2013-03-14 2013-10-16 Page state directory for managing unified virtual memory
US14/055,318 2013-10-16

Publications (2)

Publication Number Publication Date
DE102013022166A1 DE102013022166A1 (de) 2014-09-18
DE102013022166B4 true DE102013022166B4 (de) 2024-04-25

Family

ID=51418514

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013022166.8A Active DE102013022166B4 (de) 2013-03-14 2013-12-29 Seitenzustandsverzeichnis zur verwaltung eines vereinheitlichten virtuellen speichers

Country Status (2)

Country Link
CN (1) CN104049904B (de)
DE (1) DE102013022166B4 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10099675B2 (en) 2014-10-27 2018-10-16 GM Global Technology Operations LLC System and method for improving fuel economy and reducing emissions when a vehicle is decelerating
CN111221465B (zh) * 2018-11-23 2023-11-17 中兴通讯股份有限公司 Dsp处理器、系统以及外部存储空间访问方法
CN110442389B (zh) * 2019-08-07 2024-01-09 北京技德系统技术有限公司 一种多桌面环境共享使用gpu的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6286092B1 (en) 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US6961840B2 (en) 2002-09-30 2005-11-01 International Business Machines Corporation Method and apparatus for managing a dynamic alias page table
US20080005546A1 (en) 2006-06-29 2008-01-03 Hong Wang Handling address translations and exceptions of a heterogeneous resource
US20110191539A1 (en) 2010-02-03 2011-08-04 Arm Limited Coprocessor session switching
WO2012032829A1 (ja) 2010-09-08 2012-03-15 三菱重工業株式会社 異常検査装置、中央処理演算装置、及び異常検査方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7073043B2 (en) * 2003-04-28 2006-07-04 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
US8451281B2 (en) * 2009-06-23 2013-05-28 Intel Corporation Shared virtual memory between a host and discrete graphics device in a computing system
CN101916181B (zh) * 2009-08-28 2014-04-23 威盛电子股份有限公司 微处理器及其执行方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6286092B1 (en) 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US6961840B2 (en) 2002-09-30 2005-11-01 International Business Machines Corporation Method and apparatus for managing a dynamic alias page table
US20080005546A1 (en) 2006-06-29 2008-01-03 Hong Wang Handling address translations and exceptions of a heterogeneous resource
US20110191539A1 (en) 2010-02-03 2011-08-04 Arm Limited Coprocessor session switching
WO2012032829A1 (ja) 2010-09-08 2012-03-15 三菱重工業株式会社 異常検査装置、中央処理演算装置、及び異常検査方法

Also Published As

Publication number Publication date
CN104049904B (zh) 2017-07-14
CN104049904A (zh) 2014-09-17
DE102013022166A1 (de) 2014-09-18

Similar Documents

Publication Publication Date Title
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE112017001027B4 (de) Seitenfehlerbehebung
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
US20170249254A9 (en) Common pointers in unified virtual memory system
DE102014014076A1 (de) Reduzierte Adressenkonvertierung mit mehreren Seitengrößen
DE202010017667U1 (de) Datenspeichervorrichtung mit Flash-Speicherchips
DE112010005821T5 (de) Kontextwechsel
DE102020104701B4 (de) System zur Lokalisierung von Cachedaten
DE112019000629B4 (de) Koordination von cacheoperationen
US10423354B2 (en) Selective data copying between memory modules
DE102013205886A1 (de) Dynamische Bankmodus-Adressierung für Speicherzugriff
DE112013002938T5 (de) Übersetzen der Basistabelle von Speichern
DE112019001863T5 (de) Verwenden von spursperren und schrittweitengruppensperren zum verwalten von cacheoperationen
DE102018130165A1 (de) Virtuelle übertragung von daten zwischen memory- und storage-domäne
US20230409486A1 (en) Fault buffer for tracking page faults in unified virtual memory system
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE102018005453A1 (de) Methoden, um Cache-Kohärenz basierend auf Cache-Typ bereitzustellen
DE112018002028T5 (de) Umsetzungsunterstützung für einen virtuellen cache
DE102013022166B4 (de) Seitenzustandsverzeichnis zur verwaltung eines vereinheitlichten virtuellen speichers
DE102022104654A1 (de) Verfahren und einrichtung zum aktivieren eines cache (devpic) zum speichern von prozessspezifischen informationen innerhalb von vorrichtungen, die adressübersetzungsdienst (ats) unterstützen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R002 Refusal decision in examination/registration proceedings
R006 Appeal filed
R008 Case pending at federal patent court
R009 Remittal by federal patent court to dpma for new decision or registration
R016 Response to examination communication
R018 Grant decision by examination section/examining division