DE102013021996A1 - Wiederholung von Speichertransaktionen während der Behandlung von Speicherzugriffsfehlern - Google Patents

Wiederholung von Speichertransaktionen während der Behandlung von Speicherzugriffsfehlern Download PDF

Info

Publication number
DE102013021996A1
DE102013021996A1 DE102013021996.5A DE102013021996A DE102013021996A1 DE 102013021996 A1 DE102013021996 A1 DE 102013021996A1 DE 102013021996 A DE102013021996 A DE 102013021996A DE 102013021996 A1 DE102013021996 A1 DE 102013021996A1
Authority
DE
Germany
Prior art keywords
ppu
memory
page
virtual memory
cpu
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.)
Withdrawn
Application number
DE102013021996.5A
Other languages
English (en)
Inventor
James Leroy Deming
Jerome F. Duluk jun.
John Mashey
Mark HAIRGROVE
Lucien DUNNING
Jonathan Stuart Ramsey Evans
Samuel H. Duncan
Cameron Buschardt
Brian Fahs
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/109,678 external-priority patent/US9575892B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013021996A1 publication Critical patent/DE102013021996A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Landscapes

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

Abstract

Eine Ausführungsform der vorliegenden Erfindung ist eine Parallelverarbeitungseinheit (PPU), die einen oder mehrere Datenstrom-Multiprozessoren (SM) enthält und eine Wiederholeinheit pro SM realisiert. Bei Erfassung eines Seitenfehlers, der einhergeht mit einer Speichertransaktion, die von einem speziellen SM ausgegeben wird, veranlasst die entsprechende Wiederholeinheit den SM, jedoch keinen nicht-betroffenen SM, die Ausgabe neuer Speichertransaktionen zu beenden. Die Wiederholeinheit speichert dann die fehlererzeugende Speichertransaktion und jegliche fehlererzeugenden anhängigen Speichertransaktionen in einem Wiederholpuffer. Wenn Speicherfehler behandelt werden, wiederholt die Wiederholeinheit die Speichertransaktionen in dem Wiederholpuffer – wodurch erfolgreiche Speichertransaktionen aus dem Wiederholpuffer entfernt werden – bis alle gespeicherten Speichertransaktionen erfolgreich ausgeführt sind. Vorteilhafterweise wird das Gesamtverhalten der PPU im Vergleich zu konventionellen PPUs verbessert, die bei Erfassung eines Seitenfehlers die Ausführung von Speichertransaktionen für alle SM anhalten, die in der PPU enthalten sind, bis der Fehler behoben ist.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht die Priorität der vorläufigen Patentanmeldung der vereinigten Staaten mit der Seriennummer 61/800004 und der Anwalts-Aktennummer NVDA/SC-12-0565-US0, die am 15. März 2013 eingereicht wurde und die hiermit durch Bezugnahme mit eingeschlossen ist. Diese Anmeldung beansprucht ferner die Priorität der vorläufigen Patentanmeldung der vereinigten Staaten mit der Seriennummer 61/793998 und der Anwalts-Aktennummer NVBA/SC-12-0564-US0, die am 15. März 2013 eingereicht wurde und die hiermit durch Bezugnahme mit eingeschlossen ist.
  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft generell die Computerwissenschaft und insbesondere die Wiederholung von Speichertransaktionen während der Behandlung von Speicherzugriffsfehlern.
  • Beschreibung des Stands der Technik
  • Ein typisches Computersystem umfasst eine zentrale Recheneinheit (CPU) und eine Parallelverarbeitungseinheit (PPU). Wenn Softwareanwendungen in dem Computersystem ausgeführt werden, führen die CPU und die PPU Speicheroperationen aus, um Daten in physikalischen Speicherplätzen zu speichern und daraus abzurufen. Einige fortschrittliche Computersysteme verwenden eine vereinigte bzw. vereinheitlichte virtuelle Speicherarchitektur (UVM), die für die CPU und die PPU gemeinsam ist. Unter anderem ermöglicht die Architektur, dass die CPU und die PPU auf eine physikalische Speicherstelle zugreifen unter Verwendung einer gemeinsamen (beispielsweise derselben) virtuellen Speicheradresse unabhängig davon, ob die physikalische Speicherstelle im Systemspeicher oder im Speicher liegt, der lokal für die PPU ist (PPU-Speicher).
  • Computersysteme beinhalten typischerweise Speicherverwaltungsfunktionen, um Operationen an dem virtuellen Speicher und Speicherseiten zu ermöglichen. Im Verlauf des normalen Betriebs kann ein Befehl Zugriff auf eine virtuelle Adresse anfordern, die mit einer Seite an Daten verknüpft ist, die nicht mehr vorhanden ist, woraus sich ein Zugriffsfehler ergibt. In Reaktion auf den Zugriffsfehler beenden konventionelle Verarbeitungseinheiten Befehle, die den fehlererzeugenden Befehlen vorausgingen, und löschen den fehlererzeugenden Befehl zusammen mit allen Befehlen, die die Ausführung nach dem fehlererzeugenden Befehl begonnen haben. An diesem Punkt erzeugt eine Zugriffsfehlerbehandlungseinheit die angeforderte Seite aus Daten und beginnt erneut die Ausführung, wobei mit dem fehlererzeugenden Befehl begonnen wird. In einigen Fällen kann die Zugriffsfehlerbehandlungseinheit eine merkliche Zeitdauer benötigen im Vergleich zu einer typischen Befehlsausführungszeit, um diese Maßnahme abzuschließen. Insbesondere wenn das Computersystem eine vereinheitlichte virtuelle Speicherarchitektur realisiert, kann die Zugriffsfehlerbehandlungseinheit längere Fehlerbehandlungsprozeduren ausführen, um Speicherseiten zwischen dem Systemspeicher und dem Speicher, der für die PPU lokal ist, zu verschieben.
  • In einer äußerst parallelen mehrsträngigen modernen PPU sind gegebenenfalls hunderte oder viele tausende Speichertransaktionen und daher viele Adressenübersetzungen zu jedem Zeitpunkt anhängig. Daher können zahlreiche Speicherzugriffsfehler zu jeder Zeit aktiv sein. Wenn eine PPU eine konventionelle Fehlerbehandlungstechnik mit Befehlslöschung realisieren soll, dann wird die PPU häufig Tausende von Befehlen über alle Ausführungseinheiten hinweg löschen. Ferner würde die PPU auf die relativ langen Zugriffsfehlerbehandlungsprozesse warten, um nicht mehr als Seiten vorhandene Daten für jeden fehlererzeugenden Befehl innerhalb eines ausführenden Strangs zu laden. Derartige Verarbeitungszeiten sind beträchtlich und häufig nicht akzeptabel, und beeinträchtigen das gesamte Systemverhalten.
  • Wie das Vorhergehende zeigt, ist das, was auf diesem Gebiet der Technik benötigt wird, eine effizientere Vorgehensweise, um Zugriffsfehler zu behandeln, in denen eine mehrsträngige Verarbeitungseinheit beteiligt ist.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Eine Ausführungsform der vorliegenden Erfindung gibt ein computerimplementiertes Verfahren zur Verarbeitung virtueller Speichertransaktionen an, die mit einer mehrsträngigen Verarbeitungseinheit im Zusammenhang stehen. Das Verfahren umfasst Empfangen einer ersten virtuellen Speichertransaktion aus einer ersten Einheit; Versuchen, die erste virtuelle Speichertransaktionen auszuführen; Erfassen eines ersten Seitenfehlers, der die erste virtuelle Speichertransaktion betrifft; Speichern der ersten virtuellen Speichertransaktion in einem Wiederholungspuffer; Veranlassen eines Unterbrechungszustands, der erste Einheit daran hindert, nachfolgende virtuelle Speichertransaktionen zu erzeugen, bis der erste Seitenfehler behoben ist; und sobald der erste Seitenfehler behoben ist, erneutes Ausführen der ersten virtuellen Speichertransaktion sowie mindestens einer anderen virtuellen Speichertransaktion, die in dem Wiederholpuffer gespeichert sind.
  • Ein Vorteil der offenbarten Vorgehensweise besteht darin, dass Einheiten, die in einer mehrsträngigen Verarbeitungseinheit enthalten sind, die nicht zu einem Seitenfehler beigetragen haben, weiterhin virtuelle Speichertransaktionen bei Vorhandensein eines Seitenfehlers ausgeben. Da ferner eine betroffene Einheit fortfährt, die fehlererzeugende virtuelle Speichertransaktion sowie fehlererzeugende anhängige virtuelle Speichertransaktionen zu wiederholen, werden diese virtuellen Speichertransaktionen nicht gelöscht, während Seitenfehler behandelt werden. Folglich wird das gesamte Leistungsverhalten der mehrsträngigen Verarbeitungseinheit im Vergleich zu konventionellen mehrsträngigen Verarbeitungseinheiten verbessert, die bei Erzeugung eines Seitenfehlers virtuelle Speichertransaktionen löschen, die von allen Einheiten innerhalb der Multi-Verarbeitungseinheit ausgegeben werden, bis der Seitenfehler behoben ist.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Um die Art und Weise, in der die oben genannten Merkmale der vorliegenden Erfindung detailliert verstanden werden können, anzugeben, wird eine speziellere Beschreibung der Erfindung, die zuvor kurz zusammengefasst ist, mit Bezug 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 darstellen und daher nicht als Einschränkung ihres Schutzbereichs zu betrachten sind, da die Erfindung andere gleichermaßen wirksame 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, die ein vereinheitlichtes virtuelles Speichersystem (UVM) gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 3 ist eine Blockansicht, die ein vereinheitlichtes virtuelles Speichersystem (UVM) zeigt, das mit Wiederholeinheiten gemäß einer weiteren Ausführungsform der vorliegenden Erfindung ausgestattet ist;
  • 4 ist eine Konzeptansicht, die die Wiederholeinheit aus 3 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt; und
  • 5 ist ein Flussdiagramm von Verfahrensschritten zur Verwaltung von Speichertransaktionen, die von einem Datenstrom-Multiprozessor (SM) gemäß einer Ausführungsform der vorliegenden Erfindung ausgegeben werden.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung sind zahlreiche spezielle Details angegeben, um ein gründlicheres Verständnis der vorliegenden Erfindung zu ermöglichen. Der Fachmann erkennt jedoch, dass die vorliegende Erfindung ohne eines oder mehrere dieser speziellen Details in die Praxis umgesetzt werden kann.
  • Systemüberblick
  • 1 ist eine Blockansicht, die ein Computersystem 100 zeigt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren. Das Computersystem 100 umfasst eine zentrale Recheneinheit (CPU) 102 und einen Systemspeicher 104, die über einen Verbindungspfad, der eine Speicherbrücke 105 enthalten kann, kommunizieren. Die Speicherbrücke 105, die beispielsweise ein Nordbrücken-Chip sein kann, ist über einen Bus oder einen anderen Kommunikationspfad 106 (beispielsweise eine HyperTransport-Verbindung) mit einer I/O-(Eingabe/Ausgabe-)Brücke 107 verbunden. Die I/O-Brücke 107, die beispielsweise ein Südbrücken-Chip sein kann, empfängt eine Anwendereingabe aus einem oder mehreren Anwender-Eingabegeräten 108 (beispielsweise Tastatur, Maus) und leitet die Eingabe an die CPU 102 über den Kommunikationspfad 106 und die Speicherbrücke 105 weiter. Ein Parallelverarbeitungssubsystem 112 ist mit der Speicherbrücke 105 über einen Bus oder einen zweiten Kommunikationspfad 113 (beispielsweise ein peripherer Komponenten-Verbindungs-(PCI-)Express, beschleunigter Graphikport oder HyperTransport-Verbindung) verbunden; in einer Ausführungsform ist das Parallelverarbeitungssubsystem 112 ein grafisches Subsystem, das Pixel an ein Anzeigegerät 110 liefert, das eine konventionelle Kathodenstrahlröhre, eine Flüssigkristallanzeige, eine Anzeige mit lichtemittierenden Dioden oder dergleichen sein kann. Eine Systemdiskette 114 ist ebenfalls mit der I/O-Brücke 107 verbunden und ist ausgebildet, Inhalt und Anwendungen und Daten zur Verwendung durch die CPU 102 und das Parallelverarbeitungssubsystem 112 zu speichern. Die Systemdiskette 114 stellt nicht-flüchtigen Speicherplatz für Anwendungen und Daten bereit und kann fest installierte oder entfernbare Festplattenlaufwerke, Flash-Speichereinrichtungen und CD-(Kompaktdisketten-Nur-Lese-Speicher), DVD-(digitale Vielseitigkeitsdisketten-ROM), Blu-ray, HD-DVD (DVD mit hoher Auflösung) oder andere magnetische, optische oder Halbleiterspeichereinrichtungen umfassen.
  • Ein Schalter 116 stellt Verbindungen zwischen der I/O-Brücke 107 und anderen Komponenten, etwa einem Netzwerkadapter 118 und diversen Zusatzkarten 120 und 121 bereit. Andere Komponenten (nicht explizit gezeigt), einschließlich eines universellen seriellen Busses (USB) oder anderer Portverbindungen, Kompaktdisketten-(CD)Laufwerke, digitale Vielseitigkeitsdisketten-(DVD)Laufwerke, Filmaufzeichnungsgeräte und dergleichen können ebenfalls mit der I/O-Brücke 107 verbunden sein. Die in 1 gezeigten diversen Kommunikationspfade, einschließlich der speziell bezeichneten Kommunikationspfade 106 und 113, können unter Anwendung beliebiger geeigneter Protokolle eingerichtet werden, etwa durch PCI-Express, AGP (beschleunigter Graphikport), HyperTransport oder durch ein oder mehrere andere Busprotokolle oder Punkt-Zu-Punkt-Kommunikationsprotokolle, und Verbindungen zwischen unterschiedlichen Einrichtungen können unterschiedliche Protokolle benutzen, wie dies im Stand der Technik bekannt ist.
  • In einer Ausführungsform enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für Grafik- und Videoverarbeitung optimiert ist, wozu beispielsweise eine Videoausgabeschaltung gehört, und sie bildet eine oder mehrere Parallelverarbeitungseinheiten (PPU) 202. In einer weiteren Ausführungsform enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für eine Verarbeitung für Allgemeinzwecke optimiert ist, wobei die zu Grunde liegende Rechenarchitektur, wie nachfolgend detaillierter beschrieben ist, beibehalten wird. In einer noch weiteren Ausführungsform kann das Parallelverarbeitungssubsystem 112 mit einem oder mehreren anderen Systemelementen in einem einzelnen Subsystem integriert sein, etwa durch die Vereinigung der Speicherbrücke 105, der CPU 102 und der I/O-Brücke 107, um ein System auf einem Chip (SoC) zu bilden. Wie gut bekannt ist, sind viele grafische Verarbeitungseinheiten (GPU) so gestaltet, dass sie Operationen und Berechnungen parallel ausführen und können daher als eine Klasse von Parallelverarbeitungseinheiten (PPU) betrachtet werden.
  • Es kann eine beliebige Anzahl an PPUs 202 in einem Parallelverarbeitungssubsystem 112 enthalten sein. Beispielsweise können mehrere PPUs 202 in einer einzelnen Zusatzkarte bereitgestellt sein, oder es können mehrere Zusatzkarten mit dem Kommunikationspfad 113 verbunden sein, oder eine oder mehrere PPUs 202 können in einem Brückenchip integriert sein. Die PPUs 202 in einem Multi-PPU-System können identisch oder unterschiedlich zueinander sein. Beispielsweise können unterschiedliche PPUs 202 eine unterschiedliche Anzahl an Verarbeitungskernen, unterschiedliche Größen des lokalen Parallelverarbeitungsspeichers, usw. aufweisen. Wenn mehrere PPUs 202 vorhanden sind, können diese PPUs parallel betrieben werden, um Daten mit einem höheren Durchsatz zu verarbeiten, als dies mit einer einzelnen PPU 202 möglich wäre. Systeme, die eine oder mehrere PPUs 202 enthalten, können in einer Vielzahl von Konfigurationen und Formfaktoren realisiert werden, wozu Tischrechner, mobile Rechner oder Personalcomputer in Form von Handgeräten, Dienstleister, Arbeitsplatzrechner, Spielekonsolen, eingebettete Systeme und dergleichen gehören.
  • Die PPU 202 realisiert vorteilhafterweise eine äußerst parallele Verarbeitungsarchitektur. Die PPU 202 enthält eine Anzahl von allgemeinen Verarbeitungs-Clustern (GPC). Jeder GPC ist in der Lage, eine große Anzahl (beispielsweise hunderte oder tausende) von Strängen gleichzeitig auszuführen, wobei jeder Strang eine Instanz eines Programms ist. In einigen Ausführungsformen werden Einzelbefehl-Mehrfachdaten-(SIMD-)Befehlsausgabetechniken eingesetzt, um eine parallele Ausführung einer großen Anzahl an Strängen zu handhaben, ohne dass mehrere unabhängige Befehlseinheiten vorgesehen sind. In anderen Ausführungsformen werden Einzelbefehl-Mehrfach-Strang-(SIMT-)Techniken eingesetzt, um eine parallele Ausführung einer großen Anzahl an allgemein synchronisierten Strängen zu handhaben. Anders als ein SIMD-Ausführungsregime, in welchem alle Verarbeitungseinheiten typischerweise identische Befehle ausführen, erlaubt es die SIMT-Ausführung, dass unterschiedliche Stränge besser divergenten Ausführungspfaden durch ein gegebenes Strangprogramm hindurch folgen können.
  • GPCs enthalten eine Anzahl an Datenstrom-Multiprozessoren (SM), wobei jeder SM ausgebildet ist, eine oder mehrere Stranggruppen zu verarbeiten. Die Reihe von Befehlen, die einem speziellen GPC zugeleitet wird, bildet einen Strang, wie dies zuvor hierin definiert ist, und die Ansammlung einer gewissen Anzahl an gleichzeitig ausgeführten Strängen über die Parallelverarbeitungseinheiten innerhalb eines SM hinweg, wird hierin als eine „Kette” oder „Stranggruppe” bezeichnet. Im hierin verwendeten Sinne bezeichnet eine „Stranggruppe” eine Gruppe von Strängen, die gleichzeitig das gleiche Programm an unterschiedlichen Eingangsdaten ausführen, wobei ein einzelner Strang der Stranggruppe jeweils einer anderen Verarbeitungseinheit innerhalb eines SM zugeordnet ist. Ferner können mehrere zusammengehörende Stranggruppen gleichzeitig (in unterschiedlichen Phasen der Ausführung) innerhalb eines SM aktiv sein. Diese Ansammlung an Stranggruppen wird hierin als ein „kooperatives Strang-Array” („CTA”) oder „Strang-Array” bezeichnet.
  • In Ausführungsformen der vorliegenden Erfindung ist es wünschenswert, die PPU 202 oder einen oder mehrere andere Prozessoren eines Rechensystems zu verwenden, um Berechnungen für Allgemeinzwecke unter Anwendung von Strang-Arrays auszuführen. Jeder Strang in dem Strang-Array hat eine zugeordnete eindeutige Strangkennung-Kennung („Strang-ID”), auf die der Strang während der Ausführung des Strangs zugreifen kann. Die Strang-ID, die als ein eindimensionaler oder mehrdimensionaler numerischer Wert definiert sein kann, steuert diverse Aspekte des Verarbeitungsverhaltens des Strangs. Beispielsweise kann eine Strang-ID verwendet werden, um zu bestimmen, welchen Bereich des Eingangsdatensatzes ein Strang zu verarbeiten hat, und/oder um zu bestimmen, welchen Bereich eines Ausgangsdatensatzes ein Strang zu erzeugen oder zu schreiben hat.
  • Während des Betriebs ist die CPU 102 der übergeordnete Prozessor des Computersystems 100, um den Betrieb anderer Systemkomponenten zu steuern und zu koordinieren. Insbesondere gibt die CPU 102 Befehle aus, die den Betrieb der PPUs 202 steuern. In einer Ausführungsform ist der Kommunikationspfad 113 eine PCI-Express-Verbindung, in der spezielle Bahnen jeder PPU 202 zugewiesen sind, wie dies im Stand der Technik bekannt ist. Andere Kommunikationspfade können ebenfalls verwendet werden. Die PPU 202 realisiert vorteilhafterweise eine äußerst parallele Verarbeitungsarchitektur. Eine PPU 202 kann mit einer beliebigen Größe an lokalem Parallelverarbeitungsspeicher (PPU-Speicher) versehen sein.
  • In einigen Ausführungsformen umfasst der Systemspeicher 104 einen vereinheitlichten bzw. vereinigten virtuellen Speicher-(UVM)Treiber 101. Der UVM-Treiber 101 enthält Befehle zur Ausführung diverser Aufgaben, die die Verwaltung eines vereinheitlichten virtuellen Speicher-(UVM)Systems, das gemeinsam für die CPU 102 und die PPUs 202 vorliegt, betrifft. Unter anderem ermöglicht die Architektur, dass die CPU 102 und die PPU 202 auf eine physikalische Speicherstelle zugreifen, wobei eine gemeinsame virtuelle Speicheradresse verwendet wird, unabhängig davon, ob die physikalische Speicherstelle innerhalb des Systemspeichers 104 oder in einem Speicher liegt, der für die PPU 202 lokal ist.
  • Zu beachten ist, dass das hierin gezeigte System anschaulicher Natur ist und dass Variationen und Modifizierungen möglich sind. Die Verbindungstopologie, einschließlich der Anzahl und der Anordnung von Brücken, die Anzahl an CPUs 102 und die Anzahl an Parallelverarbeitungssubsystemen 112 können nach Bedarf modifiziert werden. Beispielsweise ist in einigen Ausführungsformen der Systemspeicher 104 mit der CPU 102 direkt anstatt über eine Brücke verbunden, und andere Einrichtungen kommunizieren mit dem Systemspeicher 104 über die Speicherbrücke 105 und die CPU 102. In anderen alternativen Topologien ist das Parallelverarbeitungssubsystem 112 mit der I/O-Brücke 107 oder direkt mit der CPU 102 anstatt mit der Speicherbrücke 105 verbunden. In noch anderen Ausführungsformen können die I/O-Brücke 107 und die Speicherbrücke 105 in einem einzelnen Chip integriert sein, anstatt dass sie als eine oder mehrere diskrete Einrichtungen vorliegen. Große Ausführungsformen können zwei oder mehr CPUs 102 und zwei oder mehr Parallelverarbeitungssubsysteme 112 aufweisen. Die speziellen hierin gezeigten Komponenten sind optional; beispielsweise kann eine beliebige Anzahl an Zusatzkarten oder peripheren Geräten gehandhabt werden. In einigen Ausführungsformen ist der Schalter 116 weggelassen und der Netzwerkadapter 118 und die Zusatzkarten 120, 121 sind direkt mit der I/O-Brücke 107 verbunden.
  • Vereinheitlichte virtuelle Speichersystem-Architektur
  • 2 ist eine Blockansicht, die ein vereinheitlichtes bzw. vereinigtes virtuelles Speicher-(UVM)System 200 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wie gezeigt, umfasst das vereinheitlichte virtuelle Speichersystem 200, ohne Einschränkung, die CPU 102, den Systemspeicher 104 und die Parallelverarbeitungseinheit (PPU) 202, die mit einem Speicher der Parallelverarbeitungseinheit (PPU-Speicher) 204 verbunden ist. Die CPU 102 und der Systemspeicher 104 sind miteinander und mit der PPU 202 über die Speicherbrücke 105 verbunden.
  • Die CPU 102 führt Stränge aus, die Daten, die in dem Systemspeicher 104 oder in dem PPU-Speicher 204 gespeichert sind, über eine virtuelle Speicheradresse anfordern können. Virtuelle Speicheradressen verhindern, dass Stränge, die in der CPU 102 ausgeführt werden, Kenntnis über die interne Arbeitsweise eines Speichersystems haben müssen. Daher kann ein Strang gegebenenfalls nur Kenntnis über virtuelle Speicheradressen haben, und kann auf Daten zugreifen, indem Daten über eine virtuelle Speicheradresse angefordert werden.
  • Die CPU 102 umfasst eine CPU MMU 209, die Anforderungen aus der CPU 102 zur Übersetzung virtueller Speicheradressen in physikalische Speicheradressen verarbeitet. Die physikalischen Speicheradressen sind erforderlich, um auf Daten zuzugreifen, die in einer physikalischen Speichereinheit, etwa dem Systemspeicher 104 und dem PPU-Speicher 204 gespeichert sind. Die CPU 102 umfasst eine CPU-Fehlerbehandlungseinheit 211, die Schritte in Reaktion 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 für die CPU 102 aufgerufen wird.
  • Der Systemspeicher 104 speichert diverse Speicherseiten (nicht gezeigt), die Daten zur Verwendung durch die Stränge, die in der CPU 102 oder der PPU 202 ausgeführt werden, enthalten. Wie gezeigt, speichert der Systemspeicher 104 eine CPU-Seitentabelle 206, die Zuordnungen zwischen virtuellen Speicheradressen und physikalischen Speicheradressen enthält. Der Systemspeicher 104 speichert ferner ein Seitenzustandsverzeichnis 210, das als eine „Haupt-Seitentabelle” für das UVM-System 200 fungiert, wie dies nachfolgend detaillierter erläutert ist. Der Systemspeicher 104 enthält einen Fehlerpuffer 216, der Einträge enthält, die von der PPU 202 beschrieben werden, um die CPU 102 über einen Seitenfehler zu informieren, der von der PPU 202 erzeugt wurde. In einigen Ausführungsformen enthält der Systemspeicher 104 den vereinheitlichten virtuellen Speicher-(UVM)Treiber 101, der Befehle enthält, die, wenn sie ausgeführt werden, die CPU 102 veranlassen, Befehle für, unter anderem, die Behebung eines Seitenfehlers auszuführen. In alternativen Ausführungsformen kann eine beliebige Kombination des Seitenzustandsverzeichnisses 210, des Fehlerpuffers 216 und einer oder mehrerer Befehlswarteschlangen 214 in dem PPU-Speicher 204 gespeichert sein. Ferner kann eine PPU-Seitentabelle 208 in dem Systemspeicher 104 gespeichert sein.
  • Ähnlich wie bei der CPU 102 führt die PPU 202 Befehle aus, die Daten, die in dem Systemspeicher 104 oder in dem PPU-Speicher 204 gespeichert sind, über eine virtuelle Speicheradresse anfordern können. Die PPU 202 umfasst eine PPU MMU 213, die Anforderungen aus der PPU 202 zur Übersetzung virtueller Speicheradressen in physikalische Speicheradressen verarbeitet. Die PPU 202 enthält eine Kopiereinheit 212, die Befehle ausführt, die in der Befehlswarteschlange 214 gespeichert sind, um Speicherseiten zu kopieren, Daten in der PPU-Speichertabelle 208 zu modifizieren, und führt auch andere Befehle aus. Eine PPU-Fehlerbehandlungseinheit 215 führt Schritte in Reaktion auf einen Seitenfehler in der PPU 202 aus. Die PPU-Fehlerbehandlungseinheit 215 kann eine Software sein, die in einem Prozessor oder in einer speziellen Mikrosteuerung in der PPU 202 ausgeführt wird, oder die PPU-Fehlerbehandlungseinheit 215 kann eine Software sein, die in der CPU 102 ausgeführt wird, wobei das zuletzt genannte die bevorzugte Wahl ist. In einigen Ausführungsformen sind die CPU-Fehlerbehandlungseinheit 211 und die PPU-Fehlerbehandlungseinheit 215 ein vereinheitlichtes bzw. vereinigtes Softwareprogramm, das durch einen Fehler in der CPU 102 oder in der PPU 202 aufgerufen wird. Die Befehlswarteschlange 214 kann in dem PPU-Speicher 204 oder in dem Systemspeicher 104 liegen, ist aber vorzugsweise in dem Systemspeicher 104 angeordnet.
  • In einigen Ausführungsformen sind die CPU-Fehlerbehandlungseinheit 211 und der UVM-Treiber 101 ein vereinheitlichtes Softwareprogramm. In derartigen Fällen kann das vereinheitlichte Softwareprogramm eine Software sein, die in dem Systemspeicher 104 liegt und in der CPU 102 ausgeführt wird. Die PPU-Fehlerbehandlungseinheit 215 kann ein separates Softwareprogramm sein, das in einem Prozessor oder einer speziellen Mikrosteuerung in der PPU 202 abläuft, oder die PPU-Fehlerbehandlungseinheit 215 kann ein separates Softwareprogramm sein, das in der CPU 102 ausgeführt wird.
  • In anderen Ausführungsformen sind die PPU-Fehlerbehandlungseinheit 215 und der UVM-Treiber 101 ein vereinheitlichtes Softwareprogramm. In derartigen Fällen kann das vereinheitlichte Softwareprogramm eine Software sein, die in dem Systemspeicher 104 liegt und in der CPU 102 ausgeführt wird. Die CPU-Fehlerbehandlungseinheit 211 kann ein separates Softwareprogramm sein, das in dem Systemspeicher 104 liegt und in der CPU 102 ausgeführt wird.
  • In anderen Ausführungsformen sind die CPU-Fehlerbehandlungseinheit 211, die PPU-Fehlerbehandlungseinheit 215 und der UVM-Treiber 101 ein vereinheitlichtes Softwareprogramm. In derartigen Fällen kann das vereinheitlichte Softwareprogramm eine Software sein, die in dem Systemspeicher 104 liegt und in der CPU 102 ausgeführt wird.
  • In einigen Ausführungsformen können die CPU-Fehlerbehandlungseinheit 211, die PPU-Fehlerbehandlungseinheit 215 und der UVM-Treiber 101 jeweils in dem Systemspeicher 104 liegen, wie dies zuvor beschrieben ist. Wie in 2 gezeigt ist, liegt der UVM-Treiber 101 in dem Systemspeicher 104, während die CPU-Fehlerbehandlungseinheit 211 und die PPU-Fehlerbehandlungseinheit 215 in der CPU 102 liegen.
  • Die CPU-Fehlerbehandlungseinheit 211 und die PPU-Fehlerbehandlungseinheit 215 reagieren auf Hardware-Interrupte, die aus der CPU 102 oder der PPU 202 stammen, etwa Interrupte, die sich aus einem Seitenfehler ergeben. Wie nachfolgend beschrieben ist, enthält der UVM-Treiber 101 Befehle zur Ausführung diverser Aufgaben, die mit der Verwaltung des UVM-Systems 200 in Beziehung stehen, wozu gehören, ohne Einschränkung, die Behebung eines Seitenfehlers und der Zugriff auf die CPU-Seitentabelle 206, das Seitenzustandsverzeichnis 210 und/oder den Fehlerpuffer 216.
  • In einigen Ausführungsformen haben die CPU-Seitentabelle 206 und die PPU-Seitentabelle 208 unterschiedliche Formate und enthalten eine unterschiedliche Information; beispielsweise kann die PPU-Seitentabelle 208 das folgende enthalten, während die CPU-Seitentabelle 206 dies nicht tut: ein Atomar-Deaktivierungs-Bit; Komprimierungsmarken; und Speicheraustauschtyp.
  • Ähnlich wie bei dem Systemspeicher 104 enthält der PPU-Speicher 204 diverse Speicherseiten (nicht gezeigt). Wie gezeigt, kann der PPU-Speicher 204 auch die PPU-Seitentabelle 208 enthalten, die Zuordnungen zwischen virtuellen Speicheradressen und physikalische Speicheradressen enthält. Alternativ kann die PPU-Seitentabelle 208 in dem Systemspeicher 104 gespeichert sein.
  • Übersetzen virtueller Speicheradressen
  • Wenn ein Strang, der in der CPU 102 ausgeführt wird, Daten über eine virtuelle Speicheradresse anfordert, dann fordert die CPU 102 die Übersetzung der virtuellen Speicheradresse in eine physikalische Speicheradresse aus der CPU-Speicherverwaltungseinheit (CPU MMU) 209 an. Daraufhin versucht die CPU MMU 209 die virtuelle Speicheradresse in eine physikalische Speicheradresse zu übersetzen, die eine Stelle in einer Speichereinheit, etwa in dem Systemspeicher 104, angibt, die die von der CPU 102 angeforderten Daten speichert.
  • Um eine virtuelle Speicheradresse in eine physikalische Speicheradresse zu übersetzen, führt die CPU MMU 209 eine Nachschlagoperation aus, um zu ermitteln, ob die CPU-Seitentabelle 206 eine Zuordnung, die mit der virtuellen Speicheradresse verknüpft ist, enthält. Zusätzlich zu einer virtuellen Speicheradresse kann eine Anforderung zum Zugreifen auf Daten ferner einen virtuellen Speicheradressenraum angeben. Das vereinheitlichte virtuelle Speichersystem 200 kann mehrere virtuelle Speicheradressenräume realisieren, wovon jeder einem oder mehreren Strängen zugeordnet ist. Virtuelle Speicheradressen sind in einem gegebenen virtuellen Speicheradressenraum eindeutig. Ferner sind virtuelle Speicheradressen innerhalb eines gegebenen virtuellen Speicheradressenraums konsistent in Bezug auf die CPU 102 und die PPU 202, so dass es möglich ist, dass die gleiche virtuelle Adresse die gleichen Daten für die CPU 102 und die PPU 202 kennzeichnet. In einigen Ausführungsformen können zwei virtuelle Speicheradressen in dem gleichen virtuellen Adressenraum die gleichen Daten bezeichnen, aber sind generell nicht der gleichen physikalischen Speicheradresse zugeordnet (beispielsweise haben die CPU 102 und die PPU 202 jeweils eine lokale Kopie der Daten mit nur lesendem Zugriff.)
  • Für eine gegebene virtuelle Speicheradresse kann die CPU-Seitentabelle 206 eine Zuordnung zwischen der virtuellen Speicheradresse und einer physikalischen Speicheradresse enthalten oder auch nicht. Wenn die CPU-Seitentabelle 206 eine Zuordnung enthält, dann liest die CPU MMU 290 diese Zuordnung aus, um eine physikalische Speicheradresse zu ermitteln, die mit der virtuellen Speicheradresse verknüpft ist, und liefert diese physikalische Speicheradresse an die CPU 102. Wenn jedoch die CPU-Seitentabelle 206 keine Zuordnung enthält, die mit der virtuellen Speicheradresse verknüpft ist, dann ist die CPU MMU 209 nicht in der Lage, die virtuelle Speicheradresse in die physikalische Speicheradresse zu übersetzen, und die CPU MMU 209 erzeugt einen Seitenfehler. Um einen Seitenfehler zu beheben und um die angeforderten Daten für die CPU 102 verfügbar zu machen, wird eine „Seitenfehlersequenz” ausgeführt. Insbesondere liest die CPU 102 das PSD 210, um den aktuellen Zuordnungszustand der Seite zu ermitteln und bestimmt dann die geeignete Seitenfehlersequenz. Die Seitenfehlersequenz ordnet generell die Speicherseite, die mit der angeforderten virtuellen Speicheradresse verknüpft ist, zu oder ändert die Art von Zugriffen, die zulässig sind (beispielsweise Lesezugriff, Schreibzugriff, atomarer bzw. ungeteilter Zugriff). Die unterschiedlichen Arten von Seitenfehlersequenzen, die in den UVM-System 200 eingerichtet sind, sind nachfolgend detaillierter erläutert.
  • In dem UVM-System 200 können Daten, die zu einer gegebenen virtuellen Speicheradresse gehören, in dem Systemspeicher 104, in dem PPU-Speicher 204 oder sowohl in dem Systemspeicher 104 als auch in dem PPU-Speicher 204 als Kopien der gleichen Daten für nur lesenden Zugriff gespeichert werden. Ferner können für derartige Daten die CPU-Seitentabelle 206 und/oder die PPU-Seitentabelle 208 eine Zuordnung enthalten, die mit diesen Daten verknüpft ist. Zu beachten ist, dass gewisse Daten existieren können, für die eine Zuordnung in einer Seitentabelle besteht, aber nicht in der anderen. Jedoch enthält das PSD 210 alle Zuordnungen, die in der PPU-Seitentabelle 208 gespeichert sind und die PPU-relevanten Zuordnungen, die in der CPU-Seitentabelle 206 gespeichert sind. Das PSD 210 dient somit als eine „Haupt-”Seitentabelle für das vereinheitlichte virtuelle Speichersystem 200. Wenn daher die CPU MMU 209 keine Zuordnung in der CPU-Seitentabelle 206, die mit einer speziellen virtuellen Speicheradresse verknüpft ist, findet, liest die CPU 102 das PSD 210 aus, um zu ermitteln, ob das PSD 210 eine mit dieser speziellen virtuellen Speicheradresse verknüpfte Zuordnung enthält. Diverse Ausführungsformen des PSD 210 können unterschiedliche Arten von Information enthalten, die mit virtuellen Speicheradressen verknüpft sind, zusätzlich zu den Zuordnungen, die mit der virtuellen Speicheradresse verknüpft sind.
  • Wenn die CPU MMU 209 einen Seitenfehler erzeugt, führt die CPU-Fehlerbehandlungseinheit 211 eine Sequenz an Operationen für die geeignete Seitenfehlersequenz aus, um den Seitenfehler zu beheben. Während einer Seitenfehlersequenz liest wiederum die CPU 102 das PSD 210 aus und führt weitere Operationen durch, um die Zuordnungen oder Freigaben in der CPU-Seitentabelle 206 und der PPU-Seitentabelle 208 zu ändern. Derartige Operationen können das Lesen und/oder Modifizieren der CPU-Seitentabelle 206, das Lesen und/oder Modifizieren von Einträgen des Seitenzustandsverzeichnisses 210 und/oder die Migration bzw. Verschiebung von Datenblöcken, die als „Speicherseiten” bezeichnet werden, zwischen Speichereinheiten (beispielsweise dem Systemspeicher 104 und dem PPU-Speicher 204) beinhalten.
  • 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. Schließlich wird eine Speicherseite wird als CPU-gemeinsam betrachtet, wenn die CPU 102 und die PPU 202 auf die Speicherseite mittels einer virtuellen Speicheradresse zugreifen können, ohne einen Seitenfehler zu erzeugen. Eine CPU-gemeinsam-Seite kann in dem Systemspeicher 104 oder in dem PPU-Speicher 204 liegen.
  • Das UVM-System 200 kann Besitzzustände Speicherseiten auf der Grundlage einer Vielzahl von Faktoren zuweisen, wozu der Nutzungsverlauf der Speicherseite gehört. Der Nutzungsverlauf 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 Nutzungsverlaufs 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 Nutzungsverlaufs 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 Nutzungsverlaufs der Speicherseite das UVM-System 200 ermittelt, dass die Speicherseite wahrscheinlich sowohl von der CPU 102 als auch von der PPU 202 verwendet wird, und dass eine Verschiebung der Speicherseite zwischen dem Systemspeicher 104 und dem PPU-Speicher 204 zu viel Zeit erfordern würde.
  • Als Beispiele können die Fehlerbehandlungseinheit 211 und 215 einige oder alle der folgenden heuristischen Aktionen für das Migrieren bzw. die Verschiebung ausführen:
    • (a) bei Zugriff der CPU 102 auf eine nicht zugeordnete Seite, die auf die PPU 202 abgebildet ist, die noch nicht vor kurzem verschoben wurde, Aufheben der Zuordnung der fehlererzeugenden Seite für die PPU 202, Verschieben der Seite zu der CPU 102 und Zuordnen der Seite zu der CPU 102;
    • (b) bei Zugriff der PPU 202 auf nicht zugeordnete Seite, die der CPU 102 zugeordnet ist, die nicht vor kurzem verschoben worden ist, Aufheben der Zuordnung der fehlererzeugenden Seite zu der CPU 102, Verschieben der Seite zu der PPU 202 und Zuordnen der Seite zu der PPU 202;
    • (c) bei Zugriff der CPU 102 auf nicht zugeordnete Seite, die der PPU 202 zugeordnet ist und die vor kurzem verschoben wurde, Verschieben der fehlererzeugenden Seite zu der CPU 102 und Zuordnen der Seite zu der CPU 102 und der PPU 202;
    • (d) bei Zugriff der PPU 202 auf nicht zugeordnete Seite, die der CPU 102 zugeordnet ist, die vor kurzem verschoben worden ist, Zuordnen der Seite der CPU 102 und der PPU 202;
    • (e) bei atomaren Zugriff der PPU 102 auf die Seite, die der CPU 102 und der PPU 202 zugeordnet ist, die aber für atomare Operationen durch die PPU 202 nicht freigegeben ist, Aufheben der Zuordnung der Seite zu der CPU 102 und Zuordnen zu der PPU 202, wobei atomare Operationen freigegeben sind;
    • (f) bei Schreibzugriff der PPU 202 auf Seite, die der CPU 102 und der PPU 202 als Kopie-bei-Schreiben (COW) zugeordnet ist, Kopieren der Seite in die PPU 202, wodurch unabhängige Kopien der Seite erzeugt werden, Zuordnen der neuen Seite als Lesen-Schreiben in der PPU und Belassen der aktuellen Seite als der CPU 102 zugeordnet;
    • (g) bei Lesezugriff der PPU 202 auf Seite, die der CPU 102 und der PPU 202 mit Nullen-Auffüllung-auf-verlangen (ZFOD) zugeordnet ist, Zuweisen einer Seite an physikalischem Speicher in der PPU 202 und Füllen dieser Seite mit Nullen, und Zuordnen dieser Seite der PPU, aber Ändern auf nicht zugeordnet in der CPU 102.
    • (h) bei Zugriff durch eine erste PPU 202(1) auf eine nicht zugeordnete Seite, die einer zweiten PPU 202(2) zugeordnet ist, die nicht vor kurzem verschoben worden ist, Aufheben der Zuordnung der fehlererzeugenden Seite zu der zweiten PPU 202(2), Verschieben der Seite zu der ersten PPU 202(1) und Zuordnen der Seite zu der ersten PPU 202(1); und
    • (i) bei Zugriff durch eine erste PPU 202(1) auf eine nicht zugeordnete Seite, die einer zweiten PPU 202(2) zugeordnet ist und die nicht vor kurzem verschoben worden ist, Zuordnen der fehlererzeugenden Seite zu der ersten PPU 202(1) und Beibehalten der Zuordnung der Seite zu der zweiten PPU 202(2).
  • Insgesamt sind viele heuristischen Regeln möglich, und der Schutzbereich der vorliegenden Erfindung ist nicht auf diese Beispiele beschränkt.
  • Ferner können beliebige heuristische Konzepte für die Migration bzw. Verschiebung „erweitert” werden, um beispielsweise mehr Seiten oder eine größere Seitengröße einzuschließen:
    • (j) bei Zugriff der CPU 102 auf eine nicht zugeordnete Seite, die der PPU 202 zugeordnet ist und die nicht vor kurzem verschoben worden ist, Afheben der Zuordnung der fehlerhaften Seite, plus weiterer Seiten, die benachbart zu der fehlerhaften Seite in dem virtuellen Adressenraum liegen, zu der PPU 202, Verschieben der Seiten zu der CPU 102 und Zuordnen der Seiten zu der CPU 102 (in einem detaillierteren Beispiel: für eine 4 kB fehlerhafte Seite, Verschieben des dazu ausgerichteten 64 kB-Gebiets, das die für 4 kB fehlerhafte Seite enthält);
    • (k) bei Zugriff der PPU 202 auf nicht zugeordnete Seite, die der CPU 102 zugeordnet ist und nicht vor kurzem verschoben worden ist, Aufheben der Zuordnung der fehlerhaften Seite plus weiterer Seiten, die benachbart zu der fehlerhaften Seite in dem virtuellen Adressenraum liegen, zu der CPU 102, Verschieben der Seiten zu der PPU 202 und Zuordnen der Seiten zu der PPU 202 (in einem detaillierteren Beispiel: für eine 4 kB fehlerbehaftete Seite, Verschieben des dazugehörenden 64 kB-Gebiets, das die 4 kB fehlerhafte Seite enthält);
    • (l) bei Zugriff der CPU 102 auf nicht zugeordnete Seite, die der PPU 202 zugeordnet ist und die nicht kürzlich verschoben worden ist, Aufheben der Zuordnung der fehlererzeugenden Seite plus weiterer Seiten, die benachbart zu der fehlererzeugenden Seite in dem virtuellen Adressenraum liegen, zu der PPU 202, Verschieben der Seiten zu der CPU 102, Zuordnen der Seiten zu der CPU 102 und Behandeln aller verschobener Seiten als eine oder mehrere größere Seiten in der CPU 102 (in einem detaillierteren Beispiel: für eine 4 kB fehlerhafte Seite, Verschieben des dazu ausgerichteten 64 kB-Gebiets, das die 4 kB fehlerbehaftete Seite enthält, und Behandeln des ausgerichteten 64 kB-Gebiets als eine 64 kB-Seite);
    • (m) bei Zugriff der PPU 202 auf nicht zugeordnete Seite, die der CPU 102 zugeordnet ist, und die nicht kürzlich verschoben worden ist, Aufheben der Zuordnung der fehlererzeugenden Seite plus weiterer Seiten, die benachbart zu der fehlererzeugenden Seite in dem virtuellen Adressenraum liegen, zu der CPU 102, Verschieben der Seiten zu der PPU 202, Zuordnen der Seiten zu der PPU 202 und Behandeln aller verschobener Seiten als eine oder mehrere größere Seiten in der PPU 202 (in einem detaillierteren Beispiel: für eine 4 kB-fehlerbehaftete Seite, Verschieben des dazu ausgerichteten 64 kB-Gebiets, das die 4 kB fehlerbehaftete Seite enthält, und Behandeln des ausgerichteten 64 kB-Gebiets als eine 64 kB-Seite);
    • (n) bei Zugriff durch eine erste PPU 202(1) auf eine nicht zugeordnete Seite, die einer zweiten PPU 202(2) zugeordnet ist und die nicht vor kurzem verschoben worden ist, Aufheben der Zuordnung der fehlererzeugenden Seite plus weiterer Seiten, die benachbart zu der fehlererzeugenden Seite in dem virtuellen Adressenraum liegen, zu der zweiten PPU 202(2), Verschieben der Seiten zu der ersten PPU 202(1) und Zuordnen der Seiten zu der ersten PPU 202(1); und
    • (o) bei Zugriff durch eine erste PPU 202(1) auf eine nicht zugeordnete Seite, die einer zweiten PPU 202(2) zugeordnet ist und vor kurzem verschoben worden ist, Zuordnen der fehlererzeugenden Seite plus weiterer Seiten, die benachbart zu der fehlererzeugenden Seite in dem virtuellen Adressenraum liegen, zu der ersten PPU 202(1), und Beibehalten der Zuordnung der Seite zu der zweiten PPU 202(2).
  • Insgesamt sind viele heuristischen Regeln, die eine „Erweiterung” enthalten, möglich, und der Schutzbereich der vorliegenden Erfindung ist nicht auf diese Beispiele beschränkt.
  • In einigen Ausführungsformen können die PSD-Einträge Information über Übergangszustände enthalten, um eine korrekte Synchronisierung zwischen diversen Anforderungen sicherzustellen, die von Einheiten innerhalb der CPU 102 und der PPU 202 ausgeführt werden. Beispielsweise kann ein Eintrag des PSD 210 einen Übergangszustand enthalten, der angibt, dass eine spezielle Seite in dem Prozess des Übergangs von CPU-Eigen zu PPU-Eigen ist. Diverse Einheiten in der CPU 102 und der PPU 202, etwa die PPU-Fehlerbehandlungseinheit 211 und die PPU-Fehlerbehandlungseinheit 215 können bei der Erkennung, dass eine Seite in einem derartigen Übergangszustand ist, die Ausführung von Bereichen einer Seitenfehlersequenz unterlassen, um Schritte in der Seitenfehlersequenz zu vermeiden, die von einem früheren virtuellen Speicherzugriff auf die gleiche virtuelle Speicheradresse ausgelöst wurden. Als spezielles Beispiel sei genannt, dass, wenn ein Seitenfehler in einer Seite auftritt, die gerade von dem Systemspeicher 104 zu dem PPU-Speicher 204 verschoben wird, ein anderer Seitenfehler, der die gleiche Verschiebung hervorrufen würde, keine weitere Seitenverschiebung hervorrufen wird. Ferner können diverse Einheiten in der CPU 102 und der PPU 202 atomare Operationen für die korrekte Anordnung von Operationen an den PSD 210 realisieren. Beispielsweise können für Modifizierungen an Einträgen des PSD 210 die CPU-Fehlerbehandlungseinheit 211 oder die PPU-Fehlerbehandlungseinheit 215 eine atomare bzw. nicht teilbare Vergleichen-und-Austauschen-Operation ausgeben, um den Seitenzustand eines speziellen Eintrags in dem PSD 210 zu modifizieren. Daher wird die Modifizierung ausgeführt, ohne dass eine Störung durch Operationen anderer Einheiten hervorgerufen wird.
  • Es können mehrere PSD 210 in dem Systemspeicher 104 gespeichert sein – eines für jeden virtuellen Speicheradressenraum. Eine Speicherzugriffsanforderung, die von der CPU 102 oder der PPU 202 erzeugt wird, kann daher eine virtuelle Speicheradresse enthalten und kann ferner den virtuellen Speicheradressenraum angeben, der mit dieser virtuellen Speicheradresse verknüpft ist.
  • Genauso wie die CPU 102 Speicherzugriffsanforderungen ausführen kann, die virtuelle Speicheradressen enthalten (d. h., Befehle, die Anforderungen zum Zugreifen auf Daten über eine virtuelle Speicheradresse enthalten), kann die PPU 202 ebenfalls ähnliche Arten von Speicherzugriffsanforderungen ausführen. Insbesondere enthält die PPU 202 mehrere Ausführungseinheiten, etwa GPC und SM, die zuvor in Verbindung mit 1 beschrieben sind, die ausgebildet sind, mehrere Stränge und Stranggruppen auszuführen. Während des Betriebs können diese Stränge Daten aus dem Speicher (beispielsweise dem Systemspeicher 104 oder dem PPU-Speicher 204) anfordern, indem eine virtuelle Speicheradresse angegeben wird. Wie bei der CPU 102 und der CPU MMU 209 enthält die PPU 202 die PPU Speicherverwaltungseinheit (MMU) 213. Die PPU MMU 213 empfängt Anforderungen zur Übersetzung von virtueller Speicheradressen aus der PPU 202 und versucht eine Übersetzung aus der PPU-Seitentabelle 208 für die virtuellen Speicheradressen bereitzustellen.
  • Ähnlich wie bei der CPU-Seitentabelle 206 enthält die PPU-Seitentabelle 208 Zuordnungen zwischen virtuellen Speicheradressen und physikalischen Speicheradressen. Ebenso wie für die CPU-Seitentabelle 206 kann für eine gegebene virtuelle Adresse die PPU-Speichertabelle 208 gegebenenfalls keinen Seitentabelleneintrag enthalten, der die virtuelle Speicheradresse der physikalischen Speicheradressen zuordnet. Wie bei der CPU MMU 209 erzeugt die PPU MMU 213 einen Seitenfehler, wenn die PPU MMU 213 eine Übersetzung für eine virtuelle Speicheradresse aus der PPU-Seitentabelle 208 anfordert und keine Zuordnung in der PPU-Seitentabelle 208 existiert oder die Art des Zugriffes durch die PPU-Seitentabelle 208 nicht zulässig ist. Wiederum sind unterschiedliche Arten von Seitenfehlersequenzen, die in dem UVM-System 200 eingerichtet sind, nachfolgend detaillierter beschrieben.
  • 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 frei, um andere Aufgaben auszuführen, während die Kopiereinheit 212 die Befehle, die in der Befehlswarteschlange 214 gespeichert sind, ausliest und ausführt, wodurch es auch möglich ist, dass alle Befehle für eine Fehlersequenz gleichzeitig in der Warteschlange 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 Lesen oder Schreiben von Daten in den PPU-Speicher 204 umfassen.
  • Der Fehlerpuffer 216 speichert Fehlerpuffereinträge, die Information angeben, die die von der PPU 202 erzeugten Fehler betreffen. Fehlerpuffereinträge können beispielsweise die Art des Zugriffes, der versucht wurde (beispielsweise lesen, schreiben oder atomar), die virtuelle Speicheradresse, für die ein versuchter Zugriff einen Seitenfehler hervorgerufen hat, den virtuellen Adressenraum und eine Angabe über ein Anhalten eines Strangs, der einen Seitenfehler hervorgerufen hat, beinhalten. Wenn während des Betriebs die PPU 202 einen Seitenfehler erzeugt, kann die PPU 202 einen Fehlerpuffereintrag in den Fehlerpuffer 216 schreiben, um die PPU-Fehlerbehandlungseinheit 215 über die fehlererzeugende Seite und die Art des Zugriffs, die den Fehler hervorgerufen hat, 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.
  • Seitenfehlersequenzen
  • 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 Wiederherstellung nach einem Fehler vereinfacht, indem es der Fehlerwiederherstellungslogik erlaubt ist, fehlererzeugende Speicherzugriffe im Gegensatz zu fehlererzeugenden Befehlen zu verfolgen.
  • Die Operationen, die während einer Seitenfehlersequenz ausgeführt werden, hängen von der Änderung im Besitzzustand oder einer Änderung für die Freigaben für Zugriffe ab, wenn es welche gibt, die die Speicherseite, die mit dem Seitenfehler verknüpft ist, auszuführen hat. Der Übergang von einem aktuellen Besitzzustand in einen neuen Besitzzustand oder eine Änderung der Freigaben für Zugriffe kann Teil der Seitenfehlersequenz sein. In einigen Fällen ist die Verschiebung der Speicherseite, die mit dem Seitenfehler verknüpft ist, von dem Systemspeicher 104 zu dem PPU-Speicher 204 ebenfalls Teil der Seitenfehlersequenz. In anderen Fällen ist die Verschiebung der Speicherseite, die mit dem Seitenfehler verknüpft ist, von dem PPU-Speicher 204 zu dem Systemspeicher 104 ebenfalls Teil der Seitenfehlersequenz. Es sind diverse heuristische Vorgehensweisen ausführlicher beschrieben, die verwendet werden können, um das UVM-System 200 zu konfigurieren, einen Speicherseiten-Besitzzustand zu ändern oder um Speicherseiten unter diversen Gruppen von Betriebszuständen und Mustern zu verschieben. Nachfolgend sind detaillierter Speicherfehlersequenzen für die folgenden vier Speicherseiten-Besitzzustandsübergänge beschrieben: CPU-Eigen zu CPU-gemeinsam, CPU-Eigen zu PPU-Eigen, PPU-Eigen zu CPU-Eigen, und PPU-Eigen zu PPU-gemeinsam.
  • Ein Fehler durch die PPU 202 kann einen Übergang von CPU-Eigen zu CPU-gemeinsam bewirken. Vor einem derartigen Übergang versucht ein Strang, der in der PPU 202 ausgeführt wird, auf Daten an einer virtuellen Speicheradresse zu zugreifen, die nicht in der PPU-Seitentabelle 208 zugeordnet ist. Dieser Zugriffsversuch bewirkt einen PPU-basierten Seitenfehler, der dann bewirkt, dass auf einen Fehlerpuffereintrag in dem Fehlerpuffer 216 geschrieben wird. Daraufhin liest die PPU-Fehlerbehandlungseinheit 215 den Eintrag im PSD 210, der der virtuellen Speicheradresse entspricht, aus und ermittelt die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist. Nach dem Auslesen des PSD 210 ermittelt die PPU-Fehlerbehandlungseinheit 215, dass der aktuelle Besitzzustand für die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist, CPU-Eigen ist. Auf der Grundlage des aktuellen Besitzzustands sowie andere Faktoren, etwa von Verwendungseigenschaften für die Speicherseite oder die Art des Speicherzugriffs, ermittelt die PPU-Fehlerbehandlungseinheit 215, dass ein neuer Besitzzustand für die Seite CPU-gemeinsam sein sollte.
  • Um den Besitzzustand zu ändern, schreibt die PPU-Fehlerbehandlungseinheit 215 einen neuen Eintrag in die PPU-Seitentabelle 208, der der virtuellen Speicheradresse entspricht, und der die virtuelle Speicheradresse mit der Speicherseite in Beziehung setzt, die durch den Eintrag des PSD 210 gekennzeichnet ist. Die PPU-Fehlerbehandlungseinheit 215 modifiziert ferner den Eintrag des PSD 210 für diese Speicherseite, um anzuzeigen, dass der Besitzzustand CPU-gemeinsam ist. In einigen Ausführungsformen wird ein Eintrag in einem Translations-Nebenschaupuffer (TLB) in der PPU 202 ungültig gemacht, um dem Fall Rechnung zu tragen, in welchem die Übersetzung in einer unzulässigen Seite gespeichert ist. An diesem Punkt ist die Seitenfehlersequenz abgeschlossen. Der Besitzzustand für die Speicherseite ist CPU-gemeinsam, was bedeutet, dass die Speicherseite für die CPU 102 und auch für die PPU 202 ansprechbar ist. Sowohl die CPU-Seitentabelle 206 als auch die PPU-Seitentabelle 208 enthalten Einträge, die die virtuelle Speicheradresse mit der Speicherseite verknüpfen.
  • Ein Fehler durch die PPU 202 kann einen Übergang von CPU-Eigen zu PPU-Eigen hervorrufen. Vor einem derartigen Übergang versucht eine Operation, die in der PPU 202 ausgeführt wird, auf einen Speicher an einer virtuellen Speicheradresse zuzugreifen, die nicht in der PPU-Seitentabelle 208 zugeordnet ist. Dieser Speicherzugriffsversuch ruft einen PPU-basierten Seitenfehler hervor, der dann bewirkt, dass ein Fehlerpuffereintrag in dem Fehlerpuffer 216 beschrieben wird. In Reaktion darauf liest die PPU-Fehlerbehandlungseinheit 215 den Eintrag des PSD 210, der der virtuellen Speicheradresse entspricht, aus und ermittelt die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist. Nach dem Auslesen des PSD 210 ermittelt die PPU-Fehlerbehandlungseinheit 215, dass der aktuelle Besitzzustand für die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist, CPU-Eigen ist. Auf der Grundlage des aktuellen Besitzzustands sowie anderer Faktoren, etwa von Verwendungseigenschaften für die Seite oder die Art Speicherzugriffs, ermittelt die PPU-Fehlerbehandlungseinheit 215, dass ein neuer Besitzzustand für die Seite PPU-Eigen ist.
  • Die PPUs 202 schreibt einen Fehlerpuffereintrag in den Fehlerpuffer 216, der angibt, dass die PPU 202 einen Seitenfehler erzeugt hat, und der die virtuelle Speicheradresse angibt, die mit dem Seitenfehler verknüpft ist. Die PPU-Fehlerbehandlungseinheit 215, die in der CPU 102 ausgeführt wird, liest den Fehlerpuffereintrag aus und darauf reagierend entfernt die CPU 102 die Zuordnung in der CPU-Seitentabelle 206, die mit der virtuellen Speicheradresse verknüpft ist, die den Seitenfehler hervorgerufen hat. Die CPU 102 kann vor und/oder nach der Entfernung der Zuordnung die Cache-Speicher leeren. Die CPU 102 kann ferner Befehle in die Befehlswarteschlange 214 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.
  • Ein Fehler durch die CPU 102 kann einen Übergang von PPU-Eigen zu CPU-Eigen in Gang setzen. Vor einem derartigen Übergang versucht eine Operation, die in der CPU 102 ausgeführt wird, einen Speicherzugriff auf eine virtuelle Speicheradresse, die in der CPU-Seitentabelle 206 nicht zugeordnet ist, wodurch ein CPU-basierter Seitenfehler hervorgerufen wird. Die CPU-Fehlerbehandlungseinheit 211 liest den Eintrag des PSD 210, der der virtuellen Speicheradresse entspricht, aus und ermittelt die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist. Nach dem Auslesen des PSD 210 ermittelt die CPU-Fehlerbehandlungseinheit 211, dass der aktuelle Besitzzustand für die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist, PPU-Eigen ist. Auf der Grundlage des aktuellen Besitzzustands sowie anderer Faktoren, etwa von Verwendungseigenschaften für die Seite oder die Art des Zugriffes, ermittelt die CPU-Fehlerbehandlungseinheit 211, dass ein neuer Besitzzustand für die Seite CPU-Eigen ist.
  • Die CPU-Fehlerbehandlungseinheit 211 ändert den Besitzzustand, der zu der Speicherseite gehört, auf CPU-Eigen. Die CPU-Fehlerbehandlungseinheit 211 schreibt einen Befehl in die Befehlswarteschlange 214, um die Kopiereinheit 212 zu veranlassen, den Eintrag aus der PPU-Seitentabelle 208 zu entfernen, der die virtuelle Speicheradresse mit der Speicherseite verknüpft. Es können diverse TLB-Einträge ungültig gemacht werden. Die CPU-Fehlerbehandlungseinheit 211 kopiert ferner die Speicherseite aus dem PPU-Speicher 204 in den Systemspeicher 104, was mittels der Befehlswarteschlange 214 und der Kopiereinheit 212 bewerkstelligt werden kann. Die CPU-Fehlerbehandlungseinheit 211 schreibt einen Seitentabelleneintrag in die CPU-Seitentabelle 206, der die virtuelle Speicheradresse mit der Speicherseite verknüpft, die in den Systemspeicher 104 kopiert wird. Die CPU-Fehlerbehandlungseinheit 211 aktualisiert ferner das PSD 210, um die virtuelle Speicheradresse mit der neu kopierten Speicherseite zu verknüpfen. An diesem Punkt ist die Seitenfehlersequenz abgeschlossen. Der Besitzzustand für die Speicherseite ist CPU-Eigen, was bedeutet, dass auf die Speicherseite nur die CPU 102 zugreifen kann. Nur die CPU-Seitentabelle 206 enthält einen Eintrag, der die virtuelle Speicheradresse mit der Speicherseite verknüpft.
  • Ein Fehler durch die CPU 102 kann einen Übergang von PPU-Eigen zu CPU-gemeinsam hervorrufen. Vor einem derartigen Übergang versucht eine Operation, die in der CPU 102 ausgeführt wird, auf einen Speicher an einer virtuellen Speicheradresse zuzugreifen, die nicht in der CPU-Seitentabelle 206 zugeordnet ist, wodurch ein CPU-basierter Seitenfehler hervorgerufen wird. Die CPU-Fehlerbehandlungseinheit 211 liest den Eintrag des PSD 210 aus, der der virtuellen Speicheradresse entspricht, und ermittelt die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist. Nach dem Auslesen des PSD 210 ermittelt die CPU-Fehlerbehandlungseinheit 211, dass der aktuelle Besitzzustand für die Speicherseite, die mit der virtuellen Speicheradresse verknüpft ist, PPU-Eigen ist. Auf der Grundlage des aktuellen Besitzzustands oder der Art des Zugriffes sowie anderer Faktoren, etwa Verwendungseigenschaften für die Seite, ermittelt die CPU-Fehlerbehandlungseinheit 211, dass ein neuer Besitzzustand für die Speicherseite CPU-gemeinsam ist.
  • Die CPU-Fehlerbehandlungseinheit 211 ändert den Besitzzustand, der zu der Speicherseite gehört, auf CPU-gemeinsam. Die CPU-Fehlerbehandlungseinheit 211 schreibt einen Befehl in die Befehlswarteschlange 214, um die Kopiereinheit 212 zu veranlassen, den Eintrag aus der PPU-Seitentabelle 208 zu entfernen, der die virtuelle Speicheradresse mit der Speicherseite verknüpft. Es können diverse TLB-Einträge als ungültig gesetzt werden. Die CPU-Fehlerbehandlungseinheit 211 kopiert ferner die Speicherseite aus dem PPU-Speicher 204 in den Systemspeicher 104. Diese Kopieroperation kann mittels der Befehlswarteschlange 214 und der Kopiereinheit 212 durchgeführt werden. Die CPU-Fehlerbehandlungseinheit 211 schreibt dann einen Befehl in die Befehlswarteschlange 214, um die Kopiereinheit 212 zu veranlassen, den Eintrag in der PPU-Seitentabelle 208 so zu ändern, dass die virtuelle Speicheradresse mit der Speicherseite in dem Systemspeicher 104 verknüpft wird. Es können diverse TLB-Einträge ungültig gesetzt werden. Die CPU-Fehlerbehandlungseinheit 211 schreibt einen Seitentabelleneintrag in die CPU-Seitentabelle 206, um die virtuelle Speicheradresse mit der Speicherseite in dem Systemspeicher 104 zu verknüpfen. Die CPU-Fehlerbehandlungseinheit 211 aktualisiert auch das PSD 210, um die virtuelle Speicheradresse mit der Speicherseite in dem Systemspeicher 104 zu verknüpfen. An diesem Punkt ist die Seitenfehlersequenz beendet. Der Besitzzustand für die Seite ist CPU-gemeinsam, und die Speicherseite ist in den Systemspeicher 104 kopiert worden. Die CPU 102 kann auf die Seite zugreifen, da die CPU-Seitentabelle 206 einen Eintrag enthält, der die virtuelle Speicheradresse mit der Speicherseite in dem Systemspeicher 104 verknüpft. Die Seite ist auch für die PPU 202 ansprechbar, da die PPU-Seitentabelle 208 einen Eintrag enthält, der die virtuelle Speicheradresse mit der Speicherseite in dem Systemspeicher 104 verknüpft.
  • Detailliertes Beispiel einer Seitenfehlersequenz
  • In diesem Zusammenhang wird nun eine detaillierte Beschreibung einer Seitenfehlersequenz, die von der PPU-Fehlerbehandlungseinheit 215 in dem Falle eines Übergangs von CPU-Eigen zu CPU-gemeinsam ausgeführt wird, nunmehr bereitgestellt, um zu zeigen, wie atomare bzw. unteilbare Operationen und Übergangszustände verwendet werden können, um eine Seitenfehlersequenz effektiver zu verwalten. Die Seitenfehlersequenz wird von einem Strang in der PPU 202 ausgelöst, der versucht, auf eine virtuelle Adresse zu zugreifen, für die eine Zuordnung in der PPU-Seitentabelle 208 nicht existiert. Wenn ein Strang versucht, auf Daten über eine virtuelle Speicheradresse zuzugreifen, fordert die PPU 202 (insbesondere ein Strang auf Anwenderebene) eine Übersetzung aus der PPU-Seitentabelle 208 an. In Reaktion darauf tritt ein PPU-Seitenfehler auf, da die PPU-Seitentabelle 208 keine Zuordnung, die mit der angeforderten virtuellen Speicheradresse verknüpft ist, enthält.
  • Nach dem Auftreten des Seitenfehlers tritt der Strang in einen Einfangzustand ein, hält an und die PPU-Fehlerbehandlungseinheit 215 führt eine Seitenfehlersequenz aus. Die PPU-Fehlerbehandlungseinheit 215 liest das PSD 210 aus, um zu ermitteln, welche Speicherseite mit der virtuellen Speicheradresse verknüpft ist, und den Zustand für die virtuelle Speicheradresse zu ermitteln. Die PPU-Fehlerbehandlungseinheit 215 ermittelt aus dem PSD 210, dass der Besitzzustand für diese Speicherseite CPU-Eigen ist. Folglich kann auf die von der PPU 202 angeforderten Daten durch die CPU 202 über eine virtuelle Speicheradresse nicht zugegriffen werden. Eine Zustandsinformation für die Speicherseite gibt ferner an, dass die angeforderten Daten nicht in den PPU-Speicher 204 verschoben werden können.
  • Auf der Grundlage der Zustandsinformation, die aus dem PSD 210 erhalten wird, ermittelt die PPU-Fehlerbehandlungseinheit 215, dass ein neuer Zustand für die Speicherseite CPU-gemeinsam sein sollte. Die PPU-Fehlerbehandlungseinheit 215 ändert den Zustand auf „Übergang zu CPU-gemeinsam”. Dieser Zustand gibt an, dass die Seite aktuell im Prozess des Übergangs zu CPU-gemeinsam ist. Wenn die PPU-Fehlerbehandlungseinheit 215 in einer Mikrosteuerung in der Speicherverwaltungseinheit ausgeführt wird, dann aktualisieren zwei Prozessoren das PSD 210 in asynchroner Weise, wobei atomare vergleichen-und-austauschen („CAS”) Operationen an dem PSD 210 angewendet werden, um den Zustand auf „Übergang zu GPU-sichtbar” (CPU-gemeinsam) zu ändern.
  • Die PPU 202 aktualisiert die PPU-Seitentabelle 208, um die virtuelle Adresse mit der Speicherseite zu verknüpfen. Die PPU 202 setzt ferner die TLB-Cache-Speichereinträge auf ungültig. Als nächstes führt die PPU 202 eine weitere atomare Vergleichen-und-Austauschen-Operation an dem PSD 210 aus, um den Besitzzustand, der mit der Speicherseite verknüpft ist, auf CPU-gemeinsam zusetzen. Schließlich endet die Seitenfehlerfrequenz und der Strang, der die Daten über die virtuelle Speicheradresse angefordert hat, nimmt die Verarbeitung wieder auf.
  • Variationen der UVM-Systemarchitektur
  • Es sind diverse Modifizierungen an dem vereinheitlichten virtuellen Speichersystem 200 möglich. Beispielsweise kann in einigen Ausführungsformen nach dem Schreiben eines Fehlerpuffereintrags in den Fehlerpuffer 216 die PPU 202 einen CPU-Interrupt auslösen, um die CPU 102 zu veranlassen, Fehlerpuffereinträge in dem Fehlerpuffer 216 auszulesen und jegliche Operationen auszuführen, die in Reaktion auf den Fehlerpuffereintrag geeignet sind. In anderen Ausführungsformen kann die CPU 102 periodisch den Fehlerpuffer 216 abfragen. Im Falle, dass die CPU 102 einen Fehlerpuffereintrag in dem Fehlerpuffer 216 findet, führt die CPU 102 eine Reihe von Operationen in Reaktion auf den Fehlerpuffereintrag aus.
  • In einigen Ausführungsformen speichert der Systemspeicher 104 anstelle des PPU-Speichers 204 die PPU-Seitentabelle 208. In anderen Ausführungsformen kann eine Cache-Hierarchie mit einer oder mehreren Ebenen, etwa eine Hierarchie mit einer einzelnen oder mehreren Ebenen an Translations-Nebenschaupuffern (TLB) (nicht gezeigt) realisiert werden, um virtuelle Speicherübersetzungen für die CPU-Seitentabelle 206 oder die PPU-Seitentabelle 208 zu speichern.
  • In noch anderen Ausführungsformen kann in dem Falle, dass ein Strang, der in der PPU 202 ausgeführt wird, einen PPU-Fehler hervorruft (ein „fehlererzeugender Strang”) die PPU 202 eine oder mehrere Aktionen durchführen. Diese Aktionen enthalten: Anhalten der gesamten PPU 202, Anhalten des SM, der den fehlererzeugenden Strang ausführt, Anhalten der PPU MMU 213, Anhalten lediglich des fehlererzeugenden Strangs, 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 fehlererzeugende Strang versucht wieder, die Speicherzugriffsanforderung auszuführen, die den Seitenfehler hervorrief. In einigen Ausführungsformen wird das Anhalten eines TLB so ausgeführt, dass dieses als ein Speicherzugriff mit langer Verarbeitungszeit für den fehlererzeugenden SM oder den fehlererzeugenden Strang erscheint, so dass der SM keine spezielle Operation für den Fehler ausführen muss.
  • Schließlich kann in anderen alternativen Ausführungsformen der UVM-Treiber 101 Befehle enthalten, die die CPU 102 veranlassen, eine oder mehrere Operationen zur Verwaltung des UVM-Systems 200 und zur Behebung eines Seitenfehlers auszuführen, etwa Zugreifen auf die CPU-Seitentabelle 206, das PSD 210 und/oder den Fehlerpuffer 216. In anderen Ausführungsformen kann ein Betriebssystem-Kernel (nicht gezeigt) ausgebildet sein, das UVM-System 200 zu verwalten und einen Seitenfehler zu beheben, indem auf die CPU-Seitentabelle 206, das PSD 210 und/oder den Fehlerpuffer 216 zugegriffen wird. In noch anderen Ausführungsformen kann ein Betriebssystem-Kernel in Verbindung mit dem UVM-Treiber 101 arbeiten, um das UVM-System 200 zu verwalten und einen Seitenfehler zu beheben, indem auf die CPU-Seitentabelle 206, das PSD 210 und/oder den Fehlerpuffer 216 zugegriffen wird.
  • Anhalten und Wiederholungen von Fehlern
  • Wie zuvor angegeben ist, beruht das UVM-System 200 typischerweise darauf, dass die CPU 102 zumindest teilweise Speicherzugriffsfehler (d. h. Seitenfehler), die von der PPU 202 hervorgerufen werden, behoben werden. Im Falle eines Speicherzugriffsfehlers löscht eine konventionelle PPU die fehlererzeugende Speichertransaktion zusammen mit allen Speichertransaktionen innerhalb der PPU, deren Ausführung nach der fehlererzeugenden Speichertransaktion begonnen hat. Die SM in einer derartigen konventionellen PPU fahren nicht fort mit der Ausgabe von Speichertransaktionen, bis der Speicherzugriffsfehler behoben ist. Im Gegensatz dazu ist zur Reduzierung der gesamten Leistungsbeeinträchtigung, die mit einer fehlererzeugenden Speichertransaktion verbunden ist, die PPU 202 ausgebildet, nur den SM anzuhalten, der die fehlererzeugende Speichertransaktion ausgegeben hat. Während dieser SM angehalten wird, führt die PPU 202 jegliche „anhängigen” Speichertransaktionen aus, die der SM vor der fehlererzeugenden Speichertransaktionen ausgegeben hat. Ferner fährt der SM fort, die fehlererzeugende Speichertransaktion und jegliche der anhängigen Speichertransaktionen zu wiederholen, die nicht erfolgreich abgeschlossen werden, bis alle diese Speichertransaktionen erfolgreich beendet sind. Vorteilhafterweise fahren die SM, die keine unbehandelten Speicherzugriffsfehler hervorrufen, fort, Speichertransaktionen auszugeben, und die PPU 202 fährt fort, diese Speichertransaktionen auszuführen, während das UVM-System 200 anhängige Speicherzugriffsfehler behebt.
  • Im Allgemeinen sind die hierin beschriebenen Techniken anschaulich und nicht beschränkend und können modifiziert werden, um diverse Realisierungen wiederzugeben, ohne von dem breiteren Grundgedanken und dem Schutzbereich der Erfindung abzuweichen. Beispielsweise ist der SM eine der vielen Einheiten, die Speichertransaktionen ausgeben können. Ausführungsformen der vorliegenden Erfindung können eine beliebige Anzahl und eine beliebige Art an Ausführungseinheiten anstelle oder in Verbindung mit dem SM aufweisen. Ferner können die selektive Anhaltung nur spezieller Einheiten innerhalb der PPU und die Wiederholung von Speichertransaktionen während der Behebung von Speicherzugriffsfehlern in einer beliebigen technisch machbaren Weise realisiert werden. Beispielsweise kann die PPU fehlererzeugende Speichertransaktionen, die von gewissen „wiederholbaren” Einheiten ausgegeben werden, wiederholen und kann fehlererzeugende Speichertransaktionen, die von anderen Einheiten ausgegeben werden, verwerfen.
  • Die Funktion der selektiven Anhaltung und Wiederholung, die hierin beschrieben ist, kann in der PPU MMU 213, einer anderen Speicherverwaltungseinheit, in speziellen Hardware-Einheiten oder in Software, die auf programmierbaren Hardware-Einheiten ausgeführt wird, realisiert werden – in beliebiger Kombination. Ferner kann die PPU 202 in eine beliebige Art von Computersysteme enthalten sein. Beispielsweise kann die PPU 202 in einem Computersystem enthalten sein, das keine vereinheitlichte virtuelle Speicherarchitektur realisiert.
  • PPU mit Wiederholeinheiten
  • 3 ist eine Blockansicht, die ein vereinheitlichtes virtuelles Speichersystem (UVM) 200 zeigt, das mit Wiederholeinheiten 350 gemäß einer weiteren Ausführungsform der vorliegenden Erfindung versehen ist. Die PPU 202 enthält eine beliebige Anzahl N an Datenstrom-Multiprozessoren (SM) 310 und Wiederholeinheiten 350 – eine Wiederholeinheit 350 pro SM 310. Wenn beispielsweise die PPU 202 zweiunddreißig SM 310 (0:31) enthalten soll, dann würde die PPU 202 zweiunddreißig Wiederholeinheiten 350 (0:31) enthalten. Jede Wiederholeinheit 350 ermöglicht es der PPU 202, den entsprechenden SM 310 anzuhalten, während ausgewählte Speichertransaktionen wiederholt werden, ohne dass die anderen SM 310 verzögert werden.
  • 4 ist eine Konzeptansicht, die die Wiederholeinheit 350(0) aus 3 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wie gezeigt, umfasst die Wiederholeinheit 350(0), ohne Einschränkung, einen Transaktions-Multiplexer (Transaktion-mux) 420, einen Mikro-Translations-Nebenschaupuffer (uTLB) 430, einen anhängigen Puffer 440, einen Fehlerdetektor 450 und einen Wiederholpuffer 460.
  • Generell erzeugen Stränge, die in dem SM 310(0) ausgeführt werden, jeweils einen Strom an virtuellen Speichertransaktionen aus dem SM 310(0). Nachdem der SM 310(0) eine spezielle virtuelle Speichertransaktionen aus dem SM 310(0) ausgegeben hat, läuft die virtuelle Speichertransaktion von den SM 310(0) durch den Transaktion-mux 420, bevor der uTLB 430 und der anhängige Puffer 440 erreicht werden.
  • Der uTLB 430 führt eine oder mehrere Nachschlagoperationen aus, um die virtuelle Speicheradresse der virtuellen Speichertransaktion aus dem SM 310(0) einer physikalischen Speicheradresse in dem PPU-Speicher 204 zuzuordnen. Zu beachten ist, dass der uTLB 340 ausgebildet ist, Zuordnungen zwischenzuspeichern, die ferner durch eine Hierarchie von TLB-Cache-Speichern repräsentiert sind. Eine Seitentabelle oder eine globale TLB-Datenstruktur (nicht gezeigt) ist ausgebildet, alle Zuordnungen über alle virtuellen Adressenräumen zu speichern, die zu einem Prozessorkomplex gehören, der eine oder mehrere PPUs 202 und eine oder mehrere CPUs 102 aufweist.
  • Wie der Fachmann erkennt, können im Falle eines Cache-Fehltreffers die Nachschlagoperationen, die von dem uTLB 430 ausgeführt werden, zeitaufwändig sein. Folglich ordnet der anhängige Puffer 440 die virtuellen Speichertransaktionen aus dem SM 310(0) in der Reihenfolge zuerst herein-zuerst heraus an, wodurch der Kontext jeder virtuellen Speichertransaktion aus dem SM 310(0) in Bezug auf die Nachschlagoperationen des uTLB 430 bewahrt wird.
  • Wenn der uTLB erfolgreich die virtuelle Anforderung aus dem SM 310(0) verarbeitet, dann leitet der Fehlerdetektor 450 eine entsprechende physikalische Speichertransaktion an den PPU-Speicher 204 weiter. In der physikalischen Speichertransaktion an den PPU-Speicher 204 ist die virtuelle Adresse, die in der virtuellen Speichertransaktion aus dem SM 310(0) enthalten ist, durch die physikalische Adresse ersetzt, die sich aus den Nachschlagoperationen an dem uTLB 430 ergibt.
  • Wenn andererseits der uTLB 430 nicht in der Lage ist, die durch die virtuelle Speichertransaktion aus dem SM 310 angegebene virtuelle Adresse zuzuordnen, oder wenn die virtuelle Adresse eine Änderung einer Anordnung einer Zielseite des Speichers erfordert, dann erzeugt der uTLB 430 einen Speicherzugriffsfehler. Der Fehlerdetektor 450 verarbeitet den Speicherzugriffsfehler – wobei ein Fehlersignal an die CPU 120 gesendet wird und temporär der SM 310(0) abgehalten wird, neue virtuelle Speichertransaktionen auszugeben. Vorteilhafterweise bewirkt der Fehlerdetektor 450 nicht, dass andere SM 310, die in der PPU 202 enthalten sind, die Ausgabe neuer virtueller Speichertransaktionen stoppen.
  • Als Teil der Verarbeitung des Speicherzugriffsfehlers bewirkt der Fehlerdetektor 450, dass ein Fehlerpuffereintrag in den Fehlerpuffer 216 aus 2 geschrieben wird. Und der Fehlerdetektor 450 führt Schreiboperationen aus, die die fehlererzeugende virtuelle Speichertransaktion aus dem SM 310(0) in dem Wiederholpuffer 460 speichern. Ferner bewirkt der Fehlerdetektor 450, dass jegliche virtuelle Speichertransaktionen aus dem SM 310(0), die in dem anhängigen Puffer 440 aufgereiht sind, ihre Ausführung beenden. Wenn eine dieser virtuellen Speichertransaktionen ebenfalls einen Fehler hervorruft, dann führt der Fehlerdetektor 450 Schreiboperationen aus, die die weiteren fehlererzeugenden virtuellen Speichertransaktionen in dem Wiederholpuffer 460 speichern. Optional aber bevorzugt bewirkt der Fehlerdetektor 450, dass Fehlerpuffereinträge, die den weiteren fehlererzeugenden virtuellen Speichertransaktionen entsprechen, in den Fehlerpuffer 216 geschrieben werden.
  • Die PPU-Fehlerbehandlungseinheit 215 führt dann Seitenfehlersequenzen aus, die so gestaltet sind, dass die Speicherzugriffsfehler behoben werden. Bei der Behebung eines oder mehrerer Speicherzugriffsfehler sendet die CPU 102 ein Wiederholsignal an die Wiederholeinheit 350(0). Die CPU 102 kann das Wiederholsignal in einer beliebigen technisch machbaren Weise zu jeder Zeit erzeugen. Vorzugsweise erzeugt die PPU-Fehlerbehandlungseinheit 215, die in der CPU 102 enthalten ist, das Wiederholsignal generell mittels der Befehlswarteschlange 214. Auf diese Weise können Prozesse zur Behebung von Zugriffsfehlern, die einen hohen zusätzlichen Aufwand erfordern, zusammen ausgeführt werden, wodurch das gesamte Leistungsverhalten verbessert wird. Die Erzeugung des Wiederholsignals mittels der Befehlswarteschlange 214 erlaubt es ferner, den Wiederholvorgang mit Befehlen zu synchronisieren, die Fehler beheben, wodurch Fehler behebende Operationen und Wiederholoperationen in der Art einer Pipeline verarbeitet werden, so dass die PPU-Fehlerbehandlungseinheit 215 in der Art ausführen-und-vergessen arbeiten kann. In alternativen Ausführungsformen können die CPU 102 oder die PPU 202 das Wiederholsignal in beliebig technisch machbarer Weise erzeugen. Beispielsweise kann die PPU 202 das Wiederholsignal zu vorbestimmten Zeitintervallen erzeugen, wodurch periodische Wiederholungen mit einer festgelegten Frequenz bewirkt werden.
  • Bei Empfang des Wiederholsignals setzt die Wiederholeinheit 350(0) den uTLB 430 auf ungültig und der Transaktion-mux 320 sendet die fehlererzeugenden virtuellen Speichertransaktionen in dem Wiederholpuffer 460 zu dem uTLB 430. Für jede dieser fehlererzeugenden virtuellen Speichertransaktionen versucht der uTLB 430, die virtuelle Speicheradresse einer physikalischen Speicheradresse, auf die zugegriffen werden kann, zuzuordnen. Wenn der uTLB 430 erfolgreich eine virtuelle Speichertransaktion, die in dem Wiederholpuffer 460 enthalten ist, zuordnet, dann leitet der Fehlerdetektor 450 eine entsprechende physikalische Speichertransaktion an den PPU-Speicher 204 weiter. Wenn jedoch der uTLB 430 nicht in der Lage ist, eine spezielle virtuelle Speichertransaktion, die in dem Wiederholpuffer 460 enthalten ist, zuzuordnen, dann führt der Fehlerdetektor 450 Schreiboperationen aus, die die virtuelle Speichertransaktion in dem Wiederholpuffer 460 erneut in die Warteschlange einreihen. Zu beachten ist, dass, wenn die CPU 102 erfolgreich den Grund für jeden speziellen Seitenfehler behebt, die entsprechende virtuelle Speichertransaktion erfolgreich ist, und eine physikalische Speichertransaktion erzeugt wird, und die virtuelle Speichertransaktion wird aus dem Wiederholpuffer 460 entfernt.
  • Die Wiederholeinheit 350(0) fährt fort, die Speichertransaktionen, die in dem Wiederholpuffer 460 enthalten sind, erneut auszuführen, bis der Wiederholpuffer 460 leer ist. Nachdem die Wiederholeinheit 350(0) ermittelt hat, dass der Wiederholpuffer 460 leer ist, veranlasst die Wiederholeinheit 350 den SM 310(0), die Ausgabe von virtuellen Speichertransaktionen aus dem SM 310(0) wieder fortzusetzen. Nachdem der SM 310(0) die Ausgabe virtueller Speichertransaktionen wieder aufgenommen hat, leitet der Transaktion-mux 420(0) die virtuellen Speichertransaktionen an den uTLB 430 für die Verarbeitung weiter.
  • In alternativen Ausführungsformen können die virtuellen Speichertransaktionen an einen beliebigen physikalischen Speicher, auf den die PPU 202 zugreifen kann, anstatt zu dem PPU-Speicher 204 weitergeleitet werden. Beispielsweise können virtuelle Speichertransaktionen zu gemeinsam benutzten Seiten, die in dem Systemspeicher 104 enthalten sind, weitergeleitet werden.
  • 5 ist ein Flussdiagramm von Verfahrensschritten zur Verwaltung von Speichertransaktionen, die von einem Datenstrom-Multiprozessor (SM) gemäß einer Ausführungsform der vorliegenden Erfindung ausgegeben werden. Obwohl die Verfahrensschritte in Verbindung mit den Systemen der 14 beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Realisierung der Verfahrensschritte in beliebiger Reihenfolge ausgebildet ist, innerhalb des Schutzbereichs der vorliegenden Erfindung liegt.
  • Wie gezeigt, beginnt ein Verfahren 500 im Schritt 502, in welchem die Wiederholeinheit 350(0) eine virtuelle Speichertransaktion aus einem SM 310(0) empfängt. In Reaktion auf den Empfang der virtuellen Speichertransaktion aus dem SM 310(0) leitet der Transaktions-mux 420, der in der Wiederholeinheit 350(0) enthalten ist, die virtuelle Speichertransaktion an den uTLB 430 weiter und die virtuelle Speichertransaktion wird in dem anhängigen Puffer 440 als Warteschlange eingereiht. Wenn im Schritt 504 der uTLB 430 erfolgreich die virtuelle Speichertransaktion verarbeitet, dann geht das Verfahren 500 weiter zum Schritt 506. Im Schritt 506 leitet der Fehlerdetektor 450, der in der Wiederholeinheit 350(0) enthalten ist, eine entsprechende physikalische Speichertransaktion an den PPU-Speicher 204 weiter, und das Verfahren 500 kehrt zum Schritt 502 zurück. Die Wiederholeinheit 350(0) durchläuft zyklisch die Schritte 502506, wobei virtuelle Speichertransaktionen aus dem SM 310(0) empfangen und verarbeitet werden, bis der uTLB 430 nicht mehr in der Lage ist, eine virtuelle Speichertransaktion aus dem SM 310(0) erfolgreich zu verarbeiten.
  • Wenn im Schritt 504 der uTLB 430 die virtuelle Adresse in der virtuellen Speichertransaktionen nicht erfolgreich einer physikalischen Adressen zuordnet, dann geht das Verfahren 500 weiter zum Schritt 508. Im Schritt 508 sendet der Fehlerdetektor 450, der in der Wiederholeinheit 350(0) enthalten ist, ein Fehlersignal an die CPU 102, hält den SM 310(0) an und fügt die fehlererzeugende virtuelle Speichertransaktion in den Wiederholpuffer 460 ein. Im Schritt 510 verarbeitet der Fehlerdetektor 450 jegliche virtuelle Speichertransaktion, die in dem anhängigen Puffer 440 aufgereiht ist. Derartige Speichertransaktionen entsprechen Speichertransaktionen, die von dem SM 310(0) ausgegeben wurden und mit der Ausführung vor der fehlererzeugenden virtuellen Speichertransaktionen begonnen haben. Wenn eine dieser virtuellen Speichertransaktionen aus dem SM 310(0) ebenfalls einen Fehler hervorruft, dann führt der Fehlerdetektor 450 eine oder mehrere Schreiboperationen aus, die die weiteren fehlererzeugenden virtuellen Speichertransaktionen in dem Wiederholpuffer 460 speichern.
  • Im Schritt 512 wartet die Wiederholeinheit 350(0) darauf, dass die CPU 102 bekannt gibt, dass ein oder mehrere Fehler behoben worden sind, wobei dies über das Wiederholsignal erfolgt. Bei Empfang des Wiederholsignals setzt die Wiederholeinheit 350(0) den uTLB 430 auf ungültig und führt die virtuellen Speichertransaktionen, die in dem Wiederholpuffer 460 gespeichert sind, erneut aus. Wenn der uTLB 430 erfolgreich eine virtuelle Speichertransaktion, die in dem Wiederholpuffer 460 enthalten ist, zuordnet, dann leitet die Wiederholeinheit 350(0) eine entsprechende physikalische Speichertransaktion an den PPU-Speicher 204 weiter. Wenn jedoch der uTLB 430 nicht in der Lage ist, eine spezielle virtuelle Speichertransaktion, die in dem Wiederholpuffer 460 enthalten ist, zuzuordnen, dann führt der Fehlerdetektor 450 eine Schreiboperation aus, die die virtuelle Speichertransaktion in dem Wiederholpuffer 460 erneut einreiht. Wenn im Schritt 514 die Wiederholeinheit 350(0) ermittelt, dass der Wiederholpuffer 460 nicht leer ist, dann kehrt das Verfahren 500 zum Schritt 512 zurück. Die Wiederholeinheit 350(0) durchläuft zyklisch die Schritte 512514, wobei virtuelle Speichertransaktionen, die in dem Wiederholpuffer 460 enthalten sind, erneut ausgeführt werden, bis die Wiederholeinheit 350(0) ermittelt, dass der Wiederholpuffer 460 leer ist.
  • Wenn im Schritt 514 die Wiederholeinheit 350(0) ermittelt, dass der Wiederholpuffer 460 leer ist, dann geht das Verfahren 500 weiter zum Schritt 516. Im Schritt 516 veranlasst die Wiederholeinheit 350(0) den SM 310(0), mit der Ausgabe virtueller Speichertransaktionen aus dem SM 310(0) fortzufahren, und das Verfahren 500 kehrt zum Schritt 502 zurück. Die Wiederholeinheit 350(0) fährt fort, zyklisch die Schritte 502516 zu durchlaufen, wobei virtuelle Speichertransaktionen aus dem SM 510(0) empfangen und verarbeitet werden.
  • Zusammengefasst gilt: eine Parallelverarbeitungseinheit (PPU) realisiert Fehlerbehandlungstechniken, die gewisse Datenstrom-Multiprozessoren (SM) in die Lage zu versetzen, die Ausführung von Strängen fortzusetzen, während andere SM veranlasst werden, zeitweilig die Ausführung von Strängen anzuhalten. Wenn im Betrieb ein Speicherzugriffsfehler auftritt, der einem Strang zuzuordnen ist, der sich in einem speziellen SM befindet, dann hält eine Wiederholeinheit, die dem SM zugeordnet ist, den speziellen SM an, während das Computersystem den Fehler behebt. Zu beachten ist, dass die Wiederholeinheit den entsprechenden SM veranlasst, die Erzeugung weiterer Speichertransaktionen anzuhalten, bis die Speichertransaktion, die den Fehler hervorgerufen hat, behandelt ist. Ferner ordnet die Wiederholeinheit jegliche anhängige Speichertransaktionen, die von dem entsprechenden SM vor dem Fehler ausgegeben wurden, in einem Wiederholpuffer als Warteschlange an. Bei Behebung des Fehlers veranlasst die Wiederholeinheit, dass die in dem Wiederholpuffer gespeicherten Speichertransaktionen erneut ausgeführt werden. Nach der erfolgreichen Ausführung aller Speichertransaktionen, die in dem Wiederholpuffer gespeichert sind, veranlasst die Wiederholeinheit den entsprechenden SM, die Erzeugung weiterer Speichertransaktionen fortzusetzen.
  • Dadurch, dass nicht betroffene SM die Ausführung fortsetzen können, während ein Betroffener SM in Anwesenheit von Speicherzugriffsfehlern angehalten wird, wird vorteilhafterweise die Beeinträchtigung in der Ausführung reduziert, die mit Speicherzugriffsfehlern einhergeht. Da ein betroffener SM weiterhin seine Ausführung fortsetzt und die fehlererzeugende Speichertransaktion gespeichert und wiederholt wird, ist zu beachten, dass Befehle nicht gelöscht werden müssen. Und da das Computersystem Fehlerbehebungsprozesse für anhängige fehlererzeugende Speichertransaktionen zusammen ausführt, kann das gesamte Systemverhalten im Vergleich zur individuellen Behebung des Fehlers verbessert werden. Im Gegensatz dazu hält bei Erzeugung eines Speicherzugriffsfehlers eine konventionelle PPU die SM, die in der PPU enthalten sind, an und löscht alle nachfolgenden Speichertransaktionen, die von den mehreren SM erzeugt wurden. Die SM, die in einer derartigen PPU enthalten sind, fahren mit der Ausgabe von Speichertransaktionen nicht fort, bis der Speicherzugriffsfehler behoben ist. Daher ist die Beeinträchtigung der Verarbeitungsleistung, die mit Speicherzugriffsfehlern in PPUs einhergeht, die selektive Speichertransaktions- und Wiederholtechniken einsetzen, geringer im Vergleich zu konventionellen PPUs.
  • Obwohl das vorhergehende sich an Ausführungsformen der vorliegenden Erfindung, können andere und weitere Ausführungsformen der Erfindung erdacht werden, ohne von dem grundlegenden Schutzbereich davon abzuweichen. Zum Beispiel können Aspekte der vorliegenden Erfindung in Hardware oder Software oder in einer Kombination aus Hardware und Software eingerichtet werden. Eine Ausführungsform der Erfindung kann als ein Programmprodukt zur Verwendung in einem Computersystem realisiert werden. Das bzw. die Programme des Programmprodukts definieren Funktionen der Ausführungsformen (einschließlich der hierin beschriebenen Verfahren) und können in einer Vielzahl von computerlesbaren Speichermedien enthalten sein. Zu anschaulichen computerlesbaren Speichermedien gehören, ohne Einschränkung: (i) nicht-beschreibbare 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.
  • Die Erfindung ist mit Bezug zu speziellen Ausführungsformen beschrieben worden. Der Fachmann erkennt jedoch, dass diverse Modifizierungen und Änderungen daran vorgenommen werden können, ohne von dem breiteren Grundgedanken und dem Schutzbereich der Erfindung abzuweichen, wie sie in den angefügten Patentansprüchen angegeben ist. Die vorhergehende Beschreibung und die Zeichnungen sind daher als anschaulich und nicht als beschränkend zu betrachten.
  • Daher ist der Schutzbereich der vorliegenden Erfindung durch die folgenden Patentansprüche festgelegt.

Claims (10)

  1. Ein computerimplementiertes Verfahren zur Verarbeitung virtueller Speichertransaktionen im Zusammenhang mit einer mehrsträngigen Verarbeitungseinheit, wobei das Verfahren umfasst: Empfangen einer ersten virtuellen Speichertransaktionen aus einer ersten Einheit; Versuchen, die erste virtuelle Speichertransaktion auszuführen; Erfassen eines ersten Seitenfehlers, der die erste virtuelle Speichertransaktion betrifft; Speichern der ersten virtuellen Speichertransaktion in einem Wiederholpuffer; Verursachen eines angehaltenen Zustands, der verhindert, dass die erste Einheit nachfolgende virtuelle Speichertransaktionen erzeugt, bis der erste Seitenfehler behoben ist; und sobald der erste Seitenfehler behoben ist, erneutes Ausführung der ersten virtuellen Speichertransaktion sowie mindestens einer anderen virtuellen Speichertransaktion, die in dem Wiederholpuffer gespeichert sind.
  2. Das Verfahren nach Anspruch 1, das ferner umfasst: Ermitteln, dass der Wiederholpuffer leer ist, und Veranlassen der ersten Einheit, nachfolgende virtuelle Speichertransaktionen zu erzeugen.
  3. Das Verfahren nach Anspruch 1, das ferner umfasst: Empfangen einer zweiten virtuellen Speichertransaktion aus einer zweiten Einheit, während der erste Seitenfehler behoben wird, und erfolgreiches Ausführen der zweiten virtuellen Speichertransaktion.
  4. Das Verfahren nach Anspruch 1, das ferner umfasst: Empfangen einer zweiten virtuellen Speichertransaktion aus der ersten Einheit vor dem Erfassen des ersten Seitenfehlers; Erfassen eines zweiten Seitenfehlers, der die zweite virtuelle Speichertransaktion betrifft; und Speichern der zweiten virtuellen Speichertransaktion in dem Wiederholpuffer.
  5. Das Verfahren nach Anspruch 1, das ferner umfasst: Ungültigsetzen eines Translations-Nebenschaupuffers vor der erneuten Ausführung der ersten virtuellen Speichertransaktion.
  6. Das Verfahren nach Anspruch 1, wobei erneutes Ausführen der ersten virtuellen Speichertransaktion umfasst: Ermitteln, ob es einen Eintrag in einem Translations-Nebenschaupuffer gibt, der der ersten virtuellen Speichertransaktion entspricht; und wenn der Eintrag vorhanden ist, dann Vollenden der ersten virtuellen Speichertransaktion, oder wenn der Eintrag nicht vorhanden ist, dann erneutes Speichern der ersten virtuellen Speichertransaktion in dem Wiederholpuffer.
  7. Das Verfahren nach Anspruch 1, wobei Beheben des ersten Seitenfehlers umfasst: Anordnen einer Speicherseite, die die erste virtuelle Speichertransaktion betrifft, in einem ersten Speichersubsystem auf der Grundlage einer globalen Translationstabelle; und Einfügen einer virtuellen Zuordnung für die Speicherseite in einen Translations-Nebenschaupuffer.
  8. Das Verfahren nach Anspruch 7, wobei Beheben des ersten Seitenfehlers ferner umfasst: Kopieren der Speicherseite von dem ersten Speichersubsystem in ein zweites Speichersubsystem.
  9. Das Verfahren nach Anspruch 8, wobei das erste Speichersubsystem einen Speicher umfasst, der mit einer zentralen Recheneinheit verbunden ist, wobei das zweite Speichersubsystem einen Speicher umfasst, der mit der mehrsträngigen Verarbeitungseinheit verbunden ist.
  10. Ein System, das zur Verarbeitung virtueller Speichertransaktionen ausgebildet ist, wobei das System umfasst: einen Speicher; und eine mehrsträngige Verarbeitungseinheit, die mit dem Speicher verbunden und ausgebildet ist, um: eine erste virtuelle Speichertransaktion aus einer ersten Einheit zu empfangen; zu versuchen, die erste virtuelle Speichertransaktion an dem Speicher auszuführen; einen ersten Seitenfehler zu erfassen, der die erste virtuelle Speichertransaktion betrifft; die erste virtuelle Speichertransaktion in einem Wiederholpuffer zu speichern; einen angehaltenen Zustand hervorzurufen, der die erste Einheit davon abhält, nachfolgende virtuelle Speichertransaktionen zu erzeugen, bis der erste Seitenfehler behoben ist; und sobald der erste Seitenfehler behoben ist, die erste virtuelle Speichertransaktion sowie mindestens eine andere virtuelle Speichertransaktion, die in dem Wiederholpuffer gespeichert sind, erneut auszuführen.
DE102013021996.5A 2013-03-15 2013-12-30 Wiederholung von Speichertransaktionen während der Behandlung von Speicherzugriffsfehlern Withdrawn DE102013021996A1 (de)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201361793998P 2013-03-15 2013-03-15
US201361800004P 2013-03-15 2013-03-15
US61/800,004 2013-03-15
US61/793,998 2013-03-15
US14/109,678 2013-12-17
US14/109,678 US9575892B2 (en) 2013-03-15 2013-12-17 Replaying memory transactions while resolving memory access faults

Publications (1)

Publication Number Publication Date
DE102013021996A1 true DE102013021996A1 (de) 2014-09-18

Family

ID=51418511

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013021996.5A Withdrawn DE102013021996A1 (de) 2013-03-15 2013-12-30 Wiederholung von Speichertransaktionen während der Behandlung von Speicherzugriffsfehlern

Country Status (2)

Country Link
CN (1) CN104049951A (de)
DE (1) DE102013021996A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2536199B (en) * 2015-03-02 2021-07-28 Advanced Risc Mach Ltd Memory management
GB2536200B (en) * 2015-03-02 2021-08-18 Advanced Risc Mach Ltd Memory management

Also Published As

Publication number Publication date
CN104049951A (zh) 2014-09-17

Similar Documents

