DE112013004078T5 - Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur - Google Patents
Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/455—Image or video data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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
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 und2B 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 von6 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 in2 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äts100 , das gemäß Ausführungsformen verwendet werden kann. Das Computergerät100 kann zum Beispiel u. a. ein Laptop-Computer, Desktop-Computer, Tablet-Computer, ein mobiles Gerät oder ein Server sein. Das Computergerät100 kann eine Zentraleinheit (central processing unit, CPU)102 sein, die so angepasst ist, dass sie gespeicherte Befehle ausführt, sowie ein Speichergerät108 , das Befehle speichert, die von der CPU102 ausgeführt werden können. CPU102 kann ein Einkernprozessor, ein Mehrkernprozessor, ein Computercluster oder jede beliebige Anzahl anderer Konfigurationen sein. Des Weiteren kann das Computergerät100 mehr als eine CPU102 enthalten. Die Befehle, die von der CPU102 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ät100 . 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 CPU102 über Bus106 mit der GPU104 verbunden sein. Jedoch befindet sich in einigen Ausführungsformen die GPU104 auf demselben Chip wie die CPU102 in Computergerät100 . Auf diese Weise sind die CPU102 und die GPU solcherart verbunden, dass auf die Verbindung zwischen der CPU102 und der GPU104 über den Bus106 verzichtet werden kann. Des Weiteren können, in Ausführungsformen, die CPU102 und die GPU104 in einer vereinheitlichten Speicherarchitektur von Computergerät100 enthalten sein, wie in Bezug auf2 erörtert. - GPU
104 kann so konfiguriert werden, dass sie eine beliebige Zahl an Grafikoperationen in Computergerät100 durchführt. GPU104 kann zum Beispiel so konfiguriert werden, dass sie grafische Bilder, grafische Frames, Videos oder ähnliches rendert oder manipuliert, die von einem Benutzer des Computergeräts100 angezeigt werden. In einigen Ausführungsformen beinhaltet GPU104 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ät108 enthalten. Speichergerät108 kann Random Access Memory (RAM), Read Only Memory (ROM), Flash-Speicher oder jedes andere geeignete Speichersystem beinhalten. Speichergerät108 kann zum Beispiel Dynamic Random Access Memory (DRAM) beinhalten. Speicher108 kann einen Gerätetreiber110 enthalten, der so konfiguriert ist, dass er Befehle für die Implementierung des Verfahrens der gemeinsamen Speichernutzung ausführt. Gerätetreiber110 kann Software, ein Anwendungsprogramm, Anwendungscode oder ähnliches sein. In einigen Ausführungsformen ist Gerätetreiber110 ein Benutzermodustreiber. - Speicher
108 beinhaltet außerdem einen mehrstufigen Zwischenspeicher112 , der mindestens einen Last-Level-Cache (LLC)114 , einen Level-2-Cache116 und einen Level-1-Cache118 umfasst. Auch wenn zur Veranschaulichung ein mehrstufiger Zwischenspeicher112 verwendet wird, kann jeder beliebige Zwischenspeicher in Computergerät100 enthalten sein. - Der mehrstufige Zwischenspeicher
112 kann ein kleinerer, schnellerer Speicher sein, der eine kleinere Teilmenge häufig verwendeter Daten für die CPU102 speichert. Ein größerer Datensatz kann in einem Speicher120 gespeichert sein. Speicher120 ist physischer Speicher, z. B. eine Festplatte, ein optisches Laufwerk, ein Thumbdrive oder eine Reihe von Laufwerken oder jede beliebige Kombination davon. Speicher120 kann auch Remote-Speicherlaufwerke umfassen. Die Zeit, die der Zugriff von CPU102 auf Daten dauert, die in Speicher120 gespeichert sind, kann in Bezug auf die Zeit, die der Zugriff von CPU102 auf den mehrstufigen Zwischenspeicher112 in Speicher104 dauert, langsamer sein. - In einigen Ausführungsformen wird LLC
114 zwischen der CPU102 und der GPU104 gemeinsam genutzt, während der Level-2-Cache116 und der Level1-Cache118 vor der GPU104 verborgen sein können, sodass GPU104 nicht direkt auf Daten in Level-2-Cache116 und Level-1-Cache118 zugreifen kann. Jedoch kann LLC114 Daten, die in Level-2-Cache116 und Level-1-Cache118 gespeichert sind, lesen und schreiben. Somit kann, wenn GPU104 Daten anfordert, die in Level-2-Cache116 oder Level-1-Cache118 zwischengespeichert sind, LLC114 die Daten von Level-2-Cache116 und Level-1-Cache118 für die Verarbeitung von GPU104 abrufen. Auf diese Weise stellt LLC114 Datenkohärenz in Computergerät100 sicher. Wie hierin verwendet, bezieht sich Kohärenz auf den Zustand, in dem Daten, auf die durch CPU102 und GPU104 zugegriffen wird, gleich sind. Demgemäß stellt CPU102 sicher, dass Daten von Speichergerät120 in LLC114 , Level-2-Cache116 und Level-1-Cache118 widergespiegelt werden, indem sichergestellt wird, dass die Daten mit LLC114 kohärent sind, um die gemeinsame Nutzung der korrekten Daten mit GPU104 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ät104 , jeden Bereich von Speicher120 , einen Netzwerkspeicherort, ein Thumbdrive oder jede Kombination davon umfassen. - Speicher
120 beinhaltet eine Oberfläche122 sowie jede beliebige Zahl von Anwendungen124 , die für die Ausführung auf Computergerät100 konfiguriert sind. Die Oberfläche122 ist ein bestimmter Teil des physischen Speicher, der vom Gerätetreiber110 zugewiesen wird. Die Oberfläche kann auf Basis der Verarbeitung aktualisiert werden, die am Inhalt des physischen Speichers in der Oberfläche122 durchgeführt wird. In Ausführungsformen kann, wenn eine Anwendung124 von der CPU104 ausgeführt wird, die Anwendung124 fordern, dass eine Oberfläche vom Gerätetreiber110 zugewiesen wird. Des Weiteren können Anwendungen124 , die auf der CPU102 ausgeführt werden, die Oberfläche122 je nach Speicherzuweisung konfigurieren, die von den Anwendungen124 benötigt wird, indem die gewünschte Größe und die Eigenschaften der Oberfläche122 angegeben werden. Außerdem kann die Oberflächenzuweisung zum Beispiel als Reaktion auf eine Eingabe von der CPU102 von Computergerät100 durchgeführt werden. Des Weiteren ist in Ausführungsformen die Oberfläche als im LLC zwischenspeicherbar gekennzeichnet. Durch Bezeichnung der Oberfläche122 als im LLC zwischenspeicherbar können die Daten, die von Orten innerhalb der Oberfläche122 zwischengespeichert werden, in LLC114 zwischengespeichert werden und sind somit im LLC sowohl für die CPU102 als auch die GPU104 zugänglich. - Eine Speicherverwaltungseinheit (memory management unit, MMU)
126 kann verwendet werden, um auf Daten zuzugreifen, die in der Oberfläche122 gespeichert sind. Die MMU126 kann den virtuellen Adressraum der102 und der GPU104 in verschiedene Adressraumseiten aufteilen. Die CPU102 und die GPU104 haben jeweils ihre eigenen virtuellen Adressräume. Der virtuelle Adressraum ermöglicht den Schutz der Daten, die in der Oberfläche122 enthalten sind, indem die verschiedenen Anwendungen124 , die innerhalb eines Computersystems ausgeführt werden, in einer bestimmten Teilmenge der virtuellen Adressen isoliert werden. Durch Verwendung der virtuellen Adressräume greift eine Anwendung124 nicht auf die Daten einer anderen Anwendung124 zu. Demgemäß beinhaltet die MMU126 eine CPU-Seitentabelle128 und eine GPU-Seitentabelle130 . Die CPU-Seitentabelle enthält die virtuellen Adressen der CPU, die einem physischen Adressort innerhalb der Oberfläche122 zugeordnet sind. Ähnlich enthält die GPU-Seitentabelle enthält die virtuellen Adressen der GPU, die einem physischen Adressort innerhalb der Oberfläche122 zugeordnet sind. Im hierin beschriebenen Verfahren der gemeinsamen Speichernutzung kann die CPU-Seitentabelle128 eine Zuordnung des virtuellen CPU-Adressraum zu einem physischen Adressraum beinhalten. Der physische Adressraum entspricht physischen Orten innerhalb der Oberfläche122 . Ebenso kann die GPU-Seitentabelle130 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-Seitentabelle130 den physischen Speicherseiten der Oberfläche122 ü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äche122 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 CPU102 ausgeführt werden und eine Oberfläche, zum Beispiel Oberfläche122 , anfordern, um die Operationen durchzuführen, zum Beispiel die Verarbeitung von Daten. Die CPU102 kann die Operationen an die GPU104 übergeben. Da die Seitentabellen der Oberfläche122 zugeordnet wurden, kann die GPU durch Zugreifen auf die Oberfläche mit der sofortigen Ausführung der Operationen beginnen, die von der CPU102 ausgelagert wurden, ohne die Daten in einen anderen Adressraum zu kopieren. Wenn die Operationen abgeschlossen von der CPU102 abgeschlossen sind, kann die GPU104 der CPU122 signalisieren, dass die Operationen abgeschlossen sind. Die CPU102 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 GPU104 durchgeführt werden, können Modifizierungen an der Oberfläche122 erfolgen. Demgemäß sind für das hierin beschriebenen Verfahren der gemeinsamen Speichernutzung solche Modifizierungen an Oberfläche122 für die CPU102 voll sichtbar. Somit können Daten zwischen der GPU104 und der CPU102 gemeinsam genutzt werden, ohne Daten von der GPU104 zur CPU102 oder umgekehrt zu kopieren. - CPU
102 kann über Bus106 mit einer Eingangs-/Ausgangsschnittstelle (E/A)132 gekoppelt werden, die so angepasst ist, dass das Computergerät100 mit einem oder mehreren E/A-Geräten134 verbunden ist. E/A-Geräte134 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äte134 können integrierte Komponenten des Computergerät100 sein oder sie können Geräte sein, die extern mit Computersystem100 verbunden sind. - CPU
102 kann außerdem über Bus106 mit einer Displayschnittstelle136 gekoppelt werden, die so angepasst ist, dass das Computergerät100 mit einem Anzeigegerät138 verbunden ist. Anzeigegerät138 kann einen Anzeigebildschirm enthalten, der eine integrierte Komponente des Computergeräts100 ist. Anzeigegerät138 kann außerdem u. a. einen Computermonitor, ein Fernsehgerät oder einen Projektor enthalten, der extern mit Computergerät100 verbunden ist. - Ein Netzwerk-Schnittstellencontroller (network interface controller, NIC)
140 kann so angepasst sein, dass er Computergerät100 über Bus106 mit einem Netzwerk verbindet142 . Netzwerk142 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ät100 alle in1 darstellten Komponenten enthalten muss. Des Weiteren kann das Computergerät100 je nach Einzelheiten der konkreten Implementierung eine beliebige Anzahl von zusätzlichen nicht in1 dargestellten Komponenten enthalten. -
2A und2B sind schematische Darstellungen einer vereinheitlichten Speicherarchitektur200 , die verwendet werden kann, um ein Verfahren für die gemeinsame Nutzung von Speichern zwischen der CPU102 und der GPU104 von Computergerät100 gemäß Ausführungsformen zu implementieren. Gleiche Nummern sind mit Bezug auf1 beschrieben. Die UMA200 kann zum Beispiel die CPU-Seitentabelle128 , die GPU-Seitentabelle130 und die Oberfläche122 von Computergerät100 umfassen. - Die UMA
200 kann direkte gemeinsame Speichernutzung zwischen der CPU102 und der GPU104 ohne jegliche Art von Datenkopieren oder Datenübertragung zwischen der CPU102 und der GPU104 ermöglichen. Dies kann erreicht werden, indem der CPU102 und der GPU104 eine gemeinsame Nutzung der Oberfläche122 ermöglicht wird. Wie oben beschrieben, kann die122 ein Teil eines physischen Speichergeräts sein. Die Oberfläche beinhaltet eine beliebige Anzahl physischer Speicherorte202 . Die physischen Speicherorte202 können in einem ausgelagerten Speicherformat organisiert sein, bei dem eine Seite ein Block mit fester Länge des physischen Speichers in der Oberfläche122 ist. - Die CPU-Seitentabelle
128 kann eine Reihe von virtuellen CPU-Speicheradressen204 enthalten und die GPU-Seitentabelle130 kann eine Reihe virtueller Grafikspeicheradressen206 enthalten. Die virtuellen CPU-Speicheradressen204 bilden den virtuellen CPU-Adressraum, während die virtuellen Grafikspeicheradressen206 den virtuellen Grafikadressraum bilden. Jeder Adressraum ist einer physischen Adresse in jeder Seitentabelle zugeordnet. Somit sind die virtuellen CPU-Speicheradressen204 und die virtuellen Grafikspeicheradressen206 beide demselben Satz physischer Adressen208 in der CPU-Seitentabelle128 bzw. der GPU-Seitentabelle130 zugeordnet. - Die physischen Adressen
208 ermögliche es der CPU102 und der GPU104 (1 ), Daten zu verarbeiten, die an physischen Orten202 in der Oberfläche122 gespeichert sind. In verschiedenen Ausführungsformen ist die Oberfläche122 auf Basis spezifischer virtueller CPU-Adressen204 zugewiesen, auf die von einer Anwendung zugegriffen wird, zum Beispiel Anwendung124 (1 ). Sobald die Oberfläche122 zugewiesen wurde, wird jede physische Adresse208 der entsprechenden virtuellen CPU-Adresse204 in der CPU-Seitentabelle128 zugeordnet, wie in2 dargestellt. Die virtuellen Grafikspeicheradressen206 in der GPU-Seitentabelle130 können mit der CPU-Seitentabelle128 synchronisiert werden, sodass die virtuellen CPU-Adressen und die virtuellen GPU-Speicheradressen demselben Satz physischer Adressen208 zugeordnet sind. Die physischen Adressen208 entsprechen physischen Orten202 in der Oberfläche122 . Demgemäß kann die Oberfläche122 direkt zwischen der CPU102 und der GPU104 gemeinsam genutzt werden. In Ausführungsformen sind, wenn die GPU104 Daten modifiziert, die sich an einem beliebigen der physischen Orte202 befinden, die Modifizierungen automatisch für die CPU102 über die Oberfläche122 sichtbar, ohne dass Daten kopiert oder geordnet werden. - Die schematische Darstellung von
2 soll nicht angeben, dass die UMA200 alle in2 darstellten Komponenten enthalten muss. Des Weiteren kann die UMA200 je nach Einzelheiten der spezifischen Implementierung eine beliebige Anzahl von zusätzlichen, in2 nicht dargestellten Komponenten enthalten. -
3 ist ein Prozessablaufdiagramm, das ein Verfahren300 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 Verfahren300 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ät100 , bei dem CPU102 und GPU104 durch einen Bus106 verbunden sind. In anderen Ausführungsformen können die CPU102 und die GPU104 in einer UMA enthalten sein, zum Beispiel UMA200 , die oben in Bezug auf2 erörtert ist. Des Weiteren kann Verfahren300 von einem Treiber des Computergeräts ausgeführt werden, zum Beispiel Gerätetreiber126 von Computergerät100 . - 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 Verfahren400 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 Anwendung124 (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 und4 soll nicht angeben, dass die Blöcke des Verfahrens300 und400 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 Verfahren300 und400 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 Medium500 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 Medium500 kann ein Prozessor502 über einen Computerbus504 zugreifen. Des Weiteren kann das konkrete, nicht flüchtige, computerlesbare Medium500 Code enthalten, der so konfiguriert ist, dass er Prozessor502 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 in5 angegeben. Zum Beispiel kann ein Oberflächenzuweisungsmodul506 konfiguriert sein, um eine Oberfläche einschließlich einer Reihe physischer Speicherseiten in einem Speicher des Computergeräts zuzuweisen oder zu erzeugen. Ein Zuordnungsmodul508 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 Fixierungsmodul510 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 Medium500 alle in5 darstellten Komponenten enthalten muss. Des Weiteren kann das konkrete, nicht flüchtige, computerlesbare Medium500 je nach Einzelheiten der konkreten Implementierung eine beliebige Anzahl von zusätzlichen nicht in5 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 System600 für die Implementierung eines gemeinsamen physischen Speichers. Gleiche Nummern sind mit Bezug auf1 ,2A und2B beschrieben. In einigen Ausführungsformen ist System600 ein Mediensystem. Außerdem kann System600 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 Plattform602 , die mit einem Display604 gekoppelt ist. Plattform602 kann Inhalte von einer Inhaltsbereitstellungsvorrichtung, zum Beispiel Bereitstellungsvorrichtung(en) für Dienste606 oder Bereitstellungsvorrichtung(en)608 oder ähnlichen Inhaltsquellen empfangen. Ein Navigationscontroller610 einschließlich ein oder mehrere Navigationsfunktionen können verwendet werden, um, zum Beispiel, mit der Plattform602 und/oder dem Display604 zu interagieren. Jede dieser Komponenten wird im Folgenden ausführlicher beschrieben. - Die Plattform
602 kann jede Kombination aus einem Chipsatz612 , einer Zentraleinheit (central processing unit, CPU)102 , einem Arbeitsspeichergerät108 , einem Datenspeichergerät120 , Einem Grafik-Subsystem614 , Anwendungen124 und einem Funkgerät616 beinhalten. Chipsatz612 kann Interkommunikation zwischen der CPU102 , dem Arbeitsspeichergerät108 , dem Datenspeichergerät120 , dem Grafik-Subsystem614 , den Anwendungen124 und dem Funkgerät614 bereitstellen. Beispielsweise kann Chipsatz612 einen Speicheradapter (nicht dargestellt) beinhalten, der imstande ist, Interkommunikation mit Speichergerät120 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 CPU102 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ät120 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ät120 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-Subsystem614 kann zum Beispiel einen Grafikprozessor (graphics processing unit, GPU), zum Beispiel GPU104 oder eine visuelle Verarbeitungseinheit (visual processing unit, VPU) sein. Eine analoge oder digitale Schnittstelle kann verwendet werden, um Grafik-Subsystem614 und Display604 kommunikativ zu koppeln. Beispielsweise kann die Schnittstelle irgendeine High-Definition Multimediaschnittstelle, ein DisplayPort, eine drahtlose HDMI und/oder drahtlose HD-konforme Technik sein. Grafik-Subsystem614 könnte in CPU102 oder Chipsatz612 integriert sein. Alternativ kann Grafik-Subsystem614 eine eigenständige Karte sein, die kommunikativ mit Chipsatz612 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ät616 gemäß einem oder mehreren anwendbaren Standards in irgendeiner Version betrieben werden. - Display
604 kann jeden fernseherähnlichen Monitor oder Bildschirm umfassen. Zum Beispiel kann Display604 einen Computeranzeigebildschirm, einen Touchscreen-Bildschirm, einen Videomonitor, ein Fernsehgerät oder ähnliches umfassen. Display604 kann digital und/oder analog sein. In einigen Ausführungsformen ist Display604 ein holografisches Display. Außerdem kann Display604 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 Anwendungen124 , kann Plattform602 eine Benutzeroberfläche618 auf dem Display604 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 Plattform602 zum Beispiel über das Internet zugänglich sein. Die Bereitstellungsvorrichtung(en) für Dienste606 können mit Plattform602 und/oder Display604 gekoppelt sein. Plattform602 und/oder die Bereitstellungsvorrichtung(en) für Dienste606 können mit einem Netzwerk142 gekoppelt sein, um Medieninformationen zu und vom Netzwerk142 zu kommunizieren (z. B. zu senden und/oder zu empfangen). Die Bereitstellungsvorrichtung(en)608 können außerdem mit Plattform602 und/oder Display604 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 Dienste606 jedes andere ähnliche Gerät umfassen, das Inhalte zwischen Inhaltsanbietern und Plattform602 oder Display604 , über Netzwerk142 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 System600 und einem Inhaltsanbieter über Netzwerk142 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 Navigationscontroller610 , der ein oder mehrere Navigationsfunktionen umfasst. Die Navigationsfunktionen von Navigationscontroller610 können zum Beispiel verwendet werden, um mit Benutzeroberfläche618 zu interagieren. Navigationscontroller610 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 Display604 durch Bewegungen eines Zeigers, eines Cursors, eines Fokusrings oder anderer visueller Anzeiger ein Echo finden, die auf dem Display604 angezeigt werden. Zum Beispiel können unter der Kontrolle der Anwendungen124 die Navigationsfunktionen in Navigationscontroller610 zu virtuellen Navigationsfunktionen zugeordnet werden, die auf der Benutzeroberfläche618 angezeigt werden. In einigen Ausführungsformen kann Navigationscontroller610 keine getrennte Komponenten sein, sondern stattdessen in Plattform602 und/oder Display604 integriert sein. - System
600 kann Treiber (nicht dargestellt) beinhalten, die Technologie enthalten, die es Benutzern zum Beispiel ermöglicht, Plattform602 durch Berühren einer Schaltfläche nach dem anfänglichen Systemstart, wenn aktiviert, sofort ein- oder auszuschalten. Programmlogik kann es Plattform602 ermöglichen, Inhalte zu Medienadaptern oder anderen Bereitstellungsvorrichtung(en) für Dienste606 oder Bereitstellungsvorrichtung(en)608 zu streamen, wenn die Plattform ausgeschaltet ist. Zusätzlich kann Chipsatz612 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. Plattform602 und die Bereitstellungsvorrichtung(en) für Dienste606 können integriert sein, Plattform602 und die Bereitstellungsvorrichtung(en)608 können integriert sein oder Plattform602 , die Bereitstellungsvorrichtung(en) für Dienste606 und die Bereitstellungsvorrichtung(en)608 können integriert sein. In einigen Ausführungsformen sind Plattform602 und Display604 eine integrierte Einheit. Zum Beispiel können Display604 und Bereitstellungsvorrichtung(en) für Dienste606 können integriert sein oder Display604 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 System600 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 System600 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 in6 beschriebenen Elemente beschränkt. -
7 ist eine schematische Darstellung eines Geräts mit kleinem Formfaktor700 , in dem das System600 von6 verkörpert sein kann. Gleiche Nummern sind mit Bezug auf6 beschrieben. In einigen Ausführungsformen kann zum Beispiel Gerät700 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ät700 ein Gehäuse702 , ein Display704 , ein Eingangs-/Ausgangs-(I/O-input/output)-Gerät706 und eine Antenne708 umfassen. Gerät700 kann außerdem Navigationsfunktionen710 beinhalten. Display704 kann jede geeignete Anzeigeeinheit beinhalten, um für ein mobiles Computergerät geeignete Information anzuzeigen. E/A-Gerät706 kann jedes geeignete E/A-Gerät zum Eingeben von Information in ein mobiles Computergerät umfassen. E/A-Gerät706 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ät700 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)
- 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.
- 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.
- 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.
- 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.
- Verfahren nach Anspruch 1, wobei das Verfahren von einem Treiber des Computergeräts ausgeführt wird.
- 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.
- 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.
- Verfahren nach Anspruch 1, wobei ein Gerätetreiber die Verarbeitung von Daten zwischen der CPU und dem E/A-Gerät synchronisiert.
- 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.
- 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.
- Computergerät nach Anspruch 10, wobei der vom Prozessor ausführbare Code so konfiguriert ist, dass er die Oberfläche fixiert.
- 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.
- Computergerät nach Anspruch 10, wobei die CPU und GPU sich auf demselben Chip im Computergerät befinden.
- 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.
- Computergerät nach Anspruch 10, wobei die CPU und GPU eine vereinheitlichtes Speicherarchitektur (unified memory architecture, UMA) enthalten.
- 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.
- Computergerät nach Anspruch 10, umfassend einen Treiber, der so konfiguriert ist, dass er die Ausführung des vom Prozessor ausführbaren Codes initiiert.
- 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.
- 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.
- 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.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190346A (zh) * | 2021-03-30 | 2021-07-30 | 联想(北京)有限公司 | 一种内存管理方法、装置及电子设备 |
Families Citing this family (39)
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)
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 |
-
2012
- 2012-08-17 US US13/588,453 patent/US9373182B2/en active Active
-
2013
- 2013-06-13 DE DE112013004078.6T patent/DE112013004078B4/de active Active
- 2013-06-13 CN CN201610605380.0A patent/CN106294214B/zh active Active
- 2013-06-13 KR KR1020157001126A patent/KR101741598B1/ko active IP Right Grant
- 2013-06-13 DE DE112013007658.6T patent/DE112013007658B4/de active Active
- 2013-06-13 DE DE112013007741.8T patent/DE112013007741B4/de active Active
- 2013-06-13 CN CN201610338721.2A patent/CN106021132B/zh active Active
- 2013-06-13 CN CN202010065102.7A patent/CN111522754B/zh active Active
- 2013-06-13 KR KR1020167023688A patent/KR101964917B1/ko active IP Right Grant
- 2013-06-13 WO PCT/US2013/045657 patent/WO2014028109A2/en active Application Filing
- 2013-06-13 KR KR1020167008492A patent/KR101721499B1/ko active IP Right Grant
- 2013-06-13 CN CN201910298113.7A patent/CN110069421B/zh active Active
- 2013-06-13 CN CN201380038015.0A patent/CN104471540B/zh active Active
- 2013-06-13 JP JP2015527456A patent/JP6136033B2/ja active Active
-
2016
- 2016-03-24 US US15/080,145 patent/US9514559B2/en active Active
- 2016-03-30 JP JP2016068954A patent/JP6478119B2/ja active Active
- 2016-06-30 US US15/199,508 patent/US10198361B2/en active Active
- 2016-09-23 JP JP2016186273A patent/JP6330169B2/ja active Active
-
2017
- 2017-07-26 JP JP2017144418A patent/JP6391077B2/ja active Active
-
2018
- 2018-12-13 US US16/219,093 patent/US10929304B2/en active Active
-
2021
- 2021-02-19 US US17/179,828 patent/US11531623B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190346A (zh) * | 2021-03-30 | 2021-07-30 | 联想(北京)有限公司 | 一种内存管理方法、装置及电子设备 |
Also Published As
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 |