DE102013022168B4 - Unified Virtual Storage System Migration Scheme - Google Patents
Unified Virtual Storage System Migration Scheme Download PDFInfo
- Publication number
- DE102013022168B4 DE102013022168B4 DE102013022168.4A DE102013022168A DE102013022168B4 DE 102013022168 B4 DE102013022168 B4 DE 102013022168B4 DE 102013022168 A DE102013022168 A DE 102013022168A DE 102013022168 B4 DE102013022168 B4 DE 102013022168B4
- Authority
- DE
- Germany
- Prior art keywords
- page
- memory
- ppu
- cpu
- virtual
- 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
Links
- 238000013509 system migration Methods 0.000 title 1
- 230000015654 memory Effects 0.000 claims abstract description 554
- 238000000034 method Methods 0.000 claims abstract description 63
- 230000004044 response Effects 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 40
- 238000013507 mapping Methods 0.000 description 35
- 230000008569 process Effects 0.000 description 24
- 230000007704 transition Effects 0.000 description 15
- 238000013519 translation Methods 0.000 description 13
- 230000014616 translation Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 230000005012 migration Effects 0.000 description 5
- 238000013508 migration Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005227 gel permeation chromatography Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Ein computerimplementiertes Verfahren zum Zugreifen auf Daten in einem virtuellen Speichersubsystem, wobei das Verfahren umfasst:Ausgeben eines Seitenfehlers in Reaktion auf eine Speicherzugriffsanforderung, wobei eine lokale Seitentabelle (208) einen Eintrag nicht enthält, der einer virtuellen Speicheradresse entspricht, die in der Speicherzugriffsanforderung enthalten ist;reagierend auf den Seitenfehler, Ausführen einer Seitenfehlersequenz, die beinhaltet:Ermitteln eines Eintrags in einem Seitenzustandsverzeichnis (210), der einer Speicherseite entspricht, die mit der virtuellen Speicheradresse verknüpft ist;Auslesen eines Besitzzustands, der mit der Speicherseite verknüpft ist, aus dem Eintrag in dem Seitenzustandsverzeichnis (210), wobei der Besitzzustand auf Grundlage eines Verwendungsverlaufs der Speicherseite bestimmt wird; undAktualisieren der lokalen Seitentabelle (208) derart, dass sie einen Eintrag enthält, der der virtuellen Speicheradresse entspricht und die virtuelle Speicheradresse mit der Speicherseite verknüpft.A computer-implemented method for accessing data in a virtual memory subsystem, the method comprising: issuing a page fault in response to a memory access request, wherein a local page table (208) does not contain an entry corresponding to a virtual memory address contained in the memory access request ;responsive to the page fault, performing a page fault sequence that includes:locating an entry in a page state table (210) that corresponds to a memory page associated with the virtual memory address;reading an ownership state associated with the memory page from the entry in the page state directory (210), the state of ownership being determined based on a usage history of the memory page; and updating the local page table (208) to include an entry corresponding to the virtual memory address and linking the virtual memory address to the memory page.
Description
HINTERGRUND DER ERFINDUNGBACKGROUND OF THE INVENTION
Gebiet der Erfindungfield of invention
Ausführungsformen der vorliegenden Erfindung betreffen generell einen virtuellen Speicher und insbesondere eine Migrationsschema bzw. Verschiebungsschema für ein vereinheitlichtes virtuelles Speichersystem.Embodiments of the present invention relate generally to virtual memory, and more particularly to a migration scheme for a unified virtual memory system.
Beschreibung des Stands der TechnikDescription of the prior art
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.Most modern computer systems typically implement some type of virtual memory architecture. Among other things, the virtual memory architecture makes it possible to access memory using virtual memory addresses rather than physical memory addresses. By providing this virtual storage layer between physical storage and an application software, the user-level software is shielded from the details of physical storage management that are left to a dedicated storage management system.
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.A typical computer system implementing a virtual memory architecture includes a central processing unit (CPU) and one or more parallel processing units (GPU). In operation, a software process running on a CPU or a GPU may request data through a virtual memory address. In many common architectures, the virtual memory systems that handle requests for data via virtual memory addresses for a CPU and a GPU are independent. In particular, a separate CPU memory management system and a separate GPU memory management system can handle requests for data from the CPU and GPU accordingly.
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. Die
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, etwa einer CPU und einer GPU.As the foregoing indicates, what is needed in this field of technology is a more efficient way to manage virtual memory in a system with heterogeneous processors, such as a CPU and a GPU.
ÜBERBLICK ÜBER DIE ERFINDUNGOVERVIEW OF THE INVENTION
Eine Ausführungsform der vorliegenden Erfindung stellt ein System gemäß Anspruch 10 bereit zur Verwaltung von Zuordnungen von einem virtuellen Speicher zu einem physikalischen Speicher mittels eines Seitenzustandsverzeichnisses. Das System umfasst 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.An embodiment of the present invention provides a system according to claim 10 for managing mappings from virtual memory to physical memory using a page state map. The system includes a first processing unit configured to perform a first operation that references a first virtual memory address. The system further includes a first memory management unit (MMU) coupled to the first processing unit and configured to generate a first memory error upon determining that a first page table stored in a first memory unit coupled to the first processing unit does not Allocation corresponding to the first virtual memory address contains. The system further comprises a first copying unit connected to the data processing unit. The first copy unit is configured to read a first command queue to determine a first mapping associated with the first virtual memory address and contained in a first page state table. The first copy engine is further configured to update the first page table to include the first mapping.
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.An advantage of the disclosed approach is that user-level applications do not need to keep track of multiple pointers depending on where a particular data item is stored. Another advantage is that memory pages are migrated between memory devices based on usage, which allows memory pages to be localized to the devices that access the memory pages more frequently. Another advantage is that an error buffer is provided that allows errors generated by the PPU to be merged for efficient execution.
Figurenlistecharacter list
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, das ein vereinheitlichtes bzw. vereinigtes virtuelles Speichersystem gemäß einer Ausführungsform der vorliegenden Erfindung zeigt; -
3 ist eine Konzeptdarstellung einesSystems 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.
-
1 Figure 12 is a block diagram illustrating a computer system configured to implement one or more aspects of the present invention; -
2 12 is a block diagram showing a unified virtual memory system according to an embodiment of the present invention; -
3 Figure 300 is a conceptual representation of asystem 300 for tracking the state of memory pages according to an embodiment of the present invention; -
4 Fig. 12 is a conceptual diagram of a system realizing a migration operation according to an embodiment of the present invention; -
5 Figure 12 shows a virtual memory system for storing errors in an error buffer according to an embodiment of the present invention; -
6 Figure 12 shows a virtual memory system for resolving page faults generated by the GPU according to an embodiment of the present invention; -
7 Figure 12 provides a flow chart of method steps for managing virtual memory to physical memory mappings using a page state table in accordance with an embodiment of the present invention; -
8th Figure 12 provides a flowchart of method steps for tracking page faults according to an embodiment of the present invention; -
9 Figure 12 provides a flowchart of method steps for resolving page faults in a fault buffer according to an embodiment of the present invention; -
10 Figure 12 provides a flowchart of method steps for creating and managing shared pointers in a virtual memory architecture according to an embodiment of the present invention; and -
11 12 shows a flow diagram of method steps for managing ownership in a virtual storage subsystem according to an embodiment of the present invention.
DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION
Systemüberblicksystem overview
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
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.In one embodiment,
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.Any number of
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.The
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.GPCs contain a number of stream multiprocessors (SM), each SM configured to process one or more thread groups. The set of instructions dispatched to a particular GPC forms a thread, as previously defined herein, and the aggregation of a certain number of concurrently executing threads across the parallel processing units within an SM is referred to herein as a "chain" or " strand group”. As used herein, a "thread group" means a group of threads that are concurrently executing the same program on different input data, with a single thread of the thread group being dedicated to a different processing unit within an SM. Furthermore, several related thread groups can be active simultaneously (in different phases of execution) within an SM. This collection of strand groups is referred to herein as a "cooperative strand array"("CTA") or "strand array".
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.In embodiments of the present invention, it is desirable to use the
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.During operation,
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.In some embodiments,
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.It should be noted that the system shown herein is illustrative in nature and that variations and modifications are possible. The interconnect topology, including the number and placement of bridges, the number of
Vereinheitlichte virtuelle Speichersystem ArchitekturUnified virtual storage system architecture
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.The
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 darauf hin 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.The
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.Similar to
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 some embodiments, the
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 other embodiments, the
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 other embodiments, the
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
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.In some embodiments, CPU page table 206 and PPU page table 208 have different formats and contain different information; for example, PPU page table 208 may include the following while CPU page table 206 does not: an atomic disable bit; compression marks; and memory exchange type.
Ä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.Similar to
SeitenzustandsverzeichnisPage State Directory
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.The page state table 210 is a data structure that stores allocations associated with each memory page in a specific virtual memory address space. To obtain a physical address from the
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.Although page state table 210 may be implemented in any technically feasible manner, in one embodiment page state table 210 includes a multi-level table. Each non-leaf level contains an array of pointers to entries in the next level. Pointers may point to entries in
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.The
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.As described below, multiple virtual memory address spaces can exist. Two different processes executing on
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.When a process associated with a
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.Entries in the
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.The
Die folgende Tabelle zeigt Beispiele von PSD-Einträgen. Jede Zeile zeigt einen unterschiedlichen anschaulichen Eintrag.
Übersetzen virtueller SpeicheradressenTranslation of virtual memory addresses
Es sei zurück auf
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.)To translate a virtual memory address to a physical memory address, the
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.For a given virtual memory address, the CPU page table 206 may or may not contain a mapping between the virtual memory address and a physical memory address. If the CPU page table 206 contains a mapping, then the CPU MMU 290 reads that mapping to determine a physical memory address associated with the virtual memory address and provides that physical memory address to the
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.In the
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.When the
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.As previously explained, the
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 gleich bleiben und auf Speicherseiten 408 verweisen, unabhängig davon, wo die Speicherseiten 408 gespeichert sind.In response to a page fault,
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-Besitzes 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.To determine which operations to perform in a page fault sequence,
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.The
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 diePPU 202 abgebildet ist, die noch nicht vor kurzem verschoben wurde, Aufheben der Zuordnung der fehlererzeugenden Seite für diePPU 202, Verschieben der Seite zu derCPU 102 und Zuordnen der Seite zu derCPU 102; - (b) bei Zugriff der
PPU 202 auf nicht zugeordnete Seite, dieder CPU 102 zugeordnet ist, die nicht vor kurzem verschoben worden ist, Aufheben der Zuordnung der fehlererzeugenden Seite zu derCPU 102, Verschieben der Seite zu derPPU 202 und Zuordnen der Seite zu derPPU 202; - c) bei Zugriff der
CPU 102 auf nicht zugeordnete Seite, dieder PPU 202 zugeordnet ist und die vor kurzem verschoben wurde, Verschieben der fehlererzeugenden Seite zu derCPU 102 und Zuordnen der Seite zu derCPU 102 und derPPU 202; - (d) bei Zugriff der
PPU 202 auf nicht zugeordnete Seite, dieder CPU 102 zugeordnet ist, die vor kurzem verschoben worden ist, Zuordnen der Seite derCPU 102 und derPPU 202; - (d) bei atomaren Zugriff der
PPU 102 auf die Seite, dieder CPU 102 und derPPU 202 zugeordnet ist, die aber für atomare Operationen durch diePPU 202 nicht freigegeben ist, Aufheben der Zuordnung der Seite zu derCPU 102 und Zuordnen zu derPPU 202, wobei atomare Operationen freigegeben sind; - (f) bei Schreibzugriff der
PPU 202 auf Seite, dieder CPU 102 und derPPU 202 als Kopie-bei-Schreiben (COW) zugeordnet ist, Kopieren der Seite indie PPU 202, wodurch unabhängige Kopien der Seite erzeugt werden, Zuordnen der neuen Seite als Lesen-Schreiben in der PPU und Belassen der aktuellen Seiteals der CPU 102 zugeordnet; - (d) bei Lesezugriff der
PPU 202 auf Seite, dieder CPU 102 und derPPU 202 mit Nullen-Auffüllung-auf-Verlangen (ZFOD) zugeordnet ist, Zuweisen einer Seite an physikalischem Speicher inder PPU 202 und Füllen dieser Seite mit Nullen, und Zuordnen dieser Seite der PPU, aber Ändern auf nicht zugeordnet inder 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).
- (a) when the
CPU 102 accesses an unallocated page mapped to thePPU 202 that has not been recently moved, deallocating the error-producing page for thePPU 202, moving the page to theCPU 102, and allocating it the side to theCPU 102; - (b) if the
PPU 202 accesses an unallocated page allocated to theCPU 102 that has not recently been moved, deallocating the error-producing page to theCPU 102, moving the page to thePPU 202, and allocating the page to thePPU 202; - c) if the
CPU 102 accesses an unallocated page that is allocated to thePPU 202 and that has recently been moved, moving the error-producing page to theCPU 102 and allocating the page to theCPU 102 and thePPU 202; - (d) when the
PPU 202 accesses an unallocated page allocated to theCPU 102 that has recently been moved, allocating the page to theCPU 102 and thePPU 202; - (d) if the
PPU 102 atomically accesses the page that is allocated to theCPU 102 and thePPU 202 but is not enabled for atomic operations by thePPU 202, deallocating the page to theCPU 102 and allocating it to thePPU 202 with atomic operations enabled; - (f) upon
PPU 202 write access to page allocated toCPU 102 andPPU 202 as copy-on-write (COW), copying the page toPPU 202, thereby creating independent copies of the page, allocating the new one page allocated as read-write in the PPU and leaving the current page as theCPU 102; - (d) upon
PPU 202 read access to page allocated toCPU 102 andPPU 202 with zero-pad-on-demand (ZFOD), allocating a page of physical memory inPPU 202 and zero-padding that page, and allocating that side of the PPU but changing it to unallocated in theCPU 102. - (h) upon access by a first PPU 202(1) to an unallocated page allocated to a second PPU 202(2) that has not recently been relocated, deallocating the offending page from the second PPU 202( 2) move the page to the first PPU 202(1) and allocate the page to the first PPU 202(1); and
- (i) upon access by a first PPU 202(1) to an unallocated page which is allocated to a second PPU 202(2) and which has not recently been moved, allocating the error-producing page to the first PPU 202(1) and retaining the page's association with the second PPU 202(2).
Insgesamt sind viele heuristischen Regeln möglich, und der Schutzbereich der vorliegenden Erfindung ist nicht auf diese Beispiele beschränkt.Overall, many heuristic rules are possible and the scope of the present invention is not limited to these examples.
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, dieder 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 derPPU 202, Verschieben der Seiten zu derCPU 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, dieder 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 derCPU 102, Verschieben der Seiten zu derPPU 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, dieder 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 derPPU 202, Verschieben der Seiten zu derCPU 102, Zuordnen der Seiten zu derCPU 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, dieder 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 derCPU 102, Verschieben der Seiten zu derPPU 202, Zuordnen der Seiten zu derPPU 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).
- (j) upon
CPU 102 accessing an unallocated page allocated toPPU 202 that has not recently been relocated, deallocating the faulty page, plus other pages adjacent to the faulty page in the virtual address space lying, to thePPU 202, shifting the pages to theCPU 102 and allocating the pages to the CPU 102 (in a more detailed example: for a 4 KB faulty page, shift the aligned 64 KB region containing the 4 KB faulty page contains); - (k) upon
PPU 202 access to an unallocated page that is allocated toCPU 102 and has not recently been moved, deallocating the faulty page plus other pages adjacent to the faulty page in the virtual address space theCPU 102, moving the pages to thePPU 202 and allocating the pages to the PPU 202 (in a more detailed example: for a 4 KB bad page, move the associated 64 KB region containing the 4 KB bad page); - (l) upon
CPU 102 access to an unallocated page that is allocated toPPU 202 and has not recently been relocated, deallocating the faulting page plus other pages adjacent to the faulting page in the virtual address space of thePPU 202, moving the pages to theCPU 102, allocating the pages to theCPU 102, and treating all the moved pages as one or more larger pages in the CPU 102 (in a more detailed example: for a 4 kB bad page, moving the to aligned 64 KB area containing the 4 KB errored page and treating the aligned 64 KB area as a 64 KB page); - (m) when the
PPU 202 accesses an unallocated page that is allocated to theCPU 102 and has not recently been moved, deallocating the fault-producing page plus other pages that are adjacent to the fault-producing page in the virtual address space, to theCPU 102, shifting the pages to thePPU 202, allocating the pages to thePPU 202, and treating all shifted pages as one or more larger pages in the PPU 202 (in a more detailed example: for a 4 KB bad page, shift the aligned 64 KB region thereto containing the 4 KB errored page and treating the aligned 64 KB region as a 64 KB page); - (n) upon access by a first PPU 202(1) to an unallocated page which is allocated to a second PPU 202(2) and which has not recently been moved, deallocating the fault-producing page plus other pages that are adjacent to the faulting page in the virtual address space, to the second PPU 202(2), moving the pages to the first PPU 202(1), and allocating the pages to the first PPU 202(1); and
- (o) upon access by a first PPU 202(1) to an unallocated page that is allocated to a second PPU 202(2) and has recently been moved, allocating the faulting page plus other pages adjacent to the faulting page reside in the virtual address space, to the first PPU 202(1), and maintaining the association of the page with the second 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.Overall, many heuristic rules that include "expansion" are possible, and the scope of the present invention is not limited to these examples.
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.In some embodiments, the PSD entries may contain transition state information to ensure proper synchronization between various requests executed by entities within
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
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
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.As previously indicated, in response to receiving a request for a virtual memory address translation, the
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.The operations performed during a page fault sequence depend on the change in ownership or a change in the access enables, if any, that the memory page associated with the page fault has to perform. Transitioning from a current ownership state to a new ownership state or changing access permissions may be part of the page fault sequence. In some cases, moving the memory page associated with the page fault from
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.A fault by the
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.To change ownership, the
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.A fault by the
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 schreiben, 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.The
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.A fault by the
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.The CPU
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.A fault by the
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.The
Detailliertes Beispiel einer SeitenfehlersequenzDetailed example of a page fault sequence
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.In this regard, a detailed description of a page fault sequence performed by the
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.After the page fault occurs, the thread enters a trap state, stops, and the
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.Based on the state information obtained from the
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.The
Fehlerpuffererror buffer
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
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.The
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.The
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-SystemarchitekturVariations in UVM system architecture
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.Various modifications to the unified
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 some embodiments,
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.In still other embodiments, in the event that a thread executing on
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.Finally, in other alternative embodiments, the
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.As shown,
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.As shown, the
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.As shown, the
Wie gezeigt, beginnt das Verfahren 1000 im Schritt 1002, in welchem der UVM-Treiber 101 einen ersten Eintrag für ein Seitenzustandverzeichnis 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.As shown, the
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.As shown,
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.In summary, a unified virtual memory system is provided that manages memory in a common manner for a CPU and one or more PPUs. The unified virtual memory system includes a page state table that stores mappings contained in a page table associated with the CPU and a page table associated with the PPU. When a PPU or the CPU triggers a page fault, the page state table is available to provide the state of memory pages associated with the page fault. Furthermore, when a PPU triggers a page fault, the PPU sends a page fault to a fault buffer. The PPU error handler examines the contents of the error buffer to fix the page faults. The provision of a fault buffer allows the PPU fault handler to "merge" page faults executed by the PPU. Furthermore, a unified virtual memory driver manages the page state map and associated virtual memory addresses such that virtual memory addresses are common to the CPU and the PPU. Finally, the unified virtual memory driver implements a migration scheme that moves memory pages based on usage by the CPU and PPU.
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.An advantage of the disclosed approach is that user-level applications do not need to keep track of multiple pointers depending on where particular data items are stored. Another advantage is that memory pages are moved between memory devices based on usage, allowing memory pages to be localized to devices that access the memory pages more frequently. Another advantage is that an error buffer is provided, allowing errors generated by the PPU to be pooled for efficient handling.
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.An embodiment of the invention may be implemented as a program product for use in a computer system. The program(s) of the program product define functions of the embodiments (including the methods described herein) and may be embodied on a variety of computer-readable storage media. Illustrative computer-readable storage media include, without limitation: (i) non-writable storage media (e.g., read-only memory devices in a computer, such as CD-ROM disks readable by a CD-ROM drive, flash memory, ROM chips or some other type of non-volatile semiconductor memory) on which information is permanently stored; and (ii) writable storage media (e.g., floppy disks in a floppy disk drive or a hard disk drive or other type of random access semiconductor memory) on which alterable information is stored.
Claims (10)
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,382 | 2013-10-16 | ||
US14/055,382 US10303616B2 (en) | 2013-03-14 | 2013-10-16 | Migration scheme for unified virtual memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102013022168A1 DE102013022168A1 (en) | 2014-09-18 |
DE102013022168B4 true DE102013022168B4 (en) | 2023-03-09 |
Family
ID=51418515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102013022168.4A Active DE102013022168B4 (en) | 2013-03-14 | 2013-12-29 | Unified Virtual Storage System Migration Scheme |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104049903A (en) |
DE (1) | DE102013022168B4 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020226880A1 (en) | 2019-05-03 | 2020-11-12 | University Of Pittsburgh-Of The Commonwealth System Of Higher Education | Method and apparatus for adaptive page migration and pinning for oversubscribed irregular applications |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100321397A1 (en) | 2009-06-23 | 2010-12-23 | Boris Ginzburg | Shared Virtual Memory Between A Host And Discrete Graphics Device In A Computing System |
US20120194524A1 (en) | 2010-12-15 | 2012-08-02 | Advanced Micro Devices, Inc. | Preemptive Context Switching |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6961840B2 (en) * | 2002-09-30 | 2005-11-01 | International Business Machines Corporation | Method and apparatus for managing a dynamic alias page table |
US7073043B2 (en) * | 2003-04-28 | 2006-07-04 | International Business Machines Corporation | Multiprocessor system supporting multiple outstanding TLBI operations per partition |
CN101916181B (en) * | 2009-08-28 | 2014-04-23 | 威盛电子股份有限公司 | Microprocessor and execution method thereof |
-
2013
- 2013-12-29 DE DE102013022168.4A patent/DE102013022168B4/en active Active
- 2013-12-31 CN CN201310752084.XA patent/CN104049903A/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100321397A1 (en) | 2009-06-23 | 2010-12-23 | Boris Ginzburg | Shared Virtual Memory Between A Host And Discrete Graphics Device In A Computing System |
US20120194524A1 (en) | 2010-12-15 | 2012-08-02 | Advanced Micro Devices, Inc. | Preemptive Context Switching |
Also Published As
Publication number | Publication date |
---|---|
DE102013022168A1 (en) | 2014-09-18 |
CN104049903A (en) | 2014-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112018002951B4 (en) | USING A TRACK FORMAT CODE IN A CACHE CONTROL BLOCK FOR A TRACK IN A CACHE TO PROCESS READ AND WRITE REQUESTS REGARDING THE TRACK IN THE CACHE | |
US10031856B2 (en) | Common pointers in unified virtual memory system | |
DE202007019502U1 (en) | Global overflow for virtualized transaction store | |
DE102014014076A1 (en) | Reduced address translation with multiple page sizes | |
DE102010035603A1 (en) | Providing hardware support for shared virtual memory between physical local and remote storage | |
DE102013205886A1 (en) | Dynamic bank mode addressing for memory access | |
DE102012222394A1 (en) | Method and apparatus for collecting buffers of source operands | |
DE102013202173A1 (en) | Uniform load processing for subsets of parallel threads | |
DE112010005821T5 (en) | context switching | |
US10423354B2 (en) | Selective data copying between memory modules | |
US11741015B2 (en) | Fault buffer for tracking page faults in unified virtual memory system | |
DE102013209643A1 (en) | Mechanism for optimized message exchange data transfer between nodelets within a tile | |
DE102018005453A1 (en) | Methods to provide cache coherency based on cache type | |
DE102013022166B4 (en) | PAGE STATE DIRECTORY FOR MANAGING A UNIFIED VIRTUAL STORAGE | |
DE102018204931A1 (en) | Persistent caching of memory-side cache content | |
DE102021102746A1 (en) | READ / WRITE PAGE REPLICATION FOR MULTIPLE COMPUTER UNITS | |
DE102013022168B4 (en) | Unified Virtual Storage System Migration Scheme | |
DE112016007538T5 (en) | TECHNOLOGY FOR REALIZING A BINARY DISCONTINUED NON-VOLATILE MEMORY EXPRESS DRIVER | |
DE102016124749B4 (en) | TLB SHOOTDOWNS FOR LOW OVERHEAD | |
DE102016222041A1 (en) | VOIDING AN IMPLEMENTATION ENTRY IN A MULTITHREAD DATA PROCESSING SYSTEM | |
DE102013021996A1 (en) | Repetition of memory transactions while handling memory access errors | |
DE102013021997A1 (en) | Move pages of different sizes between heterogeneous processors | |
US11561906B2 (en) | Rinsing cache lines from a common memory page to memory | |
DE102022116841A1 (en) | THREAD SYNCHRONIZATION ACROSS STORE SYNCHRONIZATION DOMAINS | |
DE102014117891B4 (en) | By charging failure mechanism |
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 |
|
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |