DE112013004078T5 - Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur - Google Patents

Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur Download PDF

Info

Publication number
DE112013004078T5
DE112013004078T5 DE112013004078.6T DE112013004078T DE112013004078T5 DE 112013004078 T5 DE112013004078 T5 DE 112013004078T5 DE 112013004078 T DE112013004078 T DE 112013004078T DE 112013004078 T5 DE112013004078 T5 DE 112013004078T5
Authority
DE
Germany
Prior art keywords
cpu
memory
gpu
computing device
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112013004078.6T
Other languages
English (en)
Other versions
DE112013004078B4 (de
Inventor
Jayanth N. Rao
Murali Sundaresan
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.)
Intel Corp
Original Assignee
Intel 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
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112013004078T5 publication Critical patent/DE112013004078T5/de
Application granted granted Critical
Publication of DE112013004078B4 publication Critical patent/DE112013004078B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • 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]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • 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
    • 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/656Address space sharing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

Ein Verfahren und System für die gemeinsame Nutzung von Speicher zwischen einer Zentraleinheit (central processing unit, CPU) und einem Grafikprozessor (graphics processing unit, GPU) wird hierin offenbart. Das Verfahren umfasst die Zuweisung einer Oberfläche in einem physischen Speicher und die Zuordnung der Oberfläche zu einer Vielzahl von virtuellen Speicheradressen in einer CPU-Seitentabelle. Das Verfahren umfasst außerdem die Zuordnung der Oberfläche zu einer Vielzahl von virtuellen Grafikspeicheradressen in einer E/A-Geräteseitentabelle.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf die gemeinsame Nutzung von Speicher zwischen einer Zentraleinheit (central processing unit, CPU) und einem Eingabe/Ausgabe-(E/A-)Gerät in einem Computersystem. Insbesondere bezieht sich die vorliegende Erfindung auf die gemeinsame Nutzung von physischem Speicher zwischen einer CPU und einem E/A-Gerät.
  • Hintergrund
  • Moderne E/A-Geräte können Computerverabeitungsfähigkeiten enthalten, die mit den Computerverarbeitungsfähigkeiten vieler Zentraleinheiten (CPUs) konkurrieren können. Als Folge kann ein Teil der Rechenaufgaben, die herkömmlicherweise von der CPU ausgeführt werden, zu einem E/A-Gerät des Computergeräts ausgelagert werden. Zum Beispiel kann ein E/A-Gerät wie ein Grafikprozessor (graphics processing unit, GPU) eines Computergeräts einige der Aufgaben ausführen, die herkömmlicherweise von der CPU ausgeführt wurden und dadurch die Effizienz der CPU steigern.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm eines Computergeräts, das gemäß Ausführungsformen verwendet werden kann,
  • 2A und 2B sind schematische Darstellungen einer vereinheitlichten Speicherarchitektur (unified memory architecture, UMA), die verwendet werden kann, um ein Verfahren für die gemeinsame Nutzung von Speichern zwischen der Zentraleinheit (central processing unit, CPU) und denn Grafikprozessor (graphics processing unit, GPU) des Computergeräts gemäß Ausführungsformen zu implementieren,
  • 3 ist ein Prozessablaufdiagramm, das ein Verfahren für die gemeinsame Nutzung von Speicher zwischen der CPU und der GPU eines Computergeräts gemäß Ausführungsformen zeigt,
  • 4 ist ein Prozessablaufdiagramm, das ein Verfahren für die Verarbeitung von gemeinsam genutztem Speicher zwischen der CPU und der GPU eines Computergeräts gemäß Ausführungsformen zeigt,
  • 5 ist ein Blockdiagramm, das ein konkretes, nicht flüchtiges, computerlesbares Medium zeigt, auf dem Code für die gemeinsame Nutzung von Speicher zwischen der CPU und der GPU eines Computergeräts gemäß Ausführungsformen gespeichert ist,
  • 6 ist ein Blockdiagramm für ein beispielhaftes System für die Implementierung eines gemeinsamen physischen Speichers und
  • 7 ist eine schematische Darstellung eines Geräts mit kleinem Formfaktor, in dem das System von 6 verkörpert sein kann.
  • In der Offenbarung und in den Figuren werden dieselben Bezugsnummern verwendet, um sich auf gleiche Komponenten und Merkmale zu beziehen. Nummern der 100-Serie beziehen sich auf Merkmale, die ursprünglich in 1 zu finden sind, Nummern der 200-Serie beziehen sich auf Merkmale, die ursprünglich in 2 zu finden sind, usw.
  • Beschreibung der Ausführungsformen
  • Aktuelle Betriebssysteme und Grafikschnittstellen verwalten GPUs als E/A-Geräte, statt die GPUs als Prozessoren mit Ressourcen ähnlich CPUs zu verwalten. Durch die Verwaltung von GPUs als E/A-Geräte haben CPUs und GPUs physische Speicher mit getrennten physischen Adressdomänen. Beim Auslagern von Rechenaufgaben zu GPUs werden Daten von der physischen Adressdomäne der CPU zur physischen Adressdomäne der GPU kopiert. Wenn die GPU die Verarbeitung abgeschlossen hat, werden die Daten wieder zurück zur physischen Adressdomäne der CPU kopiert.
  • Das Auslagern eines Teils der Rechenaufgaben, die herkömmlicherweise von der CPU durchgeführt werden, zur GPU eines Computergeräts kann die Effizienz der CPU erhöhen. Wie oben erörtert, können, um Aufgaben zur GPU auszulagern, Daten zwischen dem physischen Speicher der CPU und dem physischen Speicher der GPU übertragen werden. Die Datenübertragungen, die beim Auslagern von Rechenaufgaben zur GPU erfolgen, können die durch das Auslagern von Aufgaben zur GPU gewonnene Effizienz verringern. Demgemäß beziehen sich hierin beschriebene Ausführungsformen auf die gemeinsame Nutzung von Speicher zwischen der CPU und der GPU eines Computergeräts. Der Speicher kann über eine vereinheitlichte Speicherarchitektur (unified memory architecture, UMA) gemeinsam genutzt werden.
  • In verschiedenen Ausführungsformen stellt die UMA die gemeinsame Speichernutzung zwischen der CPU und der GPU bereit, indem sie sowohl der CPU als auch der GPU denselben physischen Speicher bereitstellt. Somit sind der physische Speicher und der entsprechende physische Adressraum der CPU und GPU ein und derselbe. In Ausführungsformen kann der physische Speicher zwischen der CPU und der GPU partitioniert werden. Des Weiteren kann der physische Speicher ein ausgelagerter Systemspeicher sein, der dem Betriebssystem des Computergeräts zugeordnet ist. Der virtuelle Speicheradressraum der CPU kann denselben physischen Speicherseiten wie der grafische virtuelle Speicheradressraum der CPU zugeordnet sein. Außerdem können die CPU und GPU in einigen Ausführungsformen sich physisch auf demselben Chip befinden. Somit können die CPU und die GPU die Daten, die im physischen Speicher enthalten sind, gemeinsam nutzen, ohne Daten aus dem Adressraum der GPU in den Adressraum der CPU zu kopieren, oder umgekehrt. Dies kann die Kosten der Auslagerung von Rechenaufgaben von der CPU zur GPU durch, zum Beispiel, die Verringerung der Zeit und des Energieverbrauchs für die gemeinsame Nutzung von Daten zwischen der CPU und der GPU verringern.
  • In der folgenden Beschreibung und den Ansprüchen können die Begriffe „gekoppelt” und „verbunden” gemeinsam mit ihren Ableitungen verwendet sein. Es sollte selbstverständlich sein, dass diese Begriffe nicht als Synonyme füreinander zu verstehen sind. Vielmehr kann bei bestimmten Ausführungsformen „verbunden” verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt” kann bedeuten, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt stehen. Jedoch kann „gekoppelt” auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, trotzdem aber miteinander arbeiten oder interagieren.
  • Einige Ausführungsformen können in einer oder einer Kombination von Hardware, Firmware und Software implementiert werden. Einige Ausführungsformen können auch als auf einem maschinenlesbaren Medium gespeicherte Befehle implementiert werden, die von einer Computerplattform gelesen und ausgeführt werden können, um die hier beschriebenen Operationen auszuführen. Ein maschinenlesbares Medium kann jeden Mechanismus für das Speichern oder Senden von Information in einer durch eine Maschine (z. B. ein Computer) lesbaren Form enthalten. Zum Beispiel kann ein maschinenlesbares Medium Read Only Memory (ROM), Random Access Memory (RAM), Magnetplattenspeichermedien, optische Speichermedien. Flash-Speicher-Geräte, elektrische, optische, akustische oder andere Formen von propagierten Signalen (z. B. Trägerwellen, Infrarotsignale, Digitalsignale, die Schnittstellen, die Signale senden und/oder empfangen, usw.) und andere enthalten.
  • Eine Ausführungsform ist eine Implementierung oder ein Beispiel. Die Bezugnahme auf „eine Ausführungsform”, „einige Ausführungsformen”, „verschiedene Ausführungsformen” oder „andere Ausführungsformen” bedeutet, dass eine bestimmte Funktion, Struktur oder ein bestimmtes Merkmal, die/das im Zusammenhang mit den Ausführungsformen beschrieben wird, in mindestens einigen Ausführungsformen, aber nicht notwendigerweise allen Ausführungsformen der Erfindungen eingeschlossen ist. Das verschiedenartige Auftreten von „eine Ausführungsform” oder „einige Ausführungsformen” bezieht sich nicht notwendigerweise auf dieselben Ausführungsformen. Elemente oder Aspekte einer Ausführungsform können mit Elementen oder Aspekten einer anderen Ausführungsform kombiniert werden.
  • alle Komponenten, Funktionen, Strukturen, Merkmale usw., die hier beschrieben und gezeigt sind, müssen in einer bestimmten Ausführungsform oder Ausführungsformen enthalten sein. Wenn die Beschreibung einer Komponente, Funktion, Struktur oder eines Merkmals aussagt, dass sie enthalten sein „kann” oder „könnte”, dann ist es zum Beispiel für diese bestimmte Komponente, Funktion, Struktur oder dieses bestimmte Merkmal nicht erforderlich, enthalten zu sein. Wenn in der Beschreibung oder den Ansprüchen Bezug auf „ein” Element genommen wird, bedeutet dies nicht, dass es nur eines von diesem Element gibt. Wenn die Beschreibung oder die Ansprüche Bezug auf „ein zusätzliches” Element nehmen, schließt das nicht aus, dass es dort mehr als eines von dem zusätzlichen Element gibt.
  • Es ist zu beachten, dass, obwohl einige Ausführungsformen unter Bezugnahme auf bestimmte Implementierungen beschrieben wurden, andere Implementierungen gemäß einigen Ausführungsformen möglich sind. Zusätzlich brauchen die Anordnung und/oder Reihenfolge von Schaltelementen oder anderen Merkmalen, die in den Zeichnungen gezeigt und/oder hier beschrieben sind, nicht auf die bestimmte gezeigte und beschriebene Weise angeordnet sein. Viele andere Anordnungen sind gemäß einigen Ausführungsformen möglich.
  • Bei jedem in einer Figur gezeigten System können die Elemente in einigen Fällen jeweils dieselbe Referenznummer oder eine unterschiedliche Referenznummer aufweisen, um anzudeuten, dass die repräsentierten Elemente unterschiedlich und/oder ähnlich sein könnten. Ein Element kann jedoch flexibel genug sein, um unterschiedliche Implementierungen zu haben, und es kann mit einigen oder allen hier dargestellten oder beschriebenen Systemen funktionieren. Die verschiedenen in den Figuren dargestellten Elemente können dieselben Elemente sein oder sie können unterschiedlich sein. Welches ein erstes Element genannt wird und welches ein zweites Element, ist willkürlich.
  • 1 ist ein Blockdiagramm eines Computergeräts 100, das gemäß Ausführungsformen verwendet werden kann. Das Computergerät 100 kann zum Beispiel u. a. ein Laptop-Computer, Desktop-Computer, Tablet-Computer, ein mobiles Gerät oder ein Server sein. Das Computergerät 100 kann eine Zentraleinheit (central processing unit, CPU) 102 sein, die so angepasst ist, dass sie gespeicherte Befehle ausführt, sowie ein Speichergerät 108, das Befehle speichert, die von der CPU 102 ausgeführt werden können. CPU 102 kann ein Einkernprozessor, ein Mehrkernprozessor, ein Computercluster oder jede beliebige Anzahl anderer Konfigurationen sein. Des Weiteren kann das Computergerät 100 mehr als eine CPU 102 enthalten. Die Befehle, die von der CPU 102 ausgeführt werden, können zur Implementierung eines Verfahrens der gemeinsamen Speichernutzung verwendet werden.
  • Das Computergerät 100 kann außerdem einen Grafikprozessor (graphics processing unit, GPU) 104 enthalten. Die GPU ist ein Eingabe/Ausgabe-(E/A-)Gerät im Computergerät 100. Ein E/A-Gerät ist ein Gerät, das für die Kommunikation mit einem Computer mithilfe von Eingabe, Ausgabe oder einer Kombination davon verwendet werden kann. Wie dargestellt, kann die CPU 102 über Bus 106 mit der GPU 104 verbunden sein. Jedoch befindet sich in einigen Ausführungsformen die GPU 104 auf demselben Chip wie die CPU 102 in Computergerät 100. Auf diese Weise sind die CPU 102 und die GPU solcherart verbunden, dass auf die Verbindung zwischen der CPU 102 und der GPU 104 über den Bus 106 verzichtet werden kann. Des Weiteren können, in Ausführungsformen, die CPU 102 und die GPU 104 in einer vereinheitlichten Speicherarchitektur von Computergerät 100 enthalten sein, wie in Bezug auf 2 erörtert.
  • GPU 104 kann so konfiguriert werden, dass sie eine beliebige Zahl an Grafikoperationen in Computergerät 100 durchführt. GPU 104 kann zum Beispiel so konfiguriert werden, dass sie grafische Bilder, grafische Frames, Videos oder ähnliches rendert oder manipuliert, die von einem Benutzer des Computergeräts 100 angezeigt werden. In einigen Ausführungsformen beinhaltet GPU 104 eine Reihe von Grafik-Engines (nicht dargestellt), wobei jede Grafik-Engine so konfiguriert ist, dass sie spezifische Grafikaufgaben durchführt oder bestimmte Arten von Arbeitslasten ausführt.
  • Computergerät 100 kann auch ein Speichergerät 108 enthalten. Speichergerät 108 kann Random Access Memory (RAM), Read Only Memory (ROM), Flash-Speicher oder jedes andere geeignete Speichersystem beinhalten. Speichergerät 108 kann zum Beispiel Dynamic Random Access Memory (DRAM) beinhalten. Speicher 108 kann einen Gerätetreiber 110 enthalten, der so konfiguriert ist, dass er Befehle für die Implementierung des Verfahrens der gemeinsamen Speichernutzung ausführt. Gerätetreiber 110 kann Software, ein Anwendungsprogramm, Anwendungscode oder ähnliches sein. In einigen Ausführungsformen ist Gerätetreiber 110 ein Benutzermodustreiber.
  • Speicher 108 beinhaltet außerdem einen mehrstufigen Zwischenspeicher 112, der mindestens einen Last-Level-Cache (LLC) 114, einen Level-2-Cache 116 und einen Level-1-Cache 118 umfasst. Auch wenn zur Veranschaulichung ein mehrstufiger Zwischenspeicher 112 verwendet wird, kann jeder beliebige Zwischenspeicher in Computergerät 100 enthalten sein.
  • Der mehrstufige Zwischenspeicher 112 kann ein kleinerer, schnellerer Speicher sein, der eine kleinere Teilmenge häufig verwendeter Daten für die CPU 102 speichert. Ein größerer Datensatz kann in einem Speicher 120 gespeichert sein. Speicher 120 ist physischer Speicher, z. B. eine Festplatte, ein optisches Laufwerk, ein Thumbdrive oder eine Reihe von Laufwerken oder jede beliebige Kombination davon. Speicher 120 kann auch Remote-Speicherlaufwerke umfassen. Die Zeit, die der Zugriff von CPU 102 auf Daten dauert, die in Speicher 120 gespeichert sind, kann in Bezug auf die Zeit, die der Zugriff von CPU 102 auf den mehrstufigen Zwischenspeicher 112 in Speicher 104 dauert, langsamer sein.
  • In einigen Ausführungsformen wird LLC 114 zwischen der CPU 102 und der GPU 104 gemeinsam genutzt, während der Level-2-Cache 116 und der Level1-Cache 118 vor der GPU 104 verborgen sein können, sodass GPU 104 nicht direkt auf Daten in Level-2-Cache 116 und Level-1-Cache 118 zugreifen kann. Jedoch kann LLC 114 Daten, die in Level-2-Cache 116 und Level-1-Cache 118 gespeichert sind, lesen und schreiben. Somit kann, wenn GPU 104 Daten anfordert, die in Level-2-Cache 116 oder Level-1-Cache 118 zwischengespeichert sind, LLC 114 die Daten von Level-2-Cache 116 und Level-1-Cache 118 für die Verarbeitung von GPU 104 abrufen. Auf diese Weise stellt LLC 114 Datenkohärenz in Computergerät 100 sicher. Wie hierin verwendet, bezieht sich Kohärenz auf den Zustand, in dem Daten, auf die durch CPU 102 und GPU 104 zugegriffen wird, gleich sind. Demgemäß stellt CPU 102 sicher, dass Daten von Speichergerät 120 in LLC 114, Level-2-Cache 116 und Level-1-Cache 118 widergespiegelt werden, indem sichergestellt wird, dass die Daten mit LLC 114 kohärent sind, um die gemeinsame Nutzung der korrekten Daten mit GPU 104 zu ermöglichen.
  • Außerdem können, in Ausführungsformen CPU und GPU auf jede Speicherebene zugreifen. Jedoch können Daten von anderen Speicherebenen veraltet sein, während LLC 114 die neuesten Daten enthält. Des Weiteren können CPU und GPU in Ausführungsformen jeden gemeinsam zugänglich Speicherort nutzen, um einen gemeinsam genutzten virtuellen Speicher auszuführen. Jeder gemeinsam zugängliche Speicherort kann u. a. jeden Bereich von Speichergerät 104, jeden Bereich von Speicher 120, einen Netzwerkspeicherort, ein Thumbdrive oder jede Kombination davon umfassen.
  • Speicher 120 beinhaltet eine Oberfläche 122 sowie jede beliebige Zahl von Anwendungen 124, die für die Ausführung auf Computergerät 100 konfiguriert sind. Die Oberfläche 122 ist ein bestimmter Teil des physischen Speicher, der vom Gerätetreiber 110 zugewiesen wird. Die Oberfläche kann auf Basis der Verarbeitung aktualisiert werden, die am Inhalt des physischen Speichers in der Oberfläche 122 durchgeführt wird. In Ausführungsformen kann, wenn eine Anwendung 124 von der CPU 104 ausgeführt wird, die Anwendung 124 fordern, dass eine Oberfläche vom Gerätetreiber 110 zugewiesen wird. Des Weiteren können Anwendungen 124, die auf der CPU 102 ausgeführt werden, die Oberfläche 122 je nach Speicherzuweisung konfigurieren, die von den Anwendungen 124 benötigt wird, indem die gewünschte Größe und die Eigenschaften der Oberfläche 122 angegeben werden. Außerdem kann die Oberflächenzuweisung zum Beispiel als Reaktion auf eine Eingabe von der CPU 102 von Computergerät 100 durchgeführt werden. Des Weiteren ist in Ausführungsformen die Oberfläche als im LLC zwischenspeicherbar gekennzeichnet. Durch Bezeichnung der Oberfläche 122 als im LLC zwischenspeicherbar können die Daten, die von Orten innerhalb der Oberfläche 122 zwischengespeichert werden, in LLC 114 zwischengespeichert werden und sind somit im LLC sowohl für die CPU 102 als auch die GPU 104 zugänglich.
  • Eine Speicherverwaltungseinheit (memory management unit, MMU) 126 kann verwendet werden, um auf Daten zuzugreifen, die in der Oberfläche 122 gespeichert sind. Die MMU 126 kann den virtuellen Adressraum der 102 und der GPU 104 in verschiedene Adressraumseiten aufteilen. Die CPU 102 und die GPU 104 haben jeweils ihre eigenen virtuellen Adressräume. Der virtuelle Adressraum ermöglicht den Schutz der Daten, die in der Oberfläche 122 enthalten sind, indem die verschiedenen Anwendungen 124, die innerhalb eines Computersystems ausgeführt werden, in einer bestimmten Teilmenge der virtuellen Adressen isoliert werden. Durch Verwendung der virtuellen Adressräume greift eine Anwendung 124 nicht auf die Daten einer anderen Anwendung 124 zu. Demgemäß beinhaltet die MMU 126 eine CPU-Seitentabelle 128 und eine GPU-Seitentabelle 130. Die CPU-Seitentabelle enthält die virtuellen Adressen der CPU, die einem physischen Adressort innerhalb der Oberfläche 122 zugeordnet sind. Ähnlich enthält die GPU-Seitentabelle enthält die virtuellen Adressen der GPU, die einem physischen Adressort innerhalb der Oberfläche 122 zugeordnet sind. Im hierin beschriebenen Verfahren der gemeinsamen Speichernutzung kann die CPU-Seitentabelle 128 eine Zuordnung des virtuellen CPU-Adressraum zu einem physischen Adressraum beinhalten. Der physische Adressraum entspricht physischen Orten innerhalb der Oberfläche 122. Ebenso kann die GPU-Seitentabelle 130 eine Zuordnung des virtuellen GPU-Adressraums zu derselben beinhalten.
  • In verschiedenen Ausführungsformen werden die virtuellen Speicheradressen aus der virtuellen CPU-Seitentabelle 128 und die virtuellen Grafikspeicheradressen aus der GPU-Seitentabelle 130 den physischen Speicherseiten der Oberfläche 122 über ein Übersetzungsverfahren zugeordnet. Das Übersetzungsverfahren kann verwendet werden, um jede der virtuellen Speicheradressen einer entsprechenden physischen Adresse zuzuweisen. Zum Beispiel kann das Übersetzungsverfahren über ein Durchsuchen der Seitentabellen durchgeführt werden, das auf Basis einer spezifischen Übersetzungstabelle für die Konvertierung virtueller Speicheradressen in einer Seitentabelle in physische Speicheradressen in der Seitentabelle erfolgen kann. Außerdem kann in Ausführungsformen ein Adress-Umsetzpuffer verwendet werden, um die virtuellen Adressen der CPU und GPU in physische Adressräume in ihren jeweiligen Seitentabellen zu übersetzen.
  • Nach Durchführung eines Übersetzungsverfahrens kann Oberfläche 122 fixiert werden. Die Fixierung der Oberfläche bezieht sich auf den Schutz der Oberfläche, sodass die physischen Orte und die entsprechenden physischen Adressen unverändert sind. Somit stellt die Fixierung der Oberfläche 122 eine „harte” Zuordnung zwischen virtuellen Adressräumen und physischen Adressräumen sicher. Die harte Zuordnung zwischen Adressräumen ist eine Zuordnung, die sich nach Fixierung der Oberfläche nicht mehr ändert. Wenn eine Oberfläche nicht fixiert ist, kann ein Seitenfehler erzeugt werden oder die falschen Daten können verarbeitet werden, da sich der physische Ort der Oberfläche ändern kann.
  • In Ausführungsformen kann eine Anwendung 124 auf der CPU 102 ausgeführt werden und eine Oberfläche, zum Beispiel Oberfläche 122, anfordern, um die Operationen durchzuführen, zum Beispiel die Verarbeitung von Daten. Die CPU 102 kann die Operationen an die GPU 104 übergeben. Da die Seitentabellen der Oberfläche 122 zugeordnet wurden, kann die GPU durch Zugreifen auf die Oberfläche mit der sofortigen Ausführung der Operationen beginnen, die von der CPU 102 ausgelagert wurden, ohne die Daten in einen anderen Adressraum zu kopieren. Wenn die Operationen abgeschlossen von der CPU 102 abgeschlossen sind, kann die GPU 104 der CPU 122 signalisieren, dass die Operationen abgeschlossen sind. Die CPU 102 kann dann die Verarbeitung der Daten fortsetzen, ohne die Daten zurück in einen ursprünglichen Adressraum zu kopieren.
  • Wenn die Operationen, die von der Anwendung 124 angefordert werden, von der GPU 104 durchgeführt werden, können Modifizierungen an der Oberfläche 122 erfolgen. Demgemäß sind für das hierin beschriebenen Verfahren der gemeinsamen Speichernutzung solche Modifizierungen an Oberfläche 122 für die CPU 102 voll sichtbar. Somit können Daten zwischen der GPU 104 und der CPU 102 gemeinsam genutzt werden, ohne Daten von der GPU 104 zur CPU 102 oder umgekehrt zu kopieren.
  • CPU 102 kann über Bus 106 mit einer Eingangs-/Ausgangsschnittstelle (E/A) 132 gekoppelt werden, die so angepasst ist, dass das Computergerät 100 mit einem oder mehreren E/A-Geräten 134 verbunden ist. E/A-Geräte 134 können z. B. eine Tastatur und ein Zeigegerät umfassen, wobei das Zeigegerät u. a. ein Touchpad oder einen Touchscreen umfassen kann. Die E/A-Geräte 134 können integrierte Komponenten des Computergerät 100 sein oder sie können Geräte sein, die extern mit Computersystem 100 verbunden sind.
  • CPU 102 kann außerdem über Bus 106 mit einer Displayschnittstelle 136 gekoppelt werden, die so angepasst ist, dass das Computergerät 100 mit einem Anzeigegerät 138 verbunden ist. Anzeigegerät 138 kann einen Anzeigebildschirm enthalten, der eine integrierte Komponente des Computergeräts 100 ist. Anzeigegerät 138 kann außerdem u. a. einen Computermonitor, ein Fernsehgerät oder einen Projektor enthalten, der extern mit Computergerät 100 verbunden ist.
  • Ein Netzwerk-Schnittstellencontroller (network interface controller, NIC) 140 kann so angepasst sein, dass er Computergerät 100 über Bus 106 mit einem Netzwerk verbindet 142. Netzwerk 142 kann u. a. ein Wide Area Network (WAN), Local Area Network (LAN) oder das Internet sein.
  • Das Blockdiagramm von 1 soll nicht angeben, dass Computergerät 100 alle in 1 darstellten Komponenten enthalten muss. Des Weiteren kann das Computergerät 100 je nach Einzelheiten der konkreten Implementierung eine beliebige Anzahl von zusätzlichen nicht in 1 dargestellten Komponenten enthalten.
  • 2A und 2B sind schematische Darstellungen einer vereinheitlichten Speicherarchitektur 200, die verwendet werden kann, um ein Verfahren für die gemeinsame Nutzung von Speichern zwischen der CPU 102 und der GPU 104 von Computergerät 100 gemäß Ausführungsformen zu implementieren. Gleiche Nummern sind mit Bezug auf 1 beschrieben. Die UMA 200 kann zum Beispiel die CPU-Seitentabelle 128, die GPU-Seitentabelle 130 und die Oberfläche 122 von Computergerät 100 umfassen.
  • Die UMA 200 kann direkte gemeinsame Speichernutzung zwischen der CPU 102 und der GPU 104 ohne jegliche Art von Datenkopieren oder Datenübertragung zwischen der CPU 102 und der GPU 104 ermöglichen. Dies kann erreicht werden, indem der CPU 102 und der GPU 104 eine gemeinsame Nutzung der Oberfläche 122 ermöglicht wird. Wie oben beschrieben, kann die 122 ein Teil eines physischen Speichergeräts sein. Die Oberfläche beinhaltet eine beliebige Anzahl physischer Speicherorte 202. Die physischen Speicherorte 202 können in einem ausgelagerten Speicherformat organisiert sein, bei dem eine Seite ein Block mit fester Länge des physischen Speichers in der Oberfläche 122 ist.
  • Die CPU-Seitentabelle 128 kann eine Reihe von virtuellen CPU-Speicheradressen 204 enthalten und die GPU-Seitentabelle 130 kann eine Reihe virtueller Grafikspeicheradressen 206 enthalten. Die virtuellen CPU-Speicheradressen 204 bilden den virtuellen CPU-Adressraum, während die virtuellen Grafikspeicheradressen 206 den virtuellen Grafikadressraum bilden. Jeder Adressraum ist einer physischen Adresse in jeder Seitentabelle zugeordnet. Somit sind die virtuellen CPU-Speicheradressen 204 und die virtuellen Grafikspeicheradressen 206 beide demselben Satz physischer Adressen 208 in der CPU-Seitentabelle 128 bzw. der GPU-Seitentabelle 130 zugeordnet.
  • Die physischen Adressen 208 ermögliche es der CPU 102 und der GPU 104 (1), Daten zu verarbeiten, die an physischen Orten 202 in der Oberfläche 122 gespeichert sind. In verschiedenen Ausführungsformen ist die Oberfläche 122 auf Basis spezifischer virtueller CPU-Adressen 204 zugewiesen, auf die von einer Anwendung zugegriffen wird, zum Beispiel Anwendung 124 (1). Sobald die Oberfläche 122 zugewiesen wurde, wird jede physische Adresse 208 der entsprechenden virtuellen CPU-Adresse 204 in der CPU-Seitentabelle 128 zugeordnet, wie in 2 dargestellt. Die virtuellen Grafikspeicheradressen 206 in der GPU-Seitentabelle 130 können mit der CPU-Seitentabelle 128 synchronisiert werden, sodass die virtuellen CPU-Adressen und die virtuellen GPU-Speicheradressen demselben Satz physischer Adressen 208 zugeordnet sind. Die physischen Adressen 208 entsprechen physischen Orten 202 in der Oberfläche 122. Demgemäß kann die Oberfläche 122 direkt zwischen der CPU 102 und der GPU 104 gemeinsam genutzt werden. In Ausführungsformen sind, wenn die GPU 104 Daten modifiziert, die sich an einem beliebigen der physischen Orte 202 befinden, die Modifizierungen automatisch für die CPU 102 über die Oberfläche 122 sichtbar, ohne dass Daten kopiert oder geordnet werden.
  • Die schematische Darstellung von 2 soll nicht angeben, dass die UMA 200 alle in 2 darstellten Komponenten enthalten muss. Des Weiteren kann die UMA 200 je nach Einzelheiten der spezifischen Implementierung eine beliebige Anzahl von zusätzlichen, in 2 nicht dargestellten Komponenten enthalten.
  • 3 ist ein Prozessablaufdiagramm, das ein Verfahren 300 für die gemeinsame Nutzung von Speicher zwischen der CPU und der GPU eines Computergeräts gemäß Ausführungsformen zeigt, In verschiedenen Ausführungsformen wird Verfahren 300 verwendet, um Speicher zwischen der CPU und der GPU gemeinsam zu nutzen, ohne Daten von einem CPU-Speicher zu einem GPU-Speicher zu kopieren.
  • In einigen Ausführungsformen kann Verfahren 300 auf einem Computergerät ausgeführt werden, zum Beispiel Computergerät 100, bei dem CPU 102 und GPU 104 durch einen Bus 106 verbunden sind. In anderen Ausführungsformen können die CPU 102 und die GPU 104 in einer UMA enthalten sein, zum Beispiel UMA 200, die oben in Bezug auf 2 erörtert ist. Des Weiteren kann Verfahren 300 von einem Treiber des Computergeräts ausgeführt werden, zum Beispiel Gerätetreiber 126 von Computergerät 100.
  • Da Verfahren beginnt bei Block 302 mit der Zuweisung einer Oberfläche in einem physischen Speicher. In Ausführungsformen kann die Oberfläche im physischen Speicher eines Computergeräts als Reaktion auf eine Eingabe von einer Anwendung zugewiesen werden, die auf der CPU des Computergeräts läuft. Des Weiteren kann, in Ausführungsformen, die Oberfläche durch den Gerätetreiber zugewiesen werden. Die Anwendung oder der Gerätetreiber auf die Oberfläche von der CPU aus mithilfe einer virtuellen CPU-Adresse zugreifen. In Ausführungen werden die virtuellen CPU-Adressen der Anwendung oder dem Gerätetreiber durch ein Betriebssystem des Computergeräts bereitgestellt.
  • Bei Block 304 werden die physischen Adressen, die den physischen Orten in der Oberfläche entsprechen, den virtuellen CPU-Adressen zugeordnet. Die Zuordnung zwischen den virtuellen CPU-Speicheradressen und den physischen Adressen sind in einer CPU-Seitentabelle enthalten. Die Zuordnung der physischen Speicherseiten zu den virtuellen Speicheradressen kann die Übersetzung der virtuellen CPU-Adressen umfassen, um entsprechende physische Speicherseiten im Systemspeicher zu bestimmen. Wenn die virtuellen CPU-Adressen in physische Adressen übersetzt wurden, werden die Zuweisungen zwischen den virtuellen CPU-Adressen und den physischen Adressen, die während des Übersetzungsvorgangs gefunden wurden, gesperrt. Durch Sperren der Zuweisungen können die physischen Orte der Oberfläche, die den physischen Adressen in der CPU-Seitentabelle entsprechen, in den Zwischenspeicher ausgelagert werden. Die Seiten bleiben im Zwischenspeicher, während die Zuordnungen gesperrt sind, da verhindert wird, dass die physischen Adressen der Oberfläche durch den Gerätetreiber geändert werden.
  • Bei Block 306 werden die virtuellen GPU-Speicheradressen den physischen Orten in der Oberfläche zugeordnet. In Ausführungsformen ist die Oberfläche als im LLC zwischenspeicherbar bezeichnet. Eine solche Bezeichnung stellt sicher, dass die physischen Orte der Oberfläche im LLC zwischengespeichert werden, die von der CPU und der GPU gemeinsam genutzt werden. Die virtuellen Grafikspeicheradressen, die von der Anwendung verwendet werden, können in dieselben physischen Adressen übersetzt werden, die den virtuellen Adressen der CPU zugeordnet sind. In Ausführungsformen kann der Gerätetreiber die Zuordnung der virtuellen Grafikspeicheradressen zu den physischen Adressen in der GPU-Seitentabelle aktualisieren.
  • Die Zuordnung der virtuellen GPU-Adressen kann eine Fixierung der Oberfläche umfassen. Durch Fixierung der Oberfläche wird verhindert, dass die Zuordnung zwischen den virtuellen GPU-Adressen und der Oberfläche geändert wird. Somit entspricht der virtuelle GPU-Speicher demselben physischen Speicher, ohne dass der physische Speicher geändert wird. Zum Beispiel kann ein Betriebssystem zugewiesene physische Speicherorte als Teil seiner Speicherverwaltung ändern. Sobald die Oberfläche jedoch fixiert wurde, wird verhindert, dass das Betriebssystem die physischen Speicherorte der Oberfläche ändert.
  • 4 ist ein Prozessablaufdiagramm, das ein Verfahren 400 für die Verarbeitung von gemeinsam genutztem Speicher zwischen der CPU und der GPU eines Computergeräts gemäß Ausführungsformen zeigt,
  • Bei Block 402 kann eine Operation von der CPU zur GPU ausgelagert werden. Die Operation kann zur GPU ausgelagert werden, wie von einer Anwendung angewiesen, zum Beispiel Anwendung 124 (1). Außerdem kann eine beliebige Application Programming Interface (AP), die verwendet wird, um die CPU oder GPU zu steuern, verwendet werden, um die Auslagerung einer Operation von der CPU zur GPU anzuweisen. In Ausführungsformen können vor der Auslagerung einer Operation von der CPU zur GPU die Daten, die sich in der Oberfläche befinden, die durch die CPU verarbeitet wird, mit dem LLC kohärent gemacht werden.
  • Bei Block 404 kann die GPU mit der Verarbeitung der ausgelagerten Operation beginnen. Die GPU greift auf Daten in der LLC und der Oberfläche zu, um die Operation durchzuführen. Falls die GPU Daten anfordert, die sich nicht im LLC, sondern in einem anderen Zwischenspeicher der CPU befindet, kann der LLC die Daten aus dem anderen Zwischenspeicher für die Verarbeitung durch die GPU abrufen.
  • Bei Block 406 signalisiert die GPU, dass die Operation abgeschlossen ist. Das Abschlusssignal kann zum Host gesendet werden. In Ausführungsformen synchronisiert, wenn die Operation abgeschlossen ist, der Gerätetreiber die Operation zwischen der GPU und der CPU. Des Weiteren kann, in Ausführungsformen, das Abschlusssignal zum Beispiel ein Mailbox-Eintrag oder ein Interrupt sein. Das Abschlusssignal kann angeben, dass die GPU Rechen- und Grafikoperationen durchgeführt hat, die zu einer Modifizierung der Daten in der Oberfläche geführt haben. Nach Abschluss kann die Ausgabe der GPU durch die CPU verarbeitet werden. In verschiedenen Ausführungsformen kann, wenn die GPU die Oberfläche durch Lesen von oder Schreiben zu physischen Orten der Oberfläche verarbeitet, die Verarbeitung in internen Puffern oder Zwischenspeichern der GPU erfolgen. Demgemäß werden die Daten in den internen Puffern oder Zwischenspeichern der GPU mit dem LLC kohärent gemacht, nachdem die GPU-Verarbeitung abgeschlossen ist.
  • Das Prozessablaufdiagramm von 3 und 4 soll nicht angeben, dass die Blöcke des Verfahrens 300 und 400 in einer bestimmten Reihenfolge ausgeführt werden müssen, oder dass alle der Blöcke in jedem einzelnen Fall inbegriffen sein müssen. Des Weiteren kann je nach Details der spezifischen Implementierung jede beliebige Zahl an zusätzlichen Blöcken in Verfahren 300 und 400 enthalten sein. Außerdem kann, während die hierin beschriebenen Verfahren eine GPU enthalten, der Speicher zwischen einem beliebigen E/A-Gerät wie einer weiteren CPU oder einem Direct Memory Access(DMA)-Controller gemeinsam genutzt werden.
  • 5 ist ein Blockdiagramm, das ein konkretes, nicht flüchtiges, computerlesbares Medium 500 zeigt, auf dem Code für die gemeinsame Nutzung von Speicher zwischen der CPU und der GPU eines Computergeräts gemäß Ausführungsformen gespeichert ist, Auf das konkrete, nicht flüchtige, computerlesbare Medium 500 kann ein Prozessor 502 über einen Computerbus 504 zugreifen. Des Weiteren kann das konkrete, nicht flüchtige, computerlesbare Medium 500 Code enthalten, der so konfiguriert ist, dass er Prozessor 502 anweist, die hierin beschriebenen Methoden auszuführen.
  • Die verschiedenen, hierin besprochenen Softwarekomponenten können auf dem konkreten, nicht flüchtigen, computerlesbaren Medium 500 gespeichert sein, wie in 5 angegeben. Zum Beispiel kann ein Oberflächenzuweisungsmodul 506 konfiguriert sein, um eine Oberfläche einschließlich einer Reihe physischer Speicherseiten in einem Speicher des Computergeräts zuzuweisen oder zu erzeugen. Ein Zuordnungsmodul 508 kann konfiguriert sein, um die physischen Orte in der Oberfläche zu virtuellen Speicheradressen in der CPU-Adresstabelle und der GPU-Adresstabelle zuzuordnen. Des Weiteren kann ein Fixierungsmodul 510 konfiguriert sein, um die Oberfläche zu fixieren, sodass eine Änderung der physischen Orte in der Oberfläche verhindert wird.
  • Das Blockdiagramm von 5 soll nicht angeben, dass konkrete, nicht flüchtige, computerlesbare Medium 500 alle in 5 darstellten Komponenten enthalten muss. Des Weiteren kann das konkrete, nicht flüchtige, computerlesbare Medium 500 je nach Einzelheiten der konkreten Implementierung eine beliebige Anzahl von zusätzlichen nicht in 5 dargestellten Komponenten enthalten.
  • In Ausführungsformen muss die CPU keine Daten zwischen dem CPU-Adressraum und dem GPU-Adressraum ordnen. Des Weiteren hat die CPU nicht die Aufgabe, sicherzustellen, dass keine anderen Verarbeitungskerne am bestimmten Satz von Daten arbeiten, von denen die CPU möchte, dass sie von der GPU behandelt werden, was Verarbeitungsrennen zwischen Verarbeitungskernen verhindert.
  • 6 ist ein Blockdiagramm für ein beispielhaftes System 600 für die Implementierung eines gemeinsamen physischen Speichers. Gleiche Nummern sind mit Bezug auf 1, 2A und 2B beschrieben. In einigen Ausführungsformen ist System 600 ein Mediensystem. Außerdem kann System 600 in einem Personal Computer (PC), einem Laptop-Computer, einem Ultra-Laptop-Computer, einem Tablet, einem Touchpad, einem tragbaren Computer, einem Handheld-Computer, einem Palmtop-Computer, einem Minicomputer (Personal Digital Assistant, PDA), einem Mobiltelefon, einer Kombination aus Mobiltelefon und PDA, einem Fernsehgerät, einem intelligenten Gerät (z. B. Smartphone, Smart-Tablet oder Smart-Fernsehgerät), einem mobilen Internetgerät (Mobile Internet Device, MID), einem Nachrichtengerät, einem Datenkommunikationsgerät oder ähnlichen enthalten sein.
  • In verschiedenen Ausführungsformen umfasst System 600 eine Plattform 602, die mit einem Display 604 gekoppelt ist. Plattform 602 kann Inhalte von einer Inhaltsbereitstellungsvorrichtung, zum Beispiel Bereitstellungsvorrichtung(en) für Dienste 606 oder Bereitstellungsvorrichtung(en) 608 oder ähnlichen Inhaltsquellen empfangen. Ein Navigationscontroller 610 einschließlich ein oder mehrere Navigationsfunktionen können verwendet werden, um, zum Beispiel, mit der Plattform 602 und/oder dem Display 604 zu interagieren. Jede dieser Komponenten wird im Folgenden ausführlicher beschrieben.
  • Die Plattform 602 kann jede Kombination aus einem Chipsatz 612, einer Zentraleinheit (central processing unit, CPU) 102, einem Arbeitsspeichergerät 108, einem Datenspeichergerät 120, Einem Grafik-Subsystem 614, Anwendungen 124 und einem Funkgerät 616 beinhalten. Chipsatz 612 kann Interkommunikation zwischen der CPU 102, dem Arbeitsspeichergerät 108, dem Datenspeichergerät 120, dem Grafik-Subsystem 614, den Anwendungen 124 und dem Funkgerät 614 bereitstellen. Beispielsweise kann Chipsatz 612 einen Speicheradapter (nicht dargestellt) beinhalten, der imstande ist, Interkommunikation mit Speichergerät 120 bereitzustellen.
  • CPU 102 kann als CISC-(Complex Instruction Set Computer)- oder RISC-(Reduced Instruction Set Computer)-Prozessoren, mit dem x86-Befehlssatz kompatible Prozessoren, Mehrkern-, oder jeder andere Mikroprozessor oder Zentraleinheit (CPU) implementiert sein. In einigen Ausführungsformen weist CPU 102 Zweikern-Prozessor(en), Zweikern-Mobile-Prozessor(en) oder dergleichen auf.
  • Speichergerät 108 kann als ein flüchtiges Speichergerät implementiert sein, wie z. B., aber nicht beschränkt auf, einen Direktzugriffsspeicher (Random Access Memory, RAM), dynamischen Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) oder statischen RAM (Static RAM, SRAM). Speichergerät 120 kann als ein Permanentspeichergerät implementiert sein, u. a. ein magnetisches Diskettenlaufwerk, optisches Diskettenlaufwerk, Bandlaufwerk, ein internes Speichergerät, ein angeschlossenes Speichergerät, Flash-Memory, batteriegepufferter SDRAM (synchroner DRAM, synchronous DRAM), und/oder ein Speichergerät, auf das über ein Netzwerk zugegriffen werden kann. Bei einigen Ausführungsformen beinhaltet Speichergerät 120 Technologie, die den speicherleistungsverbesserten Schutz für wertvolle digitale Medien erhöht, wenn zum Beispiel mehrere Festplatten beinhaltet sind.
  • Grafik-Subsystem 614 kann eine Verarbeitung von Bildern, wie z. B. Standbildern oder Videos, zur Anzeige durchführen. Grafik-Subsystem 614 kann zum Beispiel einen Grafikprozessor (graphics processing unit, GPU), zum Beispiel GPU 104 oder eine visuelle Verarbeitungseinheit (visual processing unit, VPU) sein. Eine analoge oder digitale Schnittstelle kann verwendet werden, um Grafik-Subsystem 614 und Display 604 kommunikativ zu koppeln. Beispielsweise kann die Schnittstelle irgendeine High-Definition Multimediaschnittstelle, ein DisplayPort, eine drahtlose HDMI und/oder drahtlose HD-konforme Technik sein. Grafik-Subsystem 614 könnte in CPU 102 oder Chipsatz 612 integriert sein. Alternativ kann Grafik-Subsystem 614 eine eigenständige Karte sein, die kommunikativ mit Chipsatz 612 gekoppelt ist.
  • Die hierin beschriebenen Grafik- und/oder Videoverarbeitungs-Techniken können in verschiedenen Hardware-Architekturen implementiert werden. Beispielsweise kann Grafik- und/oder Videofunktionalität innerhalb eines Chipsatzes 612 integriert sein. Alternativ kann ein separater Grafik- und/oder Videoprozessor verwendet werden. Als noch eine weitere Ausführungsform können die Grafik- und/oder Videofunktionen durch einen Universalprozessor, einschließlich ein Mehrkernprozessor, implementiert werden. Bei einer weiteren Ausführungsform können die Funktionen in einem Unterhaltungselektronikgerät implementiert sein.
  • Funkgerät 616 kann ein oder mehrere Funkgeräte enthalten, die Signale mithilfe verschiedener geeigneter drahtloser Kommunikationstechniken senden und empfangen können. Solche Techniken können die Kommunikation über ein oder mehrere drahtlose Netzwerke umfassen. Beispielhafte drahtlose Netzwerke sind Wireless Local Area Networks (WLANs), Wireless Personal Area Networks (WPANs), Wireless Metropolitan Area Network (WMANs), Handynetze, Satellitennetze oder ähnliches. Bei der Kommunikation über solche Netzwerke kann Funkgerät 616 gemäß einem oder mehreren anwendbaren Standards in irgendeiner Version betrieben werden.
  • Display 604 kann jeden fernseherähnlichen Monitor oder Bildschirm umfassen. Zum Beispiel kann Display 604 einen Computeranzeigebildschirm, einen Touchscreen-Bildschirm, einen Videomonitor, ein Fernsehgerät oder ähnliches umfassen. Display 604 kann digital und/oder analog sein. In einigen Ausführungsformen ist Display 604 ein holografisches Display. Außerdem kann Display 604 eine transparente Fläche sein, die eine visuelle Projektion empfangen kann. Solche Projektionen können verschiedene Formen von Informationen, Bildern, Objekten oder ähnlichem übermitteln. Solche Projektionen können zum Beispiel eine visuelle Überlagerung für eine Mobile Augmented Reality(MAR)-Anwendung sein. Unter der Kontrolle von ein oder mehreren Anwendungen 124, kann Plattform 602 eine Benutzeroberfläche 618 auf dem Display 604 anzeigen.
  • Die Bereitstellungsvorrichtung(en) für Dienste 606 können von jedem beliebigen nationalen, internationalen oder unabhängigen Dienst bereitgestellt werden und können somit auf Plattform 602 zum Beispiel über das Internet zugänglich sein. Die Bereitstellungsvorrichtung(en) für Dienste 606 können mit Plattform 602 und/oder Display 604 gekoppelt sein. Plattform 602 und/oder die Bereitstellungsvorrichtung(en) für Dienste 606 können mit einem Netzwerk 142 gekoppelt sein, um Medieninformationen zu und vom Netzwerk 142 zu kommunizieren (z. B. zu senden und/oder zu empfangen). Die Bereitstellungsvorrichtung(en) 608 können außerdem mit Plattform 602 und/oder Display 604 gekoppelt sein.
  • Die Bereitstellungsvorrichtung(en) für Dienste 606 können eine Kabelfernsehbox, einen Personal Computer, ein Netzwerk, ein Telefon oder ein internetfähiges Gerät umfassen, das digitale Informationen liefern kann. Außerdem können die Bereitstellungsvorrichtung(en) für Dienste 606 jedes andere ähnliche Gerät umfassen, das Inhalte zwischen Inhaltsanbietern und Plattform 602 oder Display 604, über Netzwerk 142 oder direkt, in eine Richtung oder in zwei Richtungen kommunizieren kann. Es ist selbstverständlich, dass die Inhalte in eine Richtung und/oder in zwei Richtungen zu oder von jeder der Komponenten in System 600 und einem Inhaltsanbieter über Netzwerk 142 kommuniziert werden können. Beispiele von Inhalten können beliebige Medieninformationen sein, zum Beispiel Videos, Musik, medizinische und Spielinformationen usw.
  • Die Bereitstellungsvorrichtung(en) für Dienste 606 können Inhalte wie Kabelfernsehprogramme einschließlich Medieninformationen, digitaler Informationen oder anderer Inhalte empfangen. Beispiele für Inhaltsanbieter können u. a. beliebige Kabel- oder Satellitenfernseh- oder Radio- oder Internet-Inhaltsanbieter sein.
  • In einigen Ausführungsformen empfängt 602 Steuersignale von Navigationscontroller 610, der ein oder mehrere Navigationsfunktionen umfasst. Die Navigationsfunktionen von Navigationscontroller 610 können zum Beispiel verwendet werden, um mit Benutzeroberfläche 618 zu interagieren. Navigationscontroller 610 kann ein Zeigegerät sein, das eine Computerhardwarekomponente (insbesondere ein Human-Interface-Gerät) sein, die es einem Benutzer ermöglicht, räumliche (z. B. kontinuierliche und mehrdimensionale) Daten in einen Computer einzugeben. Viele Systeme wie grafische Benutzeroberflächen (graphical user interfaces, GUI) und Fernsehgeräte und Monitore ermöglichen es dem Benutzer, Daten mithilfe von Körpergesten zu steuern und dem Computer oder Fernsehgerät bereitzustellen. Körpergesten können u. a. Gesichtsausdrücke, Gesichtsbewegungen, Bewegungen verschiedener Gliedmaßen, Körperbewegungen, Körpersprache oder eine beliebige Kombination davon umfassen. Solche Körpergesten können erkannt und in Befehle oder Anweisungen übersetzt werden.
  • Bewegungen der Navigationsfunktionen von Navigationscontroller 610 können auf dem Display 604 durch Bewegungen eines Zeigers, eines Cursors, eines Fokusrings oder anderer visueller Anzeiger ein Echo finden, die auf dem Display 604 angezeigt werden. Zum Beispiel können unter der Kontrolle der Anwendungen 124 die Navigationsfunktionen in Navigationscontroller 610 zu virtuellen Navigationsfunktionen zugeordnet werden, die auf der Benutzeroberfläche 618 angezeigt werden. In einigen Ausführungsformen kann Navigationscontroller 610 keine getrennte Komponenten sein, sondern stattdessen in Plattform 602 und/oder Display 604 integriert sein.
  • System 600 kann Treiber (nicht dargestellt) beinhalten, die Technologie enthalten, die es Benutzern zum Beispiel ermöglicht, Plattform 602 durch Berühren einer Schaltfläche nach dem anfänglichen Systemstart, wenn aktiviert, sofort ein- oder auszuschalten. Programmlogik kann es Plattform 602 ermöglichen, Inhalte zu Medienadaptern oder anderen Bereitstellungsvorrichtung(en) für Dienste 606 oder Bereitstellungsvorrichtung(en) 608 zu streamen, wenn die Plattform ausgeschaltet ist. Zusätzlich kann Chipsatz 612 Hardware- und/oder Softwareunterstützung für beispielsweise 5.1 Surround-Sound-Audio und/oder High-Definition 7.1 Surround-Sound-Audio umfassen. Die Treiber können einen Grafiktreiber für integrierte Grafikplattformen beinhalten. In einigen Ausführungsformen kann der Grafiktreiber eine Peripheral Component Interconnect Express(PCIe)-Grafikkarte umfassen.
  • In verschiedenen Ausführungsformen können ein oder mehrere der Komponenten integriert sein, die in System 600 dargestellt sind. Plattform 602 und die Bereitstellungsvorrichtung(en) für Dienste 606 können integriert sein, Plattform 602 und die Bereitstellungsvorrichtung(en) 608 können integriert sein oder Plattform 602, die Bereitstellungsvorrichtung(en) für Dienste 606 und die Bereitstellungsvorrichtung(en) 608 können integriert sein. In einigen Ausführungsformen sind Plattform 602 und Display 604 eine integrierte Einheit. Zum Beispiel können Display 604 und Bereitstellungsvorrichtung(en) für Dienste 606 können integriert sein oder Display 604 und Bereitstellungsvorrichtung(en) 608 können integriert sein.
  • System 600 kann als drahtloses System oder als drahtgebundenes System implementiert sein. Wenn es als ein drahtloses System implementiert ist, kann System 600 Komponenten und Schnittstellen beinhalten, die für eine Kommunikation über ein drahtloses gemeinsam benutztes Medium geeignet sind, wie z. B. eine oder mehr Antennen, Transmitter, Empfänger, Transceiver, Verstärker, Filter, Steuerlogik und so weiter. Ein Beispiel drahtloser gemeinsam benutzter Medien kann Teile eines Drahtlos-Spektrums, wie z. B. das RF-Spektrum, beinhalten. Wenn es als ein drahtgebundenes System implementiert ist, kann System 600 Komponenten und Schnittstellen beinhalten, die für eine Kommunikation über drahtgebundene Kommunikationsmedien geeignet sind, wie z. B. Eingangs-/Ausgangs-(I/O-input/output)-Adapter, physische Verbinder, um den I/O-Adapter mit einem entsprechenden drahtgebundenen Kommunikationsmedium zu verbinden, eine Netzwerkkarte (network interface card, NIC), Platten-Controller, Video-Controller, Audio-Controller oder ähnliches. Beispiele von drahtgebundenen Kommunikationsmedien können einen Draht, Kabel, Metallleiter, Leiterplatte (printed circuit board, PCB), Backplane, Vermittlungsstelle, Halbleitermaterial, verdrillte Drähte, Koaxialkabel, faseroptische Verbindung oder ähnliches beinhalten.
  • Plattform 602 kann einen oder mehr logische oder physikalische Kanäle festlegen, um Information zu kommunizieren. Die Information kann Medieninformation und Steuerinformation beinhalten. Medieninformation kann sich auf jegliche Daten beziehen, die einen für einen Benutzer bestimmten Inhalt darstellen. Beispiele von Inhalt können beispielsweise Daten aus einer Gesprächsunterhaltung, Videokonferenz, Streaming-Video, elektronischer Post („E-Mail”) Nachricht, Mailbox-Nachricht, alphanumerische Symbole, Grafiken, ein Bild, Video, Text oder ähnliches beinhalten. Daten aus einer Gesprächsunterhaltung können beispielsweise Sprachinformation, Phasen des Schweigens, Hintergrundgeräusch, Hintergrundrauschen, Töne oder ähnliches sein. Steuerinformation kann sich auf jegliche Daten beziehen, die Befehle oder Steuerwörter darstellen, die für ein automatisiertes System bestimmt sind. Beispielsweise kann Steuerinformation verwendet werden, um Medieninformation durch ein System weiterzuleiten, oder einen Knoten anzuweisen, die Medieninformation auf eine vorher festgelegte Art und Weise zu verarbeiten. Die Ausführungsformen sind jedoch nicht auf die in dem Kontext gezeigten oder in 6 beschriebenen Elemente beschränkt.
  • 7 ist eine schematische Darstellung eines Geräts mit kleinem Formfaktor 700, in dem das System 600 von 6 verkörpert sein kann. Gleiche Nummern sind mit Bezug auf 6 beschrieben. In einigen Ausführungsformen kann zum Beispiel Gerät 700 als ein mobiles Computergerät mit Drahtlos-Fähigkeiten implementiert sein. Ein mobiles EDV-Gerät kann sich auf jedes Gerät mit einem Verarbeitungssystem und einer mobilen Stromquelle oder -versorgung beziehen, wie beispielsweise eine oder mehr Batterien.
  • Wie oben beschrieben, können Beispiele eines mobilen Computergeräts einen Personal Computer (PC), einen Laptop-Computer, einen Ultra-Laptop-Computer, ein Tablet, ein Touchpad, einen tragbaren Computer, einen Handheld-Computer, einen Palmtop-Computer, einen Minicomputer (Personal Digital Assistant, PDA), ein Mobiltelefon, eine Kombination aus Mobiltelefon und PDA, ein Fernsehgerät, ein intelligentes Gerät (z. B. Smartphone, Smart-Tablet oder Smart-Fernsehgerät), ein mobiles Internetgerät (Mobile Internet Device, MID), ein Nachrichtengerät, ein Datenkommunikationsgerät und ähnliches beinhalten.
  • Ein Beispiel eines mobilen Computergeräts kann außerdem einen Computer beinhalten, der so angeordnet sind, dass er von einer Person getragen werden können, zum Beispiel ein Handgelenk-Computer, eine Finger-Computer, ein Ring-Computer, ein Brillen-Computer, ein Gürtelclip-Computer, ein Armband-Computer, ein Schuh-Computer, ein Kleidungs-Computer und jede andere geeignete Art tragbarer Computer. Das mobile Computergerät kann zum Beispiel als ein Smartphone implementiert sein, das in der Lage ist, Computeranwendungen sowie Sprachkommunikation und/oder Datenkommunikation auszuführen. Obwohl einige Ausführungsformen beispielhaft mit einem mobilen Computergerät als ein Smartphone implementiert beschrieben sein können, kann es selbstverständlich sein, dass auch weitere Ausführungsformen unter Verwendung anderer drahtloser mobiler Computergeräte implementiert werden können.
  • Wie in 7 gezeigt, kann Gerät 700 ein Gehäuse 702, ein Display 704, ein Eingangs-/Ausgangs-(I/O-input/output)-Gerät 706 und eine Antenne 708 umfassen. Gerät 700 kann außerdem Navigationsfunktionen 710 beinhalten. Display 704 kann jede geeignete Anzeigeeinheit beinhalten, um für ein mobiles Computergerät geeignete Information anzuzeigen. E/A-Gerät 706 kann jedes geeignete E/A-Gerät zum Eingeben von Information in ein mobiles Computergerät umfassen. E/A-Gerät 706 kann zum Beispiel eine alphanumerische Tastatur, einen Nummernblock, ein Touchpad, Eingabetasten, Knöpfe, Schalter, Kippschalter, Mikrofone, Lautsprecher Spracherkennungsgerät und -software oder ähnliches umfassen. Informationen können in Gerät 700 außerdem mittels eines Mikrofons eingegeben werden. Solche Informationen können von einem Spracherkennungsgerät digitalisiert werden.
  • BEISPIEL 1
  • Ein Verfahren für die gemeinsame Nutzung von Speicher zwischen einer Zentraleinheit (central processing unit, CPU) und einem Eingabe/Ausgabe-(E/A-)Gerät wird hierin beschrieben. Das Verfahren umfasst die Zuweisung einer Oberfläche in einem physischen Speicher. Das Verfahren umfasst die Zuordnung der Oberfläche zu einer Vielzahl von virtuellen Speicheradressen in einer CPU-Seitentabelle. Das Verfahren umfasst außerdem die Zuordnung der Oberfläche zu einer Vielzahl von virtuellen Grafikspeicheradressen in einer E/A-Geräteseitentabelle auf Basis der Oberfläche. Das Verfahren umfasst des Weiteren die Fixierung der Oberfläche.
  • Speicher kann zwischen der CPU und dem E/A-Gerät über die Oberfläche gemeinsam genutzt werden, ohne Daten von einem CPU-Speicher zu einem E/A-Gerätespeicher zu kopieren. Die Oberfläche kann als Reaktion auf eine Eingabe von einer Anwendung zugewiesen werden, die auf der CPU des Computergeräts läuft. Außerdem kann das Verfahren durch einen Treiber des Computergeräts ausgeführt werden.
  • Daten aus dem Zwischenspeicher der CPU und des E/A-Gerät können mit dem Last-Level-Cache (LLC) kohärent sein, der zwischen der CPU und dem E/A-Gerät gemeinsam genutzt wird. Eine Operation kann von der CPU zum E/A-Gerät ausgelagert werden und die Operation kann im E/A-Gerät durchgeführt werden. Ein Abschlusssignal kann zur CPU gesendet werden, wobei das Abschlusssignal einen Hinweis enthält, dass das E/A-Gerät Berechnungen durchgeführt hat, die zu einer Modifizierung der Daten in der Oberfläche geführt haben. Außerdem kann ein Gerätetreiber die Verarbeitung von Daten zwischen der CPU und dem E/A-Gerät synchronisieren.
  • BEISPIEL 2
  • Hierin ist ein Computergerät beschrieben. Das Computergerät beinhaltet eine Zentraleinheit (central processing unit, CPU), die so konfiguriert ist, dass sie gespeicherte Befehle ausführt, und ein Speichergerät, das Befehle speichert. Das Speichergerät enthält vom Prozessor ausführbaren Code, der so konfiguriert ist, dass er, bei Ausführung durch die CPU eine Oberfläche in einem physischen Speicher zuweist. Das Computergerät beinhaltet außerdem einen Grafikprozessor (graphics processing unit, GPU) und eine GPU-Seitentabelle. Die Oberfläche kann einer Vielzahl von virtuellen Speicheradressen in einer CPU-Seitentabelle zugeordnet werden. Die Oberfläche kann außerdem einer Vielzahl von virtuellen Speicheradressen in der GPU-Seitentabelle zugeordnet werden. Das Computergerät kann die Oberfläche fixieren.
  • Der physische Speicher kann zwischen der CPU und der GPU gemeinsam genutzt werden, ohne Daten von einem CPU-Speicher zu einem GPU-Speicher zu kopieren. Des Weiteren befinden sich die CPU und GPU auf demselben Chip im Computergerät. Die CPU und die GPU können einen Last-Level-Cache (LLC) gemeinsam nutzen, wobei der LLC Daten von einem beliebigen Zwischenspeicher der CPU oder GPU abrufen kann. Die CPU und die GPU können eine vereinheitliche Speicherarchitektur (unified memory architecture, UMA) umfassen.
  • Der vom Prozessor ausführbare Code kann so konfiguriert sein, dass er die Oberfläche als Reaktion auf eine Eingabe von einer Anwendung zuweist, die auf der CPU des Computergeräts läuft. Die virtuellen Speicheradressen in der CPU-Seitentabelle und der GPU-Seitentabelle können physischen Orten in der Oberfläche zugeordnet werden, indem die virtuellen Adressen in physische Adressen übersetzt werden. Ein Treiber kann konfiguriert werden, um die Ausführung des vom Prozessor ausführbaren Codes zu initiieren. Außerdem kann das Computergerät ein Funkgerät und ein Display umfassen, das Funkgerät und das Display können kommunikativ mit mindestens einer Zentraleinheit gekoppelt sein.
  • BEISPIEL 3
  • Mindestens ein nicht flüchtiges, maschinenlesbares Medium mit darin gespeicherten Befehlen wird hierin beschrieben. Als Reaktion auf die Ausführung auf einem Computergerät, veranlassen die Befehle das Computergerät, eine Oberfläche in einem physischen Speicher zu erzeugen. Die Befehle veranlassen das Computergerät außerdem, die Oberfläche zu einer Reihe von virtuellen CPU-Speicheradressen zuzuordnen und die Oberfläche zu einer Reihe von virtuellen GPU-Speicheradressen zuzuordnen. Die Oberfläche kann außerdem fixiert werden.
  • Der physische Speicher kann zwischen der CPU und der GPU gemeinsam genutzt werden, ohne Daten von einem CPU-Speicher zu einem GPU-Speicher zu kopieren. Des Weiteren können die Befehle dafür sorgen, dass die Daten aus dem Zwischenspeicher der CPU und der GPU mit dem Last-Level-Cache (LLC) kohärent sind. Außerdem können die Befehle das Computergerät außerdem veranlasse, die Oberfläche als Reaktion auf eine Eingabe von einer Anwendung zuzuweisen, die auf einer CPU des Computergeräts läuft.
  • Es versteht sich, dass genaue Angaben in den vorstehend erwähnten Beispielen an beliebigen Stellen in einer oder mehreren Ausführungsformen verwendet werden können. Es können beispielsweise alle vorstehend beschriebenen fakultativen Merkmale des Computergeräts auch in Bezug auf jedes der hier beschriebenen Verfahren oder auf das computerlesbare Medium implementiert sein. Des Weiteren sind, obwohl Ablaufdiagramme und/oder Zustandsdiagramme in dieser Schrift verwendet worden sein können, um Ausführungsformen zu beschreiben, die Erfindungen nicht auf diese Diagramme oder auf entsprechende Beschreibungen begrenzt. Zum Beispiel braucht der Ablauf sich nicht durch jeden gezeigten Kasten oder Zustand oder in genau derselben Reihenfolge wie in dieser Schrift gezeigt und beschrieben zu bewegen.
  • Die Erfindungen sind nicht auf die bestimmten in dieser Schrift aufgelisteten Einzelheiten beschränkt. Für fachkundige Personen, die diese Offenlegung lesen, ist es in der Tat offensichtlich, dass viele weitere Varianten der vorstehenden Beschreibung und Zeichnungen im Rahmen der vorliegenden Erfindungen möglich sind. Nur die nachfolgenden Ansprüche und alle Änderungen dazu stellen eine genaue Definition des Umfangs der Erfindungen dar.

Claims (20)

  1. Verfahren für die gemeinsame Nutzung von Speicher zwischen einer Zentraleinheit (central processing unit, CPU) und einem Eingabe/Ausgabe-(E/A-)Gerät, umfassend: Zuweisung einer Oberfläche in einem physischen Speicher, Zuordnung der Oberfläche zu einer Vielzahl von virtuellen Speicheradressen in einer CPU-Seitentabelle und Zuordnung der Oberfläche zu einer Vielzahl von virtuellen Grafikspeicheradressen in einer E/A-Geräteseitentabelle.
  2. Verfahren nach Anspruch 1, wobei die Zuordnung der Oberfläche zu einer Vielzahl von virtuellen Grafikspeicheradressen in einer E/A-Geräteseitentabelle die Fixierung der Oberfläche umfasst.
  3. Verfahren nach Anspruch 1, umfassend die gemeinsame Nutzung von physischem Speicher zwischen der CPU und dem E/A-Gerät über die Oberfläche, ohne Daten von einem CPU-Speicher zu einem E/A-Gerätespeicher zu kopieren.
  4. Verfahren nach Anspruch 1, umfassen die Zuweisung die Oberfläche als Reaktion auf eine Eingabe von einer Anwendung, die auf der CPU des Computergeräts läuft.
  5. Verfahren nach Anspruch 1, wobei das Verfahren von einem Treiber des Computergeräts ausgeführt wird.
  6. Verfahren nach Anspruch 1, umfassend die Sicherstellung, dass Daten aus dem Zwischenspeicher der CPU und eines Zwischenspeichers des E/A-Geräts mit dem Last-Level-Cache (LLC) kohärent sind, der zwischen der CPU und dem E/A-Gerät gemeinsam genutzt wird.
  7. Verfahren nach Anspruch 1, umfassend: Auslagerung einer Operation von der CPU zum E/A-Gerät, Durchführung der Operation im E/A-Gerät und Senden eines Abschlusssignals zur CPU, wobei das Abschlusssignal einen Hinweis enthält, dass das E/A-Gerät Berechnungen durchgeführt hat, die zu einer Modifizierung der Daten in der Oberfläche geführt haben.
  8. Verfahren nach Anspruch 1, wobei ein Gerätetreiber die Verarbeitung von Daten zwischen der CPU und dem E/A-Gerät synchronisiert.
  9. Verfahren nach Anspruch 1, umfassend die Übersetzung beliebiger aus der Vielzahl virtueller Grafikspeicheradressen oder beliebiger der Vielzahl virtueller Speicheradressen oder beider, um entsprechenden physische Orte in der Oberfläche zu bestimmen.
  10. Computergerät, umfassend: Zentraleinheit (central processing unit, CPU), die konfiguriert ist, um gespeicherte Befehle auszuführen, Grafikprozessor (graphics processing unit, GPU) und GPU-Seitentabelle, Speichergerät, das Befehle speichert, wobei das Speichergerät einen vom Prozessor ausführbaren Code umfasst, der, wenn er durch den Prozessor ausgeführt wird, so konfiguriert ist, dass er: eine Oberfläche in einem physischen Speicher zuweist und die Oberfläche zu einer Vielzahl von virtuellen Speicheradressen in einer CPU-Seitentabelle zuordnet, und die Oberfläche zu einer Vielzahl von virtuellen Speicheradressen in der GPU-Seitentabelle zuordnet.
  11. Computergerät nach Anspruch 10, wobei der vom Prozessor ausführbare Code so konfiguriert ist, dass er die Oberfläche fixiert.
  12. Computergerät nach Anspruch 10, wobei der vom Prozessor ausführbare Code so konfiguriert ist, dass der physische Speicher zwischen der CPU und der GPU gemeinsam genutzt wird, ohne dass der vom Prozessor ausführbare Code so konfiguriert ist, dass Daten von einem CPU-Speicher zu einen GPU-Speicher kopiert werden.
  13. Computergerät nach Anspruch 10, wobei die CPU und GPU sich auf demselben Chip im Computergerät befinden.
  14. Computergerät nach Anspruch 10, wobei die CPU und die GPU einen Last-Level-Cache (LLC) gemeinsam nutzen und wobei der LLC Daten von einem beliebigen Speicher der CPU oder GPU abruft.
  15. Computergerät nach Anspruch 10, wobei die CPU und GPU eine vereinheitlichtes Speicherarchitektur (unified memory architecture, UMA) enthalten.
  16. Computergerät nach Anspruch 10, wobei der vom Prozessor ausführbare Code so konfiguriert ist, dass er: die Vielzahl von virtuellen Speicheradressen in der CPU-Seitentabelle physischen Adressen zuweist, die Vielzahl von virtuellen Speicheradressen in der GPU-Seitentabelle physischen Adressen zuweist, und die virtuellen Speicheradressen in der CPU-Seitentabelle und der GPU-Seitentabelle physischen Orten in der Oberfläche zuweist.
  17. Computergerät nach Anspruch 10, umfassend einen Treiber, der so konfiguriert ist, dass er die Ausführung des vom Prozessor ausführbaren Codes initiiert.
  18. Computergerät nach Anspruch 10, des Weiteren umfassend ein Funkgerät und ein Display, wobei das Funkgerät und das Display zumindest mit der Zentraleinheit kommunikativ gekoppelt sind.
  19. Mindestens ein maschinenlesbares Medium mit Befehlen, die darauf gespeichert sind und die, als Reaktion auf die Ausführung auf einem Computergerät, das Computergerät veranlassen: eine Oberfläche in einem physischen Speicher zuzuweisen, die Oberfläche zu einer Vielzahl von virtuellen Speicheradressen in einer CPU-Seitentabelle zuordnet, und die Oberfläche zu einer Vielzahl von virtuellen Speicheradressen in einer GPU-Seitentabelle auf Basis der Oberfläche zuzuordnen.
  20. Das mindestens eine maschinenlesbare Medium nach Anspruch 19, wobei der physische Speicher zwischen der CPU und der GPU gemeinsam genutzt wird, ohne Daten von einem CPU-Speicher zu einem GPU-Speicher zu kopieren.
DE112013004078.6T 2012-08-17 2013-06-13 Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur Active DE112013004078B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/588,453 US9373182B2 (en) 2012-08-17 2012-08-17 Memory sharing via a unified memory architecture
US13/588,453 2012-08-17
PCT/US2013/045657 WO2014028109A2 (en) 2012-08-17 2013-06-13 Memory sharing via a unified memory architecture

Publications (2)

Publication Number Publication Date
DE112013004078T5 true DE112013004078T5 (de) 2015-06-25
DE112013004078B4 DE112013004078B4 (de) 2023-11-09

Family

ID=50099759

Family Applications (3)

Application Number Title Priority Date Filing Date
DE112013004078.6T Active DE112013004078B4 (de) 2012-08-17 2013-06-13 Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur
DE112013007658.6T Active DE112013007658B4 (de) 2012-08-17 2013-06-13 Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur
DE112013007741.8T Active DE112013007741B4 (de) 2012-08-17 2013-06-13 Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur

Family Applications After (2)

Application Number Title Priority Date Filing Date
DE112013007658.6T Active DE112013007658B4 (de) 2012-08-17 2013-06-13 Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur
DE112013007741.8T Active DE112013007741B4 (de) 2012-08-17 2013-06-13 Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur

Country Status (6)

Country Link
US (5) US9373182B2 (de)
JP (4) JP6136033B2 (de)
KR (3) KR101741598B1 (de)
CN (5) CN106294214B (de)
DE (3) DE112013004078B4 (de)
WO (1) WO2014028109A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190346A (zh) * 2021-03-30 2021-07-30 联想(北京)有限公司 一种内存管理方法、装置及电子设备

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9373182B2 (en) 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US10445243B2 (en) 2013-03-14 2019-10-15 Nvidia Corporation Fault buffer for resolving page faults in unified virtual memory system
DE102013022169A1 (de) 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
US9323684B2 (en) * 2014-03-21 2016-04-26 Intel Corporation Dynamic cache and memory allocation for memory subsystems
CN105302765A (zh) * 2014-07-22 2016-02-03 电信科学技术研究院 一种系统级芯片及其内存访问管理方法
US9779471B2 (en) * 2014-10-01 2017-10-03 Qualcomm Incorporated Transparent pixel format converter
US10542233B2 (en) * 2014-10-22 2020-01-21 Genetec Inc. System to dispatch video decoding to dedicated hardware resources
DE102016106939B4 (de) 2015-04-17 2024-05-02 Suunto Oy Eingebettetes Rechengerät
WO2016205976A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Apparatus and method for efficient communication between virtual machines
KR102651425B1 (ko) 2016-06-30 2024-03-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP6756177B2 (ja) * 2016-07-20 2020-09-16 コニカミノルタ株式会社 画像形成装置
CN106909515B (zh) * 2017-02-11 2020-09-18 苏州浪潮智能科技有限公司 面向混合主存的多核共享末级缓存管理方法及装置
US10380039B2 (en) * 2017-04-07 2019-08-13 Intel Corporation Apparatus and method for memory management in a graphics processing environment
US10725929B2 (en) 2017-04-10 2020-07-28 Intel Corporation Graphics memory extended with nonvolatile memory
US10872394B2 (en) * 2017-04-27 2020-12-22 Daegu Gyeongbuk Institute Of Science And Technology Frequent pattern mining method and apparatus
CN107391431B (zh) * 2017-06-29 2020-05-05 北京金石智信科技有限公司 一种多个处理器共享访问存储器的方法、装置及系统
US10489881B2 (en) * 2017-06-30 2019-11-26 H3 Platform Inc. Direct memory access for co-processor memory
US11243790B2 (en) * 2017-09-20 2022-02-08 Huawei Technologies Co., Ltd. Re-playable execution optimized for page sharing in a managed runtime environment
US10474568B2 (en) * 2017-09-20 2019-11-12 Huawei Technologies Co., Ltd. Re-playable execution optimized for page sharing in a managed runtime environment
KR102533241B1 (ko) * 2018-01-25 2023-05-16 삼성전자주식회사 적응적으로 캐시 일관성을 제어하도록 구성된 이종 컴퓨팅 시스템
US11461869B2 (en) * 2018-03-14 2022-10-04 Samsung Electronics Co., Ltd. Slab based memory management for machine learning training
CN108459912B (zh) * 2018-04-10 2021-09-17 郑州云海信息技术有限公司 一种末级缓存管理方法及相关装置
CN110377534B (zh) * 2018-04-13 2023-11-17 华为技术有限公司 数据处理方法及装置
CN112262374A (zh) 2018-06-12 2021-01-22 华为技术有限公司 一种内存管理方法、装置及系统
US11157207B2 (en) 2018-07-31 2021-10-26 SK Hynix Inc. Apparatus and method for engaging plural memory system with each other to store data
CN110781098B (zh) 2018-07-31 2023-03-28 爱思开海力士有限公司 用于彼此接合多个存储器系统的设备和方法
US11249919B2 (en) 2018-07-31 2022-02-15 SK Hynix Inc. Apparatus and method for managing meta data for engagement of plural memory system to store data
CN109547531B (zh) * 2018-10-19 2021-04-09 华为技术有限公司 数据处理的方法、装置和计算设备
KR20200109973A (ko) 2019-03-15 2020-09-23 에스케이하이닉스 주식회사 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템
US10698842B1 (en) 2019-04-10 2020-06-30 Xilinx, Inc. Domain assist processor-peer for coherent acceleration
JP2020177073A (ja) 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
US10853263B1 (en) * 2019-07-23 2020-12-01 Ati Technologies Ulc Unified kernel virtual address space for heterogeneous computing
US11385941B2 (en) * 2019-07-31 2022-07-12 EMC IP Holding Company, LLC System and method for address space slicing with strong CPU core affinity
US11321068B2 (en) * 2019-09-05 2022-05-03 International Business Machines Corporation Utilizing memory coherency to improve bandwidth performance
US11507527B2 (en) 2019-09-27 2022-11-22 Advanced Micro Devices, Inc. Active bridge chiplet with integrated cache
CN112463714B (zh) * 2020-11-30 2022-12-16 成都海光集成电路设计有限公司 远程直接内存访问方法、异构计算系统及电子设备
CN114691385A (zh) * 2021-12-10 2022-07-01 全球能源互联网研究院有限公司 一种电力异构计算系统
CN115454358B (zh) * 2022-11-09 2023-03-24 摩尔线程智能科技(北京)有限责任公司 数据的存储控制方法及其装置、图像处理系统
CN116185910B (zh) * 2023-04-25 2023-07-11 北京壁仞科技开发有限公司 访问设备内存、管理设备内存的方法、设备和介质

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5421433A (en) 1977-07-18 1979-02-17 Murata Manufacturing Co Conductive silver coating
JPH01291343A (ja) * 1988-05-18 1989-11-22 Nippon Telegr & Teleph Corp <Ntt> メモリ管理装置
GB2283596B (en) * 1993-11-01 1998-07-01 Ericsson Ge Mobile Communicat Multiprocessor data memory sharing
JPH08328994A (ja) * 1995-05-30 1996-12-13 Toshiba Corp 情報処理装置
US6104417A (en) 1996-09-13 2000-08-15 Silicon Graphics, Inc. Unified memory computer architecture with dynamic graphics memory allocation
FR2806170B1 (fr) 2000-03-07 2003-06-20 Michel Paramythioti Relais optique correcteur d'aberrations pour systeme optique , notamment telescope a miroirs
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US7421694B2 (en) 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
JP4446373B2 (ja) * 2003-03-19 2010-04-07 パナソニック株式会社 プロセッサ、データ共有装置
US6981072B2 (en) * 2003-06-05 2005-12-27 International Business Machines Corporation Memory management in multiprocessor system
US7355601B2 (en) * 2003-06-30 2008-04-08 International Business Machines Corporation System and method for transfer of data between processors using a locked set, head and tail pointers
GB2417105B (en) * 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
US7441087B2 (en) * 2004-08-17 2008-10-21 Nvidia Corporation System, apparatus and method for issuing predictions from an inventory to access a memory
US7305524B2 (en) * 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
KR100633420B1 (ko) 2004-11-12 2006-10-16 (주)캠퍼스라인 책걸상의 높낮이 조절장치
US7490215B2 (en) 2004-12-22 2009-02-10 Intel Corporation Media memory system and method for providing concurrent memory access to a plurality of processors through separate translation table information
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7487271B2 (en) 2005-09-22 2009-02-03 Motorola, Inc. Method and apparatus using buffer pools and arrays of buffer pointers for sharing memory in a multiprocessor system
CN101356510B (zh) * 2005-11-15 2013-04-03 太阳微系统有限公司 当处理器处于低功率状态时可为后台dma装置提供数据的小型高功效高速缓冲存储器
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
JP4208895B2 (ja) * 2006-05-30 2009-01-14 株式会社東芝 キャッシュメモリ装置および処理方法
US7623134B1 (en) * 2006-06-15 2009-11-24 Nvidia Corporation System and method for hardware-based GPU paging to system memory
US7636800B2 (en) 2006-06-27 2009-12-22 International Business Machines Corporation Method and system for memory address translation and pinning
US8860741B1 (en) * 2006-12-08 2014-10-14 Nvidia Corporation Graphics processor with memory management unit and cache coherent link
US8274520B2 (en) * 2007-06-08 2012-09-25 Apple Inc. Facilitating caching in an image-processing system
US7996628B2 (en) * 2008-02-14 2011-08-09 International Business Machines Corporation Cross adapter shared address translation tables
US8209493B2 (en) * 2008-03-26 2012-06-26 Intel Corporation Systems and methods for scheduling memory requests during memory throttling
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
KR101680044B1 (ko) * 2008-08-19 2016-11-28 디지맥 코포레이션 콘텐트 처리를 위한 방법들 및 시스템들
GB2462860B (en) 2008-08-22 2012-05-16 Advanced Risc Mach Ltd Apparatus and method for communicating between a central processing unit and a graphics processing unit
US8397241B2 (en) * 2008-11-13 2013-03-12 Intel Corporation Language level support for shared virtual memory
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8219758B2 (en) * 2009-07-10 2012-07-10 Apple Inc. Block-based non-transparent cache
US8615637B2 (en) * 2009-09-10 2013-12-24 Advanced Micro Devices, Inc. Systems and methods for processing memory requests in a multi-processor system using a probe engine
US8412885B2 (en) 2009-11-12 2013-04-02 Intel Corporation Searching a shared cache by using search hints and masked ways
US8868848B2 (en) * 2009-12-21 2014-10-21 Intel Corporation Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform
US8719543B2 (en) 2009-12-29 2014-05-06 Advanced Micro Devices, Inc. Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US9128849B2 (en) * 2010-04-13 2015-09-08 Apple Inc. Coherent memory scheme for heterogeneous processors
US8650349B2 (en) * 2010-05-26 2014-02-11 International Business Machines Corporation Memory mapped input/output bus address range translation for virtual bridges
US8392628B2 (en) * 2010-07-16 2013-03-05 Hewlett-Packard Development Company, L.P. Sharing memory spaces for access by hardware and software in a virtual machine environment
JP2012037971A (ja) 2010-08-04 2012-02-23 Tdk Corp メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
US9189297B2 (en) * 2010-12-14 2015-11-17 Hewlett-Packard Development Company, L.P. Managing shared memory
US20120159090A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Scalable multimedia computer system architecture with qos guarantees
US8806503B2 (en) * 2011-01-24 2014-08-12 Nec Laboratories America, Inc. Method and system for memory aware runtime to support multitenancy in heterogeneous clusters
US9471532B2 (en) * 2011-02-11 2016-10-18 Microsoft Technology Licensing, Llc Remote core operations in a multi-core computer
US9430391B2 (en) * 2012-03-29 2016-08-30 Advanced Micro Devices, Inc. Managing coherent memory between an accelerated processing device and a central processing unit
US9009419B2 (en) * 2012-07-31 2015-04-14 Advanced Micro Devices, Inc. Shared memory space in a unified memory model
US8938602B2 (en) * 2012-08-02 2015-01-20 Qualcomm Incorporated Multiple sets of attribute fields within a single page table entry
US9373182B2 (en) 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190346A (zh) * 2021-03-30 2021-07-30 联想(北京)有限公司 一种内存管理方法、装置及电子设备

Also Published As

Publication number Publication date
CN106021132B (zh) 2020-02-21
DE112013007741B4 (de) 2023-11-09
CN110069421B (zh) 2023-03-14
JP6391077B2 (ja) 2018-09-19
US20160314077A1 (en) 2016-10-27
JP2017021837A (ja) 2017-01-26
WO2014028109A2 (en) 2014-02-20
JP2017208124A (ja) 2017-11-24
DE112013004078B4 (de) 2023-11-09
CN111522754B (zh) 2023-12-12
JP2016146201A (ja) 2016-08-12
US10198361B2 (en) 2019-02-05
JP6478119B2 (ja) 2019-03-06
US20160203580A1 (en) 2016-07-14
CN111522754A (zh) 2020-08-11
US20140049548A1 (en) 2014-02-20
CN104471540B (zh) 2018-07-10
DE112013007658B4 (de) 2023-11-09
US20190114267A1 (en) 2019-04-18
JP2015524979A (ja) 2015-08-27
JP6330169B2 (ja) 2018-05-30
KR101964917B1 (ko) 2019-04-02
KR101741598B1 (ko) 2017-05-30
CN110069421A (zh) 2019-07-30
KR20160042159A (ko) 2016-04-18
KR101721499B1 (ko) 2017-03-30
WO2014028109A3 (en) 2014-06-26
US20210286733A1 (en) 2021-09-16
KR20160105926A (ko) 2016-09-07
CN104471540A (zh) 2015-03-25
CN106294214A (zh) 2017-01-04
CN106021132A (zh) 2016-10-12
CN106294214B (zh) 2021-02-09
US11531623B2 (en) 2022-12-20
US9514559B2 (en) 2016-12-06
US9373182B2 (en) 2016-06-21
KR20150032556A (ko) 2015-03-26
JP6136033B2 (ja) 2017-05-31
US10929304B2 (en) 2021-02-23

Similar Documents

Publication Publication Date Title
DE112013007741B4 (de) Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur
DE112013007780B3 (de) Vorrichtung, nicht flüchtiges, maschinenlesbares medium und verfahren zur gemeinsamen nutzung von virtuellem speicher
DE112011105901B4 (de) Verfahren und Vorrichtung zur Energieeinsparung für First In First Out (FIF0)-Speicher
DE102014100031A1 (de) Ein-Chip-System mit Speicherverwaltungseinheit und Speicheradressen-Übersetzungsverfahren hiervon
DE102015001088A1 (de) Behandlung komprimierter Daten über verteilte Cache-Fabric

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R130 Divisional application to

Ref document number: 112013007658

Country of ref document: DE

Ref document number: 112013007741

Country of ref document: DE

R130 Divisional application to

Ref document number: 112013007741

Country of ref document: DE

Ref document number: 112013007658

Country of ref document: DE

R082 Change of representative

Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE

Representative=s name: MUELLER HOFFMANN & PARTNER PATENTANWAELTE MBB, DE

R016 Response to examination communication
R082 Change of representative

Representative=s name: BOEHMERT & BOEHMERT ANWALTSPARTNERSCHAFT MBB -, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division