DE102015002366A1 - Systemkohärenz in einer verteilten Graphikprozessorhierarchie - Google Patents

Systemkohärenz in einer verteilten Graphikprozessorhierarchie Download PDF

Info

Publication number
DE102015002366A1
DE102015002366A1 DE102015002366.7A DE102015002366A DE102015002366A1 DE 102015002366 A1 DE102015002366 A1 DE 102015002366A1 DE 102015002366 A DE102015002366 A DE 102015002366A DE 102015002366 A1 DE102015002366 A1 DE 102015002366A1
Authority
DE
Germany
Prior art keywords
cache
caches
memory
shared
graphics processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102015002366.7A
Other languages
English (en)
Inventor
Altug Koker
Aditya Navale
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 DE102015002366A1 publication Critical patent/DE102015002366A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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

Landscapes

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

Abstract

Verfahren und Systeme können das Ausführen mehrerer Arbeitseinheiten durch einen physikalisch verteilten Satz von Rechen-Slices bereitstellen. Außerdem kann durch eine Cache-Fabric die Kohärenz einer oder mehrerer den mehreren Arbeitseinheiten zugeordneter Speicherzeilen über einen Graphikprozessor, einen Systemspeicher und einen oder mehrere Host-Prozessoren aufrechterhalten werden. In einem Beispiel verfolgen mehrere Kreuzschienenknoten die eine oder die mehreren Speicherzeilen, wobei die Kohärenz der einen oder der mehreren Speicherzeilen über mehrere Caches der ersten Ebene (L1-Caches) und über eine physikalisch verteilte Cache-Struktur aufrechterhalten wird. Jeder L1-Cache kann für einen Ausführungsblock eines Rechen-Slice vorgesehen sein und jeder Kreuzschienenknoten kann für ein Rechen-Slice vorgesehen sein.

Description

  • HINTERGRUND
  • Bestimmte Anwendungen wie etwa Spiele und Media Player können eingebettete Entwürfe, Graphikverarbeitungseinheiten (GPUs) usw. verwenden, um rechenintensive Arbeitsbelastungen zu behandeln. In einem solchen Fall kann eine Zentraleinheit (CPU) eine Arbeitsbelastung z. B. in Form einer oder mehrerer Anweisungen an eine GPU absenden, wobei die GPU eine Arbeitsgruppe, die mehrere Arbeitseinheiten enthält, in Ansprechen auf den einen oder die mehreren Befehle intern ausführen kann. Um in der GPU die sequentielle Konsistenz zwischen Arbeitseinheiten und Arbeitsgruppen aufrechtzuerhalten, können Lösungen wie etwa Sperrbefehle (”Barriers”), Memory Fences und ungeordnete Atomoperationen (”Atomics”) verwendet werden. Allerdings können solche Lösungen grobkörnig sein und nicht in der Lage sein, spezifische Speicherzugriffsordnungen zu steuern. Darüber hinaus können herkömmliche Lösungen nicht in der Lage sein, die Speicherkonsistenz (z. B. die Speicherkohärenz) zwischen der GPU und der CPU sicherzustellen, es sei denn, dass Hardware-Leerungen und Softwarestapelaufrufe verwendet werden, wobei Leerungen und Stapelaufrufe einen negativen Einfluss auf die Leistung haben können.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die verschiedenen Vorteile der Ausführungsformen gehen für den Fachmann auf dem Gebiet durch Lesen der folgenden Beschreibung und der beigefügten Ansprüche und durch Bezugnahme auf die folgenden Zeichnungen hervor, in denen:
  • 1A ein Blockschaltplan eines Beispiels einer Computerarchitektur in Übereinstimmung mit einer Ausführungsform ist;
  • 1B ein Blockschaltplan eines Beispiels eines Rechen-Slice in Übereinstimmung mit einer Ausführungsform ist;
  • 2 ein Ablaufplan eines Beispiels eines Verfahrens zum Betreiben eines Graphikprozessors in Übereinstimmung mit einer Ausführungsform ist;
  • 3A bis 3E Darstellungen von Beispielen kohärenter Protokolltabellen in Übereinstimmung mit einer Ausführungsform sind;
  • 4 ein Blockschaltplan eines Beispiels eines Systems mit einer Navigationssteuereinheit in Übereinstimmung mit einer Ausführungsform ist; und
  • 5 ein Blockschaltplan eines Beispiels eines Systems mit einem kleinen Formfaktor in Übereinstimmung mit einer Ausführungsform ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1A und 1B zeigen eine Computerarchitektur 10, die allgemein Teil einer Computerplattform wie etwa z. B. eines Smartphones, eines Tablet-Computers, einer mobilen Internetvorrichtung (MID), eines Smart-Fernsehgeräts (TV), eines Media Players, eines Notebookcomputers, eines Desktopcomputers, eines Servers, einer intelligenten Kleidungsvorrichtung usw. sein kann. Wie am besten in 1A gezeigt ist, kann ein System-Cache 12 (z. B. ein statischer Schreib-Lese-Speicher/SRAM, Snoop-Filter) mit mehreren Host-Prozessoren 14 (14a14c) mit dedizierten Caches 16 (16a16c, z. B. SRAM) gekoppelt sein. Außerdem kann der System-Cache 12 mit einem Systemspeicher 18 (z. B. mit einem dynamischen Schreib-Lese-Speicher/DRAM, ”Hauptspeicher”) gekoppelt sein, der zum Speichern von Daten, Befehlen usw. für verschiedene Komponenten der Architektur 10 verwendet wird. Jeder Host-Prozessor 14 kann eine Zentraleinheit (CPU) sein, die Anwendungen, Skripte usw., die sich auf die Darstellung von visuellem Inhalt beziehen, ausführen kann und zugeordnete Arbeitsbelastungen über eine Graphikschnittstelle 22 an einen Graphikprozessor 20 ausgeben kann. Der System-Cache 12 kann allgemein die Anwesenheit von Speicherzeilen (z. B. Cache-Zeilen oder anderen Datenstrukturen), die diesen Arbeitsbelastungen zugeordnet sind, verfolgen und Snoop-Filterungsdienste bereitstellen, wobei die Graphikschnittstelle 22 von dem System-Cache 12 empfangene Snoop-Anforderungen auswerten kann und sie zur weiteren Auswertung an die geeigneten Cache-Ziele in dem Graphikprozessor 20 senden kann.
  • Der Graphikprozessor 20 kann allgemein rechenintensive Arbeitsbelastungen wie etwa z. B. Pixelfarbwertberechnungen, Histogrammberechnungen usw. behandeln, um die Darstellung von visuellem Inhalt (z. B. dreidimensionaler Graphik/3D-Graphik, Nicht-3D-Bildern usw.) zu unterstützen und/oder zu ermöglichen. Genauer enthält der dargestellte Graphikprozessor 20 einen physikalisch verteilten Satz von Rechen-Slices 24 (24a24d), um mehrere Arbeitsbelastungen auszuführen, und eine Cache-Fabric, um die Kohärenz einer oder mehrerer Speicherzeilen (z. B. einer vom System definierten Größe), die den mehreren Arbeitseinheiten über den Graphikprozessor 20, den Systemspeicher 18 und den Host-Prozessor 14 zugeordnet sind, aufrechtzuerhalten. Wie im Folgenden ausführlicher diskutiert wird, kann die Cache-Fabric eine feinkörnige Herangehensweise zum Aufrechterhalten der sequentiellen Konsistenz zwischen Arbeitseinheiten und Arbeitsgruppen, zum Steuern spezifischer Speicherzugriffsordnungen und zum Sicherstellen der Speicherkonsistenz (z. B. Speicherkohärenz) bereitstellen.
  • Wie am besten in 1B zu sehen ist, kann die Cache-Fabric mehrere Caches 26 der ersten Ebene (L1-Caches) (”L1$”) enthalten, wobei jeder L1-Cache 26 für einen Ausführungsblock 28 eines Rechen-Slice 24 vorgesehen ist. Somit können die mehreren L1-Caches 26 für die Ausführungsblöcke 28 eine Speicherung mit verhältnismäßig hoher Bandbreite und niedriger Latenzzeit bereitstellen, während Speicherzeilen durch die Cache-Fabric verfolgt werden. Jeder Ausführungsblock 28 kann eine Anordnung von Ausführungseinheiten (EUs) 34 zum Ausführen der Arbeitseinheiten und eine Adressenerzeugungseinheit (AGU) 36 zum Ausführen der am Adressieren von Datenoperanten im Speicher beteiligten effektiven Adressenberechnungen (z. B. unter Verwendung einer ganzzahligen Arithmetik) enthalten.
  • Außerdem kann die Cache-Fabric eine physikalisch verteilte gemeinsam genutzte Cache-Struktur 30 enthalten, wobei die Kohärenz der einen oder der mehreren Speicherzeilen über die mehreren L1-Caches 26 und die gemeinsam genutzte Cache-Struktur 30 aufrechterhalten werden soll. Das Konfigurieren der gemeinsam genutzten Cache-Struktur 30 als eine physikalisch verteilte Entität kann ermöglichen, dass die Größe der gemeinsam genutzten Cache-Struktur 30 maximiert wird, während die Bandbreitenanforderungen jedes der Ausführungsblöcke 28 erfüllt werden. In dem dargestellten Beispiel ist die gemeinsam genutzte Cache-Struktur 30 als ein Cache der zweiten Ebene (”L2$”) mit mehreren Bänken konfiguriert. In diesem Fall kann die gemeinsam genutzte Cache-Struktur 30 die Speicherzeilen über die mehreren Bänke Hash-codieren, um eine gleichmäßige Verteilung der Daten auf die gemeinsam genutzte Cache-Struktur 30 sicherzustellen. Die dargestellte Herangehensweise kann einen größeren und besser skalierbaren Cache mit minimalem Snoop-Nachteil (z. B. verhältnismäßig kleiner Leistungsauswirkung auf die Behandlung von Snoop-Anforderungen) mit einer potentiellen Erhöhung des Rechen-Slice-Querverkehrs bereitstellen. Alternativ kann die gemeinsam genutzte Cache-Struktur 30 als mehrere unabhängige Caches 31 der zweiten Ebene (L2-Caches) konfiguriert sein, wobei jeder L2-Cache 31 für ein Rechen-Slice vorgesehen ist. Eine solche Herangehensweise kann eine lokale Speicherung für die Ausführungsblöcke 28 bereitstellen, während sie Rechenquerverkehr minimiert. Beide Implementierungswahlen können unter Verwendung derselben Snoop-Verfolgungslogik Kohärenz erzielen.
  • Außerdem kann die Cache-Fabric mehrere Kreuzschienenknoten 32 (z. B. Cache-Brücken) enthalten, um die eine oder die mehreren Speicherzeilen zu verfolgen, wobei jeder Kreuzschienenknoten 32 für ein Rechen-Slice 24 vorgesehen ist. Die Kreuzschienenknoten 32 können Snoop-Anforderungen, die von dem System-Cache 12 ausgehen, auf die gemeinsam genutzte Cache-Struktur 30 und auf die L1-Caches 26 verteilen. Außerdem können die Kreuzschienenknoten 32 eines oder mehrere Snoop-Ergebnisse von der gemeinsam genutzten Cache-Struktur 30 und von den mehreren L1-Caches 26 sammeln und die gesammelten Snoop-Ergebnisse über die Graphikschnittstelle 22 an den System-Cache 12 übermitteln. Wie ausführlicher diskutiert wird, kann die Cache-Fabric ein Modified/Exclusive/Shared/Invalid-Protokoll (MESI-Protokoll) verwenden, um die Kohärenz der einen oder der mehreren Speicherzeilen aufrechtzuerhalten.
  • Somit verwendet die dargestellte Architektur 10 die Cache-Fabric des Graphikprozessors 20, die dedizierten Caches 16 der Host-Prozessoren 14, den System-Cache 12 und den Systemspeicher 18, um eine Speicher/Cache-Hierarchie zu erzielen, die in der Lage ist, die sequentielle Konsistenz zwischen Graphikarbeitseinheiten und Arbeitsgruppen aufrechtzuerhalten, spezifische Speicherzugriffsordnungen zu steuern und die Kohärenz über die gesamte Architektur 10 sicherzustellen. Eine solche feinkörnige Herangehensweise kann gegenüber herkömmlichen Herangehensweisen, die sich auf Barriers, Memory Fences, ungeordnete Atomics, Hardware-Leerungen und Softwarestapelaufrufe stützen, besonders vorteilhaft sein.
  • Zum Beispiel kann das Verfolgen eines Ladevorgangs (z. B. einer Leseoperation) und eines Speichervorgangs (z. B. einer Schreiboperation) auf der Ebene der Ausführungsblöcke 28 beginnen, wobei Lesevorgänge des Systemspeichers 18 gültige Daten zurückgeben können und die höheren Ebenen in der Speicherhierarchie die Anwesenheit der betroffenen einen oder mehreren Speicherzeilen für die nächsthöhere Ebene in der Hierarchie verfolgen können. Es kann zulässig sein, das niedrige Ebenen in der Hierarchie ihre Speicherzeilen zum Ersatz stillschweigend fallenlassen, es sei denn, dass eine Opferzeile (z. B. eine Speicherzeile, die wegen Ersatz aus dem Cache geräumt worden ist) geändert wird. Die Schreibvorgangsverfolgung kann einschränkender sein, wobei der Absender jedes Schreibvorgangs auf der Grundlage der Größe des Schreibvorgangs relativ zu einer Speicherzeile den Besitz der Zieladresse erlangen kann, bevor der Absender seinen L1-Cache 26 aktualisiert. Zur Einfachheit kann eine Richtlinie implementiert werden, in der nur zulässig ist, dass eine Kopie einer geänderten Speicherzeile in der gesamten Cache-Fabric vorhanden ist. Eine solche Richtlinie kann eine Verfolgung der neuesten Kopie der Speicherzeile bereitstellen, während sie den Austausch der Daten verhältnismäßig genau macht.
  • Nunmehr übergehend zu 2 ist ein Verfahren 38 zum Betreiben eines Graphikprozessors gezeigt. Das Verfahren 38 kann in ausführbarer Software als ein Satz von Logikbefehlen, die in einem maschinen- oder computerlesbaren Ablagemedium eines Speichers wie etwa eines Schreib-Lese-Speichers (RAM), eines Nur-Lese-Speichers (ROM), eines programmierbaren ROM (PROM), einer Firmware, eines Flash-Speichers usw., in konfigurierbarer Logik wie etwa z. B. in programmierbaren logischen Anordnungen (PLAs), in frei programmierbaren logischen Anordnungen (FPGAs), in komplexen programmierbaren Logikvorrichtungen (CPLDs), in Logikhardware mit fester Funktionalität unter Verwendung einer Schaltungstechnologie wie etwa z. B. einer anwendungsspezifischen integrierten Schaltung (ASIC), einer Komplementär-Metalloxid-Halbleitertechnologie (CMOS-Technologie) oder einer Transistor-Transistor-Logik-Technologie (TTL-Technologie) oder irgendeiner Kombination davon gespeichert sind, implementiert werden.
  • Der dargestellte Verarbeitungsblock 40 stellt die Ausführung mehrerer Arbeitseinheiten durch einen physikalisch verteilten Satz von Rechen-Slices bereit. Der Block 42 kann durch eine Cache-Fabric die Kohärenz einer oder mehrerer Speicherzeilen, die den mehreren Arbeitseinheiten zugeordnet sind, über den Graphikprozessor, über einen Systemspeicher und über einen oder mehrere Host-Prozessoren aufrechterhalten. Der Block 42 kann das Verfolgen der einen oder der mehreren Speicherzeilen durch mehrere Kreuzschienenknoten umfassen, wobei die Kohärenz der einen oder der mehreren Speicherzeilen über die mehreren L1-Caches und über eine physikalisch verteilte Cache-Struktur aufrechterhalten wird, wobei jeder L1-Cache für einen Ausführungsblock eines Rechen-Slice vorgesehen ist und wobei jeder Kreuzschienenknoten für ein Rechen-Slice vorgesehen ist. Darüber hinaus kann die gemeinsam genutzte Cache-Struktur entweder mehrere unabhängige L2-Caches verwenden, um die eine oder die mehreren Speicherzeilen zu verfolgen, oder wenigstens eine der einen oder der mehreren Speicherzeilen über mehrere Bänke eines L2-Caches Hash-codieren. Im Fall unabhängiger L2-Caches kann jeder L2-Cache für ein Rechen-Slice vorgesehen sein.
  • Der Block 42 kann außerdem das Verteilen einer oder mehrerer Snoop-Anforderungen, die von einem mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache ausgehen, an die gemeinsam genutzte Cache-Struktur und an die mehreren L1-Caches durch mehrere Kreuzschienenknoten umfassen. Außerdem kann der Block 42 das Sammeln eines oder mehrerer Snoop-Ergebnisse von der gemeinsam genutzten Cache-Struktur und von den mehreren L1-Caches durch die mehreren Kreuzschienenknoten und das Übermitteln des einen oder der mehreren Snoop-Ergebnisse an den mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache durch die mehreren Kreuzschienenknoten bereitstellen. Außerdem kann der Block 42 das Verwenden eines MESI-Protokolls zum Aufrechterhalten der Kohärenz der einen oder der mehreren Speicherzeilen durch die Cache-Fabric enthalten.
  • 3A bis 3E zeigen allgemein eine Herangehensweise an das Implementieren eines Kohärenzprotokolls, in dem jede Speicherzeile mit einem der MESI-Zustände (der Zustande geändert, exklusiv, gemeinsam genutzt, ungültig) gekennzeichnet ist. Insbesondere kann der Geändert-Zustand verwendet werden, wenn die Speicherzeile nur in dem aktuellen Cache vorhanden ist und ”dirty” ist (z. B., wenn sich die Speicherzeile gegenüber dem Wert im Systemspeicher geändert hat). Falls ein bestimmter Cache eine Speicherzeile besitzt, die in dem Geändert-Zustand ist, kann es erforderlich sein, dass der Cache die dieser Speicherzeile entsprechenden Daten in den Systemspeicher zurückschreibt, bevor ein Lesevorgang dieser Speicherzeile aus dem Systemspeicher zugelassen wird. Ein solcher ”Zurückschreibvorgang” kann dazu führen, dass die Speicherzeile in dem Cache in den Exklusiv-Zustand geändert wird.
  • Der Exklusiv-Zustand kann verwendet werden, wenn die Speicherzeile nur in dem aktuellen Cache vorhanden ist und ”clean” ist (z. B., wenn die Speicherzeile mit dem Wert in dem Systemspeicher übereinstimmt). In einem solchen Fall kann die Speicherzeile in Ansprechen auf eine Leseanforderung in den Cache auf den Gemeinsam-genutzt-Zustand geändert werden. Die Speicherzeile kann ebenfalls in Ansprechen auf eine Schreibanforderung in den Cache auf den Geändert-Zustand geändert werden. Der Gemeinsam-genutzt-Zustand kann angeben, dass die Speicherzeile clean ist und in anderen Caches des Systems gespeichert werden kann. Außerdem kann eine Gemeinsam-genutzt-Speicherzeile jederzeit verworfen (z. B. auf den Ungültig-Zustand geändert werden). Der Ungültig-Zustand kann verwendet werden, um anzugeben, dass eine Speicherzeile ungenutzt ist (z. B. aus dem Cache geräumt wurde). Wie bereits angemerkt wurde, kann die Cache-Fabric das MESI-Protokoll verwenden, um die Speicherkonsistenz über den Graphikprozessor, über den Systemspeicher und über die dedizierten Caches der Host-Prozessoren aufrechtzuerhalten. Die in 3A bis 3E gezeigten Beispiele sind den Perspektiven eines bestimmten L1-Caches (”ausgebender L1$”) entnommen.
  • Zum Beispiel zeigt 3A eine Kohärenzprotokolltabelle 44 für Leseoperationen, die auf einen bestimmten L1-Cache gerichtet sind. In dem dargestellten Beispiel gibt die Spalte 45, ”ursprüngliche Anforderung”, den Typ der Operation an, die in Bezug auf eine bestimmte Speicherzeile ausgeführt wird, gibt die Spalte 47, ”L2$”, den Zustand der Speicherzeile in dem L2-Cache an, wenn die Operation angefordert wird, gibt die Spalte 49, ”anderer L1$”, den Zustand der Speicherzeile in den anderen L1-Caches an, wenn die Operation angefordert wird, gibt die Spalte 51, ”ausgebender L1$”, den Zustand der Speicherzeile in dem fraglichen L1-Cache an, wenn die Operation angefordert wird, gibt die Spalte 53, ”L1$ gültig (SSV)”, die Anzahl der Caches mit gültigen Unterscheiben (SSV-Caches) (z. B. die Anzahl der L1-Caches mit gültigen Daten für die Speicherzeile) an, wenn die Operation angefordert wird, gibt die Spalte 55, ”L2$-Zustand”, den Zustand der Speicherzeile in dem L2-Cache an, nachdem die Operation ausgeführt worden ist, gibt die Spalte 57, ”anderer SS$”, den Zustand der Speicherzeile in den anderen L1-Caches an, nachdem die Operation ausgeführt worden ist, gibt die Spalte 59, ”ausgebender SS$”, den Zustand der Speicherzeile in dem fraglichen L1-Cache an, nachdem die Operation ausgeführt worden ist, gibt die Spalte 61, ”L1$ gültig (SSV)”, die Anzahl der SSV-Caches an, nachdem die Operation ausgeführt worden ist, gibt die Spalte 63, ”SSV-Aktion”, die Maßnahme an, die in Bezug auf ein Gültig-Bit, das der Speicherzeile zugeordnet ist, ergriffen wird, und gibt die Spalte 65, ”Xsnp”, an, ob nach der angeforderten Operation eine Quer-Snoop-Operation ausgeführt werden soll.
  • Wie z. B. in der ersten Zeile 54 der Tabelle 44 gezeigt ist, könnte somit eine Leseoperation auf einen bestimmten L1-Cache gerichtet sein, wenn die entsprechende Speicherzeile in dem L2-Cache, wie in Spalte 47 gezeigt ist, in dem Geändert-Zustand ist, in den anderen L1-Caches, wie in der Spalte 49 gezeigt ist, in dem Gemeinsam-genutzt-Zustand ist und in dem ausgebenden L1-Cache, wie in Spalte 51 gezeigt ist, in dem Ungültig-Zustand ist. Wie in der Spalte 53 gezeigt ist, kann die Anzahl der SSV-Caches in dem dargestellten Beispiel eins sein. Wenn das der Fall ist, ist die Speicherzeile nach der Leseoperation in dem L2-Cache, wie in Spalte 55 gezeigt ist, in dem Geändert-Zustand, in den anderen L1-Caches, wie in Spalte 57 gezeigt ist, in dem Gemeinsam-genutzt-Zustand und in dem ausgebenden L1-Cache, wie in Spalte 59 gezeigt ist, in dem Gemeinsam-genutzt-Zustand (geändert), wobei die Anzahl der SSV-Caches, wie in Spalte 61 gezeigt ist, in dem dargestellten Beispiel größer als eins ist. Wie in Spalte 63 gezeigt ist, kann darüber hinaus das Gültig-Bit an die Speicherzeile in dem ausgebenden L1-Cache angehängt werden, und wie in Spalte 65 gezeigt ist, können keine Quer-Snoop-Operation notwendig sein (können z. B. stillschweigende Räumungen zulässig sein).
  • Im Gegensatz dazu zeigt die vierte Zeile 56 der Tabelle 44, dass eine Leseoperation auf einen bestimmten L1-Cache gerichtet ist, wenn die entsprechende Speicherzeile in dem L2-Cache, wie in Spalte 47 gezeigt ist, in dem Geändert-Zustand ist, in den anderen L1-Caches, wie in Spalte 49 gezeigt ist, in dem Ungültig-Zustand ist, und in dem ausgebenden L1-Cache, wie in Spalte 51 gezeigt ist, in dem Ungültig-Zustand ist. Wie in Spalte 53 gezeigt ist, kann die Anzahl der SSV-Caches in dem dargestellten Beispiel eins sein. Wenn das der Fall ist, ist die Speicherzeile nach der Leseoperation in dem L2-Cache, wie in Spalte 55 gezeigt ist, in dem Geändert-Zustand, in den anderen L1-Caches, wie in Spalte 57 gezeigt ist, in dem Ungültig-Zustand und in dem ausgehenden L1-Cache, wie in Spalte 59 gezeigt ist, (wegen einer Zustandsänderung) in dem Gemeinsam-genutzt-Zustand, wobei die Anzahl der SSV-Caches, wie in Spalte 61 gezeigt ist, in dem dargestellten Beispiel größer als eins ist. Wie in Spalte 63 gezeigt ist, kann das Gültig-Bit für die Speicherzeile in dem ausgebenden L1-Cache ersetzt werden, und wie in Spalte 65 gezeigt ist, können keine Quer-Snoop-Operationen notwendig sein. Wie im Rest der Tabelle 44 veranschaulicht ist, können für Leseoperationsszenarien, in denen die entsprechende Speicherzeile in dem L2-Cache in dem Exklusiv-, in dem Gemeinsam-genutzt- und/oder in dem Ungültig-Zustand ist, ähnliche Übergänge und/oder Regeln implementiert werden.
  • 3B zeigt eine Kohärenzprotokolltabelle 46 für Schreiboperationen in einen ausgebenden L1-Cache. In dem dargestellten Beispiel zeigt die neunte Zeile 58 der Tabelle 46, dass eine Schreiboperation auf einen bestimmten L1-Cache gerichtet sein könnte, wenn die entsprechende Speicherzeile in dem L2-Cache, wie in Spalte 47 gezeigt ist, in dem Exklusiv-Zustand ist, in den anderen L1-Caches, wie in Spalte 49 gezeigt ist, in dem Gemeinsam-genutzt-Zustand ist und in dem ausgebenden L1-Cache, wie in Spalte 51 gezeigt ist, in dem Gemeinsam-genutzt-Zustand ist. Wie in Spalte 53 gezeigt ist, ist die Anzahl der SSV-Caches in dem dargestellten Beispiel größer als eins. Außerdem ist die Speicherzeile nach der Schreiboperation in dem L2-Cache, wie in Spalte 55 gezeigt ist, (wegen einer Zustandsänderung) in dem Geändert-Zustand, in den anderen L1-Caches, wie in Spalte 57 gezeigt ist, (wegen einer Zustandsänderung) in dem Ungültig-Zustand und in dem ausgebenden L1-Cache, wie in Spalte 59 gezeigt ist, (wegen einer Zustandsänderung) in dem Ungültig-Zustand, wobei die Anzahl der SSV-Caches, wie in Spalte 61 gezeigt ist, in dem dargestellten Beispiel null ist. Wie in Spalte 63 gezeigt ist, kann das Gültig-Bit in dem ausgebenden L1-Cache gelöscht werden, und wie in Spalte 65 gezeigt ist, kann eine Snoop-Annullierungsoperation (”Snp Inv”) durchgeführt werden. Wie im Rest von Tabelle 46 gezeigt ist, können für Schreiboperationsszenarien, in denen die entsprechende Speicherzeile in dem L2-Cache in dem Geändert-, in dem Gemeinsam-genutzt- und/oder in dem Ungültig-Zustand ist, ähnliche Übergänge und/oder Regeln implementiert werden.
  • 3C zeigt eine Kohärenzprotokolltabelle 48 für Räumungs- und Leseoperationen in Bezug auf den L2-Cache. In dem dargestellten Beispiel zeigt die siebente Zeile 60 der Tabelle 48, dass eine Räumoperation von einem ausgebenden L1-Cache zu dem L2-Cache gerichtet wird, wenn die entsprechende Speicherzeile in dem L2-Cache, wie in Spalte 47 gezeigt ist, in dem Gemeinsam-genutzt-Zustand ist, in den anderen L1-Caches, wie in Spalte 49 gezeigt ist, in dem Ungültig-Zustand ist, und in dem ausgebenden L1-Cache, wie in Spalte 51 gezeigt ist, in dem Ungültig-Zustand ist. Wie in Spalte 53 gezeigt ist, ist die Anzahl der SSV-Caches in dem dargestellten Beispiel null. Nach der Räumoperation ist die Speicherzeile in dem L2-Cache, wie in Spalte 55 gezeigt ist, in dem Ungültig-Zustand (geändert), in den anderen L1-Caches, wie in Spalte 57 gezeigt ist, in dem Ungültig-Zustand und in dem ausgebenden L1-Cache, wie in Spalte 59 gezeigt ist, in dem Ungültig-Zustand, wobei die Anzahl der SSV-Caches, wie in Spalte 61 gezeigt ist, in dem dargestellten Beispiel null ist. Darüber hinaus brauchen hinsichtlich des Gültig-Bits, wie in Spalte 63 gezeigt ist, oder hinsichtlich Quer-Snoop-Operationen, wie in Spalte 65 gezeigt ist, keine Maßnahmen ergriffen zu werden. Wie im Rest von Tabelle 46 gezeigt ist, können für Räumoperationsszenarien, in denen die entsprechende Speicherzeile in dem L2-Cache in dem Exklusiv- und/oder in dem Geändert-Zustand ist, ähnliche Transaktionen und/oder Regeln implementiert werden.
  • Außerdem zeigt die letzte Zeile 62 aus Tabelle 48, dass eine Leseoperation von einem ausgebenden L1-Cache zu dem L2-Cache (z. B. in Ansprechen auf einen L1-Cache-Fehltreffer) gerichtet werden kann, wenn die entsprechende Speicherzeile in dem L2-Cache, wie in Spalte 47 gezeigt ist, in dem Ungültig-Zustand ist, in den anderen L1-Caches, wie in Spalte 49 gezeigt ist, in dem Ungültig-Zustand ist und in dem ausgebenden L1-Cache, wie in Spalte 51 gezeigt ist, in dem Ungültig-Zustand ist. Wie in Spalte 53 gezeigt ist, kann die Anzahl der SSV-Caches in dem dargestellten Beispiel null sein. Somit ist die Speicherzeile nach der Leseoperation in dem L2-Cache, wie in Spalte 55 gezeigt ist, (wegen einer Zustandsänderung) in dem Gemeinsam-genutzt-Zustand, in den anderen L1-Caches, wie in Spalte 57 gezeigt ist, in dem Ungültig-Zustand und in dem ausgebenden L1-Cache, wie in Spalte 59 gezeigt ist, in dem Ungültig-Zustand, wobei die Anzahl der SSV-Caches, wie in Spalte 61 gezeigt ist, in dem dargestellten Beispiel null bleibt. Darüber hinaus brauchen hinsichtlich des Gültig-Bits, wie in Spalte 63 gezeigt ist, oder hinsichtlich Quer-Snoop-Operationen, wie in Spalte 65 gezeigt ist, keine Maßnahmen ergriffen zu werden.
  • 3D zeigt eine Kohärenzprotokolltabelle 50 für Snoop-Annullierungsoperationen, die von einem mit einem Host-Prozessor wie etwa z. B. mit einem bereits diskutierten Host-Prozessor 14 (1A) gekoppelten Cache ausgehen. In dem dargestellten Beispiel zeigt die zweite Zeile 64 der Tabelle 50, dass eine Snoop-Annullierungsoperation auf eine Graphik-Cache-Fabric gerichtet sein könnte, wenn die entsprechende Speicherzeile in dem L2-Cache, wie in Spalte 47 gezeigt ist, in dem Geändert-Zustand ist, in den anderen L1-Caches, wie in Spalte 49 gezeigt ist, in dem Ungültig-Zustand ist und in dem ausgebenden L1-Cache, wie in Spalte 51 gezeigt ist, in dem Ungültig-Zustand ist. Wie in Spalte 53 gezeigt ist, ist die Anzahl der SSV-Caches in dem dargestellten Beispiel null. Außerdem ist die Speicherzeile nach der Snoop-Annullierungsoperation in dem L2-Cache, wie in Spalte 55 gezeigt ist, in dem Ungültig-Zustand, in den anderen L1-Caches, wie in Spalte 57 gezeigt ist, in dem Ungültig-Zustand und in dem ausgebenden L1-Cache, wie in Spalte 59 gezeigt ist, in dem Ungültig-Zustand, wobei die Anzahl der SSV-Caches, wie in Spalte 61 gezeigt ist, in dem dargestellten Beispiel null bleibt. Darüber hinaus brauchen hinsichtlich des Gültig-Bits, wie in Spalte 63 gezeigt ist, oder hinsichtlich Quer-Snoop-Operationen, wie in Spalte 65 gezeigt ist, keine Maßnahmen ergriffen zu werden.
  • Im Gegensatz dazu zeigt die dritte Zeile 66 der Tabelle 50, dass eine Snoop-Annullierungsoperation auf die Cache-Fabric gerichtet sein kann, wenn die entsprechende Speicherzeile in dem L2-Cache, wie in Spalte 47 gezeigt ist, in dem Geändert-Zustand ist, in den anderen L1-Caches, wie in Spalte 49 gezeigt ist, in dem Ungültig-Zustand ist und in dem ausgebenden L1-Cache, wie in Spalte 51 gezeigt ist, in dem Gemeinsam-genutzt-Zustand ist. Wie in Spalte 53 gezeigt ist, kann die Anzahl der SSV-Caches in dem dargestellten Beispiel eins sein. Außerdem ist die Speicherzeile nach der Snoop-Annullierungsoperation in dem L2-Cache, wie in Spalte 55 gezeigt ist, in dem Ungültig-Zustand, in den anderen L1-Caches, wie in Spalte 57 gezeigt ist, in dem Ungültig-Zustand und in dem ausgebenden L1-Cache, wie in Spalte 59 gezeigt ist, (wegen einer Zustandsänderung) in dem Ungültig-Zustand, wobei sich die Anzahl der SSV-Caches in Spalte 61 in dem gezeigten Beispiel auf null ändert. Wie in Spalte 63 gezeigt ist, kann das Gültig-Bit in dem ausgebenden L1-Cache gelöscht werden, und wie in Spalte 65 gezeigt ist, kann eine Snoop-Annullierungsoperation durchgeführt werden. Wie im Rest von Tabelle 50 dargelegt ist, können für Snoop-Annullierungsoperationsszenarien, in denen die entsprechende Speicherzeile in dem L2-Cache, in dem Exklusiv-, in dem Gemeinsam-genutzt- und/oder in dem Ungültig-Zustand ist, ähnliche Übergänge und/oder Regeln implementiert werden.
  • 3E zeigt eine Kohärenzprotokolltabelle 52 für Snoop-Datenoperationen, die von einem Host-Prozessor wie etwa z. B. von einem mit einem bereits diskutierten Host-Prozessor 14 (1A) gekoppelten Cache ausgehen. In dem gezeigten Beispiel legt die zehnte Zeile 68 der Tabelle 52 dar, dass eine Snoop-Datenoperation auf die Graphik-Cache-Fabric gerichtet sein kann, wenn die entsprechende Speicherzeile in dem L2-Cache, wie in Spalte 47 gezeigt ist, in dem Exklusiv-Zustand ist, in den anderen L1-Caches, wie in Spalte 49 gezeigt ist, in dem Gemeinsam-genutzt-Zustand ist und in dem ausgebenden L1-Cache, wie in Spalte 51 gezeigt ist, in dem Ungültig-Zustand ist. Wie in Spalte 53 gezeigt ist, kann die Anzahl der SSV-Caches in dem gezeigten Beispiel eins sein. Außerdem ist die Speicherzeile nach der Snoop-Datenoperation in dem L2-Cache, wie in Spalte 55 gezeigt ist, (wegen einer Zustandsänderung) in dem Gemeinsam-genutzt-Zustand, in den anderen L1-Caches, wie in Spalte 57 gezeigt ist, in dem Ungültig-Zustand und in dem ausgebenden L1-Cache, wie in Spalte 59 gezeigt ist, in dem Ungültig-Zustand, wobei die Anzahl der SSV-Caches, wie in Spalte 61 gezeigt ist, in dem dargestellten Beispiel eins bleibt. Darüber hinaus brauchen hinsichtlich des Gültig-Bits, wie in Spalte 63 gezeigt ist, oder hinsichtlich Quer-Snoop-Operationen, wie in Spalte 65 gezeigt ist, keine Maßnahmen ergriffen zu werden. Wie im Rest von Tabelle 52 dargelegt ist, können für Snoop-Datenoperationsszenarien, in denen die entsprechende Speicherzeile in dem L2-Cache in dem Geändert-, in dem Gemeinsam-genutzt- und/oder in dem Ungültig-Zustand ist, ähnliche Übergänge und/oder Regeln implementiert werden.
  • 4 stellt eine Ausführungsform eines Systems 700 dar. In Ausführungsformen kann das System 700 ein Mediensystem sein, obwohl das System in diesem Kontext 700 nicht beschränkt ist. Zum Beispiel kann das System 700 in einen Personal Computer (PC), in einen Laptopcomputer, in einen Ultralaptopcomputer, in ein Tablet, in ein Touchpad, in einen tragbaren Computer, in einen Handcomputer, in einen Palmtop Computer, in einen Personal Digital Assistant (PDA), in ein Mobiltelephon, in eine Mobiltelephon/PDA-Kombination, in ein Fernsehgerät, in eine Smart-Vorrichtung (z. B. in ein Smartphone, ein Smart Tablet oder ein Smart-Fernsehgerät), in eine mobile Internetvorrichtung (MID), in eine Messaging-Vorrichtung, in eine Datenkommunikationsvorrichtung usw. integriert sein. Somit kann das System 700 verwendet werden, um wie hier beschrieben die Cache-Kohärenz für Videobitströme aufrechtzuerhalten.
  • In Ausführungsformen umfasst das System 700 eine Plattform 702, die mit einer Anzeige 720 gekoppelt ist, die visuellen Inhalt darstellt. Die Plattform 702 kann einen Videobitstrominhalt von einer Inhaltsvorrichtung wie etwa von einer oder von mehreren Inhaltsdienstvorrichtungen 730 oder Inhaltsliefervorrichtungen 740 oder von anderen, ähnlichen Inhaltsquellen empfangen. Eine Navigationssteuereinheit 750, die eines oder mehrere Navigationsmerkmale umfasst, kann verwendet werden, um z. B. mit der Plattform 702 und/oder mit der Anzeige 720 zusammenzuwirken. Jede dieser Komponenten wird im Folgenden ausführlicher beschrieben.
  • In Ausführungsformen kann die Plattform 702 irgendeine Kombination eines Chipsatzes 705, eines Prozessors 710, eines Speichers 712, einer Ablage 714, eines Graphikteilsystems 715, von Anwendungen 716 und/oder einer Funkeinrichtung 718 umfassen. Der Chipsatz 705 kann eine gegenseitige Verbindung zwischen dem Prozessor 710, dem Speicher 712, der Ablage 714, dem Graphikteilsystem 715, Anwendungen 716 und/oder der Funkeinrichtung 718 bereitstellen. Der Chipsatz 705 kann z. B. einen Ablageadapter (nicht gezeigt) enthalten, der eine gegenseitige Verbindung mit der Ablage 714 bereitstellen kann.
  • Der Prozessor 710 kann als Complex-Construction-Set-Computer-(CISC-) oder als Reduced-Construction-Set-Computer-(RISC-)Prozessoren, als mit einem x86-Befehlssatz kompatible Prozessoren, als Mehrkern- oder irgendein anderer Mikroprozessor oder irgendeine andere Zentraleinheit (CPU) implementiert werden. In Ausführungsformen kann der Prozessor 710 einen oder mehrere Zweikernprozessoren, mobile Zweikernprozessoren usw. umfassen.
  • Der Speicher 712 kann als eine flüchtige Speichervorrichtung wie etwa ein Schreib-Lese-Speicher (RAM), ein dynamischer Schreib-Lese-Speicher (DRAM) oder ein statischer RAM (SRAM), darauf aber nicht beschränkt, implementiert werden.
  • Die Ablage 714 kann als eine nichtflüchtige Ablagevorrichtung wie etwa ein Magnetplattenlaufwerk, ein optisches Plattenlaufwerk, ein Bandlaufwerk, eine interne Ablagevorrichtung, eine angeschlossene Ablagevorrichtung, ein Flash-Speicher, ein batteriegesicherter SDRAM (synchroner DRAM) und/oder als eine Ablagevorrichtung, auf die im Netz zugegriffen werden kann, darauf aber nicht beschränkt, implementiert werden. In Ausführungsformen kann die Ablage 714 eine Technologie zum Erhöhen des verbesserten Schutzes der Ablageleistungsfähigkeit für wertvolle digitale Daten umfassen, wenn z. B. mehrere Festplatten enthalten sind.
  • Das Graphikteilsystem 715 kann die Verarbeitung von Bildern wie etwa Standbild oder Video für die Anzeige ausführen. Das Graphikteilsystem 715 kann z. B. eine Graphikverarbeitungseinheit (GPU) oder eine visuelle Verarbeitungseinheit (VPU) sein. Somit kann das Graphikteilsysten 715 den bereits diskutierten Graphikprozessor 20 (1A) enthalten. Außerdem kann der Prozessor 710 so konfiguriert sein, dass er über aus dem Speicher 712, von der Ablage 714 oder von einer anderen geeigneten Quelle erhaltene Befehle als einer oder mehrere der bereits diskutierten Host-Prozessoren 14 (1A) arbeitet. Um das Graphikteilsystem 715 und die Anzeige 720 kommunikationstechnisch zu koppeln, kann eine analoge oder eine digitale Schnittstelle verwendet sein. Die Schnittstelle kann z. B. eine mit der High Definition Multimedia Interface oder mit dem DisplayPort oder mit der drahtlosen HDMI oder mit der drahtlosen HD kompatible Technik sein. Das Graphikteilsystem 715 könnte in den Prozessor 710 oder in den Chipsatz 705 integriert sein. Das Graphikteilsystem 715 könnte eine selbständige Karte sein, die kommunikationstechnisch mit dem Chipsatz 705 gekoppelt ist.
  • Die hier beschriebenen Graphik- und/oder Videoverarbeitungstechniken können in verschiedenen Hardwarearchitekturen implementiert werden. Zum Beispiel kann die Graphik- und/oder Videofunktionalität innerhalb eines Chipsatzes integriert sein. Alternativ kann ein diskreter Graphik- und/oder Videoprozessor verwendet werden. Als eine nochmals andere Ausführungsform können die Graphik- und/oder Videofunktionen durch einen Universalprozessor einschließlich eines Mehrkernprozessors implementiert werden. In einer weiteren Ausführungsform können die Funktionen in einer Unterhaltungselektronikvorrichtung implementiert werden.
  • Die Funkeinrichtung 718 kann eine oder mehrere Funkeinrichtungen enthalten, die unter Verwendung verschiedener geeigneter drahtloser Kommunikationstechniken Signale senden und empfangen können. Diese Techniken können Kommunikationen über eines oder mehrere drahtlose Netze umfassen. Beispielhafte drahtlose Netze enthalten drahtlose lokale Netze (WLANs), drahtlose persönliche Netze (WPANs), drahtlose regionale Netze (WMANs), Zellennetze und Satellitennetze (sind darauf aber nicht beschränkt). Bei der Kommunikation über solche Netze kann die Funkeinrichtung 718 in Übereinstimmung mit einem oder mehreren anwendbaren Standards in irgendeiner Version arbeiten.
  • In Ausführungsformen kann die Anzeige 720 irgendeinen Monitor oder irgendeine Anzeige vom Fernsehgerättyp umfassen. Die Anzeige 720 kann z. B. einen Computeranzeigebildschirm, eine Berührungsbildschirmanzeige, einen Videomonitor, eine Fernsehgerät-artige Vorrichtung und/oder ein Fernsehgerät umfassen. Die Anzeige 720 kann digital und/oder analog sein. In Ausführungsformen kann die Anzeige 720 eine holographische Anzeige sein. Außerdem kann die Anzeige 720 eine durchsichtige Oberfläche sein, die eine visuelle Projektion empfangen kann. Solche Projektionen können verschiedene Formen von Informationen, Bildern und/oder Objekten übermitteln. Zum Beispiel können solche Projektionen eine visuelle Überlagerung für eine mobile Erweiterte-Realität-Anwendung (MAR-Anwendung) sein. Die Plattform 702 kann gemäß der Steuerung einer oder mehrerer Softwareanwendungen 716 eine Nutzerschnittstelle 722 auf der Anzeige 720 anzeigen.
  • In Ausführungsformen können eine oder mehrere Inhaltsdienstvorrichtungen 730 von irgendeinem nationalen, internationalen und/oder unabhängigen Dienst gehostet werden, so dass die Plattform 702 z. B. über das Internet darauf zugreifen kann. Mit der Plattform 702 und/oder mit der Anzeige 720 können eine oder mehrere Inhaltsdienstvorrichtungen 730 gekoppelt sein. Die Plattform 702 und/oder die eine oder die mehreren Inhaltsdienstvorrichtungen 730 können mit einem Netz 760 gekoppelt sein, um Medieninformationen zu und von dem Netz 760 zu übermitteln (z. B. zu senden und/oder zu empfangen). Außerdem können mit der Plattform 702 und/oder mit der Anzeige 720 eine oder mehrere Inhaltsliefervorrichtungen 740 gekoppelt sein.
  • In Ausführungsformen können die eine oder die mehreren Inhaltsdienstvorrichtungen 730 ein Kabelfernseh-Zusatzgerät, einen Personal Computer, ein Netz, ein Telefon, internetfähige Vorrichtungen oder ein Internet-fähiges Gerät, die digitale Informationen und/oder digitalen Inhalt liefern können, und irgendeine andere ähnliche Vorrichtung, die über das Netz 760 oder direkt unidirektional oder bidirektional Inhalt zwischen Dienstanbietern und der Plattform 702 und/oder der Anzeige 720 übermitteln kann, umfassen. Es wird gewürdigt werden, dass der Inhalt über das Netz 760 unidirektional und/oder bidirektional zu und von irgendeiner der Komponenten in dem System 700 und einem Inhaltsanbieter übermittelt werden kann. Beispiele für Inhalt können irgendwelche Medieninformationen einschließlich z. B. Video, Musik, medizinischen Informationen und Spielinformationen usw. enthalten.
  • Die eine oder die mehreren Inhaltsdienstvorrichtungen 730 empfangen Inhalt wie etwa Kabelfernsehprogramme einschließlich Medieninformationen, digitalen Informationen und/oder anderem Inhalt. Beispiele für Inhaltsanbieter können irgendwelche Kabel- oder Satellitenfernsehanbieter oder Kabel- oder Satellitenfunkanbieter oder Kabel- oder Satelliten-Internet-Inhaltsanbieter enthalten. Die gegebenen Beispiele sollen die Ausführungsformen der Erfindung nicht einschränken.
  • In Ausführungsformen kann die Plattform 702 von der Navigationssteuereinheit 750 mit einem oder mit mehreren Navigationsmerkmalen Steuersignale empfangen. Die Navigationsmerkmale der Steuereinheit 750 können z. B. verwendet werden, um mit der Nutzerschnittstelle 722 zusammenzuwirken. In Ausführungsformen kann die Navigationssteuereinheit 750 eine Zeigevorrichtung sein, die eine Computerhardwarekomponente (genauer eine Mensch-Maschine-Schnittstellenvorrichtung) sein kann, die ermöglicht, dass ein Nutzer räumliche (z. B. kontinuierliche und mehrdimensionale) Daten in einen Computer eingibt. Viele Systeme wie etwa graphische Nutzerschnittstellen (GUI) und Fernsehgeräte und Monitore ermöglichen, dass der Nutzer den Computer oder das Fernsehgerät unter Verwendung physischer Gesten steuert und Daten dafür bereitstellt.
  • Bewegungen der Navigationsmerkmale der Steuereinheit 750 können auf einer Anzeige (z. B. auf der Anzeige 720) durch Bewegungen eines Zeigers, eines Cursors, eines Fokusrings oder eines anderen visuellen Indikators, der auf der Anzeige angezeigt wird, widerspiegelt werden. Zum Beispiel können die in der Navigationssteuereinheit 750 gelegenen Navigationsmerkmale gemäß der Steuerung von Softwareanwendungen 716 auf virtuelle Navigationsmerkmale, die z. B. auf der Nutzerschnittstelle 722 angezeigt werden, abgebildet werden. In Ausführungsformen kann die Steuereinheit 750 keine getrennte Komponente, sondern in die Plattform 702 und/oder in die Anzeige 720 integriert sein. Allerdings sind Ausführungsformen nicht auf die Elemente oder in Bezug auf den hier gezeigten oder beschriebenen Kontext beschränkt.
  • In Ausführungsformen können Treiber (nicht gezeigt) eine Technologie umfassen, um z. B. zu ermöglichen, dass Nutzer die Plattform 702 wie ein Fernsehgerät mit der Berührung eines Knopfs nach der Systeminitialisierung, wenn freigegeben, sofort ein- und ausschalten. Eine Programmlogik kann ermöglichen, dass die Plattform 702 Inhalt zu Medienadaptern oder zu einer oder mehreren anderen Inhaltsdienstvorrichtungen 730 oder Inhaltsliefervorrichtungen 740 streamt, wenn die Plattform ”ausgeschaltet” ist. Außerdem kann der Chipsatz 705 z. B. eine Hardware- und/oder Softwareunterstützung für 5.1-Raumklang-Audiosignale und/oder für hochaufgelöste 7.1-Raumklang-Audiosignale umfassen. Die Treiber können einen Graphiktreiber für integrierte Graphikplattformen enthalten. In Ausführungsformen kann der Graphiktreiber eine Peripheral-Component-Interconnect-Express-Graphikkarte (PCI-Express-Graphikkarte) umfassen.
  • In verschiedenen Ausführungsformen können eine oder mehrere der in dem System 700 gezeigten Komponenten integriert sein. Zum Beispiel können die Plattform 702 und die eine oder die mehreren Inhaltsdienstvorrichtungen 730 integriert sein oder können die Plattform 702 und die eine oder die mehreren Inhaltsliefervorrichtungen 740 integriert sein oder können z. B. die Plattform 702, die eine oder die mehreren Inhaltsdienstvorrichtungen 730 und die eine oder die mehreren Inhaltsliefervorrichtungen 740 integriert sein. In verschiedenen Ausführungsformen können die Plattform 702 und die Anzeige 720 eine integrierte Einheit sein. Zum Beispiel können die Anzeige 720 und die eine oder die mehreren Inhaltsdienstvorrichtungen 730 integriert sein oder können die Anzeige 720 und die eine oder die mehreren Inhaltsliefervorrichtungen 740 integriert sein. Diese Beispiele sollen die Ausführungsformen nicht einschränken.
  • In verschiedenen Ausführungsformen kann das System 700 als ein drahtloses System, als ein verdrahtetes System oder als eine Kombination beider implementiert werden. Wenn das System 700 als ein drahtloses System implementiert wird, kann es Komponenten und Schnittstellen wie etwa eine oder mehrere Antennen, Sender, Empfänger, Transceiver, Verstärker, Filter, Steuerlogik usw. enthalten, die für die Kommunikation über drahtlose gemeinsam genutzte Medien geeignet sind. Ein Beispiel eines drahtlosen gemeinsam genutzten Mediums kann Abschnitte eines drahtlosen Spektrums wie etwa des HF-Spektrums usw. enthalten. Wenn das System 700 als ein verdrahtetes System implementiert wird, kann es Komponenten und Schnittstellen, die für die Kommunikation über verdrahtete Kommunikationsmedien geeignet sind, wie etwa Eingabe/Ausgabe-Adapter (E/A-Adapter), physikalische Verbinder zum Verbinden des E/A-Adapters mit einem entsprechenden verdrahteten Kommunikationsmedium, eine Netzschnittstellenkarte (NIC), einen Plattencontroller, einen Videocontroller, einen Audiocontroller usw. enthalten. Beispiele verdrahteter Kommunikationsmedien können einen Draht, ein Kabel, Metallleitungen, Leiterplatten (PCB), eine Rückwandplatine, eine Schaltmatrix, ein Halbleitermaterial, ein verdrilltes Aderpaar, ein Koaxialkabel, Lichtleiter usw. enthalten.
  • Die Plattform 702 kann einen oder mehrere logische oder physikalische Kanäle zum Übermitteln von Informationen aufbauen. Die Informationen können Medieninformationen und Steuerinformationen enthalten. Medieninformationen können sich auf irgendwelche Daten beziehen, die für einen Nutzer bestimmten Inhalt repräsentieren. Beispiele für Inhalt können z. B. Daten aus einer Sprachkonversation, aus einer Videokonferenz, Streaming Video, eine elektronische Mail-Nachricht (”E-Mail”-Nachricht), eine Sprachmailnachricht, alphanumerische Symbole, Graphik, ein Bild, Video, Text usw. enthalten. Daten aus einer Sprachkonversation können z. B. Sprachinformationen, Zeitdauern der Stille, Hintergrundgeräusch, künstliches Geräusch, Töne usw. sein. Steuerinformationen können sich auf irgendwelche Daten, die Anweisungen, Befehle oder Steuerwörter, die für ein automatisiertes System bestimmt sind, repräsentieren, beziehen. Steuerinformationen können z. B. verwendet werden, um Medieninformationen durch ein System zu leiten oder um einen Knoten anzuweisen, die Medieninformationen auf vorgegebene Weise zu verarbeiten. Allerdings sind die Ausführungsformen nicht auf die Elemente oder auf den Kontext, die in 4 gezeigt oder beschrieben sind, beschränkt.
  • Wie oben beschrieben wurde, kann das System 700 in verschiedenen physikalischen Arten oder Formfaktoren verkörpert werden. 5 veranschaulicht Ausführungsformen einer Vorrichtung 800 mit kleinem Formfaktor, in der das System 700 verkörpert werden kann. In Ausführungsformen kann die Vorrichtung 800 z. B. als eine mobile Computervorrichtung mit drahtlosen Fähigkeiten implementiert werden. Eine mobile Computervorrichtung kann sich auf irgendeine Vorrichtung mit einem Verarbeitungssystem und mit einer mobilen Stromquelle oder Stromversorgung wie etwa z. B. mit einer oder mit mehreren Batterien beziehen.
  • Wie oben beschrieben wurde, können Beispiele einer mobilen Computervorrichtung einen Personal Computer (PC), einen Laptopcomputer, einen Ultra-Laptop-Computer, ein Tablet, ein Touchpad, einen tragbaren Computer, einen Handcomputer, einen Palmtop-Computer, einen Personal Digital Assistent (PDA), ein Mobiltelephon, eine Mobiltelephon/PDA-Kombination, ein Fernsehgerät, eine Smart-Vorrichtung (z. B. ein Smartphone, ein Smart-Tablet oder ein Smart-Fernsehgerät), eine mobile Internetvorrichtung (MID), eine Messaging-Vorrichtung, eine Datenkommunikationsvorrichtung usw. enthalten.
  • Beispiele einer mobilen Computervorrichtung können ebenfalls Computer enthalten, die so ausgelegt sind, dass sie wie etwa ein Handgelenkcomputer, ein Fingercomputer, ein Ringcomputer, ein Brillencomputer, ein Gürtelclip-Computer, ein Armbandcomputer, Schuhcomputer, Bekleidungscomputer oder andere als Bekleidung tragbare Computer von einer Person als Bekleidung getragen werden können. In Ausführungsformen kann eine mobile Computervorrichtung z. B. als ein Smartphone, das Computeranwendungen sowie Sprachkommunikationen und/oder Datenkommunikationen ausführen kann, implementiert sein. Obwohl einige Ausführungsformen beispielhaft mit einer mobilen Computervorrichtung beschrieben sein können, die als ein Smartphone implementiert ist, wird gewürdigt werden, dass andere Ausführungsformen ebenfalls unter Verwendung anderer drahtloser mobiler Computervorrichtungen implementiert werden können. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
  • Wie in 5 gezeigt ist, kann die Vorrichtung 800 ein Gehäuse 802, eine Anzeige 804, eine Eingabe/Ausgabe-Vorrichtung (E/A-Vorrichtung) 806 und eine Antenne 808 umfassen. Außerdem kann die Vorrichtung 800 Navigationsmerkmale 812 umfassen. Die Anzeige 804 kann irgendeine für eine mobile Computervorrichtung geeignete Anzeigeeinheit zum Anzeigen von Informationen umfassen. Die E/A-Vorrichtung 806 kann irgendeine geeignete E/A-Vorrichtung zum Eingeben von Informationen in eine mobile Computervorrichtung umfassen. Beispiele für eine E/A-Vorrichtung 806 können eine alphanumerische Tastatur, ein numerisches Tastenfeld, ein Touchpad, Eingabetasten, Knöpfe, Schalter, Kippschalter, Mikrophone, Lautsprecher, eine Spracherkennungsvorrichtung und Spracherkennungssoftware usw. enthalten. Informationen können in die Vorrichtung 800 ebenfalls mittels eines Mikrophons eingegeben werden. Solche Informationen können durch eine Spracherkennungsvorrichtung digitalisiert werden. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
  • Zusätzliche Anmerkungen und Beispiele:
  • Das Beispiel 1 kann ein System zum Implementieren einer Graphik-Cache-Hierarchie enthalten, das eine Anzeige zum Darstellen von visuellem Inhalt, einen System-Cache, der mit einem oder mit mehreren Host-Prozessoren und mit einem Systemspeicher gekoppelt ist, eine Graphikschnittstelle, die mit dem System-Cache gekoppelt ist, und einen Graphikprozessor, der mit der Graphikschnittstelle gekoppelt ist, umfasst. Der Graphikprozessor kann einen physikalisch verteilten Satz von Rechen-Slices, um mehrere Arbeitseinheiten auszuführen, die dem visuellen Inhalt zugeordnet sind, und eine Cache-Fabric, um eine Kohärenz einer oder mehrerer Speicherzeilen, die den mehreren Arbeitseinheiten zugeordnet sind, über den Graphikprozessor, den Systemspeicher und den einen oder die mehreren Host-Prozessoren aufrechtzuerhalten, enthalten. Die Cache-Fabric kann mehrere Caches der ersten Ebene (L1-Caches), wobei jeder L1-Cache für einen Ausführungsblock eines Rechen-Slice vorgesehen ist, eine physikalisch verteilte gemeinsam genutzte Cache-Struktur, wobei die Kohärenz der einen oder der mehreren Speicherzeilen über die mehreren L1-Caches und über die gemeinsam genutzte Cache-Struktur aufrechterhalten werden soll, und mehrere Kreuzschienenknoten zum Verfolgen der einen oder der mehreren Speicherzeilen, wobei jeder Kreuzschienenknoten für ein Rechen-Slice vorgesehen ist, enthalten. Die mehreren Kreuzschienenknoten können ferner eine oder mehrere Snoop-Anforderungen, die von dem einen oder von den mehreren Host-Prozessoren ausgehen, über die Graphikschnittstelle an die gemeinsam genutzte Cache-Struktur und an die mehreren L1-Caches verteilen, eines oder mehrere Snoop-Ergebnisse von der gemeinsam genutzten Cache-Struktur und von den mehreren L1-Caches sammeln und das eine oder die mehreren Snoop-Ergebnisse an den System-Cache übermitteln.
  • Das Beispiel 2 kann das System nach Beispiel 1 enthalten, wobei die gemeinsam genutzte Cache-Struktur mehrere unabhängige Caches der zweiten Ebene (L2-Cache) enthält, wobei jeder L2-Cache für ein Rechen-Slice vorgesehen ist.
  • Das Beispiel 3 kann das System nach Beispiel 1 enthalten, wobei die gemeinsam genutzte Cache-Struktur einen Cache der zweiten Ebene (L2-Cache) mit mehreren Bänken enthält und wobei die gemeinsam genutzte Cache-Struktur wenigstens eine der einen oder der mehreren Speicherzeilen über die mehreren Bänke Hash-codieren soll.
  • Das Beispiel 4 kann das System nach einem der Beispiele 1 bis 3 enthalten, wobei die Cache-Fabric ein Modified/Exclusive/Shared/Invalid-Protokoll (MESI-Protokoll) verwenden soll, um die Kohärenz der einen oder der mehreren Speicherzeilen aufrechtzuerhalten.
  • Das Beispiel 5 kann einen Graphikprozessor enthalten, der einen physikalisch verteilten Satz von Rechen-Slices zum Ausführen mehrerer Arbeitseinheiten und eine Cache-Fabric zum Aufrechterhalten einer Kohärenz einer oder mehrerer Speicherzeilen, die den mehreren Arbeitseinheiten zugeordnet sind, über den Graphikprozessor, einen Systemspeicher und einen oder mehrere Host-Prozessoren umfasst.
  • Das Beispiel 6 kann den Graphikprozessor nach Beispiel 5 enthalten, wobei die Cache-Fabric mehrere Caches der ersten Ebene (L1-Caches), wobei jeder L1-Cache für einen Ausführungsblock eines Rechen-Slice vorgesehen ist, eine physikalisch verteilte gemeinsam genutzte Cache-Struktur, wobei die Kohärenz der einen oder der mehreren Speicherzeilen über die mehreren L1-Caches und über die gemeinsam genutzte Cache-Struktur aufrechterhalten werden soll, und mehrere Kreuzschienenknoten zum Verfolgen der einen oder der mehreren Speicherzeilen, wobei jeder Kreuzschienenknoten für ein Rechen-Slice vorgesehen ist, enthält.
  • Das Beispiel 7 kann den Graphikprozessor nach Beispiel 6 enthalten, wobei die gemeinsam genutzte Cache-Struktur mehrere unabhängige Caches der zweiten Ebene (L2-Caches) enthält, wobei jeder L2-Cache für ein Rechen-Slice vorgesehen ist.
  • Das Beispiel 8 kann den Graphikprozessor nach Beispiel 6 enthalten, wobei die gemeinsam genutzte Cache-Struktur einen Cache der zweiten Ebene (L2-Cache) mit mehreren Bänken enthält und wobei die gemeinsam genutzte Cache-Struktur wenigstens eine der einen oder der mehreren Speicherzeilen über die mehreren Bänke Hash-codieren soll.
  • Das Beispiel 9 kann den Graphikprozessor nach Beispiel 6 enthalten, wobei die mehreren Kreuzschienenknoten eine oder mehrere Snoop-Anforderungen, die von einem mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache ausgehen, auf die gemeinsam genutzte Cache-Struktur und auf die mehreren L1-Caches verteilen sollen.
  • Das Beispiel 10 kann den Graphikprozessor nach Beispiel 9 enthalten, wobei die mehreren Kreuzschienenknoten eines oder mehrere Snoop-Ergebnisse von der gemeinsam genutzten Cache-Struktur und von den mehreren L1-Caches sammeln sollen und das eine oder die mehreren Snoop-Ergebnisse an einen mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache übermitteln sollen.
  • Das Beispiel 11 kann den Graphikprozessor nach einem der Beispiele 5 bis 10 enthalten, wobei die Cache-Fabric ein Modified/Exclusive/Shared/Invalid-Protokoll (MESI-Protokoll) verwenden soll, um die Kohärenz der einen oder der mehreren Speicherzeilen aufrechtzuerhalten.
  • Das Beispiel 12 kann ein System zum Implementieren einer Graphik-Cache-Hierarchie enthalten, das eine Anzeige zum Anzeigen von visuellem Inhalt und einen Graphikprozessor, der einen physikalisch verteilten Satz von Rechen-Slices zum Ausführen mehrerer Arbeitseinheiten, die dem visuellen Inhalt zugeordnet sind, und eine Cache-Fabric, um eine Kohärenz einer oder mehrerer Speicherzeilen, die den mehreren Arbeitseinheiten zugeordnet sind, über den Graphikprozessor, einen Systemspeicher und einen oder mehrere Host-Prozessoren aufrechtzuerhalten, umfasst.
  • Das Beispiel 13 kann das System nach Beispiel 12 enthalten, wobei die Cache-Fabric mehrere Caches der ersten Ebene (L1-Caches), wobei jeder L1-Cache für einen Ausführungsblock eines Rechen-Slice vorgesehen ist, eine physikalisch verteilte gemeinsam genutzte Cache-Struktur, wobei die Kohärenz der einen oder der mehreren Speicherzeilen über die mehreren L1-Caches und über die gemeinsam genutzte Cache-Struktur aufrechterhalten werden soll, und mehrere Kreuzschienenknoten zum Verfolgen der einen oder der mehreren Speicherzeilen, wobei jeder Kreuzschienenknoten für ein Rechen-Slice vorgesehen ist, enthält.
  • Das Beispiel 14 kann das System nach Beispiel 13 enthalten, wobei die gemeinsam genutzte Cache-Struktur mehrere unabhängige Caches der zweiten Ebene (L2-Caches) enthält, wobei jeder L2-Cache für ein Rechen-Slice vorgesehen ist.
  • Das Beispiel 15 kann das System nach Beispiel 13 enthalten, wobei die gemeinsam genutzte Cache-Struktur einen Cache der zweiten Ebene (L2-Cache) mit mehreren Bänken enthält und wobei die gemeinsam genutzte Cache-Struktur wenigstens eine der einen oder der mehreren Speicherzeilen über die mehreren Bänke Hash-codieren soll.
  • Das Beispiel 16 kann das System nach Beispiel 13 enthalten, wobei die mehreren Kreuzschienenknoten eine oder mehrere Snoop-Anforderungen, die von einem mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache ausgehen, auf die gemeinsam genutzte Cache-Struktur und auf die mehreren L1-Caches verteilen sollen.
  • Das Beispiel 17 kann das System nach Beispiel 16 enthalten, das ferner einen System-Cache, der mit dem einen oder mit den mehreren Host-Prozessoren und mit dem Systemspeicher gekoppelt ist, und eine Graphikschnittstelle, die mit dem System-Cache gekoppelt ist, enthält, wobei die mehreren Kreuzschienenknoten eines oder mehrere Snoop-Ergebnisse von der gemeinsam genutzten Cache-Struktur und von den L1-Caches sammeln sollen und das eine oder die mehreren Snoop-Ergebnisse über die Graphikschnittstelle an den System-Cache übermitteln sollen.
  • Das Beispiel 18 kann das System nach einem der Beispiele 12 bis 17 enthalten, wobei die Cache-Fabric ein Modified/Exclusive/Shared/Invalid-Protokoll (MESI-Protokoll) verwenden soll, um die Kohärenz der einen oder der mehreren Speicherzeilen aufrechtzuerhalten.
  • Das Beispiel 19 kann ein Verfahren zum Betreiben eines Graphikprozessors enthalten, das das Ausführen mehrerer Arbeitseinheiten durch einen physikalisch verteilten Satz von Rechen-Slices und das Aufrechterhalten einer Kohärenz einer oder mehrerer Speicherzeilen, die den mehreren Arbeitseinheiten zugeordnet sind, über den Graphikprozessor, einen Systemspeicher und einen oder mehrere Host-Prozessoren durch eine Cache-Fabric, umfasst.
  • Das Beispiel 20 kann das Verfahren nach Beispiel 19 enthalten, das ferner das Verfolgen der einen oder der mehreren Speicherzeilen durch mehrere Kreuzschienenknoten enthält, wobei die Kohärenz der einen oder der mehreren Speicherzeilen über mehrere Caches der ersten Ebene (L1-Caches) und über eine physikalisch verteilte Cache-Struktur aufrechterhalten wird, wobei jeder L1-Cache für einen Ausführungsblock eines Rechen-Slice vorgesehen ist und jeder Kreuzschienenknoten für ein Rechen-Slice vorgesehen ist.
  • Das Beispiel 21 kann das Verfahren nach Beispiel 20 enthalten, wobei die gemeinsam genutzte Cache-Struktur mehrere unabhängige Caches der zweiten Ebene (L2-Caches) verwendet, um die eine oder die mehreren Speicherzeilen zu verfolgen, wobei jeder L2-Cache für ein Rechen-Slice vorgesehen ist.
  • Das Beispiel 22 kann das Verfahren nach Beispiel 20 enthalten, das ferner das Hash-Codieren wenigstens einer der einen oder der mehreren Speicherzeilen über mehrere Bänke eines Caches der zweiten Ebene (L2-Caches) enthält.
  • Das Beispiel 23 kann das Verfahren nach Beispiel 20 enthalten, das ferner das Verteilen einer oder mehrerer Snoop-Anforderungen, die von einem mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache ausgehen, auf die gemeinsam genutzte Cache-Struktur und auf die mehreren L1-Caches durch die mehreren Kreuzschienenknoten enthält.
  • Das Beispiel 24 kann das Verfahren nach Beispiel 23 enthalten, das ferner das Sammeln eines oder mehrere Snoop-Ergebnisse von der gemeinsam genutzten Cache-Struktur und von den mehreren L1-Caches durch die mehreren Kreuzschienenknoten und das Übermitteln des einen oder der mehreren Snoop-Ergebnisse an einen mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache durch die mehreren Kreuzschienenknoten enthält.
  • Das Beispiel 25 kann das Verfahren nach einem der Beispiele 19 bis 24 enthalten, das ferner das Verwenden eines Modified/Exclusive/Shared/Invalid-Protokolls (MESI-Protokolls) zum Aufrechterhalten der Kohärenz der einen oder der mehreren Speicherzeilen durch die Cache-Fabric enthält.
  • Das Beispiel 26 kann ein System zum Implementieren einer Graphik-Cache-Hierarchie enthalten, das Mittel, um durch einen physikalisch verteilten Satz von Rechen-Slices mehrere Arbeitseinheiten auszuführen, und Mittel, um durch eine Cache-Fabric eine Kohärenz einer oder mehrerer Speicherzeilen, die den mehreren Arbeitseinheiten zugeordnet sind, über den Graphikprozessor, über einen Systemspeicher und über einen oder mehrere Host-Prozessoren aufrechtzuerhalten, umfasst.
  • Das Beispiel 27 kann das System aus Beispiel 26 enthalten, wobei es ferner Mittel umfasst, um durch mehrere Kreuzschienenknoten die eine oder die mehreren Speicherzeilen zu verfolgen, wobei die Kohärenz der einen oder der mehreren Speicherzeilen über mehrere Caches der ersten Ebene (L1-Caches) und über eine physikalisch verteilte Cache-Struktur aufrechterhalten werden soll, wobei jeder L1-Cache für einen Ausführungsblock eines Rechen-Slice vorgesehen ist und jeder Kreuzschienenknoten für ein Rechen-Slice vorgesehen ist.
  • Das Beispiel 28 kann das System aus Beispiel 27 enthalten, wobei die gemeinsam genutzte Cache-Struktur mehrere unabhängige Caches der zweiten Ebene (L2-Caches) verwenden soll, um die eine oder die mehreren Speicherzeilen zu verfolgen, wobei jeder L2-Cache für ein Rechen-Slice vorgesehen ist.
  • Das Beispiel 29 kann das System aus Beispiel 27 enthalten, wobei es ferner Mittel zum Hash-Codieren wenigstens einer der einen oder der mehreren Speicherzeilen über mehrere Bänke eines Caches der zweiten Ebene (L2-Caches) enthält.
  • Das Beispiel 30 kann das System aus Beispiel 27 enthalten, wobei es ferner Mittel zum Verteilen einer oder mehrerer Snoop-Anforderungen, die von einem mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache ausgehen, auf die gemeinsam genutzte Cache-Struktur und auf die mehreren L1-Caches durch die mehreren Kreuzschienenknoten enthält.
  • Das Beispiel 31 kann das System aus Beispiel 30 enthalten, wobei es ferner Mittel, um eines oder mehrere Snoop-Ergebnisse von der gemeinsam genutzten Cache-Struktur und von den mehreren L1-Caches durch die mehreren Kreuzschienenknoten zu sammeln, und Mittel, um durch die mehreren Kreuzschienenknoten das eine oder die mehreren Snoop-Ergebnisse an einen mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache zu übermitteln, enthält.
  • Das Beispiel 32 kann das System nach einem der Beispiele 26 bis 31 enthalten, wobei es ferner Mittel enthält, um durch die Cache-Fabric ein Modified/Exclusive/Shared/Invalid-Protokoll (MESI-Protokoll) zu verwenden, um die Kohärenz der einen oder der mehreren Speicherzeilen aufrechtzuerhalten.
  • Somit können Techniken sowohl in integrierten als auch in angeschlossenen GPUs eine kohärente Speicher-Fabric zwischen verschiedenen Systemkomponenten erzielen, wobei die internen Caches der Host-Prozessoren und der Graphikprozessoren füreinander sichtbar sind. Die Fabric kann eine verriegelte Hardwarelösung bereitstellen, die in der GPU die sequentielle Konsistenz zwischen Arbeitseinheiten und Arbeitsgruppen aufrechterhält, ohne sich auf grobkörnige Lösungen wie etwa Barriers, Memory Fences und ungeordnete Atomics zu stützen. Darüber hinaus kann die Fabric die Speicherkonsistenz sicherstellen, ohne die negative Leistungsauswirkung von Hardware-Leerungen und Softwarestapelaufrufen zu erleiden. Das Beseitigen der Bezugnahmen auf die spezialisierte Softwarestapelprogrammierung kann das System ebenfalls zu einer erfolgversprechenden Alternative für einen umfangreicheren Bereich von Plattformen und Nutzungsszenarien machen.
  • Verschiedene Ausführungsformen können unter Verwendung von Hardwareelementen, von Softwareelementen oder einer Kombination beider implementiert werden. Beispiele für Hardwareelemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktionsspulen usw.), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD), digitale Signalprozessoren (DSP), eine frei programmierbare logische Anordnung (FPGA), Logikgatter, Register, eine Halbleitervorrichtung, Chips, Mikrochips, Chipsätze usw. enthalten. Beispiele für Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterprogramme, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammierungsschnittstellen (API), Befehlssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination davon enthalten. Die Bestimmung, ob eine Ausführungsform unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann in Übereinstimmung mit irgendeiner Anzahl von Faktoren wie etwa der gewünschten Rechenrate, Leistungspegeln, Wärmetoleranzen, dem Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, Speicherbetriebsmitteln, Datenbusgeschwindigkeiten und anderen Entwurfs- oder Leistungsfähigkeitsbeschränkungen variieren.
  • Einer oder mehrere Aspekte wenigstens einer Ausführungsform können durch repräsentative Befehle implementiert werden, die in einem maschinenlesbaren Medium gespeichert sind, das eine verschiedenartige Logik innerhalb des Prozessors repräsentiert, die, wenn sie durch eine Maschine ausgelesen wird, veranlasst, dass die Maschine die Logik zum Ausführen der hier beschriebenen Techniken herstellt. Solche Darstellungen, die als ”IP-Kerne” bekannt sind, können als ein konkretes, maschinenlesbares Medium gespeichert werden und an verschiedene Kunden oder Fertigungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Ausführungsformen sind zur Verwendung mit allen Typen integrierter Halbleiterschaltungschips (”IC”-Chips) anwendbar. Beispiele dieser IC-Chips enthalten Prozessoren, Controller, Chipsatzkomponenten, programmierbare Logikanordnungen (PLAs), Speicherchips, Netzchips und dergleichen, sind darauf aber nicht beschränkt. Außerdem sind in einigen der Zeichnungen Signalleiterleitungen mit Linien dargestellt. Einige können unterschieden sein, um weitere Bestandteilsignalwege anzugeben, können eine Zahlenkennzeichnung tragen, um eine Anzahl von Bestandteilsignalwegen anzugeben, und/oder können an einem oder an mehreren Enden Pfeile tragen, um die Hauptinformationsflussrichtung anzugeben. Dies soll aber nicht auf beschränkende Weise verstanden werden. Vielmehr können diese zusätzlichen Einzelheiten in Verbindung mit einer oder mit mehreren beispielhaften Ausführungsformen verwendet werden, um ein leichteres Verständnis einer Schaltung zu ermöglichen. Irgendwelche dargestellten Signalleitungen, gleich, ob sie zusätzliche Informationen tragen oder nicht, können tatsächlich eines oder mehrere Signale umfassen, die in mehreren Richtungen laufen können, und können mit irgendeiner geeigneten Art eines Signalschemas implementiert werden, z. B. als digitale oder analoge Leitungen, die mit unterschiedlichen Paaren, Glasfaserleitungen und/oder unsymmetrischen Leitungen implementiert sind.
  • Obwohl Ausführungsformen diesbezüglich nicht beschränkt sind, können beispielhafte Größen/Modelle/Werte/Bereiche gegeben worden sein. Während Fertigungstechniken (z. B. die Photolithographie) im Zeitverlauf reifen, wird erwartet, dass Vorrichtungen mit kleinerer Größe hergestellt werden können. Außerdem können in den Figuren bekannte Leistungs-/Masseverbindungen zu IC-Chips und zu anderen Komponenten zur Einfachheit der Darstellung und Diskussion gezeigt oder nicht gezeigt sein, um nicht bestimmte Aspekte der Ausführungsformen zu verdecken. Ferner können Anordnungen in Blockschaltplanform gezeigt sein, um verdeckende Ausführungsformen zu vermeiden und außerdem angesichts der Tatsache, dass Spezifika in Bezug auf die Implementierung solcher Blockschaltplananordnungen stark von der Plattform abhängen, in der die Ausführungsform implementiert werden soll, das heißt, solche Spezifika sollten im Bereich des Fachmanns auf dem Gebiet liegen. Obwohl spezifische Einzelheiten (z. B. Schaltungen) dargelegt sind, um beispielhafte Ausführungsformen zu beschreiben, sollte vom Fachmann auf dem Gebiet gewürdigt werden, dass Ausführungsformen ohne diese spezifischen Einzelheiten oder mit einer Änderung davon verwirklicht werden können. Somit ist die Beschreibung als veranschaulichend, anstatt als beschränkend anzusehen.
  • Einige Ausführungsformen können z. B. unter Verwendung einer Maschine oder eines konkreten computerlesbaren Mediums oder Artikels, das bzw. der einen Befehl oder einen Satz von Befehlen speichern kann, die, falls sie durch eine Maschine ausgeführt werden, veranlassen können, dass die Maschine ein Verfahren und/oder Operationen in Übereinstimmung mit den Ausführungsformen ausführt, implementiert werden. Eine solche Maschine kann z. B. irgendeine geeignete Verarbeitungsplattform, irgendeine geeignete Rechenplattform, irgendeine geeignete Computervorrichtung, irgendeine geeignete Verarbeitungsvorrichtung, irgendein geeignetes Computersystem, irgendein geeignetes Verarbeitungssystem, irgendeinen geeigneten Computer, irgendeinen geeigneten Prozessor oder dergleichen enthalten und kann unter Verwendung irgendeiner geeigneten Kombination aus Hardware und/oder Software implementiert werden. Das maschinenlesbare Medium oder der maschinenlesbare Artikel kann z. B. irgendeinen geeigneten Typ einer Speichereinheit, einer Speichervorrichtung, eines Speicherartikels, eines Speichermediums, einer Ablagevorrichtung, eines Ablageartikels, eines Ablagemediums und/oder einer Ablageeinheit, z. B. einen Speicher, Wechselmedien oder fest eingebaute Medien, löschbare oder nicht löschbare Medien, beschreibbare oder wiederbeschreibbare Medien, digitale oder analoge Medien, eine Festplatte, eine Diskette, eine Compact Disk Read Only Memory (CD-ROM), eine Compact Disk Recordable (CD-R), eine Compact Disk Rewriteable (CD-RW), eine optische Platte, magnetische Medien, magnetooptische Medien, Wechselspeicherkarten oder Wechselspeicherplatten, verschiedene Typen einer Digital Versatile Disk (DVD), ein Band, eine Kassette oder dergleichen, enthalten. Die Befehle können irgendeinen geeigneten Typ von Code wie etwa Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code, verschlüsselten Code und dergleichen, der unter Verwendung irgendeiner geeigneten höheren, niedrigeren, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert wird, enthalten.
  • Sofern nicht spezifisch etwas anderes ausgesagt ist, wird gewürdigt werden, dass sich Begriffe wie etwa ”verarbeiten”, ”mit Computer berechnen”, ”berechnen”, ”bestimmen” oder dergleichen auf die Aktion und/oder auf Prozesse eines Computers oder Computersystems oder einer ähnlichen elektronischen Vorrichtung, die Daten, die als physikalische Größen (z. B. elektronische) innerhalb der Register und/oder Speicher des Computersystems repräsentiert sind, in andere Daten, die ähnlich als physikalische Größen innerhalb von Speicher, Registern oder einer anderen solchen Informationsablage, von Übertragungs- oder Anzeigevorrichtungen des Computersystems repräsentiert sind, manipuliert und/oder umwandelt, beziehen. Die Ausführungsformen sind diesbezüglich nicht beschränkt.
  • Der Begriff ”gekoppelt” kann hier zur Bezugnahme auf irgendeinen Typ einer direkten oder indirekten Beziehung zwischen den fraglichen Komponenten verwendet sein und kann auf elektrische, mechanische, fluidtechnische, optische, elektromagnetische, elektromechanische oder andere Verbindungen anwendbar sein. Außerdem können die Begriffe ”erstes”, ”zweites” usw. hier nur zur Erleichterung der Diskussion verwendet sein und, sofern nicht etwas anderes angegeben ist, keine besondere zeitliche oder chronologische Bedeutung haben.
  • Der Fachmann auf dem Gebiet wird aus der vorstehenden Beschreibung würdigen, dass die umfassenden Techniken der Ausführungsformen in einer Vielzahl von Formen implementiert werden können. Obwohl ihre Ausführungsformen in Verbindung mit bestimmten Beispielen davon beschrieben worden sind, ist der wahre Schutzumfang der Ausführungsformen somit nicht darauf beschränkt, da dem Fachmann beim Studium der Zeichnungen, der Beschreibung und der folgenden Ansprüche andere Änderungen einfallen werden.

Claims (25)

  1. System zum Implementieren einer Graphik-Cache-Hierarchie, wobei das System Folgendes umfasst: eine Anzeige zum Darstellen von visuellem Inhalt; einen System-Cache, der mit einem oder mit mehreren Host-Prozessoren und mit einem Systemspeicher gekoppelt ist; eine Graphikschnittstelle, die mit dem System-Cache gekoppelt ist; und einen Graphikprozessor, der mit der Graphikschnittstelle gekoppelt ist, wobei der Graphikprozessor Folgendes enthält: einen physikalisch verteilten Satz von Rechen-Slices, um mehrere Arbeitseinheiten auszuführen, die dem visuellen Inhalt zugeordnet sind, und eine Cache-Fabric, um eine Kohärenz einer oder mehrerer Speicherzeilen, die den mehreren Arbeitseinheiten zugeordnet sind, über den Graphikprozessor, den Systemspeicher und den einen oder die mehreren Host-Prozessoren aufrechtzuerhalten, wobei die Cache-Fabric Folgendes enthält: mehrere Caches der ersten Ebene (L1-Caches), wobei jeder L1-Cache für einen Ausführungsblock eines Rechen-Slice vorgesehen ist, eine physikalisch verteilte gemeinsam genutzte Cache-Struktur, wobei die Kohärenz der einen oder der mehreren Speicherzeilen über die mehreren L1-Caches und über die gemeinsam genutzte Cache-Struktur aufrechterhalten werden soll, und mehrere Kreuzschienenknoten zum Verfolgen der einen oder der mehreren Speicherzeilen, wobei jeder Kreuzschienenknoten für ein Rechen-Slice vorgesehen ist, wobei die mehreren Kreuzschienenknoten ferner dazu dienen, eine oder mehrere Snoop-Anforderungen, die von dem System-Cache ausgehen, über die Graphikschnittstelle an die gemeinsam genutzte Cache-Struktur und an die mehreren L1-Caches zu verteilen, eines oder mehrere Snoop-Ergebnisse von der gemeinsam genutzten Cache-Struktur und von den mehreren L1-Caches zu sammeln und das eine oder die mehreren Snoop-Ergebnisse an den System-Cache zu übermitteln.
  2. System nach Anspruch 1, wobei die gemeinsam genutzte Cache-Struktur mehrere unabhängige Caches der zweiten Ebene (L2-Cache) enthält, wobei jeder L2-Cache für ein Rechen-Slice vorgesehen ist.
  3. System nach Anspruch 1, wobei die gemeinsam genutzte Cache-Struktur einen Cache der zweiten Ebene (L2-Cache) mit mehreren Bänken enthält und wobei die gemeinsam genutzte Cache-Struktur wenigstens eine der einen oder der mehreren Speicherzeilen über die mehreren Bänke Hash-codieren soll.
  4. System nach einem der Ansprüche 1 bis 3, wobei die Cache-Fabric ein Modified/Exclusive/Shared/Invalid-Protokoll (MESI-Protokoll) verwenden soll, um die Kohärenz der einen oder der mehreren Speicherzeilen aufrechtzuerhalten.
  5. Graphikprozessor, der Folgendes umfasst: einen physikalisch verteilten Satz von Rechen-Slices zum Ausführen mehrerer Arbeitseinheiten; und eine Cache-Fabric zum Aufrechterhalten einer Kohärenz einer oder mehrerer Speicherzeilen, die den mehreren Arbeitseinheiten zugeordnet sind, über den Graphikprozessor, einen Systemspeicher und einen oder mehrere Host-Prozessoren.
  6. Graphikprozessor nach Anspruch 5, wobei die Cache-Fabric Folgendes enthält: mehrere Caches der ersten Ebene (L1-Caches), wobei jeder L1-Cache für einen Ausführungsblock eines Rechen-Slice vorgesehen ist; eine physikalisch verteilte gemeinsam genutzte Cache-Struktur, wobei die Kohärenz der einen oder der mehreren Speicherzeilen über die mehreren L1-Caches und über die gemeinsam genutzte Cache-Struktur aufrechterhalten werden soll; und mehrere Kreuzschienenknoten zum Verfolgen der einen oder der mehreren Speicherzeilen, wobei jeder Kreuzschienenknoten für ein Rechen-Slice vorgesehen ist.
  7. Graphikprozessor nach Anspruch 6, wobei die gemeinsam genutzte Cache-Struktur mehrere unabhängige Caches der zweiten Ebene (L2-Caches) enthält, wobei jeder L2-Cache für ein Rechen-Slice vorgesehen ist.
  8. Graphikprozessor nach Anspruch 6, wobei die gemeinsam genutzte Cache-Struktur einen Cache der zweiten Ebene (L2-Cache) mit mehreren Bänken enthält und wobei die gemeinsam genutzte Cache-Struktur wenigstens eine der einen oder der mehreren Speicherzeilen über die mehreren Bänke Hash-codieren soll.
  9. Graphikprozessor nach Anspruch 6, wobei die mehreren Kreuzschienenknoten eine oder mehrere Snoop-Anforderungen, die von einem mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache ausgehen, auf die gemeinsam genutzte Cache-Struktur und auf die mehreren L1-Caches verteilen sollen.
  10. Graphikprozessor nach Anspruch 9, wobei die mehreren Kreuzschienenknoten eines oder mehrere Snoop-Ergebnisse von der gemeinsam genutzten Cache-Struktur und von den mehreren L1-Caches sammeln sollen und das eine oder die mehreren Snoop-Ergebnisse an einen mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache übermitteln sollen.
  11. Graphikprozessor nach einem der Ansprüche 5 bis 10, wobei die Cache-Fabric ein Modified/Exclusive/Shared/Invalid-Protokoll (MESI-Protokoll) verwenden soll, um die Kohärenz der einen oder der mehreren Speicherzeilen aufrechtzuerhalten.
  12. System zum Implementieren einer Graphik-Cache-Hierarchie, wobei das System Folgendes umfasst: eine Anzeige zum Anzeigen von visuellem Inhalt; und einen Graphikprozessor, der Folgendes enthält: einen physikalisch verteilten Satz von Rechen-Slices zum Ausführen mehrerer Arbeitseinheiten, die dem visuellen Inhalt zugeordnet sind, und eine Cache-Fabric, um eine Kohärenz einer oder mehrerer Speicherzeilen, die den mehreren Arbeitseinheiten zugeordnet sind, über den Graphikprozessor, einen Systemspeicher und einen oder mehrere Host-Prozessoren aufrechtzuerhalten.
  13. System nach Anspruch 12, wobei die Cache-Fabric Folgendes enthält: mehrere Caches der ersten Ebene (L1-Caches), wobei jeder L1-Cache für einen Ausführungsblock eines Rechen-Slice vorgesehen ist; eine physikalisch verteilte gemeinsam genutzte Cache-Struktur, wobei die Kohärenz der einen oder der mehreren Speicherzeilen über die mehreren L1-Caches und über die gemeinsam genutzte Cache-Struktur aufrechterhalten werden soll; und mehrere Kreuzschienenknoten zum Verfolgen der einen oder der mehreren Speicherzeilen, wobei jeder Kreuzschienenknoten für ein Rechen-Slice vorgesehen ist.
  14. System nach Anspruch 13, wobei die gemeinsam genutzte Cache-Struktur mehrere unabhängige Caches der zweiten Ebene (L2-Caches) enthält, wobei jeder L2-Cache für ein Rechen-Slice vorgesehen ist.
  15. System nach Anspruch 13, wobei die gemeinsam genutzte Cache-Struktur einen Cache der zweiten Ebene (L2-Cache) mit mehreren Bänken enthält und wobei die gemeinsam genutzte Cache-Struktur wenigstens eine der einen oder der mehreren Speicherzeilen über die mehreren Bänke Hash-codieren soll.
  16. System nach Anspruch 13, wobei die mehreren Kreuzschienenknoten eine oder mehrere Snoop-Anforderungen, die von einem mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache ausgehen, auf die gemeinsam genutzte Cache-Struktur und auf die mehreren L1-Caches verteilen sollen.
  17. System nach Anspruch 16, das ferner einen System-Cache, der mit dem einen oder mit den mehreren Host-Prozessoren und mit dem Systemspeicher gekoppelt ist, und eine Graphikschnittstelle, die mit dem System-Cache gekoppelt ist, enthält, wobei die mehreren Kreuzschienenknoten eines oder mehrere Snoop-Ergebnisse von der gemeinsam genutzten Cache-Struktur und von den L1-Caches sammeln sollen und das eine oder die mehreren Snoop-Ergebnisse über die Graphikschnittstelle an den System-Cache übermitteln sollen.
  18. System nach einem der Ansprüche 12 bis 17, wobei die Cache-Fabric ein Modified/Exclusive/Shared/Invalid-Protokoll (MESI-Protokoll) verwenden soll, um die Kohärenz der einen oder der mehreren Speicherzeilen aufrechtzuerhalten.
  19. Verfahren zum Betreiben eines Graphikprozessors, wobei das Verfahren Folgendes umfasst: Ausführen mehrerer Arbeitseinheiten durch einen physikalisch verteilten Satz von Rechen-Slices; und Aufrechterhalten einer Kohärenz einer oder mehrerer Speicherzeilen, die den mehreren Arbeitseinheiten zugeordnet sind, über den Graphikprozessor, einen Systemspeicher und einen oder mehrere Host-Prozessoren durch eine Cache-Fabric.
  20. Verfahren nach Anspruch 19, das ferner das Verfolgen der einen oder der mehreren Speicherzeilen durch mehrere Kreuzschienenknoten enthält, wobei die Kohärenz der einen oder der mehreren Speicherzeilen über mehrere Caches der ersten Ebene (L1-Caches) und über eine physikalisch verteilte Cache-Struktur aufrechterhalten wird, wobei jeder L1-Cache für einen Ausführungsblock eines Rechen-Slice vorgesehen ist und jeder Kreuzschienenknoten für ein Rechen-Slice vorgesehen ist.
  21. Verfahren nach Anspruch 20, wobei die gemeinsam genutzte Cache-Struktur mehrere unabhängige Caches der zweiten Ebene (L2-Caches) verwendet, um die eine oder die mehreren Speicherzeilen zu verfolgen, wobei jeder L2-Cache für ein Rechen-Slice vorgesehen ist.
  22. Verfahren nach Anspruch 20, das ferner das Hash-Codieren wenigstens einer der einen oder der mehreren Speicherzeilen über mehrere Bänke eines Caches der zweiten Ebene (L2-Caches) enthält.
  23. Verfahren nach Anspruch 20, das ferner das Verteilen einer oder mehrerer Snoop-Anforderungen, die von einem mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache ausgehen, auf die gemeinsam genutzte Cache-Struktur und auf die mehreren L1-Caches durch die mehreren Kreuzschienenknoten enthält.
  24. Verfahren nach Anspruch 23, das ferner Folgendes enthält: Sammeln eines oder mehrerer Snoop-Ergebnisse von der gemeinsam genutzten Cache-Struktur und von den mehreren L1-Caches durch die mehreren Kreuzschienenknoten; und Übermitteln des einen oder der mehreren Snoop-Ergebnisse an einen mit dem einen oder mit den mehreren Host-Prozessoren gekoppelten System-Cache durch die mehreren Kreuzschienenknoten.
  25. Verfahren nach einem der Ansprüche 19 bis 24, das ferner das Verwenden eines Modified/Exclusive/Shared/Invalid-Protokolls (MESI-Protokolls) zum Aufrechterhalten der Kohärenz der einen oder der mehreren Speicherzeilen durch die Cache-Fabric enthält.
DE102015002366.7A 2014-03-27 2015-02-25 Systemkohärenz in einer verteilten Graphikprozessorhierarchie Pending DE102015002366A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/227,525 2014-03-27
US14/227,525 US9436972B2 (en) 2014-03-27 2014-03-27 System coherency in a distributed graphics processor hierarchy

Publications (1)

Publication Number Publication Date
DE102015002366A1 true DE102015002366A1 (de) 2015-10-01

Family

ID=54066881

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015002366.7A Pending DE102015002366A1 (de) 2014-03-27 2015-02-25 Systemkohärenz in einer verteilten Graphikprozessorhierarchie

Country Status (5)

Country Link
US (1) US9436972B2 (de)
KR (1) KR101648758B1 (de)
CN (2) CN110109844B (de)
DE (1) DE102015002366A1 (de)
TW (1) TWI556193B (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9436972B2 (en) * 2014-03-27 2016-09-06 Intel Corporation System coherency in a distributed graphics processor hierarchy
US10402072B2 (en) * 2015-05-04 2019-09-03 Graphisoft Se Predictive background updating
US9965211B2 (en) * 2016-09-08 2018-05-08 Cisco Technology, Inc. Dynamic packet buffers with consolidation of low utilized memory banks
US10747878B1 (en) * 2016-10-07 2020-08-18 Rightquestion, Llc Rapid verification of executing processes
WO2018183526A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking, full-mesh data center network having optical permutors
US10686729B2 (en) 2017-03-29 2020-06-16 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
WO2018183553A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups
US10395623B2 (en) 2017-04-01 2019-08-27 Intel Corporation Handling surface level coherency without reliance on fencing
US10891773B2 (en) * 2017-04-07 2021-01-12 Intel Corporation Apparatus and method for efficient graphics virtualization
CN117971715A (zh) 2017-04-10 2024-05-03 微软技术许可有限责任公司 多处理器系统中的中继一致存储器管理
CN110915173B (zh) * 2017-07-10 2022-04-29 芬基波尔有限责任公司 用于计算节点和存储节点的数据处理单元
CN110892380B (zh) 2017-07-10 2023-08-11 芬基波尔有限责任公司 用于流处理的数据处理单元
US11178262B2 (en) 2017-09-29 2021-11-16 Fungible, Inc. Fabric control protocol for data center networks with packet spraying over multiple alternate data paths
WO2019068017A1 (en) 2017-09-29 2019-04-04 Fungible, Inc. RESILIENT NETWORK COMMUNICATION USING SELECTIVE PULVER FLOW SPRAY BY MULTIPATH PATH
WO2019104090A1 (en) 2017-11-21 2019-05-31 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
US10540288B2 (en) 2018-02-02 2020-01-21 Fungible, Inc. Efficient work unit processing in a multicore system
US10929175B2 (en) 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
BR112021016138A2 (pt) 2019-03-15 2022-01-04 Intel Corp Aparelho, método, processador gráfico de propósito geral e sistema de processamento de dados
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
EP3938912B1 (de) * 2019-03-15 2023-09-20 INTEL Corporation Speichersteuerungsverwaltungstechniken
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US11455251B2 (en) * 2020-11-11 2022-09-27 Advanced Micro Devices, Inc. Enhanced durability for systems on chip (SOCs)

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5053761A (en) * 1989-06-16 1991-10-01 International Business Machines Method for smooth bitmap scrolling
US6449699B2 (en) * 1999-03-29 2002-09-10 International Business Machines Corporation Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
US6792551B2 (en) * 2001-11-26 2004-09-14 Intel Corporation Method and apparatus for enabling a self suspend mode for a processor
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
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
US7484044B2 (en) 2003-09-12 2009-01-27 Intel Corporation Method and apparatus for joint cache coherency states in multi-interface caches
CN1320464C (zh) * 2003-10-23 2007-06-06 英特尔公司 用于维持共享高速缓存一致性的方法和设备
US20070005907A1 (en) 2005-06-29 2007-01-04 Intel Corporation Reduction of snoop accesses
US8928676B2 (en) 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US7581068B2 (en) 2006-06-29 2009-08-25 Intel Corporation Exclusive ownership snoop filter
US8527709B2 (en) 2007-07-20 2013-09-03 Intel Corporation Technique for preserving cached information during a low power mode
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US8762652B2 (en) 2008-04-30 2014-06-24 Freescale Semiconductor, Inc. Cache coherency protocol in a data processing system
US8286198B2 (en) 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
CN102239472B (zh) * 2008-09-05 2017-04-12 惠普发展公司,有限责任合伙企业 在支持查询的同时高效地存储日志数据
US20100332762A1 (en) 2009-06-30 2010-12-30 Moga Adrian C Directory cache allocation based on snoop response information
US9639479B2 (en) * 2009-09-23 2017-05-02 Nvidia Corporation Instructions for managing a parallel cache hierarchy
US8375184B2 (en) 2009-11-30 2013-02-12 Intel Corporation Mirroring data between redundant storage controllers of a storage system
US8856456B2 (en) 2011-06-09 2014-10-07 Apple Inc. Systems, methods, and devices for cache block coherence
US9477600B2 (en) * 2011-08-08 2016-10-25 Arm Limited Apparatus and method for shared cache control including cache lines selectively operable in inclusive or non-inclusive mode
US20130042470A1 (en) * 2011-08-15 2013-02-21 Advanced Interconnections Corp. Extraction tool
US9330002B2 (en) * 2011-10-31 2016-05-03 Cavium, Inc. Multi-core interconnect in a network processor
US9274960B2 (en) * 2012-03-20 2016-03-01 Stefanos Kaxiras System and method for simplifying cache coherence using multiple write policies
CN102799352A (zh) * 2012-06-18 2012-11-28 江苏智途科技有限公司 实现图形节点捕捉的方法
US9665958B2 (en) * 2013-08-26 2017-05-30 Nvidia Corporation System, method, and computer program product for redistributing a multi-sample processing workload between threads
US9436972B2 (en) * 2014-03-27 2016-09-06 Intel Corporation System coherency in a distributed graphics processor hierarchy

Also Published As

Publication number Publication date
CN110109844B (zh) 2023-08-01
CN104952033B (zh) 2019-01-01
KR20150112784A (ko) 2015-10-07
CN110109844A (zh) 2019-08-09
TW201539370A (zh) 2015-10-16
TWI556193B (zh) 2016-11-01
US9436972B2 (en) 2016-09-06
US20150278984A1 (en) 2015-10-01
CN104952033A (zh) 2015-09-30
KR101648758B1 (ko) 2016-08-17

Similar Documents

Publication Publication Date Title
DE102015002366A1 (de) Systemkohärenz in einer verteilten Graphikprozessorhierarchie
DE112013007741B4 (de) Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur
DE112013007742B3 (de) Computergerät, verfahren und maschinenlesbares medium zur gemeinsamen nutzung von virtuellem speicher
DE112017004246T5 (de) Cache- und komprimierungsinteroperabilität in einer grafikprozessorpipeline
DE112011105901B4 (de) Verfahren und Vorrichtung zur Energieeinsparung für First In First Out (FIF0)-Speicher
DE102013114279B4 (de) Oberflächenverarbeitung mit Mehrfachabtastung unter Verwendung einer einzelnen Abtastung
DE102018132468A1 (de) Multi-gpu-frame-rendern
DE102020124932A1 (de) Vorrichtung und Verfahren zur Echtzeit-Grafikverarbeitung mittels lokaler und cloudbasierter Grafikverarbeitungsbetriebsmittel
DE102013114256B4 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
DE112013003745T5 (de) Techniken zur dynamischen Partitionierung von physikalischem Speicher
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE102010055219A1 (de) Verwenden von multimodaler Eingabe zur Steuerung multipler Objekte auf einem Display
DE112016001730T5 (de) Virtuelle Maschinensysteme
DE112016005809T5 (de) Lichtfeld-Rendering eines Bildes unter Verwendung variabler Rechenkomplexität
DE102020132377A1 (de) Vorrichtung und Verfahren zur Drosselung einer Raytracing-Pipeline
DE112021004290T5 (de) Gemeinsames nutzen von zwischengespeicherten klassendaten in einer containerisierten umgebung
DE102021125897A1 (de) History-blockieren zum entrauschen dynamischer raytracing-szenen unter verwendung zeitlicher anhäufung
DE102023100874A1 (de) Effiziente Synchronisationsbarrieren für mehrere Vorrichtungen durch Multicasting
DE102022107232A1 (de) Gepackter fehlerkorrekturcode (ecc) für komprimierten datenschutz
DE102019133561A1 (de) System und Verfahren zur Detektion von Änderungen gerenderter Szenen mit ferngehosteten Graphikanwendungen
DE102021102746A1 (de) Lese/schreib-seitenreplikation für mehrere recheneinheiten
DE112021002237T5 (de) Weitwinkel erweiterte-realität-anzeige

Legal Events

Date Code Title Description
R012 Request for examination validly filed