DE112021001345T5 - On-demand speicherzuweisung - Google Patents

On-demand speicherzuweisung Download PDF

Info

Publication number
DE112021001345T5
DE112021001345T5 DE112021001345.9T DE112021001345T DE112021001345T5 DE 112021001345 T5 DE112021001345 T5 DE 112021001345T5 DE 112021001345 T DE112021001345 T DE 112021001345T DE 112021001345 T5 DE112021001345 T5 DE 112021001345T5
Authority
DE
Germany
Prior art keywords
page
address
private
private memory
circuitry
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.)
Pending
Application number
DE112021001345.9T
Other languages
English (en)
Inventor
Justin A. Hensley
Karl D. Mann
Yoong Chert Foo
Terence M. Potter
Frank W. Liljeros
Ralph C. Taylor
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.)
Apple Inc
Original Assignee
Apple Inc
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
Application filed by Apple Inc filed Critical Apple Inc
Publication of DE112021001345T5 publication Critical patent/DE112021001345T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/622State-only directory, i.e. not recording identity of sharing or owning nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Architecture (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

Es werden Techniken in Bezug auf das dynamische Zuweisen und Abbilden privater Speicher für Anforderungsschaltlogik (210) offenbart. Die offenbarte Schaltlogik (220) kann eine private Adresse empfangen und die private Adresse in eine virtuelle Adresse übersetzen (wobei eine MMU (230) dann in die physische Adresse übersetzt werden kann, um tatsächlich auf ein Speicherelement (240) zuzugreifen). In einigen Ausführungsformen ist die private Speicherzuweisungsschaltlogik (220) konfiguriert, um Seitentabelleninformationen zu generieren und private Speicherseiten für Anforderungen abzubilden, wenn die Seitentabelleninformationen nicht bereits eingerichtet sind. In verschiedenen Ausführungsformen kann dies vorteilhafterweise eine dynamische private Speicherzuweisung ermöglichen, z. B., um Speicher für Grafik-Shader mit unterschiedlichen Arten von Arbeitslasten effizient zuzuweisen. Die offenbarten Cache-Techniken für die Seitentabelleninformationen können die Leistung gegenüber herkömmlichen Techniken verbessern. Ferner können offenbarte Ausführungsformen die Speicherkonsolidierung über eine Vorrichtung wie einen Grafikprozessor erleichtern.

Description

  • HINTERGRUND
  • TECHNISCHES GEBIET
  • Diese Offenbarung betrifft allgemein eine Computerspeicherverwaltung und insbesondere Techniken zur On-Demand-Zuweisung von privatem Speicher.
  • BESCHREIBUNG DES STANDS DER TECHNIK
  • Prozessoren wie Grafikverarbeitungseinheiten (GPUs) können verschiedene Typen von Speicherplätzen verwenden. Zum Beispiel können gemeinsam genutzte Speicherplätze verwendet werden, um Daten gemeinsam zu nutzen, die von mehreren Prozessorblöcken verarbeitet werden, während andere Blöcke wie Shader-Prozessoren während des Betriebs auch private(n) Speicherplatz(-plätze) verwenden können.
  • Figurenliste
    • 1A ist ein Diagramm, das einen Überblick über beispielhafte Grafikverarbeitungsoperationen veranschaulicht, gemäß einigen Ausführungsformen.
    • 1B ist ein Blockdiagramm, das eine beispielhafte Grafikeinheit veranschaulicht, gemäß einigen Ausführungsformen.
    • 2 ist ein Blockdiagramm, das eine beispielhafte Vorrichtung mit privater Speicherzuweiserschaltlogik veranschaulicht, gemäß einigen Ausführungsformen.
    • 3 ist ein Blockdiagramm, das ein detaillierteres System mit Speicherzuweiserschaltlogik und Caches für Seitentabelleninformationen veranschaulicht, gemäß einigen Ausführungsformen.
    • 4 ist ein Diagramm, das eine beispielhafte Seitentabellenhierarchie veranschaulicht, gemäß einigen Ausführungsformen.
    • 5 ist ein Flussdiagramm, das ein beispielhaftes Verfahren zum Erstellen von Seitentabelleneinträgen und Abbilden einer Seite und als Reaktion auf eine Anforderung veranschaulicht, gemäß einigen Ausführungsformen.
    • 6 ist ein Flussdiagramm, das ein allgemeineres Verfahren zum Handhaben von Zugriffsanforderungen veranschaulicht, die eine Adresse in einem privaten Speicherplatz einschließt, gemäß einigen Ausführungsformen.
    • 7 ist ein Blockdiagramm, das eine beispielhafte Rechenvorrichtung veranschaulicht, gemäß einigen Ausführungsformen.
    • 8 ist ein Blockdiagramm, das ein beispielhaftes computerlesbares Medium veranschaulicht, das Schaltungsdesigninformationen speichert, gemäß einigen Ausführungsformen.
  • Diese Beschreibung schließt Bezugnahmen auf verschiedene Ausführungsformen ein, um anzugeben, dass die vorliegende Offenbarung sich nicht auf eine bestimmte Implementierung beziehen soll, sondern vielmehr auf eine Reihe von Ausführungsformen, die in den Geist der vorliegenden Offenbarung fallen, einschließlich der beigefügten Ansprüche. Besondere Merkmale, Strukturen oder Eigenschaften können auf jegliche geeignete Weise kombiniert werden, die mit dieser Offenbarung im Einklang steht.
  • Innerhalb dieser Offenbarung können unterschiedliche Entitäten (die verschiedentlich als „Einheiten“, „Schaltungen“, andere Komponenten usw. bezeichnet werden können) als „konfiguriert“, um eine oder mehrere Aufgaben oder Operationen durchzuführen, beschrieben oder beansprucht werden. Diese Formulierung - [Entität], die konfiguriert ist, [um eine oder mehrere Aufgaben durchzuführen] - wird hierin verwendet, um sich auf eine Struktur (d. h. etwas Physisches, wie eine elektronische Schaltung) zu beziehen. Insbesondere wird diese Formulierung verwendet, um anzugeben, dass diese Struktur angeordnet ist, um die eine oder die mehreren Aufgaben während des Betriebs durchzuführen. Eine Struktur kann als „konfiguriert zum“ Durchführen einer Aufgabe bezeichnet werden, selbst wenn die Struktur aktuell nicht betrieben wird. Ein „programmierbarer Shader-Prozessor, der konfiguriert ist zum Ausführen eines Shader-Programms“, soll zum Beispiel eine Schaltung abdecken, die diese Funktion während des Betriebs durchführt, selbst wenn die betreffende Schaltung aktuell nicht verwendet wird (z. B. keine Stromversorgung damit verbunden ist). Somit bezieht sich eine Entität, die als „konfiguriert, um“ eine Aufgabe durchzuführen, beschrieben oder angegeben ist, auf etwas Physisches, wie eine Vorrichtung, eine Schaltung, einen Speicher, der Programmanweisungen speichert, die ausführbar sind, um die Aufgabe zu implementieren, usw. Diese Wendung wird hierin nicht verwendet, um auf etwas nicht Greifbares Bezug zu nehmen.
  • Der Begriff „konfiguriert, um“ soll nicht „konfigurierbar, um“ bedeuten. Eine unprogrammierte FPGA würde zum Beispiel nicht angesehen als „konfiguriert, um“ eine bestimmte Funktion auszuführen, obwohl sie „konfigurierbar, um“ diese Funktion auszuführen, sein kann. Nach geeigneter Programmierung kann die FPGA dann konfiguriert werden, um diese Funktion durchzuführen.
  • Das Angeben in den beiliegenden Ansprüchen, dass eine Struktur „konfiguriert ist, um“ eine oder mehrere Aufgaben durchzuführen, ist ausdrücklich nicht dazu gedacht, sich auf 35 U.S.C. § 112(f) für dieses Anspruchselement zu berufen. Dementsprechend soll keiner der Ansprüche in dieser Anmeldung in der eingereichten Fassung so ausgelegt werden, dass er Mittel-plus-Funktion-Elemente aufweist. Wenn sich der Anmelder während des Erteilungsverfahrens auf die Anwendung von Abschnitt 112(f) berufen möchte, gibt er Anspruchselemente unter Verwendung des Konstrukts „Mittel zum“ [Durchführen einer Funktion] an.
  • Wie hierin verwendet, wird der Begriff „basierend auf“ verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Begriff schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, eine Bestimmung kann ausschließlich auf angegebenen Faktoren basieren oder auf den angegebenen Faktoren sowie anderen, nicht angegebenen Faktoren basieren. Man betrachte die Wendung „A basierend auf B bestimmen“. Diese Wendung gibt an, dass B ein Faktor ist, der verwendet wird, um A zu bestimmen, oder der die Bestimmung von A beeinflusst. Diese Wendung schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor, wie C, basieren kann. Diese Wendung soll auch eine Ausführungsform abdecken, in der A ausschließlich basierend auf B bestimmt wird. Wie hierin verwendet, ist die Wendung „basierend auf‟ gleichbedeutend mit der Wendung „basierend mindestens teilweise auf“.
  • Ferner implizieren, wie hierin verwendet, die Begriffe „erst(er, -e, -es)“, „zweit(er, -e, -es)“, „dritt(er, -e, -es)“ usw. nicht notwendigerweise eine Reihenfolge (z. B. zeitlich) zwischen Elementen. Zum Beispiel impliziert eine Bezugnahme auf eine „erste“ Grafikoperation und eine „zweite“ Grafikoperation ohne einen zusätzlichen Sprachgebrauch, der die zeitliche Beziehung zwischen diesen Operationen beschränkt, keine Reihenfolge der Grafikoperation. Kurz gefasst werden Bezugnahmen wie „erst(er, -e, -es)“, „zweit(er, -e, -es)“ usw. als Bezeichnungen zur Vereinfachung der Bezugnahme in der Beschreibung und den beiliegenden Ansprüchen verwendet.
  • DETAILLIERTE BESCHREIBUNG
  • Überblick über Grafikverarbeitung
  • Unter Bezugnahme auf 1A ist ein Flussdiagramm gezeigt, das einen beispielhaften Verarbeitungsfluss 100 zum Verarbeiten von Grafikdaten veranschaulicht. In einigen Ausführungsformen kann der Transformations- und Beleuchtungsschritt 110 das Verarbeiten von Beleuchtungsinformationen für Eckpunkte, die von einer Anwendung basierend auf definierten Lichtquellenorten, einem definierten Reflexionsgrad usw. empfangen werden, das Assemblieren der Eckpunkte in Polygone (z. B. Dreiecke) und/oder das Transformieren der Polygone auf die richtige Größe und Ausrichtung basierend auf einer Position in einem dreidimensionalen Raum beinhalten. Der Abschneidschritt 115 kann ein Verwerfen von Polygonen oder Eckpunkten beinhalten, die außerhalb eines sichtbaren Bereichs fallen. Der Rasterisierungsschritt 120 kann ein Definieren von Fragmenten innerhalb jedes Polygons und ein Zuweisen anfänglicher Farbwerte für jedes Fragment, z. B. basierend auf Texturkoordinaten der Eckpunkte des Polygons, beinhalten. Fragmente können Attribute für Pixel angeben, die sie überlappen, jedoch können die tatsächlichen Pixelattribute basierend auf dem Kombinieren mehrerer Fragmente (z. B. in einem Frame-Puffer) und/oder dem Ignorieren eines oder mehrerer Fragmente (z. B. wenn sie durch andere Objekte bedeckt werden) bestimmt werden. Der Schattierungsschritt 130 kann ein Ändern von Pixelkomponenten basierend auf Beleuchtung, Schatten, Bump-Mapping, Transluzenz usw. beinhalten. Schattierte Pixel können in einem Frame-Puffer 135 assembliert werden. Moderne GPUs schließen in der Regel programmierbare Shader ein, die eine Anpassung von Schattierungs- und anderen Verarbeitungsschritten durch Anwendungsentwickler ermöglichen. Somit können in verschiedenen Ausführungsformen die beispielhaften Elemente von 1A in verschiedenen Reihenfolgen durchgeführt, parallel durchgeführt oder weggelassen werden. Zusätzliche Verarbeitungsschritte können ebenfalls implementiert werden.
  • Unter Bezugnahme nun auf 1B ist ein vereinfachtes Blockdiagramm, das eine Grafikeinheit 150 veranschaulicht, gemäß einigen Ausführungsformen gezeigt. In der veranschaulichten Ausführungsform schließt die Grafikeinheit 150 einen programmierbaren Shader 160, eine Eckpunkt-Pipe 185, eine Fragment-Pipe 175, eine Texturverarbeitungseinheit (TPU) 165, eine Bildschreibeinheit 170 und eine Speicherschnittstelle 180 ein. In einigen Ausführungsformen ist die Grafikeinheit 150 konfiguriert, um sowohl Eckpunkt- als auch Fragmentdaten unter Verwendung des programmierbaren Shaders 160 zu verarbeiten, der konfiguriert sein kann, um Grafikdaten parallel unter Verwendung mehrerer Ausführungs-Pipelines oder -instanzen zu verarbeiten.
  • Die Eckpunkt-Pipe 185 kann in der veranschaulichten Ausführungsform verschiedene Hardware mit fester Funktion einschließen, die konfiguriert ist, um Eckpunktdaten zu verarbeiten. Die Eckpunkt-Pipe 185 kann konfiguriert sein, um mit dem programmierbaren Shader 160 zu kommunizieren, um die Eckpunktverarbeitung zu koordinieren. In der veranschaulichten Ausführungsform ist die Eckpunkt-Pipe 185 konfiguriert, um verarbeitete Daten zur weiteren Verarbeitung an die Fragment-Pipe 175 und/oder den programmierbaren Shader 160 zu senden.
  • Die Fragment-Pipe 175 kann in der veranschaulichten Ausführungsform verschiedene Hardware mit fester Funktion einschließen, die konfiguriert ist, um Pixeldaten zu verarbeiten. Die Fragment-Pipe 175 kann konfiguriert sein, um mit dem programmierbaren Shader 160 zu kommunizieren, um eine Fragmentverarbeitung zu koordinieren. Die Fragment-Pipe 175 kann konfiguriert sein, um eine Rasterisierung an Polygonen von der Eckpunkt-Pipe 185 und/oder dem programmierbaren Shader 160 durchzuführen, um Fragmentdaten zu erzeugen. Die Eckpunkt-Pipe 185 und/oder die Fragment-Pipe 175 können mit der Speicherschnittstelle 180 gekoppelt sein (Kopplung nicht gezeigt), um auf Grafikdaten zuzugreifen.
  • Der programmierbare Shader 160 ist in der veranschaulichten Ausführungsform konfiguriert, um Eckpunktdaten von der Eckpunkt-Pipe 185 und Fragmentdaten von der Fragment-Pipe 175 und/oder der TPU 165 zu empfangen. Der programmierbare Shader 160 kann konfiguriert sein, um Eckpunktverarbeitungsaufgaben an Eckpunktdaten durchzuführen, die verschiedene Transformationen und/oder Einstellungen von Eckpunktdaten einschließen können. Der programmierbare Shader 160 in der veranschaulichten Ausführungsform ist außerdem konfiguriert, um Fragmentverarbeitungsaufgaben an Pixeldaten, wie zum Beispiel Texturierung und Schattierung, durchzuführen. Der programmierbare Shader 160 kann mehrere Ausführungs-Pipelines für eine parallele Datenverarbeitung einschließen.
  • Die TPU 165 in der veranschaulichten Ausführungsform ist konfiguriert, um Fragmentverarbeitungsaufgaben von dem programmierbaren Shader 160 zu planen. In einigen Ausführungsformen ist die TPU 165 konfiguriert, um Texturdaten vorabzurufen und anfängliche Farben Fragmenten zur weiteren Verarbeitung durch den programmierbaren Shader 160 zuzuweisen (z. B. über die Speicherschnittstelle 180). Die TPU 165 kann konfiguriert sein, um Fragmentkomponenten zum Beispiel in normalisierten Ganzzahlformaten oder Gleitkommaformaten bereitzustellen. In einigen Ausführungsformen ist die TPU 165 konfiguriert, um Fragmente in Gruppen von vier (einer „Fragment-Vierergruppe“) in einem 2x2-Format zur Verarbeitung durch eine Gruppe von vier Ausführungs-Pipelines in dem programmierbaren Shader 160 bereitzustellen.
  • Die Bildschreibeinheit (Image Write Unit, IWU) 170 ist in einigen Ausführungsformen konfiguriert, um verarbeitete Kacheln eines Bildes zu speichern, und kann Operationen an einem gerenderten Bild durchführen, bevor es zur Anzeige oder an einen Speicher zur Speicherung übertragen wird. In einigen Ausführungsformen ist die Grafikeinheit 150 konfiguriert, um ein kachelbasiertes verzögertes Rendering (Tile-Based Deferred Rendering - TBDR) durchzuführen. Beim kachelbasierten Rendering können unterschiedliche Abschnitte des Bildschirmraums (z. B. Quadrate oder Rechtecke von Pixeln) separat verarbeitet werden. Die Speicherschnittstelle 180 kann in verschiedenen Ausführungsformen Kommunikationen mit einer oder mehreren von verschiedenen Speicherhierarchien unterstützen.
  • Überblick über On-Demand-Speicherzuweisung
  • Grafik-Shader-Prozessoren verwenden typischerweise privaten Speicherplatz, z. B. zum Speichern von Daten während des Ausführens eines Satzes von Grafikarbeiten, bevor Ergebnisse (z. B. für einen Kick) in einen gemeinsam genutzten Speicherplatz geschrieben werden. Die Bereitstellung fester privater Speicherzuweisungen für diese Prozessoren kann in bestimmten Szenarien ineffizient sein, z. B. wenn einige Ausführungswege für ein Programm wesentlich höheren Speicherplatzbedarf als andere nutzen, wenn es sinnvoll ist, Arbeit von einem Teil einer GPU zu einem anderen zu migrieren (z. B. um einen Hintergrundprozess zu verschieben, um Arbeiten von höherer Priorität Ressourcen zu bieten), und wenn Programme unterschiedliche Typen von Speicherbedarf für unterschiedliche Abschnitte (z. B. eine Anwendung, die zum Starten eine große private Thread-Zuweisung benötigt, später aber eine kleinere private Thread-Zuweisung gepaart mit einer privaten Threadgroup-Zuweisung benötigt) aufweisen. Ferner kann eine feste Zuweisung unter Umständen nicht ermöglichen, dass Speicherplatz zwischen Shader-Prozessoren und anderer Schaltlogik gemeinsam genutzt wird.
  • In offenbarten Ausführungsformen, die nachstehend ausführlich erörtert werden, weist die GPU dynamisch privaten Speicherplatz zu und bildet ihn ab. In einigen Ausführungsformen ist eine Speicherzuweiserschaltung konfiguriert, um Seiten des privaten Speicherplatzes für Schaltungen, die privaten Speicher verwenden, vorzumerken und abzubilden. Dies kann in einigen Ausführungsformen die Konsolidierung von mehreren Speicherplätzen zu einem gemeinsam genutzten globalen Speicherplatz ermöglichen. In einigen Ausführungsformen unterstützt der Speicherzuweiser die folgenden Operationen: Vormerken, Übersetzen-Abbilden, Übersetzen-Nichtabbilden, Aufheben der Abbildung, und Freigeben.
  • Der Vormerkbefehl merkt eine oder mehrere private Seiten (die alle Seiten einschließen können, die für eine Seitentabelle verwendet werden sollen) aus einem virtuellen Seitenpool vor. Dieser Befehl kann unter Umständen nicht tatsächlich Seiten abbilden, sondern kann das Dekrementieren eines Zählers von verfügbaren virtuellen Seiten veranlassen. Das Vormerken von Seiten vor dem tatsächlichen Abbilden der Seiten kann Blockieren vermeiden, wenn in einigen Ausführungsformen mehrere Schaltungen das Abbilden von Seiten benötigen.
  • Der Übersetzen-Abbilden-Befehl übersetzt eine private Speicheradresse in eine virtuelle Adresse, einschließlich des Abbildens einer virtuellen Seite aus dem Seitenpool in die Seitentabelle, falls erforderlich. Es ist zu beachten, dass dieser Befehl eine Abbildung bereitstellen kann, selbst wenn die entsprechende Seitentabelle nicht eingerichtet wurde, z. B. durch Generieren der Gesamtheit oder eines Abschnitts der Seitentabelle (die hierarchisch sein kann). Somit ist zu Beginn eines Satzes von Grafikarbeiten die Seitentabelle für ihren privaten Speicherplatz unter Umständen nicht vorhanden. Der Übersetzen-Abbilden-Befehl kann Maskeninformationen in der Seitentabellenhierarchie einstellen, welche die Gültigkeit von Einträgen auf niedrigerer Ebene angeben, die verwendet werden können, um zugewiesene Seiten zu verfolgen und das Abbauen einer Seitentabellenhierarchie, nachdem die Abbildung der Seiten aufgehoben wurde, zu ermöglichen.
  • Der Übersetzen-Nichtabbilden-Befehl übersetzt eine bereitgestellte private Adresse in eine virtuelle Adresse und gibt eine Angabe darauf zurück, ob ein entsprechender Sektor modifiziert wurde. Wenn der Sektor nicht modifiziert wurde, wird ein angefordertes Lesen aus der bereitgestellten Adresse nicht durchgeführt. Wenn keine virtuelle Seite für die private Seite, die der Anforderung entspricht, abgebildet wurde, führt der Übersetzen-Nichtabbilden-Befehl nicht dazu, dass eine Seite abgebildet wird.
  • Der Befehl zum Aufheben der Abbildung kann (ein) modifizierte(s) Feld(er), das/die einer bereitgestellten privaten Adresse entspricht/entsprechen, löschen. Sobald alle modifizierten Felder gelöscht wurden, kann eine entsprechende virtuelle Datenseite zurück an einen Seitenpool freigegeben werden. Der Freigabebefehl gibt in einigen Ausführungsformen eine abgebildete Seite frei, und gibt die Seite zurück an einen virtuellen Seitenpool frei.
  • In einigen Ausführungsformen implementiert eine Vorrichtung mehrere private Speicherplätze mit verschiedenen Gültigkeitsbereichen, die innerhalb eines globalen Sicherungsspeicherplatzes konsolidiert werden können. Zugriffe innerhalb jedes privaten Raums können in virtuelle Adressen im globalen Speicherplatz übersetzt werden. Zum Beispiel kann ein privater Speicherplatz für allgemeine Zwecke und Stapelregister einen SIMD-Gruppen-Geltungsbereich aufweisen. Als weiteres Beispiel kann ein privater Threadgroup-Speicherplatz einen Kachelbereich aufweisen. Zusätzliche Beispiele für private Räume schließen Schnittstelle, Shader-Kern, lokalen Bildblock und Ausführungszustandstypen ein. Das dynamische Zuweisen von Speicher für diese Strukturen kann zum Beispiel effiziente Zuweisungen relativ zu festen Puffern bereitstellen. Unterschiedliche Typen von Räumen können unterschiedliche Anzahlen von virtuellen IDs, die den Platz anfordern können (diese IDs können auf Hardware-IDs der Anforderungsschaltlogik abgebildet werden), und unterschiedliche maximale Größen pro virtueller ID aufweisen.
  • Die offenbarten Techniken können vorteilhafterweise eine Vorrichtungs-/Speichersicherung von privatem Speicherplatz ermöglichen, Flexibilität beim Zuweisen von privater Speicherspeicherung zu unterschiedlichen Zwecken bereitstellen, schnelle Übersetzungen bereitstellen, Bestimmungen ermöglichen, ob ausreichend virtuelle Seiten für eine gegebene Aufgabe verfügbar sind, den Software-Speicherplatzbedarf reduzieren und Speicherzugriffsmuster bereitstellen, die aus Caching-Perspektive wünschenswert sind. Die Flexibilität bei der Zuweisung kann insbesondere die Fähigkeit einschließen, die Speichermenge, die für unterschiedliche Arten von privatem Speicher (z. B. Universalregister in einem privaten Thread-Speicher oder lokalen Speicherplatz in einem privaten Threadgroup-Speicher) zugewiesen ist, dynamisch anzupassen, anstatt feste Puffer zu diesen Zwecken zu verwenden. Ferner können offenbarte On-Demand-Techniken die Zeit reduzieren, für die der Speicher zugewiesen wird (z. B. gegenüber dem Zuweisen von Speicher im Voraus), was die Gesamtspeichernutzung reduzieren kann.
  • 2 ist ein Blockdiagramm, das einen beispielhaften privaten Speicherzuweiser gemäß einigen Ausführungsformen veranschaulicht. In der veranschaulichten Ausführungsform schließt das System die Schaltlogik 210, den Speicherzuweiser 220, die Speicherverwaltungseinheit 230 und das Speicherelement 240 ein.
  • Die Schaltlogik 210 verwendet in der veranschaulichten Ausführungsform privaten Speicherplatz, der dynamisch zugewiesen wird. Ein programmierbarer Shader 160 ist ein Beispiel für die Schaltlogik 210. In der veranschaulichten Ausführungsform ist die Schaltlogik 210 konfiguriert, um Seitenvormerkanforderungen an den Speicherzuweiser 220 zu senden und Seitenerteilungen zu empfangen. Es ist zu beachten, dass die Vormerkung unter Umständen keine Seite tatsächlich abbilden kann, sondern einen Zähler dekrementieren kann, um eine Seite für die Schaltlogik 210 vorzumerken. Die Schaltlogik 210 ist auch konfiguriert, um Abbildungsanforderungen an den Speicherzuweiser 220 mit einer privaten Adresse zu senden und eine entsprechende virtuelle Adresse basierend auf dem dynamischen Abbilden einer Seite für die private Adresse zu empfangen. Die Schaltlogik 210 verwendet dann die virtuelle Adresse für den Zugriff auf das Speicherelement 240 über die MMU 230.
  • Der Speicherzuweiser 220 ist in der veranschaulichten Ausführungsform konfiguriert, um Anforderungen von der Schaltlogik 210, wie vorstehend beschrieben, zu empfangen und auf Anforderungen zu antworten. Der Speicherzuweiser 220 kommuniziert mit der MMU 230, z. B., um auf Seitenpoolinformationen zuzugreifen, die im globalen Speicherplatz gespeichert sind (die z. B. durch das Speicherelement 240 implementiert werden können, das Teil einer Cache-/Speicherhierarchie sein kann). Der Speicherzuweiser 220 kann bestimmen, ob Elemente einer Seitentabellenhierarchie für eine gegebene Anforderung existieren, und dynamisch Strukturen erzeugen, die nicht vorhanden sind. Der Speicherzuweiser 220 oder die Schaltlogik 210 können verschiedene Cache-Schaltlogik zum Zwischenspeichern von Seitentabelleninformationen auf einer oder mehreren hierarchischen Ebenen einschließen.
  • Die MMU 230 ist in einigen Ausführungsformen konfiguriert, um virtuelle Adressen in einem globalen Speicherplatz in physische Adressen im Speicherelement 240 zu übersetzen. In einigen Ausführungsformen ist die MMU 230 nicht an der privaten Speicherzuweisung beteiligt und kann daher eine beliebige von verschiedenen geeigneten herkömmlichen Architekturen implementieren. Es ist zu beachten, dass die MMU 230 ein Paging-Schema zum Übersetzen von virtuellen Adressen in physische Adressen implementieren kann, das von den hierin erörterten Paging-Techniken zum Übersetzen von privaten Adressen in virtuelle Adressen getrennt sein kann. In einigen Ausführungsformen ist die Seitentabelle für die MMU 230 vollständig speichergestützt, basierend auf einer bekannten Speichergröße, während die vom Speicherzuweiser 220 verwendeten Seitentabellen dynamisch wachsen und schrumpfen können.
  • Auf das Speicherelement 240 wird in der veranschaulichten Ausführungsform über physische Adressen zugegriffen und es kann unter Verwendung einer beliebigen von verschiedenen geeigneten Speichertechnologien implementiert werden. Es ist zu beachten, dass auf verschiedene Daten-Cache-Ebenen in einer Cache-/Speicherhierarchie unter Verwendung virtueller oder physischer Adressen zugegriffen werden kann. Wenn also angeforderte Daten bereits in einem Cache zwischengespeichert sind, der unter Verwendung virtueller Adressdaten markiert ist, ist die MMU 230 möglicherweise nicht an der Verarbeitung der angeforderten Daten beteiligt. Ferner kann das Speicherelement 240 ein Daten-Cache sein, der zum Beispiel unter Verwendung einer physischen Adresse, eines Direktzugriffsspeichers oder einer Festplatte markiert ist.
  • Beispielhafter Speicherzuweiser
  • 3 ist ein Blockdiagramm, das ein detailliertes Beispiel für einen Speicherzuweiser gemäß einigen Ausführungsformen veranschaulicht. In der veranschaulichten Ausführungsform schließt das System die Shader 360A-360N, die Seitentabellen-Caches (PTCs) 310A-310N, die Speicherzuweiser 220, den globalen Seitenmanager (PM) 350 und den globalen Speicher (GM) 365 ein. Der Speicherzuweiser 220 enthält den Seitenkatalog-Cache (page catalog cache, PCC) 322 (der die Seitenwarteschlange 330 und den Seitenkatalog-(page catalog, PC)-Speicher 325) enthält, und den Seitenverzeichnis-Cache (page directory cache, PDC) 324 (der die Seitenwarteschlange 335 und den PTC-Arbiter 340 enthält. Das veranschaulichte Beispiel stellt das Zwischenspeichern von Seitentabelleninformationen bereit, um die Leistung der dynamischen Zuweisung von privatem Speicher für die Shader 360 zu verbessern.
  • Shader 360 sind ein Beispiel für die Schaltlogik 210 und können konfiguriert sein, um Shader-Programme auszuführen, die typischerweise Einzel-Anweisungs-Mehrfachdaten(single-instruction-multiple-data, SIMD)-Programme sind. Shader 360 können verschiedene Arten von Arbeit ausführen, die einen privaten Speicher verwenden können, einschließlich Pixelschattierungsaufgaben, Eckpunktverarbeitung oder allgemeiner Rechenaufgaben. Wie gezeigt, kann ein Shader 360 Abbildungsanforderungen mit einer privaten Adresse initiieren und eine virtuelle Adresse empfangen, die auf die private Adresse abgebildet ist. Shader 360 können dann virtuelle Adressen einer Cache-/Speicherhierarchie bereitstellen, die bei Bedarf die virtuelle Adresse in einem globalen Speicherplatz in eine physische Adresse in einem Speicherelement übersetzen kann. Wie gezeigt, kann ein Shader 360 auch eine Seitenvormerkanforderung senden und eine Seitenerteilung empfangen (wenn es genügend Seiten im Seitenpool gibt).
  • PTCs 310 sind in einigen Ausführungsformen konfiguriert, um Seitentabelleneinträge zwischenzuspeichern. Es ist zu beachten, dass eine beispielhafte hierarchische Seitentabellenstruktur, die Seitentabellen-, Seitenverzeichnis- und Seitenkatalogeinträge einschließt, nachstehend unter Bezugnahme auf 4 detailliert erörtert wird. In einigen Ausführungsformen schließt jeder PTC-Eintrag mehrere (z. B. 2, 4, 8 usw.) Übersetzungen von privat in virtuell ein. Die PTCs 310 können eine LRU (Least-Recently-Used)-Ersetzungsrichtlinie implementieren. PTCs 310 können verschiedene Set/Way-Implementierungen und Puffertiefen implementieren (z. B. zum Speichern empfangener Anforderungen oder empfangener Seitentabelleninformationen), und diese Parameter können konfigurierbar sein. Das Tag für jeden Eintrag kann ein Abschnitt eines Hash der privaten Adresse sein. Jeder Eintrag kann auch ein Feld einschließen, das die Anzahl ausstehender Anforderungen für den Eintrag angibt (und Einträge werden in einigen Ausführungsformen nur ersetzt, wenn diese Zählung null ist).
  • Für Seitenvormerke kann ein PTC 310 mit dem dezentralen Seitenmanager 345 kommunizieren, der wiederum mit dem globalen Seitenmanager 350 kommunizieren kann, um zu bestimmen, ob ausreichend Seiten verfügbar sind, und die Seitenzählung bei Erteilung einer Anforderung dekrementieren. Wenn ein Seiten-Tabelleneintrag, der der privaten Adresse entspricht, in einem PTC 310 vorhanden ist, ist er konfiguriert, um die vorgegebene virtuelle Adresse aus dem Eintrag bereitzustellen. Wenn ein angeforderter Seiten-Tabelleneintrag nicht in einem PTC 310 (eine Cache-Fehlstelle) vorhanden ist, sendet er die private Adresse an den Speicherzuweiser 220 und empfängt eine abgebildete virtuelle Adresse (in einigen Ausführungsformen kann der Speicherzuweiser 220 mehrere virtuelle Adressen zum Zwischenspeichern bereitstellen, die z. B. dasselbe Maskenbit gemeinsam nutzen). In der veranschaulichten Ausführungsform ist der Speicherzuweiser 220 auch konfiguriert, um einem PTC 310 eine virtuelle Adresse einer Seitentabellenseite bereitzustellen. Jeder PTC 310 kann eine Seitenwarteschlange (nicht gezeigt) einschließen, die konfiguriert ist, um empfangene Seitentabelleninformationen in eine Schlange zu stellen, und die Seitenwarteschlangen 330 und 335 für den PCC 322 und den PDC 324 können auf ähnliche Weise für deren jeweilige Caches arbeiten.
  • In einigen Ausführungsformen schließen PTC-Einträge eine Seitentabellenbasis ein, wodurch möglicherweise die Notwendigkeit vermieden werden kann, diese Informationen von einem übergeordneten Cache bei Auslagerungen anzufordern. In einigen Ausführungsformen schließen die hierin beschriebenen Caches einen oder mehrere zusätzliche Puffer oder FIFOs ein, einschließlich zum Beispiel ein Treffer-FIFO, einen Latenz-FIFO/-Puffer und Schreibpuffer für die Kommunikation zwischen der Tag-Prüfschaltlogik und der Daten-Cache-Schaltlogik. Somit können in einigen Ausführungsformen Anforderungen außerhalb der Reihenfolge zurückgegeben werden. Verschiedene Merkmale des PTC können für PCC 322 oder PDC 324 in ähnlicher Weise implementiert werden.
  • PDC 324 ist in einigen Ausführungsformen konfiguriert, um Seitenverzeichniseinträge zwischenzuspeichern. Der PTC-Arbiter 340 kann unter mehreren Seitentabellen-Caches entscheiden, um Anforderung(en) auszuwählen, die in einem gegebenen Zyklus auf PDC 324 zugreifen dürfen. PTCs können auf den PDC zugreifen, wenn sie eine Cache-Fehlstelle haben. PCC 322 ist in einigen Ausführungsformen konfiguriert, um Cache-Seitenkatalogeinträge zwischenzuspeichern. PDC 324 kann auf PCC zugreifen, wenn er eine Cache-Fehlstelle aufweist.
  • Der dezentrale Seitenmanager 345 ist in einigen Ausführungsformen konfiguriert, um mit dem globalen Seitenmanager 345 zu kommunizieren, um Seiten aus einem Seitenpool vorzumerken und Seiten freizugeben, nachdem sie nicht mehr verwendet werden. In einigen Ausführungsformen ist der globale Seitenmanager 350 konfiguriert, um mit mehreren dezentralen Seitenmanagern zu kommunizieren. In einigen Ausführungsformen ist der globale Seitenmanager 350 konfiguriert, um einen Interrupt zu generieren, wenn ein Zähler, der die Anzahl von Seiten im Seitenpool verfolgt, zu niedrig ist, und die Vorrichtung kann basierend auf dem Interrupt eine Korrekturmaßnahme ergreifen.
  • Der globale Speicher (GM) 365 ist ein globaler Speicherplatz, der über virtuelle Adressen zugänglich ist. In einigen Ausführungsformen wird der Speicher für eine Rechenvorrichtung im globalen Speicher 365 konsolidiert, sodass verschiedene private oder gemeinsam genutzte Speicherplätze im globalen Speicher 365 gesichert werden. Es ist zu beachten, dass die Vorrichtung eine Speicherhierarchie mit einer oder mehreren Daten-Cache-Ebenen und einem Sicherungsspeicherelement verwenden kann, um den globalen Speicherplatz zu implementieren. In einigen Ausführungsformen können offenbarte Techniken effiziente Cache-Zugriffsmuster in einer Daten-Cache-Hierarchie bereitstellen.
  • Verschiedene Elemente von 3 können in verschiedenen Ausführungsformen Rückgaben von angeforderten Informationen, die niedrige Latenz bereitstellen können, außerhalb der Reihenfolge unterstützen. In einigen Ausführungsformen können Abschnitte des Seitenpools für spezifische Arten von Arbeit vorgemerkt sein, z. B., um Hersteller-Verbraucher-Beziehungen zu ermöglichen und einen Abschnitt des Pools für Arbeit vom Verbrauchertyp zu schützen. In einigen Ausführungsformen ist die Vorrichtung konfiguriert, um die Software-Anpassung der Größe des Seitenpools zu ermöglichen. In einigen Ausführungsformen weist ein Treiber Platz im Speicher für einen Ringpuffer von Seiten zu und füllt Adressen auf, die diesen Seiten zugewiesen sind. Eine Seitenpool-Deskriptortabelle kann das Layout jedes Seitenpools beschreiben, der für Software zugänglich ist. In einigen Ausführungsformen kann dies Entwicklern ermöglichen, unterschiedliche Seitenpools für unterschiedliche Anwendungen, Kontexte, Kanäle usw. zu erstellen.
  • In einigen Ausführungsformen schließt der Grafikprozessor eine Kohärenzschaltlogik ein, die konfiguriert ist, um mindestens teilweise Kohärenz für Seitentabellen über einen programmierbaren Shader aufrechtzuerhalten. Die Kohärenzschaltlogik kann auch mindestens teilweise Kohärenz für Seitentabellen über mehrere programmierbare Shader-Prozessoren hinweg führen, die in derselben GPU enthalten sind. Dies kann ermöglichen, dass private Speicherzuweisungen von einem Shader-Prozessor zu einem anderen migrieren. Ferner kann die Kohärenzschaltlogik eine GPU-bezogene private Speicherzuweisung ermöglichen.
  • Beispielhafte Seitentabellenhierarchie
  • 4 ist ein Diagramm, das eine beispielhafte Seitentabellenhierarchie veranschaulicht, gemäß einigen Ausführungsformen. Es ist zu beachten, dass diese Seitentabellenhierarchie für Übersetzungen von privatem Speicherplatz in einen virtuellen Speicherplatz (z. B. globalen Speicher) von einer Seitentabelle getrennt sein kann, die von einer MMU verwendet wird, um virtuelle Adressen in physische Adressen zu übersetzen. Die zwei Seitentabellenhierarchien können jedoch in einigen Ausführungsformen ähnlich strukturiert sein.
  • In der veranschaulichten Ausführungsform ist die Vorrichtung konfiguriert, um eine gehashte private Adresse (HPA) durch Durchführen einer Hash-Funktion auf einer bereitgestellten privaten Adresse zu generieren. Das Hashing kann eine bestimmte Anzahl von IDs auf die gleichen Seitentabellenseiten abbilden. Dies kann es zum Beispiel benachbarten SIMD-Gruppen von Shader-Programmen ermöglichen, eine Seitentabelle gemeinsam zu nutzen. In einigen Ausführungsformen werden unterschiedliche Bitfelder der gehashten privaten Adresse verwendet, um auf unterschiedliche Ebenen in der Seitentabellenhierarchie zuzugreifen, wie in 4 gezeigt. Es ist zu beachten, dass die privaten Adressen vor dem Hashing verarbeitet werden können, z. B., um Felder neu anzuordnen, Hardware-IDs in virtuelle IDs umzuwandeln usw. Hardware-IDs können verwendet werden, um endliche Hardware-Ressourcen zu verfolgen und es der Vorrichtung zu ermöglichen, laufende Arbeiten zu verfolgen. Virtuelle IDs können beispielsweise eine Vorbelegung von Threadgroups ermöglichen, bei denen ein Satz von Arbeiten ausgeschaltet ist und ein anderer Satz von Arbeiten die gleichen Hardware-Ressourcen übernimmt. In einigen Ausführungsformen sind PTCs für das Schreiben von Datenstrukturen mit Tokens für vorbelegte Kernels und Threadgroups zusammen mit entsprechenden virtuellen IDs verantwortlich, wenn eine entsprechende Threadgroup vorbelegt ist.
  • In dem veranschaulichten Beispiel werden die oberen Bits der HPA verwendet, um in das Seitenkatalogfenster zu indexieren, um eine Seitenverzeichnisbasis und -maske auszuwählen. Wie gezeigt, schließt jeder Seitenkatalogeintrag eine Seitenkatalogmaske und Seitenkatalogbasis ein. Die Basis zeigt auf eine Seitenverzeichnisadresse. Die Maskenbits können jeweils für eine bestimmte Anzahl aufeinanderfolgender Seitenverzeichniseinträge (z. B. 1, 2, 4, 8 usw.) in einer Seitenverzeichnisseite angeben, ob einer dieser Einträge gültig ist. Der Speicherzuweiser 220 kann die Masken verwenden, um zu bestimmen, wann die Validierung der Seiten aufgehoben wird und diese freigegeben werden, z. B., nachdem Anforderungen zum Aufheben der Abbildung das Löschen aller Maskenbits bewirken. Somit kann die Maske in verschiedenen Ausführungsformen vorteilhafterweise den dynamischen Abbau der Seitentabellenhierarchie ermöglichen, wenn sie nicht mehr benötigt wird. Obwohl die Bitmasken hierin zum Zwecke der Erläuterung erörtert werden, können in anderen Ausführungsformen verschiedene Codierungen verwendet werden. Zum Beispiel kann ein Zählfeld die Anzahl gültiger Einträge in einem Abschnitt der nächstniedrigen Ebene in der Hierarchie zählen.
  • In dem veranschaulichten Beispiel wird der Multiplexer basierend auf oberen Bits der HPA gesteuert. Der Seitenkatalog kann einen Satz von Einträgen für jeden Kick-Slot einschließen, wobei ein Kick eine von der Grafikeinheit zu verarbeitende Arbeitseinheit ist. Es ist zu beachten, dass Einträge auf verschiedenen Ebenen in der Hierarchie ein gültiges Feld (z. B. ein Bit) einschließen können, obwohl die gültigen Felder zum Zwecke der Veranschaulichung nicht gezeigt sind.
  • In dem veranschaulichten Beispiel werden die oberen mittleren Bits der HPA verwendet, um in die Seitenverzeichnisseite zu indexieren, die durch die ausgewählte PC-Basis angegeben wird. Wie gezeigt, schließt jeder Seitenverzeichniseintrag eine Seitenverzeichnismaske und Seitenverzeichnisbasis ein. Die Maske kann ähnlich wie die vorstehend beschriebene PC-Maske verwendet werden. Die Maskenbits geben für eine bestimmte Anzahl aufeinanderfolgender Seitentabelleneinträge in einer Seitentabellenseite an, ob einer dieser Einträge gültig ist. Die Basis zeigt auf eine Seitentabellenadresse.
  • In dem veranschaulichten Beispiel werden die unteren mittleren Bits der HPA verwendet, um in die Seitentabellenseite zu indexieren, die durch die ausgewählte PD-Basis angegeben wird. Wie gezeigt, schließt jeder Seitentabelleneintrag eine Seitentabellenmaske und Seitentabellenbasis ein. Die Basis zeigt auf eine virtuelle Seite. Die Maskenbits geben für eine bestimmte Anzahl aufeinanderfolgender virtueller Adresseinträge in einer virtuellen Seite an, ob einer dieser Einträge gültig ist.
  • In dem veranschaulichten Beispiel werden die unteren Bits der HPA zur Indexierung in die virtuelle Seite verwendet, um auf eine virtuelle Adressmaske und virtuelle Adresse für die private Adresse zuzugreifen. Das VA-Masken-Feld kann verfolgen, ob Sektoren in den Speicher geschrieben wurden oder nicht, und seine Bits können als Modified/Dirty-Angaben für diese Sektoren fungieren. Für Übersetzen-Nicht-Abbilden-Anforderungen, bei denen das VA-Maskenbit „clean“ ist, müssen Daten für eine Leseanforderung unter Umständen nicht aus dem Speicher zurückgegeben werden.
  • Beispielhafte Einrichtung der Seitenhierarchie
  • 5 ist ein Flussdiagramm, das gemäß einigen Ausführungsformen eine beispielhafte Technik zum Abbilden einer privaten Adresse auf eine virtuelle Adresse veranschaulicht, wenn die Seitentabelle nicht eingerichtet ist. In einigen Ausführungsformen können verschiedene Elemente von 5 weggelassen werden, wenn Seitentabelleninformationen bereits zwischengespeichert oder zugewiesen sind; 5 stellt ein Beispiel bereit, bei dem ursprünglich kein(e) Seitentabelle, Seitenverzeichnis oder Seitenkatalogeinträge für die Abbildung gültig sind.
  • Bei 510 sendet in der veranschaulichten Ausführungsform ein Shader 360 eine Abbildungsanforderung (z. B. eine Übersetzungsabbildungsanforderung) an einen PTC 310 und die Anforderung schließt eine private Adresse in einem privaten Speicherplatz ein.
  • Bei 520 bestimmt der PTC 310 in der veranschaulichten Ausführungsform, dass eine Fehlstelle aufgetreten ist, z. B., weil er keinen Eintrag enthält, dessen Tag mit der privaten Adresse übereinstimmt. Der PTC sendet dann eine Seitentabellenbasis-Nachschlageanforderung an den Speicherzuweiser 220. Der Speicherzuweiser 220 entscheidet zwischen PTC-Anforderungen und verarbeitet die Nachschlageanforderung am PDC 324, wenn die Anforderung die Entscheidung gewinnt.
  • Bei 530 fehlt in der veranschaulichten Ausführungsform die private Adresse im PDC, die eine Seitenverzeichnis-Basisnachschlageanforderung an den PCC 322 sendet.
  • Bei 540 fehlt in der veranschaulichten Ausführungsform die private Adresse in dem PCC, die auf einen Seitenkatalog (PC) für die Anforderung überprüft. Diese Prüfung kann On-Chip-Zeiger verwenden, um zu bestimmen, dass kein PC vorhanden ist. In dem veranschaulichten Beispiel fordert der PCC den dezentralen Seitenmanager 345 auf, eine Seite für den Seitenkatalog zuzuweisen.
  • Bei 550 gibt in der veranschaulichten Ausführungsform der dezentrale Seitenmanager eine ungenutzte Seite zurück und der PCC fordert zum Abrufen des Programmkatalogeintrags aus dem Speicher auf (z. B. Lesen aus einem Offset, der auf der PC-Basis und einem Abschnitt der privaten Adresse basiert). Der PCC kann On-Chip-Zeiger aktualisieren, um auf die PC-Basis zu zeigen.
  • Bei 560 ist in der veranschaulichten Ausführungsform der vom PC zurückgegebene Eintrag (Seitenverzeichnis) ungültig, sodass der PCC den Seitenmanager auffordert, eine Seite für das Seitenverzeichnis zuzuweisen.
  • Bei 570 gibt der dezentrale Seitenmanager 345 in der veranschaulichten Ausführungsform eine ungenutzte Seite für das Seitenverzeichnis an den PCC zurück, der den Cache-Eintrag aktualisiert und die Seitenverzeichnisbasis an den Seitenverzeichnis-Cache zurückgibt. Der PDC fordert das Abrufen des Seitenverzeichniseintrags aus dem Speicher an.
  • Bei 580 ist in der veranschaulichten Ausführungsform der zurückgegebene Seitenverzeichniseintrag (Seitentabelle) ungültig, sodass der PDC eine Anforderung an den dezentralen Seitenmanager ausgibt, um eine Seite für die Seitentabelle zuzuweisen.
  • Bei 590 gibt in der veranschaulichten Ausführungsform der dezentrale Seitenmanager 345 eine ungenutzte Seite für die Seitentabelle zurück und der PDC aktualisiert den Cache-Eintrag. Der PDC sendet auch eine Anforderung zum Einstellen der Seitenverzeichnismaske an den PCC und gibt die Seitentabellenbasis an den PTC zurück.
  • Bei 595 initialisiert der PTC in der veranschaulichten Ausführungsform den Seitentabelleneintrag und fordert das Abrufen des Seitentabelleneintrags aus dem Speicher an. Die Seitentabelle ist ungültig, sodass der PTC fordert, dass der dezentrale Seitenmanager 345 eine Seite für private Daten zuweist. Der Seitenmanager 345 stellt eine ungenutzte Seite bereit. Die PTC aktualisiert den Cache-Eintrag, sendet eine Anforderung zum Einstellen der Seitentabelle-Maske an den Speicherzuweiser 220 (der unter mehreren Anforderungen entscheiden kann) und gibt eine virtuelle Adresse, die dem aktualisierten PTC-Eintrag entspricht, in den Shader 360 zurück.
  • In diesem Beispiel richtet die Vorrichtung dynamisch den gesamten Teil der Seitentabellenhierarchie ein, die benötigt wird, um die private Adresse auf eine virtuelle Adresse abzubilden, einschließlich der korrekten Anpassung der entsprechenden Masken, um den Aufbau widerzuspiegeln. Sind bereits Teile der Hierarchie generiert worden, können verschiedene Elemente von 5 übersprungen werden und die vorhandenen Informationen können genutzt werden.
  • Beispielverfahren
  • 6 ist ein Flussdiagramm, das ein Beispielverfahren gemäß einigen Ausführungsformen zum Handhaben einer Zugriffsanforderung veranschaulicht, die eine private Adresse einschließt. Das in 6 gezeigte Verfahren kann unter anderem in Verbindung mit beliebigen der hierin offenbarten Computerschaltlogik, Systeme, Vorrichtungen, Elemente oder Komponenten verwendet werden. In verschiedenen Ausführungsformen können einige der gezeigten Verfahrenselemente gleichzeitig, in einer anderen Reihenfolge als gezeigt durchgeführt oder weggelassen werden. Zudem können zusätzliche Verfahrenselemente ebenfalls wie gewünscht durchgeführt werden.
  • Bei 610 empfängt in der veranschaulichten Ausführungsform die private Speicherzuweisungsschaltlogik (z. B. die Schaltlogik 220) eine Anforderung, die eine erste Adresse in einem privaten Speicherplatz einschließt. Die Anforderung kann zum Beispiel eine Übersetzen-Abbilden-Anforderung sein.
  • Bei 620 bestimmt in der veranschaulichten Ausführungsform die private Speicherzuweisungsschaltlogik, ob eine Seite in einem virtuellen Raum für die erste Adresse abgebildet wird. In einigen Ausführungsformen kann dies das Prüfen von Caches für mehrere Ebenen der Seitentabellenhierarchie einschließen, um zu bestimmen, ob eine Seite abgebildet ist. In einigen Ausführungsformen ist die erste Cache-Schaltlogik (z. B. ein PTC 310) konfiguriert, um Seitentabelleneinträge zwischenzuspeichern, die Anforderungen von der ersten Schaltlogik entsprechen. In einigen Ausführungsformen ist die zweite Cache-Schaltlogik (z. B. PDC 324 oder PCC 322) konfiguriert, um für mehrere unterschiedliche Anforderungsschaltungen Seitentabelleninformationen auf einer oder mehreren nicht niedrigsten Ebenen einer Seitentabellenhierarchie zwischenzuspeichern.
  • Bei 630 generiert in der veranschaulichten Ausführungsform als Reaktion auf das Bestimmen, dass eine Seite nicht abgebildet wird, die private Speicherzuweisungsschaltlogik Seitentabelleninformationen für den privaten Speicherplatz und bildet eine private Speicherseite für die erste Adresse auf den virtuellen Raum ab. Dies kann zum Beispiel das Generieren von Seitenkatalog, Seitenverzeichnis und Seitentabelleneinträgen für die private Speicherseite einschließen. In einigen Ausführungsformen schließen die Seitentabelleninformationen mehrere hierarchische Ebenen ein und die Einrichtung ist konfiguriert, um auf jeder Ebene Verfolgungsinformationen zu führen (z. B. die Maskenfelder von 4), die angeben, ob Einträge auf niedrigeren Ebenen gültig sind. In einigen Ausführungsformen ist die Einrichtung konfiguriert, um eine Seite der Seitentabellenhierarchie als Reaktion darauf freizugeben, dass eine oder mehrere Anforderungen zum Aufheben der Abbildung die Verfolgungsinformationen veranlassen, anzugeben, dass die Seite keine entsprechenden gültigen Einträge aufweist Bei 640 generiert das System in der veranschaulichten Ausführungsform eine virtuelle Adresse für die Anforderung basierend auf der abgebildeten privaten Speicherseite. Die private Speicherzuweisungsschaltlogik kann die virtuelle Adresse zurück an die Anforderungsschaltlogik bereitstellen. In einigen Ausführungsformen ist, um eine virtuelle Adresse für die Anforderung basierend auf der abgebildeten privaten Speicherseite zu generieren, die private Speicherzuweisungsschaltlogik konfiguriert, um einen Hash der ersten Adresse zu generieren und auf mehrere Ebenen einer Seitentabellenhierarchie basierend auf Abschnitten des Hash-Ergebnisses zuzugreifen. Bei 650 übersetzt das System in der veranschaulichten Ausführungsform die virtuelle Adresse in eine physische Adresse und greift auf Daten für die Anforderung unter Verwendung der physischen Adresse zu. Die Einrichtung ist konfiguriert, um auf eine erste Seitentabellenhierarchie (z. B. die Hierarchie von 4) zuzugreifen, um die erste Adresse in die virtuelle Adresse zu übersetzen, und auf eine zweite Seitentabellenhierarchie (z. B. eine herkömmliche Seitentabellenhierarchie) zuzugreifen, um die virtuelle Adresse in die physische Adresse zu übersetzen.
  • In einigen Ausführungsformen ist die Einrichtung konfiguriert, um eine Zählung verfügbarer Seiten, z. B. in einem Seitenpool, zu führen, und die private Speicherzuweisungsschaltlogik ist konfiguriert, um die Zählung zu dekrementieren und eine Gewährungsantwort auf eine Seitenvormerkanforderung bereitzustellen. In einigen Ausführungsformen schließt die private Speicherzuweisungsschaltlogik mehrere dezentrale Einheiten ein, die jeweils einem Satz von Shader-Prozessoren zugeordnet sind, und eine globale Einheit, die konfiguriert ist, um mit den dezentralen Einheiten zu kommunizieren, um Seitenanforderungen zu verwalten.
  • In einigen Ausführungsformen ist die private Speicherzuweisungsschaltlogik konfiguriert, um die Abbildung einer virtuellen Seite von einer privaten Speicherseite als Reaktion auf eine Anforderung zum Aufheben der Abbildung aufzuheben. In einigen Ausführungsformen ist die private Speicherzuweisungsschaltlogik konfiguriert, um eine Übersetzen-Nichtabbilden-Anforderung zu verarbeiten, die vorgibt, dass eine private Adresse in eine virtuelle Adresse zu übersetzen ist, wenn eine entsprechende private Speicherseite auf eine virtuelle Adresse für die private Adresse abgebildet wird, aber dass eine private virtuelle Seite für die Adresse nicht anderweitig abzubilden ist.
  • Beispielvorrichtung
  • Unter Bezugnahme nun auf 7 ist ein Blockdiagramm gezeigt, das eine beispielhafte Ausführungsform einer Vorrichtung 700 veranschaulicht. In einigen Ausführungsformen können Elemente der Vorrichtung 700 innerhalb eines System-on-a-Chip eingeschlossen sein. In einigen Ausführungsformen kann die Vorrichtung 700 in einer mobilen Vorrichtung eingeschlossen sein, die batteriebetrieben sein kann. Daher kann der Leistungsverbrauch durch die Vorrichtung 700 eine wichtige Designüberlegung sein. In der veranschaulichten Ausführungsform schließt die Vorrichtung 700 ein Fabric 710, einen Rechenkomplex 720, eine Eingabe/Ausgabe-Brücke (E/A-Brücke) 750, eine Cache-/Speichersteuerung 745, die Grafikeinheit 150 und eine Anzeigeeinheit 765 ein. In einigen Ausführungsformen kann die Vorrichtung 700 andere Komponenten (nicht gezeigt) zusätzlich zu den und/oder anstelle der veranschaulichten Komponenten einschließen, wie Videoprozessorcodierer und -decodierer, Bildverarbeitungs- oder -erkennungselemente, Computer Vision-Elemente usw.
  • Das Fabric 710 kann verschiedene Verschaltungen, Busse, MUX, Steuerungen usw. einschließen und kann konfiguriert sein, um die Kommunikation zwischen verschiedenen Elementen der Vorrichtung 700 zu unterstützen. In einigen Ausführungsformen können Abschnitte des Fabrics 710 konfiguriert sein, um verschiedene unterschiedliche Kommunikationsprotokolle zu implementieren. In anderen Ausführungsformen kann das Fabric 710 ein einziges Kommunikationsprotokoll implementierten und mit dem Fabric 710 gekoppelte Elemente können intern von dem einzigen Kommunikationsprotokoll auf andere Kommunikationsprotokolle umstellen.
  • In der veranschaulichten Ausführungsform schließt der Rechenkomplex 720 eine Busschnittstelleneinheit (BIU) 725, einen Cache 730 und Kerne 735 und 740 ein. In verschiedenen Ausführungsformen kann der Rechenkomplex 720 verschiedene Anzahlen von Prozessoren, Prozessorkernen und/oder Caches einschließen. Zum Beispiel kann der Rechenkomplex 720 1, 2 oder 4 Prozessorkerne oder eine beliebige andere geeignete Anzahl einschließen. In einer Ausführungsform ist der Cache 730 ein Set-assoziativer L2-Cache. In einigen Ausführungsformen können die Kerne 735 und/oder 740 interne Anweisungs- und/oder Daten-Caches einschließen. In einigen Ausführungsformen kann eine Kohärenzeinheit (nicht gezeigt) in der Fabric 710, dem Cache 730 oder an anderer Stelle in der Vorrichtung 700 konfiguriert sein, um die Kohärenz zwischen verschiedenen Caches der Vorrichtung 700 beizubehalten. BIU 725 kann konfiguriert sein, um die Kommunikation zwischen dem Rechenkomplex 720 und anderen Elementen der Vorrichtung 700 zu verwalten. Prozessorkerne, wie die Kerne 735 und 740, können konfiguriert sein, um Anweisungen einer bestimmten Anweisungssatzarchitektur (ISA) auszuführen, die Betriebssystemanweisungen und Benutzeranwendungsanweisungen einschließen kann.
  • Die Cache-/Speichersteuerung 745 kann konfiguriert sein, um die Übertragung von Daten zwischen dem Fabric 710 und einem oder mehreren Caches und/oder Speichern zu verwalten. Zum Beispiel kann die Cache-/Speichersteuerung 745 mit einem L3-Cache gekoppelt sein, der wiederum mit einem Systemspeicher gekoppelt sein kann. In anderen Ausführungsformen kann die Cache-/Speichersteuerung 745 direkt mit einem Speicher gekoppelt sein. In einigen Ausführungsformen kann die Cache-/Speichersteuerung 745 einen oder mehrere interne Caches einschließen.
  • Wie hierin verwendet, kann der Begriff „gekoppelt mit“ eine oder mehrere Verbindungen zwischen Elementen angeben, und eine Kopplung kann dazwischenliegende Elemente einschließen. Zum Beispiel kann in 7 die Grafikeinheit 150 als „gekoppelt mit“ einem Speicher über die Fabric 710 und die Cache-/Speichersteuerung 745 beschrieben werden. Dagegen ist in der veranschaulichten Ausführungsform von 7 die Grafikeinheit 150 mit der Fabric 710 „direkt gekoppelt“, weil keine dazwischenliegenden Elemente vorhanden sind. Die Grafikeinheit 150 kann einen oder mehrere Prozessoren und/oder eine oder mehrere Grafikverarbeitungseinheiten (GPUs) einschließen. Die Grafikeinheit 150 kann grafikorientierte Anweisungen, wie zum Beispiel OPENGL®-, Metal- oder DIRECT3D®-Anweisungen, empfangen. Die Grafikeinheit 150 kann spezialisierte GPU-Anweisungen ausführen oder andere Operationen basierend auf den empfangenen grafikorientierten Anweisungen durchführen. Die Grafikeinheit 150 kann allgemein konfiguriert sein, um große Datenblöcke parallel zu verarbeiten, und kann Bilder in einem Bildspeicher zur Ausgabe an eine Anzeige erstellen. Die Grafikeinheit 150 kann Transformations-, Beleuchtungs-, Dreieck- und/oder Rendering-Engines in einer oder mehreren Grafikverarbeitungs-Pipelines einschließen. Die Grafikeinheit 150 kann Pixelinformationen für Anzeigebilder ausgeben. Der programmierbare Shader 160 kann in verschiedenen Ausführungsformen hochparallele Ausführungskerne einschließen, die konfiguriert sind, um Grafikprogramme auszuführen, die Pixelaufgaben, Eckpunktaufgaben und Rechenaufgaben (die grafikbezogen sein können oder nicht) einschließen können.
  • In einigen Ausführungsformen schließt die Grafikeinheit 150 die hier erörterte Speicherzuweiserschaltlogik, eine Shader-Schaltlogik, MMU usw. ein.
  • Die Anzeigeeinheit 765 kann konfiguriert sein, um Daten aus einem Bildspeicher zu lesen und einen Strom von Pixelwerten zur Anzeige bereitzustellen. In einigen Ausführungsformen kann die Anzeigeeinheit 765 als eine Anzeige-Pipeline konfiguriert sein. Außerdem kann die Anzeigeeinheit 765 konfiguriert sein, um mehrere Frames zum Erzeugen eines Ausgabe-Frames zu mischen. Ferner kann die Anzeigeeinheit 765 eine oder mehrere Schnittstellen (z. B. MIPI® oder embedded Display Port (eDP)) zum Koppeln an eine Benutzeranzeige (z. B. einen Touchscreen oder eine externe Anzeige) einschließen.
  • Die E/A-Brücke 750 kann verschiedene Elemente einschließen, die konfiguriert sind, um zum Beispiel zu implementieren: Universal Serial Bus-Kommunikationen (USB-Kommunikationen), Sicherheits-, Audio- und/oder leistungsarme Dauereinschaltfunktionalität. Die E/A-Brücke 750 kann auch Schnittstellen, wie zum Beispiel Pulsweitenmodulation (PBM), General-Purpose Input/Output (GPIO), Serial Peripheral Interface (SPI) und/oder Inter-Integrated Circuit (I2C), einschließen. Verschiedene Typen von Peripheriegeräten und Vorrichtungen können mit der Vorrichtung 700 über die E/A-Brücke 750 gekoppelt sein.
  • Beispielhaftes computerlesbares Medium
  • In der vorliegenden Offenbarung wurden oben verschiedene beispielhafte Schaltungen ausführlich beschrieben. Es ist beabsichtigt, dass die vorliegende Offenbarung nicht nur Ausführungsformen abdeckt, die eine derartige Schaltlogik einschließen, sondern auch ein computerlesbares Speichermedium, das Designinformationen einschließt, die eine derartige Schaltlogik spezifizieren. Dementsprechend soll die vorliegende Offenbarung Ansprüche unterstützen, die nicht nur eine Einrichtung abdecken, die die offenbarten Schaltlogiken einschließt, sondern auch ein Speichermedium, das die Schaltlogik in einem Format spezifiziert, das von einem Produktionssystem erkannt wird, das zur Herstellung von Hardware konfiguriert ist (z. B. eine integrierte Schaltung), die die offenbarte Schaltlogik einschließt. Ansprüche auf ein derartiges Speichermedium sollen zum Beispiel eine Entität abdecken, die ein Schaltungsdesign erzeugt, jedoch das Design nicht selbst produziert.
  • 8 ist ein Blockdiagramm, das ein beispielhaftes nicht-transitorisches computerlesbares Speichermedium, das Schaltungsdesigninformationen speichert, gemäß einigen Ausführungsformen veranschaulicht. In der veranschaulichten Ausführungsform ist das Halbleiterproduktionssystem 820 konfiguriert, um die auf dem nicht-transitorischen computerlesbaren Medium 810 gespeicherten Designinformationen 815 zu verarbeiten und die integrierte Schaltung 830 basierend auf den Designinformationen 815 zu produzieren.
  • Das nicht-transitorische computerlesbare Speichermedium 810 kann einen beliebigen von verschiedenen geeigneten Typen von Speichervorrichtungen oder Speicherungsvorrichtungen umfassen. Bei dem nicht-transitorischen computerlesbaren Speichermedium 810 kann es sich um ein Installationsmedium, z. B. eine CD-ROM, Disketten oder eine Bandvorrichtung; einen Computersystemspeicher oder Direktzugriffsspeicher, wie DRAM, DDR-RAM, SRAM, EDO-RAM, Rambus-RAM usw.; einen nichtflüchtigen Speicher, wie einen Flash-Speicher, Magnetmedien, z. B. eine Festplatte oder einen optischen Speicher; Register oder andere ähnliche Typen von Speicherelementen usw. handeln. Das nicht-transitorische computerlesbare Speichermedium 810 kann auch andere Typen von nicht-transitorischem Speicher oder Kombinationen davon einschließen. Das nicht-transitorische computerlesbare Speichermedium 810 kann zwei oder mehr Speichermedien einschließen, die sich an unterschiedlichen Orten befinden können, z. B. in unterschiedlichen Computersystemen, die über ein Netzwerk verbunden sind.
  • Die Designinformationen 815 können unter Verwendung von beliebigen von verschiedenen geeigneten Computersprachen vorgegeben werden, einschließlich Hardwarebeschreibungssprachen, wie ohne Einschränkung: VHDL, Verilog, SystemC, SystemVerilog, RHDL, M, MyHDL usw. Die Designinformationen 815 können durch das Halbleiterproduktionssystem 820 verwendbar sein, um mindestens einen Abschnitt der integrierten Schaltung 830 zu produzieren. Das Format der Designinformationen 815 kann durch mindestens ein Halbleiterproduktionssystem 820 erkannt werden. In einigen Ausführungsformen können die Designinformationen 815 auch eine oder mehrere Zellbibliotheken einschließen, welche die Synthese und/oder das Layout der integrierten Schaltung 830 spezifizieren. In einigen Ausführungsformen sind die Designinformationen ganz oder teilweise in der Form einer Netzliste spezifiziert, die die Zellbibliothekelemente und deren Konnektivität spezifiziert. Die Designinformationen 815 können, allein genommen, ausreichend Informationen zur Produktion einer entsprechenden integrierten Schaltung einschließen oder nicht. Zum Beispiel können die Designinformationen 815 die zu produzierenden Schaltungselemente, jedoch nicht deren physisches Layout, vorgeben. In diesem Fall müssen die Designinformationen 815 möglicherweise mit Layoutinformationen kombiniert werden, um die vorgegebene Schaltlogik tatsächlich zu produzieren.
  • Die integrierte Schaltung 830 kann in verschiedenen Ausführungsformen eine oder mehrere benutzerdefinierte Makrozellen, wie Speicher, Analog- oder Mischsignalschaltungen und dergleichen, einschließen. In solchen Fällen können die Designinformationen 815 Informationen in Bezug auf enthaltene Makrozellen einschließen. Solche Informationen können, ohne darauf beschränkt zu sein, eine Schemaerfassungsdatenbank, Maskendesigndaten, Verhaltensmodelle und Netzlisten auf Vorrichtungs- oder Transistorebene einschließen. Wie hierin verwendet, können Maskendesigndaten gemäß dem Grafikdatensystem (GDSII) oder einem beliebigen anderen geeigneten Format formatiert werden.
  • Das Halbleiterproduktionssystem 820 kann ein beliebiges von verschiedenen geeigneten Elementen einschließen, die dazu konfiguriert sind, integrierte Schaltungen zu produzieren. Dies kann zum Beispiel Elemente zum Abscheiden von Halbleitermaterialien (z. B. auf einem Wafer, was eine Maskierung einschließen kann), Entfernen von Materialien, Ändern der Form von abgeschiedenen Materialien, Modifizieren von Materialien (z. B. durch Dotieren von Materialien oder Modifizieren dielektrischer Konstanten unter Verwendung von ultravioletter Bearbeitung) usw. einschließen. Das Halbleiterproduktionssystem 820 kann auch konfiguriert sein, um verschiedene Tests von produzierten Schaltungen auf korrekten Betrieb durchzuführen.
  • In verschiedenen Ausführungsformen ist die integrierte Schaltung 830 konfiguriert, um gemäß einem durch die Designinformationen 815 vorgegebenen Schaltungsdesign zu arbeiten, was die Durchführung einer beliebigen der hierin beschriebenen Funktionalität einschließen kann. Zum Beispiel kann die integrierte Schaltung 830 beliebige von verschiedenen in 1B, 2, 3 oder 7 gezeigten Elementen einschließen. Ferner kann die integrierte Schaltung 830 konfiguriert sein, um verschiedene hierin beschriebene Funktionen in Verbindung mit anderen Komponenten durchzuführen. Ferner kann die hierin beschriebene Funktionalität durch mehrere verbundene integrierte Schaltungen durchgeführt werden.
  • Wie hierin verwendet, impliziert ein Ausdruck der Form „Designinformationen, die ein Design einer Schaltung spezifizieren, die konfiguriert ist, um zu ...“ nicht, dass die betreffende Schaltung hergestellt werden muss, damit das Element erfüllt ist. Vielmehr gibt dieser Ausdruck an, dass die Designinformationen eine Schaltung beschreiben, die nach der Fertigung dazu konfiguriert wird, die angegebenen Aktionen auszuführen, oder die spezifizierten Komponenten einzuschließen.
  • Auch wenn vorstehend spezifische Ausführungsformen beschrieben wurden, ist nicht beabsichtigt, diese Ausführungsformen auf den Umfang der vorliegenden Offenbarung einzuschränken, selbst wenn nur eine einzige Ausführungsform in Hinblick auf ein bestimmtes Merkmal beschrieben ist. Beispiele von in der Offenbarung bereitgestellten Merkmalen sind als veranschaulichend und nicht als einschränkend beabsichtigt, sofern nicht anders angegeben. Die obige Beschreibung soll Alternativen, Änderungen und Äquivalente umfassen, die für Fachleute, denen diese Offenbarung zugutekommt, offensichtlich sind.
  • Der Schutzumfang der vorliegenden Offenbarung schließt jedes hierin (sowohl explizit als auch implizit) offenbarte Merkmal oder jede Kombination von Merkmalen oder jede Verallgemeinerung davon ein, ungeachtet der Tatsache, ob sie irgendeines der oder alle hierin angesprochenen Probleme abschwächt. Dementsprechend können während der Weiterverfolgung dieser Anwendung (oder einer Anwendung, welche die Priorität dieser beansprucht) neue Ansprüche auf eine beliebige solche Kombination von Merkmalen formuliert werden. Insbesondere können mit Bezug auf die angehängten Ansprüche Merkmale von abhängigen Ansprüchen mit denen der unabhängigen Ansprüche kombiniert werden, und Merkmale der jeweiligen unabhängigen Ansprüche können in jeder geeigneten Weise und nicht nur in den in den angehängten Ansprüchen aufgeführten spezifischen Kombinationen kombiniert werden.

Claims (20)

  1. Einrichtung, umfassend: eine erste Schaltlogik, die konfiguriert ist, um den Zugriff auf einen privaten Speicherplatz unter Verwendung einer ersten Adresse anzufordern; private Speicherzuweisungsschaltlogik, die konfiguriert ist zum: Bestimmen, ob eine Seite in einem virtuellen Raum für die erste Adresse abgebildet ist; als Reaktion auf das Bestimmen, dass eine Seite nicht abgebildet ist, Generieren von Seitentabelleninformationen für den privaten Speicherplatz und Abbilden einer privaten Speicherseite für die erste Adresse auf den virtuellen Raum; und Generieren einer virtuellen Adresse für die Anforderung basierend auf der abgebildeten privaten Speicherseite; und Speicherverwaltungseinheit (memory management unit, MMU)-Schaltlogik, die konfiguriert ist, um die virtuelle Adresse in einem Speicherelement der Einrichtung in eine physische Adresse zu übersetzen.
  2. Einrichtung nach Anspruch 1, ferner umfassend: eine erste Cache-Schaltlogik, die konfiguriert ist, um Seitentabelleneinträge zu speichern, die Anforderungen von der ersten Schaltlogik entsprechen.
  3. Einrichtung nach Anspruch 2, wobei die private Speicherzuweisungsschaltlogik einschließt: eine zweite Cache-Schaltlogik, die konfiguriert ist, um für mehrere unterschiedliche Anforderungsschaltungen Seitentabelleninformationen auf einer oder mehreren nicht niedrigsten Ebenen einer Seitentabellenhierarchie zu speichern.
  4. Einrichtung nach Anspruch 3, wobei die zweite Cache-Schaltlogik einen Seitenverzeichnis-Cache und einen Seitenkatalog-Cache einschließt.
  5. Einrichtung nach Anspruch 1, wobei die Einrichtung konfiguriert ist, um eine Zählung verfügbarer Seiten zu führen; und wobei als Reaktion auf eine Seitenvormerkanforderung die private Speicherzuweisungsschaltlogik konfiguriert ist, um die Zählung zu dekrementieren und eine Seitenerteilungsantwort bereitzustellen.
  6. Einrichtung nach Anspruch 1, wobei die private Speicherzuweisungsschaltlogik mehrere dezentrale Einheiten einschließt, die jeweils einem Satz von Shader-Prozessoren zugeordnet sind, und eine globale Einheit, die konfiguriert ist, um mit den dezentralen Einheiten zu kommunizieren, um Seitenanforderungen zu verwalten.
  7. Einrichtung nach Anspruch 1, wobei die private Speicherzuweisungsschaltlogik ferner konfiguriert ist zum: Verarbeiten einer Übersetzen-Nicht-Abbilden-Anforderung, die vorgibt, dass eine private Adresse in eine virtuelle Adresse zu übersetzen ist, wenn eine entsprechende private Speicherseite auf eine virtuelle Adresse für die private Adresse abgebildet wird, aber dass eine private virtuelle Seite für die Adresse nicht anderweitig abzubilden ist.
  8. Einrichtung nach Anspruch 1, wobei die private Speicherzuweisungsschaltlogik ferner konfiguriert ist zum: Aufheben der Abbildung („unmap“) einer virtuellen Seite von einer privaten Speicherseite als Reaktion auf eine Anforderung zum Aufheben der Abbildung.
  9. Einrichtung nach Anspruch 1, wobei zum Generieren einer virtuellen Adresse für die Anforderung basierend auf der abgebildeten privaten Speicherseite die private Speicherzuweisungsschaltlogik konfiguriert ist, um einen Hash der ersten Adresse zu generieren und auf mehrere Ebenen einer Seitentabellenhierarchie basierend auf Abschnitten des Hash-Ergebnisses zuzugreifen.
  10. Einrichtung nach Anspruch 1, wobei die Seitentabelleninformationen mehrere hierarchische Ebenen einschließen, wobei die Einrichtung konfiguriert ist, um auf jeder Ebene Verfolgungsinformationen zu führen, die angeben, ob Einträge auf niedrigeren Ebenen gültig sind, und wobei die Einrichtung konfiguriert ist, um eine Seite der Seitentabellenhierarchie als Reaktion auf eine oder mehrere Anforderungen zum Aufheben der Abbildung freizugeben, die dazu führen, dass Verfolgungsinformationen veranlasst werden, anzugeben, dass die Seite keine entsprechenden gültigen Einträge aufweist.
  11. Einrichtung nach Anspruch 1, wobei die Einrichtung konfiguriert ist, um auf eine erste Seitentabellenhierarchie zuzugreifen, um die erste Adresse in die virtuelle Adresse zu übersetzen, und auf eine zweite Seitentabellenhierarchie zuzugreifen, um die virtuelle Adresse in die physische Adresse zu übersetzen.
  12. Nicht-transitorisches computerlesbares Speichermedium mit darauf gespeicherten Designinformationen, die ein Design zumindest eines Abschnitts einer hardwareintegrierten Schaltung in einem Format angeben, das durch ein Halbleiterproduktionssystem erkannt wird, das konfiguriert ist, um die Designinformationen zum Produzieren der Schaltung gemäß dem Design zu verwenden, wobei die Designinformationen angeben, dass die Schaltung Folgendes einschließt: eine erste Schaltlogik, die konfiguriert ist, um den Zugriff auf einen privaten Speicherplatz unter Verwendung einer ersten Adresse anzufordern; private Speicherzuweisungsschaltlogik, die konfiguriert ist zum: Bestimmen, ob eine Seite in einem virtuellen Raum für die erste Adresse abgebildet ist; als Reaktion auf das Bestimmen, dass eine Seite nicht abgebildet ist, Generieren von Seitentabelleninformationen für den privaten Speicherplatz und Abbilden einer privaten Speicherseite für die erste Adresse auf den virtuellen Raum; und Generieren einer virtuellen Adresse für die Anforderung basierend auf der abgebildeten privaten Speicherseite; und Speicherverwaltungseinheit (MMU)-Schaltlogik, die konfiguriert ist, um die virtuelle Adresse in eine physische Adresse in einem Speicherelement zu übersetzen.
  13. Nicht-transitorisches, computerlesbares Speichermedium nach Anspruch 12, ferner umfassend: eine erste Cache-Schaltlogik, die konfiguriert ist, um Seitentabelleneinträge zu speichern, die Anforderungen von der ersten Schaltlogik entsprechen; und eine zweite Cache-Schaltlogik, die konfiguriert ist, um für mehrere unterschiedliche Anforderungsschaltungen Seitentabelleninformationen auf einer oder mehreren nicht niedrigsten Ebenen einer Seitentabellenhierarchie zu speichern.
  14. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 13, wobei die zweite Cache-Schaltlogik einen Seitenverzeichnis-Cache und einen Seitenkatalog-Cache einschließt.
  15. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 12, wobei die private Speicherzuweisungsschaltlogik ferner konfiguriert ist zum: Verarbeiten einer Übersetzen-Nicht-Abbilden-Anforderung, die vorgibt, dass eine private Adresse in eine virtuelle Adresse zu übersetzen ist, wenn eine entsprechende private Speicherseite auf eine virtuelle Adresse für die private Adresse abgebildet wird, aber dass eine private virtuelle Seite für die Adresse nicht anderweitig abzubilden ist.
  16. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 12, wobei zum Generieren einer virtuellen Adresse für die Anforderung basierend auf der abgebildeten privaten Speicherseite die private Speicherzuweisungsschaltlogik konfiguriert ist, um einen Hash der ersten Adresse zu generieren und auf mehrere Ebenen einer Seitentabellenhierarchie basierend auf Abschnitten des Hash-Ergebnisses zuzugreifen.
  17. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 12, wobei die Schaltung konfiguriert ist, um auf eine erste Seitentabellenhierarchie zuzugreifen, um die erste Adresse in die virtuelle Adresse zu übersetzen, und auf eine zweite Seitentabellenhierarchie zuzugreifen, um die virtuelle Adresse in die physische Adresse zu übersetzen.
  18. Verfahren, umfassend: Empfangen, durch private Speicherzuweisungsschaltlogik, einer Anforderung, die eine erste Adresse in einem privaten Speicherplatz einschließt; Bestimmen, durch die private Speicherzuweisungsschaltlogik, ob eine Seite in einem virtuellen Raum für die erste Adresse abgebildet wird; als Reaktion auf das Bestimmen, dass eine Seite nicht abgebildet wird, Generieren, durch die private Speicherzuweisungsschaltlogik, von Seitentabelleninformationen für den privaten Speicherplatz und Abbilden einer privaten Speicherseite für die erste Adresse auf den virtuellen Raum; Generieren einer virtuellen Adresse für die Anforderung basierend auf der abgebildeten privaten Speicherseite; und Übersetzen der virtuellen Adresse in eine physische Adresse und Zugreifen auf Daten für die Anforderung unter Verwendung der physischen Adresse.
  19. Verfahren nach Anspruch 18, ferner umfassend: Zwischenspeichern, durch die erste Cache-Schaltlogik, von Seitentabelleneinträgen, die Anforderungen von der Schaltlogik entsprechen, welche die Anforderung ausgab; und Zwischenspeichern, durch zweite Cache-Schaltlogik, von Seitenverzeichnis- und Seitenkataloginformationen.
  20. Verfahren nach Anspruch 18, wobei das Generieren der virtuellen Adresse das Zugreifen auf eine erste Seitentabellenhierarchie einschließt, um die erste Adresse in die virtuelle Adresse zu übersetzen, und wobei das Übersetzen der virtuellen Adresse in eine physische Adresse das Zugreifen auf eine zweite Seitentabellenhierarchie einschließt.
DE112021001345.9T 2020-02-28 2021-02-24 On-demand speicherzuweisung Pending DE112021001345T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/804,128 2020-02-28
US16/804,128 US11829298B2 (en) 2020-02-28 2020-02-28 On-demand memory allocation
PCT/US2021/019353 WO2021173623A1 (en) 2020-02-28 2021-02-24 On-demand memory allocation

Publications (1)

Publication Number Publication Date
DE112021001345T5 true DE112021001345T5 (de) 2022-12-15

Family

ID=74885070

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021001345.9T Pending DE112021001345T5 (de) 2020-02-28 2021-02-24 On-demand speicherzuweisung

Country Status (6)

Country Link
US (2) US11829298B2 (de)
KR (1) KR20220125365A (de)
CN (1) CN115210696A (de)
DE (1) DE112021001345T5 (de)
GB (1) GB2607778A (de)
WO (1) WO2021173623A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230077058A1 (en) * 2021-09-07 2023-03-09 Apple Inc. Priority Inversion Mitigation Techniques
US20230169013A1 (en) * 2021-12-01 2023-06-01 Samsung Electronics Co., Ltd. Address translation cache and system including the same
US20230222069A1 (en) * 2022-01-10 2023-07-13 Nvidia Corporation Application programming interface to disassociate a virtual address
CN115757260B (zh) * 2023-01-09 2023-04-14 摩尔线程智能科技(北京)有限责任公司 数据交互方法、图形处理器及图形处理系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5873120A (en) 1996-05-03 1999-02-16 Digital Equipment Corporation Variable split virtual address space allocation with multi-system compatibility
EP0919928A3 (de) 1997-11-26 2000-05-24 Digital Equipment Corporation Speicherzuordnungsverfahren und Vorrichtung mit einer gleichmässigen Verteilung von Cacheseitenadressen in virtuellen Speicherregionen
US20120236010A1 (en) * 2011-03-15 2012-09-20 Boris Ginzburg Page Fault Handling Mechanism
US10585472B2 (en) 2011-08-12 2020-03-10 Sony Interactive Entertainment Inc. Wireless head mounted display with differential rendering and sound localization
US9116809B2 (en) 2012-03-29 2015-08-25 Ati Technologies Ulc Memory heaps in a memory model for a unified computing system
US10409730B2 (en) * 2013-03-15 2019-09-10 Nvidia Corporation Microcontroller for memory management unit
CN105095094B (zh) * 2014-05-06 2018-11-30 华为技术有限公司 内存管理方法和设备
US20170123996A1 (en) 2015-11-02 2017-05-04 Microsoft Technology Licensing, Llc Direct Mapped Files in Virtual Address-Backed Virtual Machines
US10856220B2 (en) * 2015-12-21 2020-12-01 Apple Inc. Energy-efficient signal processing
US9794691B2 (en) 2015-12-28 2017-10-17 Facebook, Inc. Using bone transducers to imply positioning of audio data relative to a user
US10108550B2 (en) * 2016-09-22 2018-10-23 Google Llc Memory management supporting huge pages
US9972065B2 (en) * 2016-09-23 2018-05-15 Apple Inc. Resource layout randomization for GPU execution
CN107704324B (zh) * 2017-07-20 2020-02-07 哈尔滨工业大学(威海) 一种面向多核确定性的基于硬件的内存隔离方法
US20200065013A1 (en) * 2018-08-21 2020-02-27 International Business Machines Corporation Selective memory page initialization
US20200201758A1 (en) * 2018-12-19 2020-06-25 Ati Technologies Ulc Virtualized input/output device local memory management

Also Published As

Publication number Publication date
CN115210696A (zh) 2022-10-18
US20240045808A1 (en) 2024-02-08
GB2607778A (en) 2022-12-14
US20210271606A1 (en) 2021-09-02
WO2021173623A1 (en) 2021-09-02
US11829298B2 (en) 2023-11-28
KR20220125365A (ko) 2022-09-14
GB202212196D0 (en) 2022-10-05

Similar Documents

Publication Publication Date Title
DE112021001345T5 (de) On-demand speicherzuweisung
DE102018132468A1 (de) Multi-gpu-frame-rendern
DE102015113797B4 (de) Relative Kodierung für eine blockbasierte Begrenzungsvolumenhierarchie
DE102016211642B4 (de) Patch-speichersystem
DE112013004078B4 (de) Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur
DE102013017639B4 (de) Zwischenspeicherung von adaptiv dimensionierten Cache-Kacheln in einem vereinheitlichten L2-Cache-Speicher mit Oberflächenkomprimierung
DE102013017510A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE112017003389T5 (de) Verfahren und vorrichtung für shared virtual memory zum managen von datenkohärenz in einem heterogenen verarbeitungssystem
DE112010003758T5 (de) Instruktionen zum Verwalten einer parallelen Cache-Hierarchie
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
US10970223B2 (en) Cache drop feature to increase memory bandwidth and save power
DE102012211670A1 (de) Simultanes Unterbreiten an eine Mehr-Produzenten-Queue mittels mehrerer Threads
DE102014100031A1 (de) Ein-Chip-System mit Speicherverwaltungseinheit und Speicheradressen-Übersetzungsverfahren hiervon
KR20200139082A (ko) 그래픽 처리 시스템을 위한 캐시 구성
DE102020118860A1 (de) Techniken zum vorladen von texturen beim rendering von graphik
US11429534B2 (en) Addressing cache slices in a last level cache
JP7106775B2 (ja) グラフィックス表面アドレス指定
DE102020127704A1 (de) Techniken zum effizienten transferieren von daten an einem prozessor
DE102021111335A1 (de) Techniken zum dynamischen komprimieren von speicherregionen, die einen einheitlichen wert haben
KR102606747B1 (ko) 픽셀 기입 데이터를 위한 압축 기법들
DE102021102746A1 (de) Lese/schreib-seitenreplikation für mehrere recheneinheiten
DE102021111076A1 (de) Techniken zum skalieren von wörterbuch-basierter komprimierung
DE102021117781A1 (de) Struktur und technik zur verfolgung von speicheranforderungen ausserhalb der reihenfolge

Legal Events

Date Code Title Description
R012 Request for examination validly filed