-
HINTERGRUND
-
TECHNISCHES GEBIET
-
Diese Offenbarung ist auf Computersysteme und insbesondere auf Cache-Subsysteme gerichtet.
-
BESCHREIBUNG DES STANDS DER TECHNIK
-
Computersysteme verwenden verschiedene Typen von Speicher in einer Speicherhierarchie. Diese Hierarchie kann von architektonisch angelegten Registern in einem Prozessor (z. B. zum Speichern von Operanden für auszuführende Anweisungen) bis hin zu Massenspeicher auf z. B. einem Festplattenlaufwerk oder Festkörperlaufwerk reichen. Viele Computersysteme schließen auch mehrere Ebenen von Cache-Speicher ein.
-
Cache-Speicher ist ein Speichertyp, der in einer Speicherhierarchie niedriger als Register, aber in der Hierarchie höher als ein Systemspeicher, wie ein Direktzugriffsspeicher (RAM), ist. Ein Cache kann Informationen basierend auf den Prinzipien der Lokalität speichern, einschließlich zeitlicher Lokalität (z. B. auf Informationen, auf die kürzlich zugegriffen wurde, wird wahrscheinlich innerhalb einer gegebenen Zeit erneut zugegriffen) und räumlicher Lokalität (z. B. Informationen, auf die kürzlich zugegriffen wurde, werden wahrscheinlich nahe bei anderen Informationen, auf die zugegriffen wird, gespeichert). Auf Informationen, die basierend auf diesen Prinzipien in einem Cache gespeichert werden, kann schneller zugegriffen werden, als dies ansonsten der Fall wäre, wenn sie nur in System-RAM oder Massenspeicher gespeichert wären. Somit können Caches die Gesamtleistung von Computersystemen verbessern, indem sie Zugriffszeiten für mindestens einige Informationen (z. B. Daten oder Anweisungen), die von dem Prozessor verwendet werden sollen, reduzieren.
-
KURZDARSTELLUNG
-
Es wird eine Einrichtung zur Vorhersagebestätigung in einem Cache-Subsystem offenbart. In einer Ausführungsform schließt ein Cache-Subsystem einen Cache ein, der konfiguriert ist, um Informationen in Cache-Zeilen zu speichern, die in einer Vielzahl von Wegen angeordnet sind. Eine Anfordererschaltung ist konfiguriert, um eine Anforderung zum Zugreifen auf eine bestimmte Cache-Zeile in dem Cache zu erzeugen.
-
Eine Vorhersageschaltung ist konfiguriert, um eine Vorhersage darüber zu erzeugen, welcher von der Vielzahl von Wegen des Cache die bestimmte Cache-Zeile einschließt. Eine Vergleichsschaltung ist konfiguriert, um die Vorhersage durch Vergleichen eines bestimmten Adress-Tags, das der bestimmten Cache-Zeile zugeordnet ist, mit einem Cache-Tag, das einem vorhergesagten von der Vielzahl von Wegen entspricht, zu verifizieren. Die Vorhersageschaltung ist ferner konfiguriert, um als Reaktion darauf, dass die Vergleichsschaltung bestimmt, dass die Vorhersage korrekt war, eine Bestätigungsangabe zu speichern, die angibt, dass die Vorhersage korrekt war, und wobei für eine nachfolgende Zugriffsanforderung für die bestimmte Cache-Zeile der Cache konfiguriert ist, um auf eine Verifizierung der Vorhersage, dass die bestimmte Cache-Zeile in dem einen von der Vielzahl von Wegen enthalten ist, basierend auf der Bestätigungsangabe, die angibt, dass die Vorhersage korrekt war, zu verzichten.
-
In einer Ausführungsform schließt die Verifizierung der Vorhersage das Lesen eines Adress-Tags aus einem Adress-Tag-Speicher ein. Das Adress-Tag wird dem Komparator zusammen mit dem Cache-Tag bereitgestellt. Nach dem Bestimmen, dass das Adress-Tag und das Cache-Tag übereinstimmen, wird die Vorhersage als korrekt bestätigt, und die Vorhersageschaltung gibt das Gleiche an, was das Festlegen eines Bestätigungsbits bewirkt. Das Bestätigungsbit wird in einem Bestätigungsbit-Speicher gespeichert. Für eine nachfolgende Anforderung für die als korrekt vorhergesagte Cache-Zeile wird eine Abfrage in dem Bestätigungsbit-Speicher ausgeführt. Das Bestimmen, dass das Bestätigungsbit gesetzt ist, führt somit dazu, dass das Cache-Subsystem sowohl auf das Lesen des Cache-Tags aus dem Cache als auch auf den Vergleichsvorgang verzichtet. Das Verzichten auf die Tag-Lese- und -Vergleichsvorgänge kann somit zu nicht unerheblichen Einsparungen beim Stromverbrauch führen.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die folgende detaillierte Beschreibung nimmt Bezug auf die begleitenden Zeichnungen, die nun kurz beschrieben werden.
- 1 ist ein Blockdiagramm einer Ausführungsform eines Cache-Subsystems.
- 2 ist ein Blockdiagramm einer Ausführungsform eines Cache-Subsystems mit einem Anweisungscache.
- 3 ist ein Blockdiagramm einer Ausführungsform eines Cache-Subsystems mit einem Datencache.
- 4 ist ein Blockdiagramm einer Ausführungsform eines Bestätigungsbit-Speichers.
- 5 ist ein Flussdiagramm, das eine Ausführungsform eines Verfahrens zum Betreiben eines Cache-Subsystems veranschaulicht.
- 6 ist ein Flussdiagramm, das eine Ausführungsform eines Verfahrens zum Betreiben eines Cache-Subsystems veranschaulicht.
- 7 ist ein Blockdiagramm einer Ausführungsform eines beispielhaften Systems.
-
DETAILLIERTE BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
-
Die vorliegende Offenbarung ist auf eine Einrichtung und ein Verfahren zum Bestätigen einer Vorhersage eines Weges in einem Cache-Subsystem gerichtet. Die Wegvorhersage (Way Prediction) wird in Caches verwendet, um den Stromverbrauch zu reduzieren. Anstatt einen Block/eine Seite in allen Wegen für eine angeforderte Cache-Zeile zu suchen, kann eine Vorhersage darüber getroffen werden, in welchem bestimmten Weg die Cache-Zeile gespeichert ist. Wenn die Vorhersage korrekt ist, wird weniger Leistung verbraucht, als wenn alle Wege durchsucht wurden.
-
Beim Treffen einer Vorhersage kann ein Adress-Tag-Array gelesen werden, um ein Adress-Tag zu erhalten, das der angeforderten Cache-Zeile entspricht. Ein Cache-Tag, das dem vorhergesagten Weg entspricht, kann ebenfalls aus dem Cache gelesen werden. Das Adress-Tag wird dann mit dem Cache-Tag verglichen, das dem vorhergesagten Weg entspricht. Wenn die Tags übereinstimmen, wurde der Weg, in dem die angeforderte Cache-Zeile gespeichert ist, korrekt vorhergesagt. Doch selbst dann, wenn die Vorhersage korrekt ist, können das Lesen des Cache-Tags und der nachfolgende Vergleichsvorgang eine signifikante Menge an Leistung verbrauchen, obwohl nur ein einziger Weg durchsucht wird und nicht alle Wege des Cache. Darüber hinaus kann die Vorhersage für jeden nachfolgenden Zugriff auf die Cache-Zeile durchgeführt werden, wodurch der Aufwand für die ursprüngliche korrekte Vorhersage dupliziert wird.
-
Die vorliegende Offenbarung basiert auf der Erkenntnis, dass, sobald die Vorhersage einer Cache-Zeile korrekt ist, sie für nachfolgende Zugriffe auf diese Cache-Zeile weiterhin korrekt ist, sofern keine Änderung des Status der Cache-Zeile erfolgt. Die möglichen Änderungen schließen das Räumen der Cache-Zeile, das Ungültigmachen der Cache-Zeile, einen Kontextwechsel oder das Vorhersagen einer anderen virtuellen Seite ein. Wenn die Cache-Zeile jedoch in dem vorhergesagten Weg gültig gespeichert bleibt, kann auch die Vorhersage gültig bleiben.
-
Basierend auf der vorstehend erörterten Erkenntnis kann ein Bestätigungsbit für eine bestimmte Cache-Zeile hinzugefügt werden, wenn korrekt vorhergesagt wurde, dass sie in einem bestimmten Weg gespeichert ist. Wenn eine Vorhersage für eine bestimmte Cache-Zeile getroffen wird und diese als in dem vorhergesagten Weg gespeichert verifiziert wird, wird ein Bestätigungsbit gesetzt und bleibt dies so lange, bis eine Statusänderung erfolgt, wie eines der im vorstehenden Absatz gegebenen Beispiele. Für eine nachfolgende Zugriffsanforderung für die bestimmte Cache-Zeile wird das Bestätigungsbit gelesen, und das Cache-Subsystem kann auf das Lesen des Cache-Tags und damit den Vergleichsvorgang verzichten. Dies kann zu zusätzlichen Einsparungen beim Stromverbrauch gegenüber dem Szenario führen, in dem eine Cache-Zeile für eine Anzahl verschiedener Zugriffe korrekt vorhergesagt wird. Darüber hinaus können Leistungsvorteile erzielt werden, indem diejenigen Schritte, die zum Bestätigen der Vorhersage benötigt werden, eliminiert werden und somit der Aufwand für die ursprüngliche Vorhersage nicht dupliziert wird. Die Verwendung des Bestätigungsbits kann in bestimmten Situationen besonders nützlich sein, wie in Programmschleifen, in denen wiederholt auf eine bestimmte Cache-Zeile zugegriffen wird.
-
Es wird darauf hingewiesen, dass, während die Verifizierung einer Vorhersage, wie hierin erörtert, Tag-Lese- und -Vergleichsvorgänge einschließen kann, die Offenbarung nicht auf diese Weise einschränkend sein soll. Vielmehr soll die Offenbarung einen beliebigen geeigneten Mechanismus zum Verifizieren, dass eine Cache-Zeile in einem vorhergesagten Weg eines Cache gespeichert ist, abdecken.
-
Die vorliegende Offenbarung wird nun ausführlicher erörtert, beginnend mit einem Cache-Subsystem und dessen Betrieb im Hinblick auf das Vorhersagen eines Weges, das Bestätigen der Vorhersage und den Betrieb im Anschluss an diese Bestätigung. Beispiele für Cache-Subsysteme unter Verwendung des Bestätigungsbit-Mechanismus, ein Anweisungscache-Subsystem und ein Datencache-Subsystem werden dann erörtert. Es folgt eine Beschreibung einer Ausführungsform eines Speichers zum Speichern von Bestätigungsbits. Anschließend werden Flussdiagramme beschrieben, die Verfahren zum Betreiben eines Cache-Subsystems mit Tag-Bestätigungsbits veranschaulichen. Die Beschreibung schließt mit einer Erörterung eines beispielhaften Systems.
-
Cache-Subsystem mit Vorhersagebestätigung:
-
1 ist ein Blockdiagramm einer Ausführungsform eines Cache-Subsystems, in dem der Weg einer angeforderten Cache-Zeile vorhergesagt wird und, wenn die Vorhersage korrekt ist, ein Bestätigungsbit gesetzt wird. Es wird darauf hingewiesen, dass 1 nur einen Abschnitt eines Cache-Subsystems zeigt und zusätzliche Schaltungen darin eingeschlossen sein können, wie die nachstehend unter Bezugnahme auf 2 und 3 zu erörternden.
-
In der gezeigten Ausführungsform schließt das Cache-Subsystem 100 eine Vorhersageschaltung 102, einen Cache 104 und eine Vergleichsschaltung 120 ein. Der Cache 104 in der gezeigten Ausführungsform schließt N Wege ein und ist ein N-Wege-Satz-Assoziativcache. Ausführungsformen, in denen der Cache 104 vollständig assoziativ ist, sind möglich und werden ebenfalls in Betracht gezogen.
-
Das Cache-Subsystem 100 ist konfiguriert, um Cache-Zugriffsanforderungen von einem Anforderer 110 zu empfangen. Der Anforderer 110 kann eine von einer Anzahl verschiedener Arten von Funktionsschaltungseinheiten sein, die Zugriff auf einen Cache anfordern können. In einer Ausführungsform ist der Cache 104 ein Anweisungscache, der konfiguriert ist, um Anweisungen zu speichern, die von einem Prozessor ausgeführt werden sollen. Dementsprechend kann der Anforderer 110 in einer solchen Ausführungsform eine Anweisungsabrufeinheit sein, die eine Cache-Anforderung initiiert, um Anweisungen abzurufen. In einer anderen Ausführungsform ist der Cache 104 ein Datencache, während der Anforderer 110 ein Prozessorkern oder ein Abschnitt davon sein kann, der eine Anforderung für Daten, die bei der Ausführung einer Anweisung verwendet werden, initiiert. Allgemein gesagt, kann der Cache 104 entweder ein Anweisungscache oder ein Datencache sein, während der Anforderer 110 eine beliebige Art von Funktionsschaltung sein kann, die eine Zugriffsanforderung an den entsprechenden Cache-Typ senden würde.
-
Die Vorhersageschaltung 102 in der gezeigten Ausführungsform ist konfiguriert, um einen Weg vorherzusagen, in dem eine bestimmte Cache-Zeile gespeichert ist. Insbesondere erzeugt die Vorhersageschaltung 102 eine Vorhersage als Reaktion auf eine eingehende Zugriffsanforderung für eine vorhergesagte Cache-Zeile. Nach dem Empfangen einer Angabe der angeforderten Cache-Zeile erzeugt die Vorhersageschaltung 102 die Vorhersage und stellt selbige der Vergleichsschaltung 120 bereit. In der gezeigten Ausführungsform wird durch die Vorhersageschaltung 102 auf ein der angeforderten Cache-Zeile zugeordnetes Adress-Tag zugegriffen, und dieses wird als Teil des Vorhersageprozesses bereitgestellt.
-
Die Vergleichsschaltung 120 kann auch ein Cache-Tag empfangen, das von dem Cache 104 als Reaktion auf eine Anforderung, für die eine Vorhersage verifiziert werden soll, bereitgestellt wird. Das von dem Cache 104 bereitgestellte Cache-Tag kann dem vorhergesagten Cache-Weg entsprechen. Nach dem Erhalten sowohl des Cache-Tags als auch des Adress-Tags (von der Vorhersageschaltung 102) führt die Vergleichsschaltung 120 einen Vergleichsvorgang durch. Wenn das Adress-Tag mit dem Cache-Tag übereinstimmt, wird die Vorhersage als korrekt betrachtet. Andernfalls wird die Vorhersage als inkorrekt betrachtet, und es werden zusätzliche Wege durchsucht, um die angeforderte Cache-Zeile zu finden, sofern in dem Cache vorhanden. Wenn die angeforderte Cache-Zeile nicht in dem Cache gespeichert ist, kann vom Systemspeicher auf sie zugegriffen werden.
-
Als Reaktion auf das korrekte Vorhersagen, dass eine angeforderte Cache-Zeile in dem bestimmten Weg gespeichert ist, ist die Vorhersageschaltung 102 konfiguriert, um eine Bestätigungsangabe zu erzeugen und zu speichern. Wie nachstehend erörtert wird, kann die Bestätigungsangabe oder das Bestätigungsbit in einem speziellen Speicher gespeichert werden. Für nachfolgende Vorhersagen der bestimmten Cache-Zeile wird durch das Setzen des Bestätigungsbits eine Angabe bereitgestellt, dass eine vorherige Vorhersage eines bestimmten Weges, in dem die Cache-Zeile gespeichert ist, korrekt war. Somit kann das Cache-Subsystem 100 als Reaktion auf das Beobachten, dass das Bestätigungsbit gesetzt ist, auf bestimmte Vorgänge verzichten, wenn die Cache-Zeile, die der korrekten Vorhersage zugeordnet ist, erneut angefordert wird.
-
Wenn das Cache-Subsystem 100 bestimmt, dass das Bestätigungsbit in der gezeigten Ausführungsform gesetzt wurde, wird kein Lesen des Cache-Tags aus dem Cache 104 ausgeführt. Darüber hinaus wird kein Vergleichsvorgang durch die Vergleichsschaltung 120 durchgeführt, da kein Cache-Tag bereitgestellt ist. Dementsprechend werden für eine nachfolgende Anforderung einer Cache-Zeile, die korrekt als in einem bestimmten Weg gespeichert vorhergesagt wurde, die Cache-Tag-Lese- und -Vergleichsvorgänge eliminiert. Allgemeiner gesagt wird keine Verifizierung durchgeführt, wenn ein entsprechendes Bestätigungsbit angibt, dass der Weg, in dem eine angeforderte Cache-Zeile gespeichert ist, in einem vorherigen Zugriff korrekt vorhergesagt wurde. Das Eliminieren der Verifizierungsvorgänge kann zu erheblichen Einsparungen beim Stromverbrauch sowie Leistungsverbesserungen führen.
-
Wenn ein Bestätigungsbit als Reaktion auf eine korrekte Vorhersage gesetzt wird, kann es weiterhin gesetzt bleiben, solange die Vorhersage selbst gültig bleibt. Das Bestätigungsbit kann als Reaktion auf verschiedene Ereignisse, die die Cache-Zeile beeinflussen, die der korrekten Vorhersage zugeordnet ist, zurückgesetzt werden. Wenn zum Beispiel die Cache-Zeile ungültig gemacht wird, wird das Bestätigungsbit zurückgesetzt. In ähnlicher Weise wird das Bestätigungsbit zurückgesetzt, wenn die Cache-Zeile aus dem Cache geräumt wird. Ein Kontextwechsel kann ebenfalls eine Rücksetzung des Bestätigungsbits bewirken, da der Cache geleert werden kann. Solange jedoch die Cache-Zeile, die der korrekten Vorhersage zugeordnet ist, in der vorhergesagten Cache-Zeile gespeichert bleibt und auch gültig bleibt, kann das Bestätigungsbit in einem gesetzten Zustand bleiben.
-
Anweisungs- und Datencache-Subsysteme:
-
2 ist ein Blockdiagramm einer Ausführungsform eines Cache-Subsystems, die einen Anweisungscache implementiert. In der gezeigten Ausführungsform schließt das Cache-Subsystem 200 einen N-Wege-Satz-Assoziativcache, Anweisungscache 204, ein. Die Anzahl der Wege in jedem Satz ist in dieser bestimmten Ausführungsform zwei, wobei Weg 0 und Weg 1 Satz 0 umfassen. Obwohl nicht explizit gezeigt, würde Satz 1 für diese Ausführungsform die Wege 1 und 2 umfassen, und so weiter. Andere Ausführungsformen mit unterschiedlichen Anordnungen sind möglich und werden in Betracht gezogen. Der Anweisungscache 204 schließt auch eine Cache-Steuerung 209 ein, die verschiedene Cache-Steuerfunktionen durchführt. Diese Funktionen schließen, ohne darauf beschränkt zu sein, das Speichern von Cache-Zeilen, das Räumen von Cache-Zeilen, das Schreiben von Cache-Zeilen in den Anweisungscache 204, das Ungültigmachen von Cache-Zeilen sowie das Lesen von angeforderten Cache-Zeilen und deren und Bereitstellen an einen Anforderer ein.
-
In der gezeigten Ausführungsform ist ein Anweisungscache 204 konfiguriert, um Anweisungen zu speichern, die von einem Prozessor ausgeführt werden sollen. Dementsprechend ist der Anforderer in dieser besonderen Ausführungsform die Anweisungsabrufeinheit 210, die Zugriff auf Anweisungen anfordert, die als Teil eines Programms oder Anweisungs-Threads auszuführen sind. Eine Anweisungsabrufanforderung wird durch die Anweisungsabrufschaltung 210 sowohl an die Vorhersageschaltung 202 als auch an die Cache-Steuerung 209 bereitgestellt.
-
Wenn eine Anweisungsabrufanforderung für eine Cache-Zeile ausgegeben wird, wird die Anforderung sowohl von der Vorhersageschaltung 202 als auch von der Cache-Steuerung 209 empfangen. Die Vorhersageschaltung 202 in der gezeigten Ausführungsform kann auf die Anforderung reagieren, indem sie eine Vorhersage über einen bestimmten Weg, in dem die angeforderte Cache-Zeile im Anweisungscache 204 gespeichert ist, erzeugt. Beim Erzeugen der Vorhersage kann die Vorhersageschaltung 202 auf den Adress-Tag-Speicher 206 zugreifen, um ein Adress-Tag zu erhalten, das der angeforderten Cache-Zeile entspricht. Dieses Adress-Tag kann dann der Vergleichsschaltung 209 bereitgestellt werden, um in einem Verifizierungsvorgang verwendet zu werden. Der vorhergesagte Weg kann auch der Cache-Steuerung 209 bereitgestellt werden, die diese Informationen verwenden kann, um zu bestimmen, ob die angeforderte Cache-Zeile Gegenstand einer zuvor korrekten Vorhersage war, die noch gültig ist.
-
Der Adress-Tag-Speicher 206 in der gezeigten Ausführungsform kann virtuelle Adressen speichern, obwohl Ausführungsformen, bei denen physische Adressen darin gespeichert sind, möglich sind und in Betracht gezogen werden. Ebenfalls sind Ausführungsformen möglich und werden in Betracht gezogen, bei denen der Adress-Tag-Speicher 206 virtuelle Adressen speichert, während von einem Übersetzungspuffer (Translation Lookaside Buffer, TLB) auf entsprechende physische Adressen zugegriffen wird und diese als Basis zum Durchführen des Vergleichs durch die Vergleichsschaltung 208 verwendet werden. Für die Zwecke dieser Offenbarung kann in Betracht gezogen werden, dass der Adress-Tag-Speicher 206 virtuelle Adressen, physische Adressen speichert, und/oder auch, dass er mehrere Speicher umfasst, in denen virtuelle Adressen in einer Speicherschaltung gespeichert werden, während entsprechende physische Adressen in einer anderen Speicherschaltung (z. B. einem TLB wie oben erwähnt) gespeichert werden. Unabhängig davon, ob das bereitgestellte Adress-Tag virtuell oder physisch ist, führt die Vergleichsschaltung 208 in der gezeigten Ausführungsform den Vergleich durch, der eine Bestimmung ermöglicht, ob eine Wegvorhersage für eine angeforderte Cache-Zeile korrekt ist.
-
Die Cache-Steuerung 209 in der gezeigten Ausführungsform kann zuerst auf eine Anforderung für eine Cache-Zeile reagieren, indem sie eine Abfrage in dem Bestätigungsbit-Speicher 212 ausführt. In der gezeigten Ausführungsform ist der Bestätigungsbit-Speicher 212 konfiguriert, um Bestätigungsbits, die Cache-Indizes entsprechen, und entsprechende Wege, in denen verschiedene Cache-Zeilen gespeichert sein können, zu speichern. Unter Verwendung der Informationen über den vorhergesagte Weg und Informationen über die angeforderte Cache-Zeile kann die Cache-Steuerung 209 die Abfrage in dem Bestätigungsbit-Speicher ausführen, um zu bestimmen, ob in dem bestimmten Weg für die angeforderte Cache-Zeile ein Bestätigungsbit gesetzt wurde.
-
Wenn das Bestätigungsbit nicht gesetzt ist (z. B. Bestätigungsbit zurückgesetzt), wodurch angegeben wird, dass derzeit keine zuvor korrekte Vorhersage für die angeforderte Cache-Zeile gültig ist, kann die Cache-Steuerung 209 reagieren, indem sie ein Anweisungscache-Tag an die Vergleichsschaltung 209 bereitstellt, wobei der Anweisungscache-Tag dem vorhergesagten Weg entspricht. Als Reaktion darauf vergleicht die Vergleichsschaltung 208 das von dem Adress-Tag-Speicher empfangene Adress-Tag mit dem von dem Anweisungscache 204 empfangenen Anweisungs-Tag. Wenn die Tags übereinstimmen (ein „Treffer“), stellt die Vergleichsschaltung 208 eine diesbezügliche Angabe an die Vorhersageschaltung 202 bereit. Als Reaktion auf das Empfangen der Trefferangabe stellt die Vorhersageschaltung 202 eine Angabe an den Bestätigungsbit-Speicher 212 bereit, die den korrekt vorhergesagten Weg und einen entsprechenden Index angibt. Das Bestätigungsbit wird dann in den Bestätigungsbit 212 für den vorhergesagten Weg und den Index gesetzt. Zusätzlich wird eine Angabe darüber, dass die Vorhersage korrekt war, an die Cache-Steuerung 209 bereitgestellt, die reagieren kann, indem sie auf die angeforderte Cache-Zeile zugreift und sie an die Anweisungsabrufschaltung 210 bereitstellt.
-
Es wird darauf hingewiesen, dass Ausführungsformen möglich sind und in Betracht gezogen werden, in denen die Funktionen der Vorhersageschaltung 202 und der Vergleichsschaltung 208 in einer einzigen Einheit kombiniert sind. In solchen Ausführungsformen kann die darin implementierte Vergleichsschaltlogik die Quelle der Angabe, dass eine Vorhersage korrekt ist, sein. In der in 2 explizit veranschaulichten Ausführungsform ist es auch möglich und wird in Betracht gezogen, dass die Vergleichsschaltung 208 die Angabe der korrekten Vorhersage an den Bestätigungsbit-Speicher 212 bereitstellt.
-
Wenn eine Vorhersage nicht korrekt ist (wenn das Address-Tag und das Anweisungs-Tag nicht übereinstimmen), kann die Vorhersageschaltung 202 (oder die Vergleichsschaltung 208) eine diesbezügliche Angabe an die Cache-Steuerung 209 bereitstellen. Als Reaktion auf die inkorrekte Vorhersage kann die Cache-Steuerung 209 eine Suche nach zusätzlichen Wegen in dem Cache 204 auslösen, um zu bestimmen, ob die angeforderte Cache-Zeile darin gespeichert ist. Wenn die angeforderte Cache-Zeile nicht in irgendeinem Weg des Anweisungscache 204 gespeichert ist, kann durch eine Speichersteuerung eine Suche in einem Hauptsystemspeicher durchgeführt werden. Wenn sie in einem anderen Weg als dem vorhergesagten gespeichert ist, wird die angeforderte Cache-Zeile an die Anweisungsabrufschaltung 210 bereitgestellt.
-
Bei einer nachfolgenden Anforderung für den Zugriff auf eine bestimmte Cache-Zeile, die Gegenstand einer zuvor korrekten Vorhersage war, wird in der gezeigten Ausführungsform der Verifizierungsprozess nicht durchgeführt. Insbesondere kann die Cache-Steuerung 209 als Reaktion auf eine Anforderung für die bestimmte Cache-Zeile erneut eine Abfrage in dem Bestätigungsbit-Speicher 212 ausführen. Nach dem Empfangen einer Angabe von dem Bestätigungsbit-Speicher, dass das Bestätigungsbit für den vorhergesagte Weg der bestimmten Cache-Zeile gesetzt ist, aktiviert die Cache-Steuerung 209 in der gezeigten Ausführungsform ein Signal zum Verhindern der Verifizierung („Inhibit Verification), das von der Vergleichsschaltung 208 empfangen wird. Wenn dieses Signal von der Vergleichsschaltung 208 empfangen wird, gibt es an, dass die Cache-Steuerung 209 kein Anweisungs-Tag liest, das für den Vergleich bereitgestellt werden soll, und somit wird kein Vergleichsvorgang für diese bestimmte Anforderung durchgeführt. Dadurch, dass auf das Lesen des Anweisungs-Tags und den Vergleichsvorgang verzichtet wird, können erhebliche Einsparungen beim Stromverbrauch erreicht werden. Das Eliminieren der Tag-Lese- und -Vergleichsvorgänge kann auch die Leistung beschleunigen. Da das Bestätigungsbit gesetzt ist, reagiert die Cache-Steuerung 209 auch durch Bereitstellen der bestimmten Cache-Zeile aus dem entsprechenden Weg des Anweisungszwischenspeichers 204 an die Anweisungsabrufschaltung 210, ohne die Verzögerung, die durch Warten, bis bestimmt wird, dass eine Vorhersage verifiziert wird, entsteht.
-
Die Cache-Steuerung 209 in der gezeigten Ausführungsform ist konfiguriert, um als Reaktion auf bestimmte Bedingungen Bestätigungsbits, die im Bestätigungsbit 212 gespeichert sind, zurückzusetzen. Wenn zum Beispiel eine Cache-Zeile, die Gegenstand einer zuvor korrekten Vorhersage war, zu einem späteren Zeitpunkt als ungültig bestimmt wird, kann die Cache-Steuerung 209 eine Rücksetzung des entsprechenden Bestätigungsbits bewirken. Das Räumen einer Cache-Zeile, die zuvor korrekt als in einem bestimmten Weg gespeichert vorhergesagt wurde, kann ebenfalls eine Rücksetzung des entsprechenden Bestätigungsbits bewirken. Andere Bedingungen für das Zurücksetzen eines Bestätigungsbits schließen ein Ungültigmachen einer entsprechenden Adressübersetzung von virtuell zu physisch, einen Kontextwechsel, bei dem der Cache geleert wird (wodurch alle Bestätigungsbits zurückgesetzt werden), und so weiter ein.
-
3 ist ein Blockdiagramm einer Ausführungsform eines Cache-Subsystems, die einen Datencache implementiert. In der gezeigten Ausführungsform ist das Cache-Subsystem 300 ähnlich dem in 2 gezeigten Cache-Subsystem 200, wobei der Hauptunterschied darin besteht, dass der Cache 304 ein Datencache ist, der die Cache-Steuerung 309 einschließt. Der Anforderer 310 in der veranschaulichten Ausführungsform kann z. B. einer von einem oder mehreren Prozessorkernen sein, der den Datencache 304 verwendet. Allgemeiner kann der Anforderer 310 eine beliebige Art von Funktionsschaltung sein, die in der Lage ist, auf einen Datencache zuzugreifen und ihn zu verwenden. Die Vorhersageschaltung 302, die Vergleichsschaltung 308, der Adress-Tag-Speicher 306, die Cache-Steuerung 309 und der Bestätigungsbit-Speicher 312 können weitgehend ähnlich funktionieren wie ihre in 2 gezeigten Entsprechungen. Darüber hinaus können diese Schaltungseinheiten von einer Ausführungsform zur nächsten auf die gleiche Weise variieren wie die vorstehend in Bezug auf das Cache-Subsystem 200 erörterten. Kurz gesagt, sind das Cache-Subsystem 300 und die Komponenten davon in der gezeigten Ausführungsform konfiguriert, um Vorhersagen eines bestimmten Weges, in dem eine angeforderte Cache-Zeile von Daten gespeichert wird, zu treffen und zu verifizieren, als Reaktion auf eine korrekte Vorhersage ein Bestätigungsbit zu setzen und auf einen Verifizierungsprozess, der Tag-Lese- und -Vergleichsvorgänge einschließt, zu verzichten, wenn ein Bestätigungsbit angibt, dass eine vorherige Vorhersage für die angeforderte Cache-Zeile korrekt war.
-
Beispiel für einen Bestätigungsbit-Speicher:
-
4 ist ein Blockdiagramm einer Ausführungsform eines Bestätigungsbit-Speichers gemäß dieser Offenbarung, der verwendet wird, um Bestätigungsbits zu speichern, die korrekten Vorhersagen entsprechen. In der gezeigten Ausführungsform ist der Bestätigungsbit-Speicher 412 angeordnet, um eine Anzahl von Bestätigungsbits 411 zu speichern. In der gezeigten Ausführungsform gibt ein Bestätigungsbit, wenn es gesetzt ist (z. B. einen Wert von logisch 1 hat), an, dass ein Weg, in dem eine angeforderte Cache-Zeile gespeichert wird, zuvor als korrekt vorhergesagt wurde und dass die Vorhersage weiterhin gültig ist. Eine Vorhersage kann gültig bleiben, solange die entsprechende Cache-Zeile im Cache gültig gespeichert bleibt. Ein Bestätigungsbit kann in einen zurückgesetzten Status (z. B. auf einen Wert von logisch 0) versetzt werden, wenn eine entsprechende Cache-Zeile ungültig gemacht, geräumt wurde und so weiter, wie vorstehend beschrieben, sowie in Situationen, in denen keine korrekte Vorhersage für den entsprechenden Weg und Index getroffen wurde. Beim erneuten Füllen des Cache nach einem Kontextwechsel können die verschiedenen Bestätigungsbits in einem zurückgesetzten Zustand verbleiben, bis die darin gespeicherten Cache-Zeilen korrekt vorhergesagt werden.
-
Das Bestätigungsbit 412 in der veranschaulichten Ausführungsform ist nach Weg und Index angeordnet, wobei der Index verschiedenen Adress-Tags zugeordnet ist. Wenn also eine Cache-Zeile, die einem Adress-Tag zugeordnet ist, das dem Index A entspricht, korrekt als in z. B. Weg 2 gespeichert vorhergesagt wird, kann das Bestätigungsbit 411 am Schnittpunkt der Reihe Index A mit der Spalte Weg 2 gesetzt werden. Für nachfolgende Anforderungen für diese bestimmte Cache-Zeile kann ein Lesen durch dieses Bestätigungsbits eine Cache-Steuerung bewirken, dass die Verifizierung eines Vorhersageprozesses (z. B. vorstehend beschriebene Cache-Tag-Lese- und -Vergleichsvorgänge) eliminert wird.
-
Verfahren zum Betreiben eines Cache-Subsystems:
-
5 ist ein Flussdiagramm einer Ausführungsform eines Verfahrens zum Betreiben eines Cache-Subsystems. Wie hierin offenbart, kann das Verfahren 500 durch eine beliebige der verschiedenen vorstehend erörterten Hardware-Ausführungsformen ausgeführt werden. Hardware-Ausführungsformen, die hierin nicht erörtert werden, aber ansonsten in der Lage sind, das Verfahren 500 durchzuführen, werden ebenfalls als in den Schutzumfang dieser Offenbarung fallend betrachtet.
-
Das Verfahren 500 schließt das Speichern von Cache-Zeilen in einer Vielzahl von Wegen eines Cache (Block 505) ein. Das Verfahren schließt ferner das Erzeugen, unter Verwendung einer Anfordererschaltung, einer Anforderung zum Zugreifen auf eine bestimmte Cache-Zeile in dem Cache (Block 510) und danach das Erzeugen, unter Verwendung einer Vorhersageschaltung, einer Vorhersage darüber, welcher von der Vielzahl von Wegen des Cache die bestimmte Cache-Zeile einschließt, (Block 515) ein. Nach dem Erzeugen der Vorhersage fährt das Verfahren mit dem Verifizieren der Vorhersage unter Verwendung einer Vergleichsschaltung fort, wobei das Verifizieren das Vergleichen eines bestimmten Adress-Tags, das der bestimmten Cache-Zeile zugeordnet ist, mit einem Cache-Tag, das einem vorhergesagten von der Vielzahl von Wegen entspricht, (520) umfasst. Das Verfahren schließt auch das Speichern, unter Verwendung der Vorhersageschaltung, eines Bestätigungsbits als Reaktion darauf, dass der Vergleich angibt, dass die Vorhersage korrekt war (Block 525), und das Verzichten, für eine nachfolgende Zugriffsanforderung der bestimmten Cache-Zeile und basierend darauf, dass das Bestätigungsbit angibt, dass die Vorhersage korrekt war, auf die Verifizierung einer nachfolgenden Vorhersage, dass die bestimmte Cache-Zeile in dem einen von der Vielzahl von Wegen eingeschlossen ist, (Block 530) ein.
-
In verschiedenen Ausführungsformen schließt die Verifizierung einer nachfolgenden Anforderung das Verzichten auf ein Lesen des Cache-Tags aus dem Cache und das Verzichten auf das Vergleichen des bestimmten Adress-Tags und des Cache-Tags ein. Durch das Verzichten auf diese beiden Vorgänge können Einsparungen beim Stromverbrauch und Leistungsverbesserungen realisiert werden.
-
Verschiedene Ausführungsformen des Verfahrens 500 schließen das Speichern einer Vielzahl von Adress-Tags, einschließlich des bestimmten Adress-Tags, in einem Tag-Speicher ein, wobei einzelne der Vielzahl von Adress-Tags Einträgen entsprechen, die in dem Cache gespeichert sind. Für solche Ausführungsformen basiert das Bestimmen, dass die Vorhersage korrekt war, darauf, dass das bestimmte Adress-Tag mit dem Cache-Tag übereinstimmt. Nach dem Bestätigen einer Vorhersage als korrekt schließt das Verfahren das Speichern des Bestätigungsbits in einem Bestätigungsbit-Speicher ein. Für Anforderungen zum Zugriff auf eine Cache-Zeile schließen Ausführungsformen des Verfahrens das Ausführen einer Abfrage in dem Bestätigungsbit-Speicher als Reaktion auf eine nachfolgende Vorhersage der bestimmten Cache-Zeile, um zu bestimmen, ob eine vorherige Vorhersage korrekt war, ein.
-
Von Zeit zu Zeit können korrekt vorhergesagte Cache-Zeilen aus dem Cache geräumt werden. Dementsprechend schließen Ausführungsformen des Verfahrens 500 das Zurücksetzen eines bestimmten Bestätigungsbits, das in dem Bestätigungsbit-Speicher gespeichert ist, als Reaktion darauf, dass eine Cache-Zeile, die dem bestimmten Bestätigungsbit entspricht, aus dem Cache geräumt wird, ein. Andere Bedingungen können ebenfalls eine Rücksetzung eines Bestätigungsbits verursachen. Zum Beispiel können Ausführungsformen des Verfahrens 500 das Zurücksetzen eines bestimmten Bestätigungsbits, das in dem Bestätigungsbit-Speicher gespeichert ist, als Reaktion auf das Ungültigmachen einer Adressübersetzung, die einer Cache-Zeile zugeordnet ist, die dem bestimmten Bestätigungsbit entspricht, einschließen.
-
6 ist ein Flussdiagramm einer Ausführungsform eines Verfahrens zum Betreiben eines Cache-Subsystems. Wie bei dem vorstehend erörterten Verfahren 500 kann das Verfahren 600 durch einzelne der verschiedenen Hardware-Ausführungsformen und Komponenten ausgeführt werden, die unter Bezugnahme auf 1-4 beschrieben werden. Ausführungsformen eines Cache-Subsystems, das in der Lage ist, das Verfahren 600 auszuführen, aber hierin ansonsten nicht offenbart wird, werden ebenfalls als in den Schutzumfang dieser Offenbarung fallend betrachtet.
-
Das Verfahren 600 schließt ein Cache-Subsystem ein, das eine Anforderung für eine Cache-Zeile empfängt (Block 605). Danach schließt das Verfahren das Lesen eines Bestätigungsbit-Speichers sowie eines Tag-Speichers für die angeforderte Cache-Zeile ein (Block 610). Der Tag-Speicher schließt in verschiedenen Ausführungsformen Adress-Tags ein, und somit kann das Adress-Tag, das der angeforderten Cache-Zeile entspricht, aus dem Tag-Speicher abgerufen werden. Währenddessen kann der Bestätigungsbit-Speicher gelesen werden, um zu bestimmen, ob eine vorherige Vorhersage, dass die angeforderte Cache-Zeile in einem bestimmten Weg gespeichert wird, korrekt war. Wenn bestimmt wird, dass das entsprechende Bestätigungsbit gesetzt ist (Block 615, Ja), was eine vorherige korrekte Vorhersage des bestimmten Weges, in dem die angeforderte Cache-Zeile gespeichert wird, angibt, fährt das Verfahren mit dem Überspringen der Cache-Tag-Lese- und -Vergleichsvorgänge fort, während die angeforderte Cache-Zeile aus dem Cache abgerufen wird (Block 620). Danach kehrt das Verfahren 600 zu Block 605 zurück und wartet auf die nächste Cache-Zeilenanforderung.
-
Wenn das Bestätigungsbit nicht gesetzt ist (Block 615, Nein), wird ein Cache-Tag gelesen, der dem vorhergesagten Weg entspricht (Block 625). Anschließend wird ein Vergleichsvorgang durchgeführt, wobei das Cache-Tag mit einem Adress-Tag, das der angeforderten Cache-Zeile entspricht, verglichen wird (Block 630). Wenn das Adress-Tag mit dem Cache-Tag übereinstimmt (Block 635, Ja), ist die Vorhersage korrekt, und das Verfahren fährt mit dem Setzen und Speichern des Bestätigungsbits fort, während auf die Cache-Zeile aus dem vorhergesagten Weg zugegriffen wird (Block 640). Danach kehrt das Verfahren 600 zu Block 605 zurück, um auf die nächste Cache-Anforderung zu warten.
-
Wenn dagegen das Adress-Tag und das Cache-Tag nicht übereinstimmen (Block 635, Nein), wird eine Suche nach der angeforderten Cache-Zeile in anderen Wegen des Cache durchgeführt (Block 645), wobei die angeforderte Zeile bereitgestellt wird, wenn sie im Cache vorhanden ist. Das Verfahren 600 kehrt dann zu Block 605 zurück.
-
Beispielsystem:
-
Als Nächstes Bezug nehmend auf 7 ist ein Blockdiagramm einer Ausführungsform eines Systems 700 gezeigt, das die hierin beschriebenen Verfahren und Mechanismen beinhalten und/oder anderweitig nutzen kann. In der veranschaulichten Ausführungsform schließt das System 700 mindestens eine Instanz eines System-on-Chip (SoC) 706 ein, das mehrere Typen von Verarbeitungseinheiten, wie eine zentrale Verarbeitungseinheit (CPU), eine Grafikverarbeitungseinheit (GPU) oder anderweitig eine Kommunikations-Fabric und Schnittstellen zu Speichern und Eingabe/Ausgabe-Vorrichtungen, einschließen kann. In einigen Ausführungsformen schließen ein oder mehrere Prozessoren in dem SoC 706 mehrere Ausführungsspuren und eine Warteschlange für die Anweisungsausgabe ein. In verschiedenen Ausführungsformen ist das SoC 706 mit einem externen Speicher 702, Peripheriegeräten 704 und einer Leistungsversorgung 708 gekoppelt.
-
Es wird außerdem eine Leistungsversorgung 708 bereitgestellt, die dem SoC 706 die Versorgungsspannungen sowie dem Speicher 702 und/oder den Peripheriegeräten 704 eine oder mehrere Versorgungsspannungen zuführt. In verschiedenen Ausführungsformen stellt die Leistungsversorgung 708 eine Batterie (z. B. eine wiederaufladbare Batterie in einem Smartphone, einem Laptop- oder Tablet-Computer oder einer anderen Vorrichtung) dar. In einigen Ausführungsformen ist mehr als eine Instanz des SoC 706 eingeschlossen (und ist auch mehr als ein externer Speicher 702 eingeschlossen).
-
Der Speicher 702 ist ein beliebiger Speichertyp, wie ein dynamischer Direktzugriffsspeicher (DRAM), ein synchroner DRAM (SDRAM), ein SDRAM mit doppelter Datenrate (DDR, DDR2, DDR3 usw.) (einschließlich mobiler Versionen der SDRAMs, wie mDDR3 usw., und/oder Niedrigleistungsversionen der SDRAMs, wie LPDDR2 usw.), ein RAMBUS DRAM (RDRAM), ein statischer RAM (SRAM) usw. Eine oder mehrere Speichervorrichtungen sind auf eine Leiterplatte gekoppelt, um Speichermodule, wie Single Inline Memory Modules (SIMMs), Dual Inline Memory Modules (DIMMs) usw., zu bilden. Alternativ sind die Vorrichtungen mit einem SoC oder einer integrierten Schaltung in einer Chip-on-Chip-Konfiguration, einer Packageon-Package-Konfiguration oder einer Multichipmodulkonfiguration montiert.
-
Der SoC 706 in der gezeigten Ausführungsform kann verschiedene Ebenen von Cache-Speicher einschließen, von denen einige von verschiedenen Komponenten gemeinsam genutzt werden können, während andere dedizierte Caches sein können. Solche Cache-Speicher können als Teil entsprechender Cache-Subsysteme implementiert sein. Mindestens einige der Cache-Subsysteme auf dem SoC 706 können gemäß den verschiedenen Hardware- und Verfahrensausführungsformen arbeiten, die vorstehend unter Bezugnahme auf 1-6 erörtert wurden. Dementsprechend können mindestens einige der verschiedenen Cache-Subsysteme auf dem SoC 706 angeordnet sein, um einen Weg vorherzusagen, in dem eine angeforderte Cache-Zeile gespeichert wird, und ferner konfiguriert ist, um eine Angabe zu erzeugen und zu speichern, wenn eine Vorhersage korrekt ist. Für nachfolgende Anforderungen für den Zugriff auf eine aktuell gültige Cache-Zeile können solche Cache-Subsysteme die Angabe als Bestätigung verwenden, dass die Cache-Zeile in einem vorhergesagte Weg gespeichert wird, und dadurch einen Verifizierungsvorgang (z. B. die vorstehend erörterten Tag-Lese- und -Vergleichsvorgänge, obwohl andere Mechanismen zur Verifizierung möglich sind und in Betracht gezogen werden) eliminieren. Das Eliminieren des Verifizierungsvorgangs kann den Stromverbrauch reduzieren und kann zusätzlich die Leistung des Cache-Subsystems verbessern.
-
Die Peripheriegeräte 704 schließen eine beliebige gewünschte Schaltlogik, abhängig vom Typ des Systems 700, ein. Zum Beispiel schließen die Peripheriegeräte 704 in einer Ausführungsform Vorrichtungen für verschiedene Typen von drahtloser Kommunikation, wie Wi-Fi, Bluetooth, Mobilfunk, globales Positionsbestimmungssystem usw., ein. In einigen Ausführungsformen schließen die Peripheriegeräte 704 auch eine zusätzliche Speicherung, einschließlich einer RAM-Speicherung, einer Solid-State-Speicherung oder einer Plattenspeicherung, ein. Die Peripheriegeräte 704 schließen Benutzerschnittstellenvorrichtungen, wie einen Anzeigebildschirm, einschließlich Berührungsanzeigebildschirmen oder Mehrfachberührungsanzeigebildschirmen, Tastatur- oder andere Eingabevorrichtungen, Mikrofone, Lautsprecher usw., ein.
-
Wie veranschaulicht, ist das System 700 derart gezeigt, dass es Anwendung in einem breiten Spektrum von Bereichen findet. Zum Beispiel kann das System 700 als Teil der Chips, Schaltlogik, Komponenten usw. eines Desktop-Computers 710, Laptop-Computers 720, Tablet-Computers 730, Mobilfunk- oder Mobiltelefons 740 oder Fernsehgeräts 750 (oder einer mit einem Fernsehgerät gekoppelten Set-Top-Box) genutzt werden. Ebenfalls veranschaulicht sind eine Smartwatch und eine Gesundheitsüberwachungsvorrichtung 760. In einigen Ausführungsformen kann eine Smartwatch 760 eine Vielfalt von Funktionen im Zusammenhang mit Aufgaben eines Universalrechners einschließen. Zum Beispiel kann eine Smartwatch 760 Zugriff auf E-Mail, einen Mobiltelefondienst, einen Benutzerkalender und so weiter bereitstellen. In verschiedenen Ausführungsformen kann eine Gesundheitsüberwachungsvorrichtung eine dedizierte medizinische Vorrichtung sein oder anderweitig eine dedizierte gesundheitsbezogene Funktionalität einschließen. Zum Beispiel kann eine Gesundheitsüberwachungsvorrichtung die Vitalparameter eines Benutzers überwachen, die Nähe eines Benutzers zu anderen Benutzern zum Zweck der epidemiologischen Abstandswahrung, Kontaktverfolgung verfolgen, die Kommunikation im Fall einer Gesundheitsnotlage an einen Notfalldienst bereitstellen und so weiter. In verschiedenen Ausführungsformen kann die vorstehend erwähnte Smartwatch einige oder keine gesundheitsüberwachungsbezogenen Funktionen einschließen. Andere am Körper tragbare Vorrichtungen werden ebenfalls in Betracht gezogen, wie Vorrichtungen, die um den Hals getragen werden, Vorrichtungen, die im menschlichen Körper implantierbar sind, Brillen, die dazu ausgelegt sind, eine Erfahrung einer erweiterten und/oder virtuellen Realität bereitzustellen, und so weiter.
-
Das System 700 kann ferner als Teil eines Cloud-basierten Dienstes oder von Cloud-basierten Diensten 770 verwendet werden. Zum Beispiel können die zuvor erwähnten Vorrichtungen und/oder andere Vorrichtungen auf Rechenressourcen in der Cloud (d. h. entfernt angeordnete Hardware- und/oder Softwareressourcen) zugreifen. Ferner noch kann das System 700 in einer oder mehreren anderen Haushaltsvorrichtungen als den zuvor erwähnten genutzt werden. Zum Beispiel können Geräte innerhalb der Wohnung Zustände überwachen und erkennen, die Aufmerksamkeit erfordern. Zum Beispiel können verschiedene Vorrichtungen innerhalb der Wohnung (z. B. ein Kühlschrank, ein Kühlsystem usw.) den Status der Vorrichtung überwachen und eine Warnung an den Wohnungseigentümer (oder zum Beispiel eine Reparatureinrichtung) bereitstellen, sollte ein bestimmtes Ereignis erkannt werden. Alternativ kann ein Thermostat die Temperatur in der Wohnung überwachen und kann Einstellungen eines Heiz-/Kühlsystems basierend auf einem Verlauf von Reaktionen auf verschiedene Zustände durch den Wohnungseigentümer automatisieren. Ebenfalls in 7 veranschaulicht ist die Anwendung des Systems 700 auf verschiedene Transportmodi. Zum Beispiel kann das System 700 in den Steuer- und/oder Unterhaltungssystemen von Flugzeugen, Zügen, Bussen, Mietautos, Personenkraftwagen, Wasserfahrzeugen von Privatbooten bis hin zu Kreuzfahrtschiffen, (Miet- oder eigenen) Rollern und so weiter verwendet werden. In verschiedenen Fällen kann das System 700 verwendet werden, um eine automatisierte Führung (z. B. selbstfahrende Fahrzeuge), eine allgemeine Systemsteuerung und Anderes bereitzustellen. Diese beliebigen vielen anderen Ausführungsformen sind möglich und werden in Betracht gezogen. Es wird darauf hingewiesen, dass die in 7 veranschaulichten Vorrichtungen und Anwendungen nur veranschaulichend sind und nicht einschränkend sein sollen. Andere Vorrichtungen sind möglich und werden in Betracht gezogen.
-
Die vorliegende Offenbarung schließt Bezugnahmen auf „eine“ Ausführungsform oder Gruppen von „Ausführungsformen“ (z. B. „einige Ausführungsformen“ oder „verschiedene Ausführungsformen“) ein. Ausführungsformen sind verschiedene Implementierungen oder Instanzen der offenbarten Konzepte. Bezugnahmen auf „Ausführungsform“, „eine Ausführungsform“, „eine bestimmte Ausführungsform“ und dergleichen beziehen sich nicht notwendigerweise auf die gleiche Ausführungsform. Eine große Anzahl möglicher Ausführungsformen wird in Betracht gezogen, einschließlich der speziell offenbarten, sowie Modifikationen oder Alternativen, die in das Wesen oder den Schutzumfang der Offenbarung fallen.
-
Diese Offenbarung kann potenzielle Vorteile erörtern, die sich aus den offenbarten Ausführungsformen ergeben können. Nicht alle Implementierungen dieser Ausführungsformen weisen notwendigerweise beliebige oder alle potenziellen Vorteile auf. Ob ein Vorteil für eine bestimmte Implementierung erreicht wird, hängt von vielen Faktoren ab, von denen einige außerhalb des Schutzumfangs dieser Offenbarung liegen. Tatsächlich gibt es eine Reihe von Gründen dafür, warum eine Implementierung, die innerhalb des Schutzumfangs der Ansprüche fällt, möglicherweise einige oder alle der offenbarten Vorteile nicht aufweist. Zum Beispiel könnte eine bestimmte Implementierung eine andere Schaltlogik außerhalb des Schutzumfangs der Offenbarung einschließen, die in Verbindung mit einer der offenbarten Ausführungsformen einen oder mehrere der offenbarten Vorteile aufhebt oder verringert. Des Weiteren könnte auch eine suboptimale Designausführung einer bestimmten Implementierung (z. B. Implementierungstechniken oder -werkzeuge) offenbarte Vorteile aufheben oder verringern. Selbst unter der Annahme einer qualifizierten Implementierung kann die Erreichung von Vorteilen weiterhin von anderen Faktoren, wie den Umgebungsumständen, in denen die Implementierung bereitgestellt wird, abhängen. Zum Beispiel können Eingaben, die einer bestimmten Implementierung bereitgestellt werden, verhindern, dass ein oder mehrere Probleme, die in dieser Offenbarung behandelt werden, bei einer bestimmten Gelegenheit auftreten, wodurch der Vorteil seiner Lösung möglicherweise nicht erreicht wird. Aufgrund des Vorhandenseins möglicher Faktoren außerhalb dieser Offenbarung ist es ausdrücklich beabsichtigt, dass alle hierin beschriebenen potenziellen Vorteile nicht als Anspruchseinschränkungen ausgelegt werden sollen, die erfüllt werden müssen, um eine Verletzung nachzuweisen. Vielmehr soll die Identifizierung solcher potenziellen Vorteile den Typ/die Typen von Verbesserung veranschaulichen, der/die für Designer verfügbar sind, die den Nutzen dieser Offenbarung haben. Dass solche Vorteile in einem erlaubenden Sinn beschrieben werden (z. B. unter der Angabe, dass ein bestimmter Vorteil „auftreten kann“), soll keinen Zweifel daran vermitteln, ob solche Vorteile tatsächlich erreicht werden können, sondern es soll stattdessen die technische Realität anerkannt werden, dass die Erreichung solcher Vorteile häufig von zusätzlichen Faktoren abhängt.
-
Sofern nicht anders angegeben, sind Ausführungsformen nicht einschränkend. Das heißt, dass die offenbarten Ausführungsformen den Schutzumfang von Ansprüchen, die basierend auf dieser Offenbarung formuliert werden, nicht einschränken sollen, selbst wenn nur ein einzelnes Beispiel in Bezug auf ein bestimmtes Merkmal beschrieben wird. Die offenbarten Ausführungsformen sollen veranschaulichend und nicht einschränkend sein, sofern in der Offenbarung keine gegenteiligen Aussagen vorhanden sind. Die Anmeldung soll es somit ermöglichen, dass Ansprüche offenbarte Ausführungsformen sowie die Alternativen, Modifikationen und Äquivalente, die für den Fachmann, der den Nutzen dieser Offenbarung hat, offensichtlich sind, abdecken.
-
Zum Beispiel können Merkmale in dieser Anmeldung auf jede geeignete Weise kombiniert werden. Dementsprechend können während der Weiterverfolgung dieser Anwendung (oder einer Anwendung, welche die Priorität dieser beansprucht) neue Ansprüche auf eine beliebige solche Kombination von Merkmalen formuliert werden. Insbesondere können unter Bezugnahme auf die beiliegenden Ansprüche Merkmale aus abhängigen Ansprüchen mit denen anderer abhängiger Ansprüche kombiniert werden, wo dies geeignet ist, einschließlich Ansprüchen, die von anderen unabhängigen Ansprüchen abhängen. In ähnlicher Weise können Merkmale aus jeweiligen unabhängigen Ansprüchen, wo dies geeignet ist, kombiniert werden.
-
Während die beiliegenden abhängigen Ansprüche derart formuliert sein können, dass jeder von einem einzigen anderen Anspruch abhängt, werden entsprechend auch zusätzliche Abhängigkeiten in Betracht gezogen. Alle Kombinationen von Merkmalen in den abhängigen Ansprüchen, die mit dieser Offenbarung übereinstimmen, werden in dieser Offenbarung in Betracht gezogen und können in dieser oder einer anderen Anmeldung beansprucht werden. Zusammengefasst sind Kombinationen nicht auf diejenigen beschränkt, die in den beiliegenden Ansprüchen speziell aufgezählt sind.
-
Soweit zweckmäßig, wird auch in Betracht gezogen, dass in einem Format oder einem gesetzlichen Typ formulierte Ansprüche (z. B. Einrichtung) entsprechende Ansprüche eines anderen Formats oder gesetzlichen Typs (z. B. Verfahren) unterstützen sollen.
-
Da diese Offenbarung ein rechtliches Dokument ist, können verschiedene Begriffe und Phrasen einer behördlichen und rechtlichen Auslegung unterliegen. Es wird hiermit bekannt gemacht, dass die folgenden Absätze sowie Definitionen, die in der gesamten Offenbarung bereitgestellt werden, beim Bestimmen, wie basierend auf dieser Offenbarung formulierte Ansprüche auszulegen sind, verwendet werden sollen.
-
Bezugnahmen auf eine Singularform eines Elements (d. h. ein Substantiv oder eine Nominalphrase, vor dem/der ein „ein/e/r“ oder „der/die/das“ steht) sollen, sofern der Kontext nicht eindeutig etwas anderes vorschreibt, „ein/e/r oder mehrere“ bedeuten. Eine Bezugnahme auf „ein Element“ in einem Anspruch schließt somit ohne einen Begleitkontext keine zusätzlichen Instanzen des Elements aus. Eine „Vielzahl“ von Elementen bezieht sich auf einen Satz von zwei oder mehr der Elemente.
-
Das Wort „kann/können“ wird hierin in einem erlaubenden Sinn (d. h. das Potenzial aufweisend, in der Lage sein) und nicht in einem obligatorischen Sinn (d. h. muss/müssen) verwendet.
-
Die Begriffe „umfassend“ und „einschließlich“ und Formen davon sind offen und bedeuten „einschließlich, ohne darauf beschränkt zu sein“.
-
Wenn der Begriff „oder“ in dieser Offenbarung in Bezug auf eine Liste von Optionen verwendet wird, wird er im Allgemeinen derart verstanden, dass er in dem einschließenden Sinn verwendet wird, sofern nicht der Kontext etwas anderes vorsieht. Somit ist eine Angabe von „x oder y“ äquivalent zu „x oder y oder beide“ und deckt somit 1) x, aber nicht y, 2) y, aber nicht x, und 3) sowohl x als auch y ab. Andererseits macht eine Phrase, wie „entweder x oder y, aber nicht beide“ deutlich, dass „oder“ im exklusiven Sinn verwendet wird.
-
Eine Angabe von „w, x, y oder z oder eine beliebige Kombination davon“ oder „mindestens eines von ... w, x, y und z“ soll alle Möglichkeiten abdecken, die ein einzelnes Element bis zur Gesamtanzahl von Elementen in dem Satz beinhalten. Bei dem Satz [w, x, y, z] decken diese Phrasen zum Beispiel jedes einzelne Element des Satzes (z. B. w, aber nicht x, y oder z), beliebige zwei Elemente (z. B. w und x, aber nicht y oder z), beliebige drei Elemente (z. B. w, x und y, aber nicht z) und alle vier Elemente ab. Die Phrase „mindestens eines von ... w, x, y und z“ bezieht sich somit auf mindestens ein Element des Satzes [w, x, y, z], wodurch alle möglichen Kombinationen in dieser Liste von Elementen abgedeckt werden. Diese Phrase darf nicht derart ausgelegt werden, dass es erforderlich ist, dass mindestens eine Instanz von w, mindestens eine Instanz von x, mindestens eine Instanz von y und mindestens eine Instanz von z vorhanden sind.
-
Verschiedene „Kennzeichnungen“ können in dieser Offenbarung vor Substantiven oder Substantivphrasen stehen. Sofern nicht der Kontext etwas anderes vorsieht, beziehen sich verschiedene Kennzeichnungen, die für ein Merkmal (z. B. „erste Schaltung“, „zweite Schaltung“, „bestimmte Schaltung“, „gegebene Schaltung“ usw.) verwendet werden, auf verschiedene Instanzen des Merkmals. Zusätzlich implizieren die Kennzeichnungen „erste/r/s“, „zweite/r/s“ und „dritte/r/s“, wenn sie auf ein Merkmal angewendet werden, keinen Typ von Sortierung (z. B. räumlich, zeitlich, logisch usw.), sofern nicht anders angegeben.
-
Die Phrase „basierend auf“ wird verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Begriff schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, eine Bestimmung kann ausschließlich auf den angegebenen Faktoren basieren oder auf den angegebenen Faktoren und anderen, nicht angegebenen Faktoren basieren. Man betrachte die Phrase „A basierend auf B bestimmen“. Diese Phrase gibt an, dass B ein Faktor ist, der verwendet wird, um A zu bestimmen, oder der die Bestimmung von A beeinflusst. Diese Phrase schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor, wie C, basieren kann. Diese Phrase soll auch eine Ausführungsform abdecken, in der A ausschließlich basierend auf B bestimmt wird. Wie hierin verwendet, ist die Phrase „basierend auf/auf der Grundlage von“ gleichbedeutend mit der Phrase „basierend mindestens teilweise auf“.
-
Die Phrasen „als Reaktion auf” und „in Reaktion auf“ beschreiben einen oder mehrere Faktoren, die eine Wirkung auslösen. Diese Phrase schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Wirkung beeinflussen oder anderweitig auslösen können, entweder gemeinsam mit den angegebenen Faktoren oder unabhängig von den angegebenen Faktoren. Das heißt, eine Wirkung kann ausschließlich als Reaktion auf diese Faktoren erfolgen oder kann als Reaktion auf die angegebenen Faktoren sowie andere, nicht angegebene Faktoren erfolgen. Man betrachte die Phrase „A als Reaktion auf B durchführen“. Diese Phrase gibt an, dass B ein Faktor ist, der die Durchführung von A auslöst oder der ein bestimmtes Ergebnis für A auslöst. Diese Phrase schließt nicht aus, dass ein Durchführen von A auch als Reaktion auf einen anderen Faktor, wie C, erfolgen kann. Diese Phrase schließt auch nicht aus, dass ein Durchführen von A als Reaktion auf B und C gemeinsam erfolgen kann. Diese Phrase soll auch eine Ausführungsform abdecken, in der A ausschließlich basierend auf B durchgeführt wird. Wie hierin verwendet, ist die Phrase „basierend auf” gleichbedeutend mit der Phrase „basierend mindestens teilweise auf“. In ähnlicher Weise ist die Phrase „als Reaktion auf” gleichbedeutend mit der Phrase „mindestens teilweise als Reaktion auf”.
-
Innerhalb dieser Offenbarung können unterschiedliche Entitäten (die verschiedentlich als „Einheiten“, „Schaltungen“, andere Komponenten usw. bezeichnet werden können) als „konfiguriert“, um eine oder mehrere Aufgaben oder Operationen durchzuführen, beschrieben oder beansprucht werden. Diese Formulierung - [Entität], die konfiguriert ist, um [eine oder mehrere Aufgaben durchzuführen] - wird hierin verwendet, um auf eine Struktur (d. h. etwas Physisches) Bezug zu nehmen. Insbesondere wird diese Formulierung verwendet, um anzugeben, dass diese Struktur angeordnet ist, um die eine oder die mehreren Aufgaben während des Betriebs durchzuführen. Eine Struktur kann als „konfiguriert, um“ einige Aufgaben durchzuführen, bezeichnet werden, selbst wenn die Struktur aktuell nicht betrieben wird. Somit bezieht sich eine Entität, die als „konfiguriert, um“ einige Aufgaben durchzuführen, beschrieben oder angegeben wird, auf etwas Physisches, wie eine Vorrichtung, eine Schaltung, ein System mit einer Prozessoreinheit und einem Speicher, der Programmanweisungen speichert, die ausführbar sind, um die Aufgabe zu implementieren, usw. Diese Phrase wird hierin nicht verwendet, um auf etwas nicht Greifbares Bezug zu nehmen.
-
In einigen Fällen können verschiedene Einheiten/Schaltungen/Komponenten hierin als Durchführen eines Satzes von Aufgaben oder Operationen beschrieben werden. Es versteht sich, dass diese Entitäten „konfiguriert sind, um“ diese Aufgaben/Operationen durchzuführen, selbst wenn dies nicht spezifisch angegeben ist.
-
Der Begriff „konfiguriert, um“ soll nicht „konfigurierbar, um“ bedeuten. Eine unprogrammierte FPGA würde zum Beispiel nicht als „konfiguriert, um“ eine bestimmte Funktion durchzuführen, betrachtet werden. Diese unprogrammierte FPGA kann jedoch „konfigurierbar, um“ diese Funktion durchzuführen, sein. Nach geeigneter Programmierung kann die FPGA dann als „konfiguriert, um“ die bestimmte Funktion durchzuführen, bezeichnet werden.
-
Für Zwecke von US-Patentanmeldungen basierend auf dieser Offenbarung soll sich in einem Anspruch, dass eine Struktur „konfiguriert, um“ eine oder mehrere Aufgaben durchzuführen, ist, ausdrücklich nicht auf die Anwendung von 35 U.S.C. § 112(f) für dieses Anspruchselement berufen werden. Wenn sich der Anmelder während des Erteilungsverfahrens einer US-Patentanmeldung basierend auf dieser Offenbarung auf die Anwendung von Abschnitt 112(f) berufen möchte, gibt er Anspruchselemente unter Verwendung des Konstrukts „Mittel zum“ [Durchführen einer Funktion] an.
-
Verschiedene „Schaltungen“ können in dieser Offenbarung beschrieben werden. Diese Schaltungen oder „Schaltlogik“ bilden Hardware, die verschiedene Typen von Schaltungselementen, wie kombinatorische Logik, getaktete Speicherungsvorrichtungen (z. B. Flip-Flops, Register, Latches usw.), endliche Automaten, Speicher (z. B. Direktzugriffsspeicher, eingebetteten dynamischen Direktzugriffsspeicher), programmierbare Logikanordnungen und so weiter, einschließt. Schaltlogik kann benutzerdefiniert oder aus Standardbibliotheken entnommen sein. In verschiedenen Implementierungen kann Schaltlogik, wie es geeignet ist, digitale Komponenten, analoge Komponenten oder eine Kombination von beiden einschließen. Bestimmte Typen von Schaltungen können allgemein als „Einheiten“ (z. B. eine Decodiereinheit, eine arithmetisch-logische Einheit (ALU), eine Funktionseinheit, eine Speicherverwaltungseinheit (MMU) usw.) bezeichnet werden. Solche Einheiten beziehen sich ebenfalls auf Schaltungen oder Schaltlogik.
-
Die offenbarten Schaltungen/Einheiten/Komponenten und andere Elemente, die in den Zeichnungen veranschaulicht und hierin beschrieben sind, schließen somit Hardwareelemente wie die im vorstehenden Absatz beschriebenen ein. In vielen Fällen kann die interne Anordnung von Hardwareelementen innerhalb einer bestimmten Schaltung durch Beschreiben der Funktion dieser Schaltung angegeben werden. Zum Beispiel kann eine bestimmte „Decodiereinheit“ als die Funktion des „Verarbeitens eines Opcodes einer Anweisung und Umleitens dieser Anweisung zu einer oder mehreren einer Vielzahl von Funktionseinheiten“ durchführend beschrieben werden, was bedeutet, dass die Decodiereinheit „konfiguriert ist, um“ diese Funktion durchzuführen. Diese Funktionsangabe ist für den Fachmann auf dem Computergebiet ausreichend, um einen Satz möglicher Strukturen für die Schaltung näher zu bezeichnen.
-
In verschiedenen Ausführungsformen, wie im vorstehenden Absatz erörtert, können Schaltungen, Einheiten und andere Elemente durch die Funktionen oder Operationen definieren, für deren Implementierung sie konfiguriert sind. Die Anordnung dieser Schaltungen/Einheiten/Komponenten in Bezug aufeinander und die Art und Weise, in der sie interagieren, bilden eine mikroarchitektonische Definition der Hardware, die letztendlich in einer integrierten Schaltung hergestellt oder in ein FPGA programmiert ist, um eine physische Implementierung der mikroarchitektonischen Definition zu bilden. Somit wird die Mikroarchitekturdefinition von dem Fachmann als Struktur erkannt, aus der viele physische Implementierungen abgeleitet werden können, die alle in die breitere Struktur fallen, die durch die Mikroarchitekturdefinition beschrieben wird. Das heißt, dass der Fachmann, dem die gemäß dieser Offenbarung bereitgestellten Mikroarchitekturdefinition präsentiert wird, ohne unangemessenes Experimentieren und durch Anwendung durchschnittlicher Fähigkeiten die Struktur implementieren kann, indem er die Beschreibung der Schaltungen/Einheiten/Komponenten in einer Hardwarebeschreibungssprache (HDL), wie Verilog oder VHDL, codiert. Die HDL-Beschreibung wird häufig in einer Weise ausgedrückt, die als funktional erscheinen kann. Für einen Fachmann auf diesem Gebiet ist diese HDL-Beschreibung jedoch die Art und Weise, die verwendet wird, um die Struktur einer Schaltung, Einheit oder Komponente auf die nächste Implementierungsdetailebene zu transformieren. Eine solche HDL-Beschreibung kann die Form von Verhaltenscode (der üblicherweise nicht synthetisierbar ist), Register-Transfer-Sprache-Code (RTL-Code) (der im Gegensatz zu Verhaltenscode üblicherweise synthetisierbar ist) oder Strukturcode (z. B. eine Netzliste, die Logikgatter und deren Konnektivität angibt) annehmen. Die HDL-Beschreibung kann anschließend gegenüber einer Bibliothek von Zellen synthetisiert werden, die für eine gegebene Technologie zur Herstellung integrierter Schaltungen gestaltet ist, und kann aus Gründen der Zeittaktung, Energie und anderen Gründen modifiziert werden, um zu einer endgültigen Designdatenbank zu führen, die an eine Gießerei übermittelt wird, um Masken zu erzeugen und letztendlich die integrierte Schaltung herzustellen. Manche Hardware-Schaltungen oder Abschnitte davon können auch in einem schematischen Editor benutzerdefiniert ausgestaltet und zusammen mit synthetisierter Schaltlogik in das Design der integrierten Schaltung eingegliedert werden. Die integrierten Schaltungen können Transistoren und andere Schaltungselemente (z. B. passive Elemente, wie Kondensatoren, Widerstände, Spulen usw.) einschließen und eine Verbindung zwischen den Transistoren und Schaltungselementen herstellen. Manche Ausführungsformen können mehrere integrierte Schaltungen implementieren, die miteinander gekoppelt sind, um die Hardware-Schaltungen zu implementieren, und/oder diskrete Elemente können in manchen Ausführungsformen verwendet werden. Alternativ kann das HDL-Design zu einer programmierbaren Logikanordnung, wie einer anwenderprogrammierbaren Gatter-Anordnung (FPGA), synthetisiert werden und kann in der FPGA implementiert werden. Dieses Entkoppeln zwischen dem Design einer Gruppe von Schaltungen und der anschließenden Implementierung auf niedriger Ebene dieser Schaltungen führt üblicherweise zu dem Szenario, in dem der Schaltungs- oder Logikdesigner nie einen bestimmten Satz von Strukturen für die Implementierung auf niedriger Ebene angibt, der über eine Beschreibung dessen hinausgeht, wozu die Schaltung konfiguriert ist, da dieser Prozess auf einer anderen Stufe des Schaltungsimplementierungsprozesses durchgeführt wird.
-
Die Tatsache, dass viele verschiedene Kombinationen auf niedriger Ebene von Schaltungselementen verwendet werden können, um die gleiche Spezifikation einer Schaltung zu implementieren, führt zu einer großen Anzahl von äquivalenten Strukturen für diese Schaltung. Wie angegeben, können diese Schaltungen auf niedriger Ebene gemäß Änderungen in der Herstellungstechnologie, der zur Herstellung der integrierten Schaltung ausgewählten Gießerei, der Bibliothek von Zellen, die für ein bestimmtes Projekt bereitgestellt wird, usw. variieren. In vielen Fällen können die durch verschiedene Designwerkzeuge oder -methodiken zur Herstellung dieser verschiedenen Implementierungen vorgenommenen Auswahlen beliebig sein.
-
Darüber hinaus ist es für eine einzelne Implementierung einer bestimmten Funktionsspezifikation einer Schaltung üblich, dass sie für eine gegebene Ausführungsform eine große Anzahl an Vorrichtungen (z. B. Millionen von Transistoren) einschließt. Entsprechend macht es das bloße Volumen dieser Informationen undurchführbar, eine vollständige Angabe der Struktur auf niedriger Ebene, die verwendet wird, um eine einzelne Ausführungsform zu implementieren, geschweige denn die enorme Anordnung äquivalenter möglicher Implementierungen bereitzustellen. Aus diesem Grund beschreibt die vorliegende Offenbarung eine Struktur von Schaltungen unter Verwendung der Funktionskurzschrift, die üblicherweise in der Industrie eingesetzt wird.
-
Zahlreiche Variationen und Modifikationen werden für den Fachmann ersichtlich, sobald die vorstehende Offenbarung vollständig verstanden ist. Es ist beabsichtigt, dass die folgenden Ansprüche derart interpretiert werden, dass alle solchen Variationen und Modifikationen eingeschlossen sind.