Publication Publication Date Title
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE112011105042B4 (de) Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE112007000812B4 (de) Vorrichtung mit einer speichereinheit und drei logiken, verfahren zum durchführen der verfahrensschritte der vorrichtung undsystem mit einem speicher und einem prozessor zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren
DE69811474T2 (de) Rechnerarchitektur zur aufschiebung von exceptions statischer spekulativer befehle
DE102012210232B4 (de) Vorbeugende Speicherreparatur auf der Grundlage der Analyse einer Vielzahl von Symbolen und Bereinigungszyklen
DE112010003492T5 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE112012001660T5 (de) Speicher-Checkpointing in einem System gespiegelter virtueller Maschinen
DE102012224265A1 (de) Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher
DE112006001698T5 (de) Grundfunktionen zum Verbessern von Thread-Level Spekulation
DE102012220029A1 (de) Spekulative Ausführung und Zurücksetzen
DE112019000629B4 (de) Koordination von cacheoperationen
DE102012222394A1 (de) Verfahren und Vorrichtung zum Sammelzwischenspeichern von Quelloperanden
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE102013205886A1 (de) Dynamische Bankmodus-Adressierung für Speicherzugriff
DE112007001245T5 (de) Fehlererkennung mit redundanten virtuellen Maschinen
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE112019005408T5 (de) Masterloses raid für byte-adressierbaren nichtflüchtigen speicher
GB2529148A (en) Write operations to non-volatile memory
DE112018005768T5 (de) Copy-source-to-target-verwaltung in einem datenspeichersystem
DE102014003687A1 (de) Vorrichtung und verfahren zum schutz von digitalem inhalt
DE102013022166B4 (de) Seitenzustandsverzeichnis zur verwaltung eines vereinheitlichten virtuellen speichers

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012020000

Ipc: G06F0009380000

R082 Change of representative

Representative=s name: VERSCHT, THOMAS K., DIPL.-PHYS.(UNIV.), DE

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

R082 Change of representative

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

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee