-
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 (14a–14c) mit dedizierten Caches 16 (16a–16c, 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 (24a–24d), 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.