-
Ein Grafiksystem auf Kachelbasis gibt 2D- oder 3D-Computergrafikbilder unter Verwendung von Wiedergabe auf Kachelbasis wieder. Als Teil einer Wiedergabetechnik auf Kachelbasis wird ein Wiedergaberaum in mehrere Regionen unterteilt, die Kacheln oder Blöcke genannt werden (hier als ”Kacheln” bezeichnet), die jeweils mehrere Pixel umfassen. Kacheln sind oft rechteckig, können aber andere Formen aufweisen, wie dreieckig oder sechseckig. Der Wiedergaberaum kann einem Bild zur Anzeige auf einem Bildschirm entsprechen, es sind aber auch andere Wiedergabeziele möglich, wie Texturdaten in Speicher. Kacheln können verschiedene Größen aufweisen, zum Beispiel können Kacheln 16×16 Pixel groß sein. In einem Beispiel für ein Bild mit hoher Bildschirmauflösung gibt es 1280×1024 Pixel. Deshalb kann als Beispiel ein Bild mit hoher Bildschirmauflösung in 5120 Kacheln unterteilt werden (die jeweils 16×16 Pixel umfassen).
-
Wiedergabevorrichtungen auf Kachelbasis können Primitiv-Daten (oder ”Parameter”) speichern, die geometrische Objekte oder eine andere Geometrie in Blöcken von Speicher repräsentieren, die Parameterblöcke genannt werden. Jeder Parameterblock enthält Parameter, die eine oder mehrere Primitive beschreiben, die sich in mehreren Kacheln befinden können. Primitive sind oft Polygone, typischerweise Dreiecke, können aber andere Formen aufweisen, wie Punkte, Linien oder Patches. Die Parameter des Parameterblocks repräsentieren den Ort der Primitiven (z. B. den Ort von Knoten, die die Primitive bilden, zum Beispiel in Bildschirmraumkoordinaten). Die Parameter des Parameterblocks können auch andere Merkmale (oder ”Attribute”) der Objekte oder Geometrie angeben, wie Farbe und Textur. Parameterblöcke für eine Szene werden in einem Parameterpuffer in einem Speicher gespeichert. Die Parameter werden analysiert, um zu bestimmen, welche der Parameter benötigt werden, um jede der Kacheln zu verarbeiten. Insbesondere wird eine Anzeigeliste für jede Kachel abgeleitet, die die etwaigen Parameter angibt, die Primitive beschreiben, die sich entweder teilweise oder ganz in der Kachel befinden. Auf diese Weise identifiziert die Anzeigeliste für eine Kachel jeden der Parameter, die benötigt werden, um die Kachel zu verarbeiten, indem Verweise auf die in dem Parameterpuffer gespeicherten relevanten Parameterdaten bereitgestellt werden.
-
Jede Kachel wird unter Verwendung ihrer Anzeigeliste wiedergegeben. Die Objekte werden gerastert, um zu bestimmen, welche Objekte in jedem der Fragmente der Kachel vorliegen. Bezüglich Terminologie sind ”Pixel” einzelne Bildpunkte, die in einem Endbild angezeigt werden, während ”Fragmente” einzelne Bildpunkte sind, die verarbeitet werden, um die Pixel zur Anzeige in einem Endbild zu erzeugen. Während der Rasterung der Objekte in einer Kachel werden die in der Anzeigeliste für diese Kachel angegebenen Parameter aus ihren jeweiligen Parameterblöcken aus dem Parameterpuffer in einen kleineren lokalen Speicher abgerufen (der zum Beispiel Onchip-Speicher ist), der als Parametercache bekannt ist. Der Parametercache ist gewöhnlich kleiner als zum Speichern der Parameter aller Parameterblöcke, die benötigt werden, um alle Kacheln in einer Szene wiederzugeben, erforderlich. Wenn eine Kachel verarbeitet wurde und neue Parameter in den Parametercache zum Verarbeiten einer neuen Kachel abgerufen werden, werden deshalb bestimmte der im Parametercache gespeicherten Parameter aus dem Parametercache geräumt.
-
Um zu bestimmen, welche der Parameter im Parametercache geräumt werden, wird in bestimmten Systemen eine LRU-Räumrichtlinie (Least Recently Used – vor längstem benutzt) verwendet. Gemäß der LRU-Räumrichtlinie sind die vor am längster Zeit benutzten Elemente (d. h. Parameter) die ersten aus dem Parametercache zu verwerfenden.
-
Kurzfassung
-
Diese Kurzfassung wird angegeben, um eine Auswahl von Konzepten in vereinfachter Form einzuführen, die nachfolgend in der ausführlichen Beschreibung weiter beschrieben werden. Diese Kurzfassung soll nicht Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Gegenstands identifizieren und auch nicht zum Begrenzen des Schutzbereichs des beanspruchten Gegenstands verwendet werden.
-
Ein Grafiksystem auf Kachelbasis weist einen Wiedergaberaum auf, der in mehrere Kacheln aufgeteilt wird, die zu verarbeiten sind. Grafikdatenelemente wie Parameter oder Texel werden zur Verwendung bei der Verarbeitung einer der Kacheln in einen Cache abgerufen. Es werden Indikatoren für die Grafikdatenelemente bestimmt, wodurch der Indikator für ein Grafikdatenelement die Anzahl der Kacheln angibt, denen dieses Grafikdatenelement zugeordnet ist. Die Grafikdatenelemente werden gemäß den Indikatoren der Grafikdatenelemente aus dem Cache geräumt. Zum Beispiel kann der Indikator für ein Grafikdatenelement ein Zählwert der Anzahl der Kacheln sein, denen dieses Grafikelement zugeordnet ist, wodurch das bzw. die Grafikdatenelemente mit dem kleinsten Zählwert bzw. den kleinsten Zählwerten aus dem Cache geräumt wird bzw. werden.
-
Insbesondere wird ein Verfahren zum Verarbeiten in einem Grafiksystem auf Kachelbasis bereitgestellt, das einen Wiedergaberaum aufweist, der in mehrere Kacheln unterteilt ist, denen Grafikdatenelemente zugeordnet sind, wobei das Verfahren umfasst: Abrufen von Grafikdatenelementen, die beim Verarbeiten einer der Kacheln zu verwenden sind, aus einem Grafikdatenspeicher in einen Cache; und Lesen der Grafikdatenelemente aus dem Cache zur Verwendung beim Verarbeiten der einen der Kacheln, wobei das Verfahren ferner umfasst: Bestimmen von Indikatoren für die Grafikdatenelemente, wobei für jedes der Grafikdatenelemente der Indikator für dieses Grafikdatenelement die Anzahl der Kacheln angibt, denen dieses Grafikdatenelement zugeordnet ist; Bestimmen, welche der Grafikdatenelemente in dem Cache zu räumen sind, auf der Basis der bestimmten Indikatoren; und Räumen der bestimmten Grafikdatenelemente aus dem Cache.
-
Die Grafikdatenelemente können in Grafikdatensätzen im Grafikdatenspeicher gespeichert werden, wobei jeder der Grafikdatensätze eines oder mehrere der Grafikdatenelemente umfasst. Beispielsweise kann ein bestimmtes Grafikdatenelement einer bestimmten Kachel zugeordnet sein, wenn ein Grafikdatenelement in dem Grafikdatensatz, der das bestimmte Grafikdatenelement umfasst, zum Verarbeiten der bestimmten Kachel zu verwenden ist, und für jedes der Graphikdatenelemente kann der Indikator für dieses Grafikdatenelemente die Anzahl der Kacheln angeben, die unter Verwendung eines Grafikdatenelementes in dem Grafikdatensatz, der dieses Grafikdatenelement umfasst, verarbeitet werden. Als ein anderes Beispiel kann ein bestimmtes Grafikdatenelement einer bestimmten Kachel zugeordnet sein, wenn das bestimmte Grafikdatenelement zum Verarbeiten der bestimmten Kachel zu verwenden ist, und für jedes der Grafikdatenelemente kann der Indikator für dieses Grafikdatenelement die Anzahl der Kacheln angeben, die unter Verwendung dieses Grafikdatenelementes verarbeitet werden.
-
Das Verfahren kann ferner ein Bestimmen von Begrenzungsregionen für die Grafikdatenelemente umfassen, wobei ein bestimmtes Grafikdatenelement einer bestimmten Kachel zugeordnet sein kann, wenn die Begrenzungsregion für dieses Grafikdatenelement die bestimmte Kachel wenigstens teilweise überlappt, und für jedes der Grafikdatenelemente kann der Indikator für dieses Grafikdatenelement die Anzahl der Kacheln angeben, die die Begrenzungsregion für dieses Grafikdatenelement wenigstens teilweise überlappen. Für jedes der Grafikdatenelemente kann die Begrenzungsregion für dieses Grafikdatenelement alle Grafikdatenelemente in dem Grafikdatensatz dieses Grafikdatenelementes enthalten.
-
Für jedes der Grafikdatenelemente kann die Anzahl der Kacheln, denen dieses Grafikdatenelement zugeordnet ist, während eines Schritts des Bestimmens bestimmt werden, welche der Grafikdatenelemente in jeder der Kacheln anwesend sind. Weiterhin kann das Verfahren ferner ein Bestimmen einer Reihenfolge, in der Kacheln zu verarbeiten sind, auf der Basis der Indikatoren der Grafikdatenelemente im Cache und auf der Basis des Schritts des Bestimmens, welche der Grafikdatenelemente in jeder der Kacheln anwesend sind, umfassen.
-
Die Grafikdatenelemente können Parameter sein, die eine Geometrie zur Aufnahme in die Kacheln definieren. Zum Beispiel können die Grafikdatensätze Parameterblöcke sein und der Grafikdatenspeicher kann ein Parameterpuffer sein.
-
Die Grafikdatenelemente können Texel von Texturen zur Aufnahme in die Kacheln sein. Zum Beispiel können die Grafikdatensätze Texturen sein und der Grafikdatenspeicher kann ein Texturspeicher sein.
-
Für jedes der Grafikdatenelemente kann der Indikator ein Zählwert der Anzahl der Kacheln sein, denen dieses Grafikdatenelement zugeordnet ist. Das Verfahren kann ferner ein Dekrementieren des Zählwerts für ein bestimmtes Grafikdatenelement umfassen, wenn eine Kachel, der das bestimmte Grafikdatenelement zugeordnet ist, verarbeitet worden ist. Der Schritt des Bestimmens, welche der Grafikdatenelemente im Cache zu räumen sind, kann ein Bestimmen umfassen, welches der Grafikdatenelemente im Cache den niedrigsten Zählwert aufweist. Der Schritt des Bestimmens, welche der Grafikdatenelemente im Cache zu räumen sind, kann weiterhin ein Bestimmen umfassen, ob irgendwelche der Grafikdatenelemente einen Zählwert gleich Null aufweisen. Falls der Zählwert des bestimmten Grafikdatenelementes 1 ist, wenn eine Kachel, der der bestimmte Grafikdatenelemente zugeordnet ist, verarbeitet worden ist, kann das Verfahren weiterhin ein Ungültigerklären des dem bestimmten Grafikdatenelemente entsprechenden Cacheeintrags umfassen. Der Zählwert kann begrenzt werden, so dass für jedes der Grafikdatenelemente, falls die Anzahl der Kacheln, denen dieses Grafikdatenelement zugeordnet ist, größer als ein vorbestimmtes Maximum ist, der Zählwert als gleich dem vorbestimmten Maximum bestimmt werden kann. Es kann der Fall sein, dass der Zählwert nur dekrementiert wird, falls der Zählwert kleiner als das vorbestimmte Maximum ist.
-
In einem Beispiel gibt für jedes der Grafikdatenelemente der Indikator für dieses Grafikdatenelement eine von zwei Bedingungen an, und die zwei Bedingungen sind: (i) dass die Anzahl der Kacheln, denen dieses Grafikdatenelement zugeordnet ist, gleich 1 ist und (ii) dass die Anzahl der Kacheln, denen dieses Grafikdatenelement zugeordnet ist, größer als 1 ist.
-
In einem anderen Beispiel gibt für jedes der Grafikdatenelemente der Indikator für dieses Grafikdatenelement eine von vier Bedingungen an, und die vier Bedingungen sind: (i) dass die Anzahl der Kacheln, denen dieses Grafikdatenelemente zugeordnet ist, gleich 1 ist, (ii) dass die Anzahl der Kacheln, denen dieses Grafikdatenelement zugeordnet ist, gleich 2 ist, (iii) dass die Anzahl der Kacheln, denen dieses Grafikdatenelement zugeordnet ist, gleich 3 oder 4 ist und (iv) dass die Anzahl der Kacheln, denen dieses Grafikdatenelement zugeordnet ist, größer als 4 ist.
-
Das Verfahren kann ferner ein Bestimmen umfassen, dass weitere Grafikdatenelemente in dem Cache abzurufen sind, und ein Bestimmen, dass zu wenig Platz in dem Cache zum Speichern der weiteren Grafikdatenelemente besteht, ohne bestimmte Grafikdatenelemente aus dem Cache zu räumen, wobei das Bestimmen, welcher der Grafikdatenelemente im Cache zu räumen ist, und das Räumen der bestimmten Grafikdatenelemente aus dem Cache in Reaktion auf das Bestimmen ausgeführt werden können, dass zu wenig Platz im Cache zum Speichern der weiteren Grafikdatenelemente besteht.
-
Falls die bestimmten Indikatoren für mehrere der Grafikdatenelemente gleich sind, kann der Schritt des Bestimmens, welche der Grafikdatenelemente im Cache zu räumen sind, ferner auf jeweiligen Zeiten basieren, zu denen die Grafikdatenelemente im Cache zuletzt benutzt wurden.
-
Die Indikatoren für die Grafikdatenelemente können im Cache gespeichert werden und können auch im Grafikdatenspeicher gespeichert werden. Als Alternative können die Indikatoren für die Grafikdatenelemente im Grafikdatenspeicher gespeichert werden, und es kann durch im Cache gespeicherte Verweise auf sie zugegriffen werden, die auf die im Grafikdatenspeicher gespeicherten Indikatoren verweisen. In einem einfachen Beispiel könnte ein Verweis ein Zeiger auf den Parameterblock sein. Der Cache kann einen Zeiger auf den Parameterblock einfach als die Adresse (oder das ”Tag”) der Daten (oder eine triviale Funktion davon) speichern.
-
Außerdem wird ein Grafiksystem auf Kachelbasis bereitgestellt, das einen Wiedergaberaum aufweist, der in mehrere Kacheln unterteilt ist, denen Grafikdatenelemente zugeordnet sind, wobei das Grafiksystem auf Kachelbasis eine Verarbeitungseinheit umfasst, ausgelegt zum Abrufen von Grafikdatenelementen, die beim Verarbeiten einer der Kacheln zu verwenden sind, aus einem Grafikdatenspeicher in einen Cache; Lesen der Grafikdatenelemente aus dem Cache zur Verwendung beim Verarbeiten der einen der Kacheln; Bestimmen von Indikatoren für die Grafikdatenelemente, wobei für jedes der Grafikdatenelemente der Indikator für dieses Grafikdatenelement die Anzahl der Kacheln angibt, denen dieses Grafikdatenelement zugeordnet ist; Bestimmen, welche der Grafikdatenelemente im Cache zu räumen sind, auf der Basis der bestimmten Indikatoren; und Räumen der bestimmten Grafikdatenelemente aus dem Cache.
-
Die obigen Merkmale können geeigneterweise kombiniert werden, wie für Fachleute ersichtlich ist, und können mit beliebigen der Aspekte der Beispiele kombiniert werden.
-
Kurze Beschreibung der Zeichnungen
-
Es werden nun Beispiele ausführlich durch Bezugnahme auf die beigefügten Zeichnungen beschrieben. Es zeigen:
-
1 ein Grafiksystem auf Kachelbasis;
-
2 Objekte, die in einem Wiedergaberaum eines Grafiksystems auf Kachelbasis enthalten sind;
-
3a einen ersten Parameterblock;
-
3b einen zweiten Parameterblock;
-
4 ein Flussdiagramm für ein Verfahren zum Verarbeiten von Daten in einem Grafiksystem auf Kachelbasis;
-
5 einen Parametercache;
-
6 ein anderes Objekt, das in einem Wiedergaberaum eines Grafiksystems auf Kachelbasis enthalten ist; und
-
7 weitere Objekte, die in einem Wiedergaberaum eines Grafiksystems auf Kachelbasis enthalten sind.
-
In den Figuren werden durchweg gemeinsame Bezugszahlen verwendet, um ähnliche Merkmale anzugeben.
-
Ausführliche Beschreibung
-
Es werden nun Ausführungsformen lediglich anhand von Beispielen beschrieben.
-
1 ist eine schematische Darstellung eines Grafiksystems 100 auf Kachelbasis. Das System 100 kann auf einer Vorrichtung wie einem Smartphone, Tablet, Laptop, Personal Computer (PC), Fernseher oder einer beliebigen anderen geeigneten Vorrichtung, in der Grafikdaten zu verarbeiten sind, implementiert werden. Das Grafiksystem 100 auf Kachelbasis ist ausgelegt zum Empfangen von Daten, z. B. aus einer Anwendung, Verarbeiten der Daten und Bereitstellen einer Ausgabe verarbeiteter Daten. Das System 100 umfasst eine Verarbeitungseinheit 102, die ausgelegt ist zum Verarbeiten der Daten. Die Verarbeitungseinheit 102 kann in Hardware oder Software oder einer Kombination davon implementiert werden. Zum Beispiel kann die Verarbeitungseinheit 102 in einer Festfunktionshardware implementiert werden, die Schaltungen umfasst, ausgelegt zum Verarbeiten von Daten entsprechend wie hier beschrieben. Zum Beispiel kann die Verarbeitungseinheit 102 eine GPU (Graphics Processing Unit) sein oder als ein Computerprogramm implementiert werden, das auf einer programmierbaren Vorrichtung läuft, wie etwa einer GPU oder einer CPU (Central Processing Unit).
-
Die Verarbeitungseinheit 102 umfasst mehrere Funktionsblöcke zum Verarbeiten von Daten, wobei bestimmte (aber der Klarheit halber nicht alle) der Funktionsblöcke der Verarbeitungseinheit 102 in 1 gezeigt sind. Insbesondere umfasst die Verarbeitungseinheit 102 eine Kachelungseinheit 106, einen Bildsyntheseprozessor- bzw. ISP-Block 108 und einen Textur- und Schattierungsprozessor- bzw. TSP-Block 110. Das System 100 umfasst außerdem einen Speicher 112, der ausgelegt ist zur Kommunikation mit der Verarbeitungseinheit 102. Der Speicher 112 umfasst einen Parameterpuffer 114 und einen Texturspeicher 116. Der Speicher 112 umfasst auch andere Speicherblöcke, die in 1 der Klarheit halber nicht gezeigt sind. Die Verarbeitungseinheit 102 umfasst außerdem einen ersten Parametercache 118, einen zweiten Parametercache 120 und einen Texturcache 122.
-
Ein Eingang der Kachelungseinheit 106 ist ausgelegt zum Empfangen von Grafikdaten. Ein Ausgang der Kachelungseinheit 106 ist mit einem Eingang des Parameterpuffers 114 gekoppelt. Ein erster Ausgang des Parameterpuffers 114 ist mit einem ersten Eingang des ISP-Blocks 108 gekoppelt. Ein Ausgang des ISP-Blocks 108 ist mit einem ersten Eingang des TSP-Blocks 110 gekoppelt. Ein zweiter Ausgang des Parameterpuffers 114 ist mit einem Eingang des ersten Parametercache 118 und mit einem Eingang des zweiten Parametercache 120 gekoppelt. Ein Ausgang des ersten Parametercache 118 ist mit einem zweiten Eingang des ISP-Blocks 108 gekoppelt. Ein Ausgang des zweiten Parametercache 120 ist mit einem zweiten Eingang des TSP-Blocks 110 gekoppelt. Ein Ausgang des Texturspeichers 116 ist mit einem Eingang des Texturcache 122 gekoppelt. Ein Ausgang des Texturcache 122 ist mit einem dritten Eingang des TSP-Cache 110 gekoppelt.
-
Im Betrieb ist die Verarbeitungseinheit 102 ausgelegt zum Empfangen von Grafikdaten, z. B. aus einer Anwendung, die gerade auf der Vorrichtung läuft, auf der das System 100 implementiert ist. Die Grafikdaten umfassen Geometriedaten, die Objekte zur Anzeige definieren. Die Kachelungseinheit 106 umfasst Logik zum Implementieren einer Anzahl von Funktionen in der Verarbeitungseinheit 102. Insbesondere empfängt die Kachelungseinheit 106 die Geometriedaten und leitet mehrere Primitive aus den Geometriedaten ab. Bestimmte Verarbeitung der Geometriedaten kann von der Verarbeitungseinheit 102 (in Funktionsblöcken, die in 1 nicht dargestellt sind) ausgeführt werden oder nicht, bevor die Kachelungseinheit 106 die Geometriedaten empfängt, oder nicht. Die Primitive repräsentieren geometrische Objekte oder andere Geometrie. Die Primitive beschreibende Parameter werden im Parameterpuffer 114 in Speicherblöcken gespeichert, die als Parameterblöcke bezeichnet werden. Jeder Parameterblock enthält Parameter, die mehrere Primitive beschreiben, die sich in mehreren Kacheln befinden können. Die Primitive sind oft Polygone wie Dreiecke, können aber auch andere Formen aufweisen, wie Linien, Punkte oder Patches. Die Parameter eines Parameterblocks repräsentieren den Ort der Primitiven (z. B. den Ort von Knoten, die die Primitive bilden, zum Beispiel in Bildschirmraumkoordinaten). Die Parameter des Parameterblocks können auch andere Merkmale des Objekts oder Geometrie wie Farbe und Textur angeben.
-
Die Kachelungseinheit 106 teilt einen Wiedergaberaum in mehrere Kacheln auf, die jeweils mehrere Fragmente umfassen. Die Kacheln können rechteckig (einschließlich quadratisch) sein, können aber auch andere Formen aufweisen, wie dreieckig oder sechseckig. Der Wiedergaberaum kann einem Bild zur Anzeige auf einem Bildschirm entsprechen, es sind aber auch andere Wiedergabeziele möglich, wie Texturdaten in Speicher.
-
Für jede Kachel bestimmt die Kachelungseinheit 106, ob sich jede der Primitiven wenigstens teilweise in dieser Kachel befindet. Das heißt, die Kachelungseinheit 106 bestimmt, ob sich wenigstens ein Teil der Primitive in einer betrachtbaren Region der Kachel befindet. Dies kann unter Verwendung einer Anzahl wohlbekannter Techniken erfolgen. Auf diese Weise leitet die Kachelungseinheit 106 eine Anzeigeliste für jede Kachel ab, die die etwaigen Parameter (z. B. Ort, Farbe und Textur der Primitive) identifizieren, die Primitive beschreiben, die sich entweder teilweise oder ganz in der Kachel befinden. Das heißt, die Anzeigeliste für eine Kachel umfasst eine Menge von Verweisen auf die Parameterblöcke, die Geometrie enthalten, die sich wenigstens teilweise mit der Kachel überlappt. Jeder der Verweise kann einer Maske zugeordnet sein, die die Teilmenge von Parametern aus diesem Parameterblock angibt, die Primitive repräsentiert, die in der Kachel anwesend sind. Auf diese Weise identifiziert die Anzeigeliste für eine Kachel jeden der zum Verarbeiten der Kacheln notwendigen Parameter durch Bereitstellen von Verweisen auf die im Parameterpuffer 114 gespeicherten relevanten Parameter.
-
Die Anzeigelisten werden aus der Kachelungseinheit 106 dem Parameterpuffer 114 zur Speicherung darin zugeführt. Wenn der ISP-Block 108 eine Kachel verarbeitet, ruft er die Anzeigeliste für die Kachel aus dem Parameterpuffer 114 ab und verwendet die Anzeigeliste zum Bestimmen, welche Primitive sich wenigstens teilweise mit der Kachel überlappen. Wenn der ISP-Block 108 die Kacheln verarbeitet, kann er zum Beispiel HSR (Hidden Surface Removal – Entfernung versteckter Oberflächen) implementieren, um zu bestimmen, welche der Primitiven an jeder Fragmentposition versteckt sind, und um Parameter zu entfernen, die sich nicht auf das wiedergegebene Bild auswirken, bevor der TSP-Block 110 die Kacheln verarbeitet. Um HSR für eine Kachel zu implementieren, verarbeitet der ISP-Block 108 die in der Anzeigeliste der Kachel angegebenen Parameter, um zu bestimmen, welche Primitiven an jeder Fragmentposition in der Kachel sichtbar sind und welche versteckt sind. Damit der ISP-Block 108 die Parameter in einer Kachel verarbeiten kann, werden die in der Anzeigeliste der Kachel enthaltenen Parameter aus dem Parameterpuffer 114 in den Parametercache 118 abgerufen. Der ISP-Block 108 liest dann die Parameter aus dem Parametercache 118 zur Verwendung beim Verarbeiten der Kachel, z. B. zur Implementierung der HSR.
-
Der TSP-Block 110 verarbeitet die Kacheln, um Texturierung und Schattierung auf die Objekte anzuwenden, die in der Kachel anwesend sind. Dem TSP-Block 110 wird eine Ausgabe aus dem ISP-Block 108 zugeführt, die angibt, welche der Parameter der TSP-Block 110 benötigen werden, um die Kacheln zu verarbeiten. Damit der TSP-Block 110 die Parameter in einer Kachel verarbeiten kann, werden die in der Ausgabe aus dem ISP-Block 108 angegebenen Parameter aus dem Parameterpuffer 114 in den Parametercache 120 abgerufen. Bestimmte oder alle der vom TSP-Block 110 zum Verarbeiten einer Kachel verwendeten Parameter können von den vom ISP-Block 108 zum Verarbeiten derselben Kachel verwendeten verschieden sein. Zum Beispiel können die vom ISP-Block 108 verwendeten Parameter den Ort von Primitiven betreffen, während vom TSP-Block 110 verwendete Parameter zusätzlich oder als Alternative auf Primitive anzuwendende Textur- und Schattierungsdaten betreffen können. Der TSP-Block 110 liest dann die Parameter aus dem Parametercache 120 zur Verwendung beim Verarbeiten der Kachel, z. B. zum Implementieren der Texturierung und Schattierung. Die Parameter können Angaben von Texturen (oder spezielle Texel aus Texturen) umfassen, die auf Objekte vom TSP-Block 110 anzuwenden sind. Die angegebenen Texturen (oder Texel) werden aus dem Texturspeicher 116 zur Verwendung vom TSP-Block 110 beim Verarbeiten der Kachel, z. B. zum Implementieren der Texturierung und Schattierung, in den Texturcache 122 abgerufen.
-
Die Ausgabe aus dem TSP-Block 110 kann zu (in 1 nicht gezeigt) weiteren Verarbeitungsblöcken in der Verarbeitungseinheit 102 geleitet werden, bevor sie aus der Verarbeitungseinheit 102 z. B. an einen Anzeigepuffer zur Anzeige auf einem Bildschirm der Vorrichtung, auf der das System 100 implementiert ist, ausgegeben wird.
-
In dem in 1 gezeigten Beispiel sind die Cachespeicher (118, 120 und 122) Onchip-Speicher, die kleiner sind als der entsprechende Parameterpuffer 114 und Texturspeicher 116, der im Speicher 112 gespeichert ist, wobei es sich zum Beispiel um einen Systemspeicher handeln kann. In anderen Beispielen kann wenigstens einer der Cachespeicher (118, 120 und/oder 122) nicht als Onchip-Speicher implementiert werden, d. h. kann nicht auf demselben Chip wie die Verarbeitungseinheit 102 implementiert werden. Die Parametercaches 118 und 120 sind gewöhnlich kleiner als zum Speichern aller im Parameterpuffer 114 gespeicherten Parameterblöcke, die benötigt werden, um alle Kacheln in einer Szene wiederzugeben, erforderlich (obwohl die Parametercaches 118 und 120 gewöhnlich groß genug sind, um alle Parameter zu speichern, die benötigt werden, um eine der Kacheln wiederzugeben, aber dies kann von der Menge und Komplexität der in der Kachel enthaltenen Objekte abhängen). Ähnlich ist der Texturcache 122 gewöhnlich kleiner als zum Speichern aller im Texturspeicher 116 gespeicherten Texturen, die benötigt werden, um alle Kacheln in einer Szene wiederzugeben, erforderlich. Damit der ISP-Block 108 alle Kacheln verarbeiten kann, werden wenigstens bestimmte der Parameter im Parametercache 118 geräumt, während weitere Parameter aus dem Parameterpuffer 114 in den Parametercache 118 abgerufen werden. Ähnlich werden wenigstens bestimmte der Parameter im Parametercache 120 und wenigstens bestimmte der Texel im Texturcache 122 geräumt, während weitere Parameter/Texel in den jeweiligen Cache abgerufen werden, damit der TSP-Block 110 alle Kacheln verarbeiten kann.
-
Es werden hier Räumrichtlinien beschrieben, die besser als die oben beschriebene LRU-Räumrichtlinie arbeiten. Die Leistungsfähigkeit der Räumrichtlinien kann durch den Anteil der Cacheleseanforderungen, die zu Cache-Treffern führen, d. h. das Trefferverhältnis des Cache, angegeben werden. Die Räumrichtlinien werden später mit Bezug auf die Parameter im Parametercache 118 beschrieben, dieselben Prinzipien können jedoch auf die Parameter im Parametercache 120 und die Texel im Texturcache 122 angewandt werden. Ferner können dieselben Prinzipien der Räumrichtlinien, die hier beschrieben werden, auf beliebige geeignete Grafikdatenelemente angewandt werden, die zur Verwendung beim Verarbeiten der Kacheln in einem Cache gespeichert werden.
-
2 ist eine vereinfachte Darstellung eines Wiedergaberaums 202 eines Grafiksystems auf Kachelbasis mit 20 Kacheln, die in einem 5 × 4-Array angeordnet sind. In dem Wiedergaberaum 202 sind zwei Objekte 204 und 206 gezeigt. Ein erstes der zwei Objekte umfasst vier Primitive mit den Kennzeichnungen 204 1, 204 2, 204 3 und 204 4. Es ist zu sehen, dass sich das erste Objekt mit sechs der Kacheln des Wiedergaberaums 202 überlappt. Diese sechs Kacheln befinden sich in der Mitte des 5 × 4-Arrays des Wiedergaberaums 202 und sind in 2 als Kacheln A bis F angegeben. Wenn es nicht ausdrücklich angegeben ist, soll der hier gebrauchte Begriff ”überlappen” wenigstens ”teilweise überlappen” bedeuten. Aus 2 ist erkennbar, dass sich die Primitive 204 1 mit drei Kacheln (Kacheln A, D und E) überlappt, sich die Primitive 204 2 mit vier Kacheln (Kacheln A, B, D und E) überlappt, sich die Primitive 204 3 mit zwei Kacheln (Kacheln B und E) überlappt und sich die Primitive 204 4 mit vier Kacheln (Kacheln B, C, E und F) überlappt. Ein zweites der zwei Objekte umfasst zwei Primitive mit der Kennzeichnung 206 1 und 206 2. Es ist ersichtlich, dass sich das zweite Objekt mit nur einer der Kacheln des Wiedergaberaums 202 überlappt. Insbesondere ist aus 2 erkennbar, dass sich beide Primitive 206 1 und 206 2 nur mit einer Kachel überlappen, nämlich Kachel A. Es werden gewöhnlich andere Objekte in der Szene vorliegen, die wahrscheinlich mehr Primitive als die in 2 gezeigten Objekte umfassen, aber diese sind in 2 der Klarheit halber nicht gezeigt.
-
Wie oben beschrieben, wird jedes Objekt in einem oder mehreren Parameterblöcken im Parameterpuffer 114 gespeichert. Jeder der Parameterblöcke umfasst Parameter, die die Primitive wenigstens eines der Objekte beschreiben. 3a ist ein vereinfachtes Diagramm eines ersten Parameterblocks (”Parameterblock 1”), der Parameter umfasst, die die Primitive des ersten Objekts 204 beschreiben. Insbesondere speichert im in 3a gezeigten Beispiel Parameterblock 1 den Parameter PB11, der die Primitive 204 1 beschreibt; den Parameter PB12, der die Primitive 204 2 beschreibt; der Parameter PB13, der die Primitive 204 3 beschreibt; und den Parameter PB14, der die Primitive 204 4 beschreibt.
-
Ähnlich ist 3b ein vereinfachtes Diagramm eines zweiten Parameterblocks (”Parameterblock 2”), der Parameter umfasst, die die Primitive des zweiten Objekts 206 beschreiben. Insbesondere speichert im in 3b gezeigten Beispiel Parameterblock 2 den Parameter PB21, der die Primitive 206 1 beschreibt; und den Parameter PB22, der die Primitive 206 2 beschreibt.
-
Die genaue Form der im Parameterpuffer 114 gespeicherten Parameter kann unterschiedlich sein und kann komplizierter als in 3a und 3b gezeigt sein. Zum Beispiel können die Parameterblöcke Knotendaten für die verschiedenen Knoten in einem Objekt speichern, wodurch die Parameter für eine Primitive Daten einer Gruppe der Knoten (z. B. drei Knoten, die ein Dreieck bilden) umfassen, um dadurch den Ort der Primitiven zu beschreiben. In diesem Fall ist der Parameter für eine Primitive tatsächlich eine Gruppe von Parametern, die Daten in Bezug auf eine Gruppe von Knoten umfassen kann. Die Parameterblöcke können ferner andere Daten als die Ortsdaten der Primitive (z. B. Farb- oder Texturdaten) als getrennte Datenelemente zu den Ortsdaten speichern, so dass die Parameter für eine Primitive Mengen von Ortsdaten, kombiniert mit anderen Daten für die Primitive, umfassen können. Es versteht sich deshalb, dass, wenn 3a und 3b einen Parameter (z. B. PB11) in Bezug auf eine Primitive zeigen, der Parameter tatsächlich mehrere Datenelemente aus dem Parameterblock umfassen kann, die kombiniert werden können, um die Primitive zu beschreiben. Ferner umfasst wie in 3a und 3b gezeigt jeder der Parameterblöcke ein diverses Datenfeld, das Daten in Bezug auf diesen Parameterblock umfasst. Die Daten in dem diversen Datenfeld können Zustandsdaten umfassen, um anzugeben, wie die Daten im Parameterblock interpretiert werden sollen.
-
4 zeigt ein Flussdiagramm für ein Verfahren zum Verarbeiten von Daten in einem Grafiksystem auf Kachelbasis, das eine neue Räumrichtlinie zum Räumen von Parametern aus dem Parametercache 118 implementiert.
-
Im Schritt S402 wird für jeden der Parameterblöcke ein Zählwert der Anzahl der Kacheln, die sich mit wenigstens einem Parameter des Parameterblocks überlappen, bestimmt. Diese Zählwerte geben deshalb eine Angabe der Anzahl der Kacheln, denen die Parameter eines Parameterblocks zugeordnet sind. Anders ausgedrückt, gibt der Zählwert für einen Parameterblock an, wie viele der Kacheln unter Verwendung mindestens eines Parameters aus dem Parameterblock verarbeitet werden. Zum Beispiel ist der Zählwert für Parameterblock 1 sechs, weil sich wie in 2 gezeigt sechs Kacheln (Kacheln A bis F) mit mindestens einer von den Parametern von Parameterblock 1 beschriebenen Primitiven (d. h. Primitive 204 1, 204 2, 204 3 und 204 4) überlappen. Ähnlich ist der Zählwert für Parameterblock 2 eins, weil sich wie in 2 gezeigt nur eine Kachel (Kachel A) mit mindestens einer von den Parametern von Parameterblock 2 beschriebenen Primitive (d. h. Primitive 206 1 und 206 2) überlappt.
-
In einem Beispiel ist es die Kachelungseinheit 106, die die Zählwerte für die Parameterblöcke im Schritt S402 bestimmt. Dies kann als Teil des Kachelungsprozesses durchgeführt werden, bei dem die Anzeigelisten für die Kacheln abgeleitet werden. Die Anzeigeliste für eine Kachel gibt die Parameter an, die zum Verarbeiten der Kachel zu verwenden sind. Als Alternative können im Schritt S402 die Informationen in den Anzeigelisten der Kacheln verwendet werden, um für jeden der Parameterblöcke den Zählwert der Anzahl der Kacheln zu bestimmen, die sich mit wenigstens einer durch die Parameter des Parameterblocks beschriebenen Primitive überlappen. Für jeden der Parameterblöcke wird der Zählwert, der im Schritt S402 bestimmt wird, im diversen Datenfeld dieses Parameterblocks im Parameterpuffer 110 gespeichert. Zwei Beispiele dafür, wie die Zählwerte aus dem Kachelungsprozess bestimmt werden können, sind (i) Setzen eines Flags, das jeder Kachelposition entspricht, jedes Mal, wenn irgendeine Primitive in einem Parameterblock in dieser Kachel gefunden wird, und dann Summieren der Anzahl der Flags am Ende des Kachelungsprozesses; oder (ii) Parsen der Anzeigelisten für jede Kachel und Inkrementieren eines Parameterblockzählers immer dann, wenn auf den Parameterblock verwiesen wird.
-
Im Schritt S404 ruft der ISP-Block 108 wie oben beschrieben Parameter aus dem Parameterpuffer 114 in den Parametercache 118 ab. Die Parameter, die in dem Parametercache 118 abgerufen werden, sind diejenigen, die in der Anzeigeliste einer aktuellen Kachel als notwendig zum Verarbeiten der aktuellen Kachel, die der ISP-Block 108 verarbeitet, angegeben sind. Wie oben beschrieben, stellt die Anzeigeliste Verweise auf die Parameterblöcke im Parameterpuffer 114 mit Masken bereit, um die Teilmenge von Parametern anzugeben, die aus den Parameterblöcken benötigt werden.
-
Zum Beispiel zeigt 5 Parameter, die vom ISP-Block 108 in den Parametercache 118 abgerufen werden, um die in 2 gezeigte Kachel A zu verarbeiten. Kachel A überlappt sich mit den Primitiven 204 1 und 204 2, die von Parametern PB11 und PB12 des im Parameterpuffer 114 gespeicherten Parameterblocks 1 beschrieben werden. Kachel A überlappt sich auch mit den Primitiven 206 1 und 206 2, die von Parametern PB21 und PB22 des im Parameterpuffer 114 gespeicherten Parameterblocks 2 beschrieben werden. Damit der ISP-Block 108 Kachel A verarbeiten kann, werden deshalb diese vier Parameter (PB11, PB12, PB21 und PB22) aus dem Parameterpuffer 114 im Schritt S404 in den Parametercache 118 abgerufen. Der Parametercache 118 kann andere als die in 5 gezeigten Parameter umfassen. Zum Beispiel kann der Parametercache 118 Parameter umfassen, die zuvor zur Verarbeitung vorheriger Kacheln vom ISP-Block 108 abgerufen wurden.
-
Wenn ein Parameter in den Parametercache 118 abgerufen wird, wird auch eine Angabe des Zählwerts für den Parameterblock des Parameters im Parametercache 118 gespeichert. Dies ist in 5 gezeigt, wodurch die Zählwerte für die Parameter im Parametercache 118 gespeichert werden. Wie oben beschrieben, sind die Zählwerte für die Parameter PB11 und PB12 aus Parameterblock 1 sechs und die Zählwerte für die Parameter PB21 und PB22 aus Parameterblock 2 sind eins.
-
Im Schritt S406 liest der ISP-Block 108 die Parameter aus dem Parametercache 118, die in der Anzeigeliste für Kachel A angegeben sind.
-
Im Schritt S408 verarbeitet der ISP-Block 108 Kachel A unter Verwendung der in der Anzeigeliste für Kachel A angegebenen Parameter. In dem in 2 gezeigten Beispiel werden deshalb die Parameter PB11, PB12, PB21 und PB22 vom ISP-Block 108 zum Verarbeiten von Kachel A verwendet. Wie oben beschrieben, kann der ISP-Block 108 HSR (Hidden Surface Removal) implementieren durch Bestimmung, welche der Primitive an jeder Fragmentposition sichtbar sind, und dann Entfernung von Parametern aus dem Bild, die sich auf das wiedergegebene Bild nicht auswirken. Die vom ISP-Block 108 verarbeiteten Kacheln werden zur weiteren Verarbeitung in der Verarbeitungseinheit 102, z. B. vom TSP-Block 110, ausgegeben. Verschiedene Kacheln aus demselben Wiedergaberaum können parallel (d. h. gleichzeitig) in verschiedenen Verarbeitungsblöcken (z. B. dem ISP-Block 108 und dem TSP-Block 110) in der Verarbeitungseinheit 102 verarbeitet werden.
-
Wenn der ISP-Block 108 Kachel A verarbeitet hat, können dann im Schritt S410 die Zählwerte für die Parameterblöcke, die wenigstens einen Parameter aufweisen, der eine Primitive beschreibt, die sich mit Kachel A überlappt, dekrementiert werden. Nachdem der ISP-Block 108 Kachel A verarbeitet hat, wird deshalb der Zählwert für Parameterblock 1 (gespeichert im diversen Datenfeld des Parameterblocks 1) von sechs auf fünf dekrementiert, und der Zählwert für Parameterblock 2 (gespeichert im diversen Datenfeld von Parameterblock 2) wird von eins auf null dekrementiert. Ferner werden die Zählwerte auch für jegliche der Parameter im Parametercache 118 dekrementiert, die in Parameterblöcken enthalten sind, deren Zählwert dekrementiert wird. Wenn der ISP-Block 108 Kachel A verarbeitet hat, werden deshalb die im Parametercache 118 für die Parameter aus den Parameterblöcken 1 und 2 gespeicherten Zählwerte dekrementiert, sodass der Zählwert für die Parameter PB11 und PB12 im Parametercache 118 von sechs auf fünf dekrementiert wird und die Zählwerte für die Parameter PB21 und PB22 im Parametercache 118 von eins auf null dekrementiert werden.
-
Deshalb geben die Zählwerte für Parameter eines Parameterblocks die Anzahl der Kacheln an, die noch zu verarbeiten sind, die sich mit wenigstens einem Parameter des Parameterblocks überlappen.
-
Im Schritt S412 wird (z. B. vom ISP-Block 108) bestimmt, ob es eine weitere vom ISP-Block 108 zu verarbeitende Kachel gibt. Wenn es keine andere vom ISP-Block 108 zu verarbeitende Kachel gibt, hat der ISP-Block 108 eine Verarbeitung der Kacheln im Wiedergaberaum beendet, wie durch den Bezug S414 in 4 angegeben. In diesem Fall wird die Verarbeitung der Kacheln in nachfolgenden Verarbeitungsblöcken (z. B. dem TSP-Block 110) in der Verarbeitungseinheit 102 fortgesetzt.
-
Falls jedoch der ISP-Block 108 eine weitere Kachel zu verarbeiten hat, geht das Verfahren vom Schritt S412 zum Schritt 416 über. Wenn zum Beispiel der ISP-Block 108 Kachel A verarbeitet hat, kann er dann bestimmen, dass Kachel B zu verarbeiten ist. Der ISP-Block 108 muss bestimmte Parameter lesen, um die nächste Kachel (z. B. Kachel B) zu verarbeiten. Der ISP-Block 108 versucht, die Parameter aus dem Parametercache 118 zu lesen. Im Schritt S416 wird (z. B. von Steuerlogik des Parametercache 118) bestimmt, ob der Parametercache 118 die Parameter aufweist, die dafür benötigt werden, dass der ISP-Block 108 die nächste Kachel verarbeitet. Das heißt, es wird bestimmt, ob irgendwelche weiteren Parameter dafür in den Parametercache 118 abgerufen werden müssen, dass der ISP-Block 108 die nächste Kachel verarbeitet.
-
Wenn im Schritt S416 bestimmt wird, dass der Parametercache 118 alle zum Verarbeiten der nächsten Kachel erforderlichen Parameter aufweist (d. h. dass keine weiteren Parameter aus dem Parameterpuffer 114 in den Parametercache 118 abgerufen werden müssen), geht das Verfahren vom Schritt S416 wieder zum Schritt 406 über, wobei der ISP-Block 108 die entsprechenden Parameter aus dem Parametercache 118 liest und im Schritt 408 die nächste Kachel verarbeitet, auf ähnliche Weise wie oben in Bezug auf Kachel A beschrieben.
-
Falls jedoch bestimmt wird, dass weitere Parameter im Parametercache 118 dafür benötigt werden, dass der ISP-Block 108 die nächste Kachel (z. B. Kachel B) verarbeitet, geht das Verfahren vom Schritt 416 zum Schritt 418 über. In dem Beispiel, dass die nächste vom ISP-Block 108 zu verarbeitende Kachel Kachel B ist, muss dann, wie aus 2 ersichtlich ist, der ISP-Block 108 die Parameter PB12, PB13 und PB14 verwenden, um die Kachel zu verarbeiten. Der Parameter PB12 befindet sich aufgrund der Verarbeitung von Kachel A bereits im Parametercache 118, aber die Parameter PB13 und PB14 sind weitere Parameter, die sich nicht im Parametercache 118 befinden, und müssen aus dem Parameterpuffer 114 abgerufen werden. Im Schritt 418 wird (z. B. von Steuerlogik des Parametercache 118) bestimmt, ob es genug Platz im Parametercache 118 zum Speichern der weiteren Parameter gibt. Falls bestimmt wird, dass es genug Platz im Parametercache 118 zum Speichern der weiteren Parameter gibt, geht das Verfahren wieder zum Schritt S404 über, und die weiteren Parameter werden aus dem Parameterpuffer 114 in den Parametercache 118 abgerufen. Die weiteren Parameter werden dann im Schritt S406 vom ISP-Block 108 aus dem Parameterpuffer 118 gelesen und im Schritt S408 wird die nächste Kachel (z. B. Kachel B) verarbeitet, ähnlich wie oben in Bezug auf Kachel A beschrieben.
-
Falls jedoch im Schritt S418 bestimmt wird, dass es nicht genug Platz im Parametercache 118 zum Speichern der weiteren Parameter (z. B. Parameter PB13 und PB14 zum Verarbeiten von Kachel B) gibt, müssen dann ein oder mehrere der Parameter, die im Parametercache 118 anwesend sind, aus dem Parametercache 118 geräumt werden, wenn die weiteren Parameter in den Parametercache 118 abgerufen werden. In diesem Fall geht das Verfahren zum Schritt S420 über, in dem (z. B. von Steuerlogik des Parametercache 118) bestimmt wird, welche der Parameter aus dem Parametercache 118 geräumt werden sollen. Die Bestimmung, welche Parameter aus dem Parametercache 118 zu räumen sind, basiert auf den Zählwerten der Parameter im Parametercache 118. Zum Beispiel kann bestimmt werden, dass der bzw. die Parameter mit dem niedrigsten Zählwert bzw. den niedrigsten Zählwerten im Parametercache 118 aus dem Parametercache 118 zu räumen sind.
-
Wie oben beschrieben, geben die Zählwerte für Parameter eines Parameterblocks die Anzahl der Kacheln an, die sich mit wenigstens einer von Parametern des Parameterblocks beschriebenen Primitive überlappen. Aufgrund des Dekrementierens der Zählwerte, während die Kacheln verarbeitet werden, geben die Zählwerte für Parameter eines Parameterblocks ferner die Anzahl der Kacheln an, die noch zu verarbeiten sind, die sich mit wenigstens einer von Parametern des Parameterblocks beschriebenen Primitive überlappen. Deshalb gibt der Zählwert eines Parameters im Parametercache 118 eine Angabe der Wahrscheinlichkeit an, dass dieser Parameter in der nächsten Kachel, die verarbeitet wird, verwendet wird. Das Räumen des bzw. der Parameter mit dem niedrigsten Zählwert bzw. den niedrigsten Zählwerten ist deshalb eine nützliche Räumrichtlinie, weil Parameter im Parametercache 118, die weniger wahrscheinlich zum Verarbeiten der nächsten Kachel verwendet werden (d. h. Parameter, die niedrigere Zählwerte aufweisen) vor Parametern im Parametercache 118 geräumt werden, die wahrscheinlicher zum Verarbeiten der nächsten Kachel verwendet werden (d. h. Parameter, die höhere Zählwerte aufweisen).
-
Im Schritt S422 werden die Parameter, die im Schritt S420 als zur Räumung aus dem Parametercache 118 geeignet bestimmt wurden (z. B. die im Parametercache 118, die die niedrigsten Zählwerte aufweisen) aus dem Parametercache 118 geräumt. Das Verfahren geht dann zum Schritt S404 über, und die weiteren Parameter werden aus dem Parameterpuffer 114 in den Parametercache 118 abgerufen. Die Räumung im Schritt S420 kann durch Abrufen von neuen Parametern, um die geräumten Parameter zu ersetzen, durchgeführt werden. Als Alternative kann ein aktiver Räumschritt ausgeführt werden, wodurch Parameter vor dem Schritt des Abrufens neuer Parameter, um die geräumten Parameter zu ersetzen, geräumt werden (z. B. durch Setzen eines Flags auf ”ungültig” für die relevante Cachezeile im Parametercache 118). Die weiteren Parameter werden dann vom ISP-Block 108 im Schritt S406 aus dem Parameterpuffer 118 gelesen, und die nächste Kachel (z. B. Kachel B) wird im Schritt S408 bearbeitet, auf ähnliche Weise wie oben mit Bezug auf Kachel A beschrieben.
-
In dem in 2 und 5 gezeigten Beispiel befinden sich, wenn Kachel A verarbeitet wurde, die Parameter PB11, PB12, PB21 und PB22 im Parametercache 118. Die Zählwerte von PB21 und PB22 sind niedriger als die Zählwerte von PB11 und PB12, so dass die Parameter PB21 und PB22 aus dem Parametercache 118 geräumt werden. Dadurch entsteht Platz im Parametercache 118 für weitere Parameter. Falls Kachel B die nächste zu bearbeitende Kachel ist, werden die Parameter PB13 und PB14 aus dem Parameterpuffer 114 in den Parametercache 118 abgerufen, so dass der Parametercache 118 die vier Parameter PB11, PB12, PB13 und PB14 aus Parameterblock 1 umfasst. Aus 2 ist ersichtlich, dass die Parameter PB12, PB13 und PB14 vom ISP-Block 108 zum Verarbeiten von Kachel B benötigt werden. Es war eine gute Entscheidung, die Parameter PB21 und PB22 aus dem Parametercache 118 zu räumen, weil diese Parameter zum Verarbeiten von Kachel B nicht benötigt werden. Es war auch eine gute Entscheidung, den Parameter PB12 nicht aus dem Parametercache 118 zu räumen, weil dieser Parameter zum Verarbeiten von Kachel B benötigt wird.
-
Die Räumrichtlinien auf der Basis der Zählwerte der Parameter, so wie sie hier beschrieben werden, können in dem in 2 und 5 gezeigten Beispiel besser arbeiten als eine LRU-Räumrichtlinie. Falls die Parameter vom ISP-Block 108 zum Verarbeiten von Kachel A in der Reihenfolge verwendet werden, in der sie in 5 im Parametercache 118 gezeigt sind, kann Verwendung einer LRU-Räumrichtlinie dazu führen, dass die Parameter PB11 und PB12 aus dem Parametercache 118 geräumt werden, wenn Kachel A verarbeitet wurde, während die Parameter PB21 und PB22 an diesem Punkt nicht aus dem Cache 118 geräumt werden können. Aus 2 ist ersichtlich, dass die Parameter PB21 und PB22 (die die Primitive 206 1 und 206 2 beschreiben) nicht wieder benötigt werden, um irgendeine Kachel außer der Kachel A zu verarbeiten, und deshalb ist es nicht nützlich, diese Parameter im Parametercache 118 zu halten. Im Gegensatz dazu werden die Parameter PB11, PB12, PB13 und PB14 (die die Primitive 204 1, 204 2, 204 3 und 204 4 beschreiben) wieder benötigt, um andere Kacheln zu verarbeiten, und deshalb kann es nützlich sein, diese Parameter im Parametercache 118 zu halten. Hier beschriebene Räumrichtlinien gewichten die Räumung von Parametern aus dem Parametercache 118 auf der Basis von Kachelabdeckung. Wie in den oben angegebenen Beispielen zu sehen ist, können diese Räumrichtlinien im Vergleich zu einer LRU-Räumrichtlinie zu einer höheren Cachetrefferrate führen. Das bedeutet, dass weniger Aufrufe des Parameterpuffers 114 im Speicher 112 notwendig sind, um Parameter in den Parametercache 118 abzurufen. Zugreifen auf den Speicher 112 kann verglichen mit anderen von der Verarbeitungseinheit 102 ausgeführten Prozessen ein langsamer Prozess sein, so dass eine Verringerung der Anzahl der Speicherzugriffe schnellere Verarbeitung von der Verarbeitungseinheit 102 erlaubt.
-
Das oben gegebene Beispiel von Parameterblock 2 ist ein gutes Beispiel dafür, dass die hier beschriebenen Räumrichtlinien besser als eine LRU-Räumrichtlinie arbeiten. Jede Mitgliedsprimitive von Parameterblock 2 befindet sich vollständig in einer Kachel (Kachel A). Nachdem diese Kachel verarbeitet wurde, besteht kein Grund, die Parameter PB21 und PB22 von Parameterblock 2 im Parametercache 118 zu halten. Unter einer LRU-Richtlinie werden die Parameter von Parameterblock 2 jedoch typischerweise für einen längeren Zeitraum im Parametercache 118 bleiben, wodurch die Wirksamkeit des Parametercache 118 verringert wird. Mit zunehmender Szenenkomplexität wird Geometrie kleiner, und die Situation, in der sich jede Mitgliedprimitive eines Parameterblocks vollständig in einer Kachel befindet, wird immer häufiger.
-
Hier beschriebene Räumrichtlinien berücksichtigen, mit wie vielen Kacheln sich ein Parameterblock überlappt. Parameter aus einem Parameterblock, der Primitive enthält, die sich nur mit einer oder einer kleinen Anzahl von Kacheln überlappen, werden weniger wahrscheinlich nochmals benötigt, um eine andere Kachel zu verarbeiten, als Parameter aus einem Parameterblock der Primitive enthält, die sich mit vielen Kacheln überlappen. Diese Erkenntnis führt zu den Räumrichtlinien, die die Räumung von Parametern von Parameterblöcken aus dem Parametercache 118 auf der Basis von Kachelabdeckung gewichten.
-
Wie oben beschrieben, wird für jeden der Parameterblöcke der Anzahl von Kacheln, die von den Primitiven in diesem Parameterblock überlappt werden, ein Zählwert unterhalten. Wenn eine Räumung aus dem Parametercache erforderlich ist, wird ein Parameter aus dem Parameterblock mit dem niedrigsten Zähler zur Räumung gewählt. Falls mehrere Parameter im Parametercache 118 mit demselben Zählwert anwesend sind, kann eine herkömmliche Räumrichtlinie (wie LRU) benutzt werden, um zu bestimmen, welche dieser Parameter zu räumen sind. Aufgrund der Lokalität der Eingangsdaten werden Parameter (die z. B. Objekte definieren), die in einer Kachel gefunden werden, wahrscheinlich in einer angrenzenden Kachel nochmals verwendet, so dass, wenn Kacheln in sequentieller Reihenfolge verarbeitet werden, die LRU-Räumrichtlinie eine gute Vorgabewahl ist, um zu bestimmen, welche Parameter aus dem Parametercache zu räumen sind, falls mehrere Parameter im Parametercache 118 mit demselben Zählwert anwesend sind.
-
In den oben beschriebenen Beispielen wird der Zählwert für einen Parameter eines Parameterblocks dekrementiert, falls irgendwelche der Parameter in diesem Parameterblock zum Verarbeiten einer Kachel verwendet werden. Die Zählwerte für Parameter im Parametercache 118 können deshalb null erreichen, wodurch angegeben wird, dass diese Parameter nicht nochmal verwendet werden, um weitere Kacheln im Wiedergaberaum 202 zu verarbeiten. Dementsprechend werden diese Parameter im Parametercache 118 nicht benötigt. Falls der Zählwert für einen Parameter im Parametercache 118 null erreicht, kann deshalb dieser Parameter aus dem Parametercache 118 geräumt werden. Das Räumen von Parametern mit Zählwerten von null hilft dabei, die Parametercacheauslastung zu maximieren, um dadurch die Anzahl der Aufrufe des Speichers 112, die benötigt werden, zu verringern.
-
Wie oben beschrieben kann die Anzahl der Kacheln, die von Primitiven in einem Parameterblock überlappt werden, auf mehrere Fachleuten bekannte Weisen bestimmt werden. Zum Beispiel kann eine Liste der überlappenden Kacheln während der Kachelung der Primitiven von der Kachelungseinheit 106 im Parameterblock gespeichert werden.
-
In einem anderen Beispiel kann wie in 6 dargestellt ein vorsichtiger Begrenzungskasten 606 in einem Wiedergaberaum 602 für einen Parameterblock konstruiert werden. In dem in 6 gezeigten einfachen Beispiel sind Parameter von drei Primitiven 604 1, 604 2 und 604 3 in einem Parameterblock enthalten, und der Begrenzungskasten 606 ist das kleinste rechteckige Array von Kacheln (mit den Kennzeichnungen D bis P in 6), das alle Kacheln umfasst, die sich mit wenigstens einer der Primitiven des Parameterblocks überlappen. Wie in 6 dargestellt, überlappt Primitive 604 1 die Kacheln L und M; Primitive 604 2 überlappt die Kachel M; und Primitive 604 3 überlappt die Kacheln I, J, K, M, N und O. Die Anzahl der im Begrenzungskasten 606 enthaltenen Kacheln kann als der Zählwert für die Parameter des Parameterblocks verwendet werden. Es ist ohne weiteres ersichtlich, dass keine der in 6 gezeigten Primitiven die Kacheln G, H oder P überlappt, aber die Kacheln G, H und P im Begrenzungskasten 606 enthalten sind. Falls das Begrenzungskastenverfahren verwendet wird, um die Zählwerte für die Parameter im Parameterblock wie in 6 gezeigt zu bestimmen, werden deshalb die Zählwerte als zehn bestimmt, obwohl sich nur sieben der Kacheln (Kacheln I, J, K, L, M, N und O) tatsächlich mit wenigstens einer der Primitiven des Parameterblocks überlappen. Der Zählwert für einen Parameter eines Parameterblocks ist deshalb nicht unbedingt strikt gleich der Anzahl der Kacheln, die wenigstens eine von Parametern des Parameterblocks beschriebene Primitive überlappen.
-
In den hier gegeben Beispielen werden rechteckige Begrenzungskästen verwendet, die einfach zu implementieren sind und gut an rechteckige Kacheln angepasst sind. Ein rechteckiger Begrenzungskasten ist jedoch nur ein Beispiel für eine Begrenzungsregion, die verwendet werden kann. Es können andere Begrenzungsregionen verwendet werden. Zum Beispiel können engere Grenzen wie Sphären und Polynome auf ähnliche Weise wie hier für die rechteckigen Begrenzungskästen beschrieben verwendet werden. Es gibt auch Verfahren zum Optimieren des rechteckigen Begrenzungskastens. In dem Beispiel von 6 kann ein solches Verfahren nicht überlappende Kacheln G, H und P ausschließen, um die kleinste Menge von sieben Kacheln zu produzieren, die von den Primitiven des Parameterblocks überlappt werden, zur Verwendung als die Begrenzungsregion.
-
Im Allgemeinen kann der Zählwert für einen Parameter als Indikator für die Anzahl der Kacheln betrachtet werden, denen der Parameter zugeordnet ist. Es kann ein beliebiger geeigneter Indikator verwendet werden. Der Zählwert wird als Gewichtung verwendet, um dazu verwendet zu werden, zu bestimmen, welche Parameter aus dem Parametercache 118 zu räumen sind. Dementsprechend muss der Zählwert beim Spezifizieren der Anzahl der Kacheln, denen ein Parameter zugeordnet ist, nicht exakt korrekt sein, solange er eine ungefähre Angabe der Anzahl der Kacheln gibt, denen ein Parameter zugeordnet ist. Auf diese Weise erlauben die Zählwerte einen Vergleich der Anzahl der Kacheln, denen ein erster Parameter zugeordnet ist, (ungefähr, wenn nicht sogar exakt) mit der Anzahl der Kacheln, denen ein zweiter Parameter zugeordnet ist, um zu bestimmen, welche der Parameter weniger Kacheln zugeordnet ist und deshalb ein geeigneter Kandidat zur Räumung aus dem Parametercache 118 ist. Ein bestimmter Parameter kann als einer bestimmten Kachel zugeordnet betrachtet werden, falls ein Parameter im Parameterblock, der den bestimmten Parameter umfasst, zum Verarbeiten der bestimmten Kachel zu verwenden ist (d. h. eine der Primitiven des Parameterblocks überlappt die bestimmte Kachel). Wenn das Begrenzungskastenverfahren verwendet, kann ein bestimmter Parameter als einer bestimmten Kachel zugeordnet betrachtet werden, falls der den bestimmten Parameter enthaltende Begrenzungskasten die bestimmte Kachel überlappt.
-
In den oben beschriebenen Beispielen hat jeder Parameterblock seinen eigenen Zählwert. In anderen Beispielen kann die Granularität der Zählwerte jedoch anders sein. Zum Beispiel kann jeder Parameter seinen eigenen Zählwert haben, der von den Zählwerten anderer Parameter desselben Parameterblocks verschieden sein kann und der die Anzahl der diesem Parameter zugeordneten Kacheln angibt, z. B. die Anzahl der Kacheln, die unter Verwendung des Parameters zu verarbeiten sind. Das Bestimmen der Anzahl der Kacheln, die einem Parameter zugeordnet sind, kann Verwendung der von der Kachelungseinheit 106 während des Kachelns der Primitiven in der Szene erzeugten Anzeigelisten umfassen. Als Alternative kann jeder Parameter seinen eigenen vorsichtigen Begrenzungskasten aufweisen, der verwendet wird, um die Anzahl der diesem Parameter zugeordneten Kacheln zu bestimmen. Als ein anderes Beispiel kann jeder Block Daten (der z. B. mehrere Parameter umfasst), der in eine Cachezeile des Parametercache 118 geladen werden kann, seinen eigenen Zählwert aufweisen, der die Anzahl der Kacheln angibt, die unter Verwendung mindestens eines Parameters in dem Block Daten zu verarbeiten sind. In allen diesen Beispielen wird ungeachtet der Granularität der Zählwerte für jeden der Parameter ein Zählwert bestimmt. Wenn zum Beispiel die Zählwerte auf der Granularität der Parameterblöcke sind, bestimmt der Schritt des Bestimmens eines Zählwerts für einen Parameterblock die Zählwerte für jeden der Parameter dieses Parameterblocks, d. h. jeder der Parameter im Parameterblock weist einen Zählwert auf, der gleich dem ist, der für den Parameterblock bestimmt wurde.
-
Wenn eine Kachel verarbeitet wird und die Zählwerte dekrementiert werden, sollte es der Fall sein, dass der Zählwert für jeden Parameter, der der verarbeiteten Kachel zugeordnet ist, dekrementiert wird. Die Bestimmung, welche der Parameter zum Zwecke des Dekrementierens der Zählwerte einer verarbeiteten Kachel zugeordnet sind, sollte mit der Bestimmung der Anzahl der Kacheln übereinstimmen, denen die Parameter zugeordnet sind, wenn die Zählwerte bestimmt werden. Falls zum Beispiel das Begrenzungskastenverfahren verwendet wird, um die Zählwerte zu bestimmen (z. B. dergestalt, dass alle in 6 gezeigten Parameter als allen zehn der Kacheln G bis P zugeordnet bestimmt werden, um dadurch die Zählwerte für die Parameter auf zehn zu setzen), sollten dann, wenn irgendwelche der Kacheln im Begrenzungskasten verarbeitet werden, die Zählwerte für die Parameter im Begrenzungskasten dekrementiert werden. Dies gilt sogar für die Verarbeitung von Kacheln im Begrenzungskasten, die sich mit keinen der Primitiven im Parameterblock überlappen, z. B. zur Verarbeitung der Kacheln G, H und P.
-
In den oben gegebenen Beispielen werden die Zählwerte für Parameter dekrementiert, während den Parametern zugeordnete Kacheln verarbeitet werden. In anderen Beispielen werden die Zählwerte jedoch nicht dekrementiert, d. h. Schritt S410 wird aus dem Verfahren in den mit Bezug auf 4 beschriebenen Beispielen weggelassen. In Beispielen, bei denen die Zählwerte nicht dekrementiert werden, geben die Zählwerte für Parameter eines Parameterblocks die Anzahl der Kacheln im Wiedergaberaum 202 an, die sich mit wenigstens einem Parameterblock überlappen, gleichgültig, ob die Kacheln bereits verarbeitet wurden. Eine derartige Räumrichtlinie, bei der Zählwerte nicht dekrementiert werden, kann immer noch besser als eine LRU-Räumrichtlinie (im Hinblick auf ein Cachetrefferverhältnis) arbeiten, obwohl es nicht so gut wie die hier beschriebenen Räumrichtlinien arbeiten kann, die die Dekrementierung von Zählern implementieren (im Hinblick auf ein Cachetrefferverhältnis). Die Kosten der Aufnahme der zum Implementieren der Dekrementierung von Zählern erforderlichen Verarbeitung überwiegen jedoch die durch Dekrementierung von Zählern erhaltenen Vorteile, so dass in bestimmten Szenarien die Implementierung einer Räumrichtlinie, die die Zähler nicht dekrementiert, nützlich sein kann.
-
In den obigen Beispielen wird nicht beschrieben, dass es eine Obergrenze für die Werte der Zählwerte gibt. In praktischen Systemen ist es jedoch wahrscheinlich, dass die Anzahl der zur Verwendung für die Zählwerte vergebenen Bit begrenzt ist. Zum Beispiel könnten N Bit verwendet werden, um jeden der Zählwerte zu repräsentieren, wobei die möglichen Werte der mit C bezeichneten Zählwerte eine ganze Zahl im Bereich 0 ≤ C ≤ 2N – 1 sind. Deshalb gibt es einen vorbestimmten Maximalwert, den der Zählwert annehmen kann, Cmax, gegeben durch 2N – 1. Zum Beispiel können drei Bit verwendet werden, um jeden der Zählwerte zu repräsentieren, so dass der Wert von Cmax gleich 7 ist. In diesem Beispiel können deshalb die Werte der Zählwerte C im Bereich 0 ≤ C ≤ 7 liegen. Es ist nützlich, die Anzahl der zum Repräsentieren jedes der Zählwerte verwendeten Bit zu begrenzen, so dass die Menge an zum Speichern der Zählwerte verwendetem Speicher begrenzt ist. Dies gilt insbesondere, wenn die Zählwerte an zwei Stellen gespeichert werden, z. B. im diversen Feld in einem Parameterblock im Parameterpuffer 114 und im Parametercache 118, wie in 5 gezeigt. Der Speicher des Parametercache 118 ist sehr gefragt, so dass das Auferlegen einer Grenze für die Anzahl der Bit, die für die Zählwerte verwendet werden, nützlich sein kann, weil die Zählwerte im Parametercache 118 gespeichert werden.
-
Wenn die Anzahl der Kacheln, denen ein Parameter zugeordnet ist, wie oben beschrieben bestimmt wird, wird, falls die Anzahl der Kacheln, denen ein Parameter zugeordnet ist, größer als das vorbestimmte Maximum (Cmax) ist, der Wert des Zählwerts gleich dem vorbestimmten Maximum (Cmax) gesetzt. Anders ausgedrückt, gibt, falls der Wert des Zählwerts für einen Parameter auf Cmax gesetzt ist, dies an, dass die Anzahl der Kacheln, denen dieser Parameter zugeordnet ist, größer oder gleich Cmax ist. Wenn es eine Grenze für den Wert des Zählwerts gibt, können für alle Zählwerte kleiner als das Maximum (d. h. für C < Cmax) die Zählwerte auf dieselbe Weise wie oben beschrieben dekrementiert werden, während die Kacheln verarbeitet werden. Wenn der Zählwert jedoch auf den Maximalwert gesetzt wird (d. h. für C = Cmax), werden die Zählwerte nicht dekrementiert, während die Kacheln verarbeitet werden. Anders ausgedrückt, wird der Zählwert nur dekrementiert, wenn der Zählwert kleiner als das vorbestimmte Maximum (Cmax) ist. Der Grund dafür besteht darin, dass ein Zählwert Cmax für einen Parameter die Anzahl der diesen Parameter zugeordneten Kachel nicht eindeutig angibt. Ein Zählwert von Cmax gibt an, dass die Anzahl der diesen Parameter zugeordneten Kacheln größer oder gleich Cmax ist. Das Dekrementieren des Zählwerts kann deshalb nicht nützlich sein, wenn der Zählwert auf Cmax gesetzt ist.
-
In bestimmten Beispielen kann jedoch ein Zählwert von Cmax dekrementiert werden. Dies kann nützlich sein, indem die Wahrscheinlichkeit, dass Parameter mit Zählwerten von Cmax im Parametercache 118 bleiben, nachdem sie vom ISP-Block 108 zum Verarbeiten von Kacheln benötigt werden, verringert wird. In bestimmten Beispielen kann, wenn der Zählwert für einen Parameter im Parametercache 118 und im Parameterpuffer 114 gespeichert wird, wie in oben beschriebenen Beispielen, ein Zählwert eines Parameters von Cmax im Parametercache 118 dekrementiert werden, aber der entsprechende Zählwert des Parameters (z. B. des Parameterblocks) im Parameterpuffer 114 kann nicht dekrementiert werden. Auf diese Weise kann der Parameter aus dem Parametercache 118 geräumt werden, während der Zählwert dekrementiert wird, falls aber der Parameter nachfolgend erneut in den Parametercache 118 geladen wird, wird er mit einem Zählwert von Cmax erneut geladen. In bestimmten anderen Beispielen kann auf der Basis einer Bedingung, wie etwa der Belegung des Parametercache 118 oder der Anzahl der anderen Parameter im Parametercache 118, die Zählwerte von Cmax aufweisen, eine Entscheidung getroffen werden, ob der Zählwert eines Parameters mit einem Zählwert von Cmax zu dekrementieren ist.
-
Oben wird beschrieben, dass der als C bezeichnete Zählwert eine ganze Zahl im Bereich 0 ≤ C ≤ 2” – 1 ist. Die Zählwerte können jedoch stattdessen im Bereich 1 ≤ C ≤ 2” liegen, wodurch die Repräsentation eines Extrazählwerts ermöglicht wird, zu Lasten des Nichtinderlageseins, einen Zählwert von null zu repräsentieren. Es kann jedoch nicht notwendig sein, in der Lage zu sein, einen Zählwert von null zu repräsentieren. Statt einen Zählwert von eins auf einen Zählwert von null zu dekrementieren, kann zum Beispiel der Zählwert auf eins bleiben und der dem Parameter entsprechende Cacheeintrag kann für ungültig erklärt werden. Ein Cacheietrag kann für ungültig erklärt werden, indem man ein Flag im Parametercache 118 setzt, um anzuzeigen, dass der Parameter ungültig ist. Als Alternative kann ein Cacheeintrag für ungültig erklärt werden, indem man ein Tag oder eine Adresse auf einen vordefinierten Wert setzt, z. B. alle Bit auf null gesetzt oder alle Bit auf eins gesetzt. Es ist bekannt, Cacheeinträge für ungültig zu erklären, um anzuzeigen, dass Daten in einem Cache überschrieben werden können, wenn neue Daten in den Cache abgerufen werden. Deshalb wird der Zählwert null nicht benötigt, und der maximale Zählwert (Cmax), der repräsentiert werden kann, kann um eins vergrößert werden, ohne die Anzahl der zum Repräsentieren der Zählwerte verwendeten Bit zu vergrößern. Es wird angemerkt, dass ein ”ungültiger” Zustand (angezeigt zum Beispiel mit einem ”Ungültig-Flag” oder durch Setzen eines Tag oder einer Adresse auf einen vordefinierten Wert, z. B. alle Bit auf null gesetzt oder alle Bit auf eins gesetzt) in den meisten Caches implementiert wird, um anzuzeigen, ob Zeilen des Cache leer sind oder ob sie echte Daten halten. Deshalb muss der Prozess des Ungültigerklärens eines Cacheeintrags (z. B. durch Setzen eines Ungültig-Flag oder durch Setzen eines Tag oder einer Adresse auf einen vordefinierten Wert) wie oben beschrieben zur Erweiterung des Bereichs von Zählwerten, die repräsentiert werden können, Nichtverwendung irgendwelcher extra Bits umfassen, die nicht bereits vom Cache benutzt würden. Der Grund dafür besteht darin, dass der Cache bereits ein Verfahren zum Ungültigerklären von Cacheeinträgen implementieren kann (z. B. Verwenden eines ”Ungültig-Flag” oder Setzen eines Tag oder einer Adresse auf einen vordefinierten Wert, z. B. alle Bit auf null gesetzt oder alle Bit auf eins gesetzt).
-
In einem beispielhaften Benutzungsfall wird nur ein Bit verwendet, um jeden der Zählwerte zu repräsentieren. Bezüglich des oben gegebenen Beispiels kann dies als Setzen von N auf 1 angesehen werden, so dass 1 ≤ C ≤ Cmax ist, wobei Cmax gleich 2 ist. Der Zählwert ist in diesem Beispiel deshalb ein Ein-Bit-Flag, das entweder einen ersten Wert oder einen zweiten Wert annehmen kann. Der Wert des Zählwerts für einen Parameter kann deshalb verwendet werden, um eine von zwei Bedingungen anzuzeigen. Falls der Zählwert für einen Parameter den ersten Wert aufweist (der hier als C1 bezeichnet wird), zeigt dies an, dass die Anzahl der Kacheln, denen dieser Parameter zugeordnet ist, gleich eins ist. Falls der Zählwert den zweiten Wert aufweist (der hier als C>1 bezeichnet wird), zeigt dies an, dass die Anzahl der Kacheln, denen dieser Parameter zugeordnet ist, größer als eins ist.
-
Dieser Benutzungsfall hat einige besondere Vorteile. Da nur ein Bit für die Zählwerte verwendet wird, sind die zum Speichern der Zählwerte und Übertragen der Zählwerte zwischen der Verarbeitungseinheit 102 und dem Systemspeicher 112 erforderlichen Daten verglichen mit Beispielen, bei denen mehr als ein Bit für die Zählwerte verwendet wird, klein. Ferner wurde beobachtet, dass Parameterblöcke Parameter aufweisen können, die nur einer Kachel zugeordnet sind. Mit zunehmender Szenenkomplexität wird ferner Geometrie kleiner und es wird wahrscheinlicher, dass ein Parameterblock für ein Stück Geometrie (z. B. ein Objekt) Parameter aufweist, die nur einer Kachel zugeordnet sind.
-
In einem Beispiel, bei dem nur ein Bit für die Zählwerte verwendet wird, werden die Zählwerte nicht dekrementiert, während die Kacheln verarbeitet werden. Stattdessen reduziert sich die Räumrichtlinie auf das Bestimmen, welche der Parameter im Parametercache Zählwerte aufweisen, die den ersten Wert C1 aufweisen, der anzeigt, dass die Parameter nur in einer Kachel anwesend sind, wodurch diese Parameter gute Kandidaten zur Räumung aus dem Parametercache 118 sind. Parameter, die Zählwerte mit dem Wert C>1 aufweisen, sind nicht gute Kandidaten zur Räumung aus dem Parametercache 118 und werden gewichtet, um die Wahrscheinlichkeit der Räumung aus dem Parametercache 118 relativ zu der Wahrscheinlichkeit, dass Parameter mit Zählwerten von C1 aus dem Parametercache 118 geräumt werden, zu verringern. Falls zwischen Parametern unterschieden werden muss, um zu bestimmen, welcher Parameter aus dem Cache zu räumen ist, wenn die Zählwerte für die Parameter denselben Wert aufweisen, kann wie oben beschrieben eine andere Räumrichtlinie verwendet werden, wie etwa eine LRU-Räumrichtlinie. Es versteht sich, dass jeder Parameter im Parametercache 118, der zum Verarbeiten einer Kachel verwendet wurde und der einen Zählwert von C1 aufweist (der angibt, dass die Parameter nur einer Kachel zugeordnet sind) nicht nochmals zum Verarbeiten einer anderen Kachel verwendet wird und deshalb aus dem Parametercache 118 geräumt werden kann.
-
In einem anderen beispielhaften Benutzungsfall werden zwei Bit verwendet, um jeden der Zählwerte zu repräsentieren. Der Zählwert ist in diesem Beispiel deshalb ein Zwei-Bit-Flag, das einen von vier möglichen Werten annehmen kann. Der Wert des Zählwerts für einen Parameter kann deshalb verwendet werden, um eine von vier Bedingungen anzuzeigen. Falls der Zählwert für einen Parameter einen ersten Wert aufweist (der hier als C1 bezeichnet wird), zeigt dies an, dass die Anzahl der Kacheln, denen dieser Parameter zugeordnet ist, gleich eins ist. Falls der Zählwert für einen Parameter einen zweiten Wert aufweist (der hier als C2 bezeichnet wird), zeigt dies an, dass die Anzahl der Kacheln, denen dieser Parameter zugeordnet ist, gleich zwei ist. Falls der Zählwert für einen Parameter einen dritten Wert aufweist (der hier als C34 bezeichnet wird), zeigt dies an, dass die Anzahl der Kacheln, denen dieser Parameter zugeordnet ist, gleich drei oder vier ist. Falls der Zählwert für einen Parameter einen vierten Wert aufweist (der hier als C>4 bezeichnet wird), zeigt dies an, dass die Anzahl der Kacheln, denen dieser Parameter zugeordnet ist, größer als vier ist.
-
Dieser Benutzungsfall ist nützlich, weil, obwohl kleine Objekte Primitive enthalten können, die in eine einzige Kachel passen, es oft vorkommt, dass diese Objekte von Kachelgrenzen geschnitten werden. Der häufige Fall von kleinen Objekten, die von einer einzigen Kachelkante geschnitten werden, führt dazu, dass sich Parameterblöcke in nur zwei Kacheln befinden. Ähnlich können Objekte sowohl von horizontalen als auch vertikalen Kachelkanten geschnitten werden, was zu Parameterblöcken führt, die sich entweder in drei oder vier Kacheln befinden. Deshalb ist es nicht ungewöhnlich, dass ein Parameterblock bezüglich eines Objekts Parameter aufweist, die einer, zwei, drei oder vier Kacheln zugeordnet sind, und es kann nützlich sein, in der Lage zu sein, zwischen diesen Situationen zu unterscheiden, wenn bestimmt wird, welche Parameter aus dem Parametercache 118 zu räumen sind, sowie diese Fälle von Parameterblöcken zu unterscheiden, die Parameter aufweisen, die mehr als vier Kacheln zugeordnet sind. 7 zeigt vier Kacheln (als Q, R, S und T bezeichnet) eines Wiedergaberaums 702. Im Wiedergaberaum 702 sind drei Objekte (bezeichnet als 704, 706 und 708) gezeigt. Es ist ersichtlich, dass sich das Objekt 704 mit nur einer der Kacheln (Kachel Q) überlappt; Objekt 706 überlappt sich mit zwei der Kacheln (Kacheln R und T); und Objekt 708 überlappt sich mit allen vier Kacheln (Kacheln Q, R, S und T). Der Unterschied bei der Anzahl überlappender Kacheln der Objekte ist auf den Ausrichtungsunterschied der Objekte zu der Kachelung des Wiedergaberaums 702 zurückzuführen. Gemäß dem beschriebenen beispielhaften Benutzungsfall werden die Parameter im Parameterblock für Objekt 704 Zählwerte mit dem Wert C1 aufweisen, weil Objekt 704 nur eine Kachel überlappt; die Parameter im Parameterblock für Objekt 706 werden Zählwerte mit dem Wert C2 aufweisen, weil Objekt 706 zwei Kacheln überlappt; und die Parameter im Parameterblock für Objekt 708 werden Zählwerte mit dem Wert C34 aufweisen, weil Objekt 708 vier Kacheln überlappt. Die Parameter in einem Parameterblock für ein Objekt, das mehr als vier der Kacheln bedeckt, erhalten Zählwerte von C>4.
-
Die Parameter werden auf der Basis ihrer Zählwerte aus dem Parametercache 118 geräumt. Insbesondere werden Parameter mit Zählwerten von C1 aus dem Parametercache 118 vorzugsweise vor Parametern mit Zählwerten von C2 geräumt, die ihrerseits aus dem Parametercache 118 vorzugsweise vor Parametern mit Zählwerten von C34 geräumt werden, die ihrerseits aus dem Parametercache 118 vorzugsweise vor Parametern mit Zählwerten von C>4 geräumt werden. Es versteht sich, dass, wenn Kachel Q verarbeitet wurde, die Parameter bezüglich Objekt 704 zum Verarbeiten keiner der anderen Kacheln benötigt werden, und da der Zählwert dieser Parameter C1 ist, diese Parameter aus dem Parametercache 118 vor den Parametern geräumt werden, die Objekt 708 betreffen, die Zählwerte von C34 aufweisen und die zum Verarbeiten der in 7 gezeigten anderen Kacheln (Kacheln R, S und T) benötigt werden.
-
Die Verwendung von zwei Bit für die Zählwerte ist besonders nützlich, weil sie zwischen vier häufigen Szenarien unterscheidet und deshalb verglichen mit einer LRU-Räumrichtlinie eine signifikante Verbesserung des Cachetrefferverhältnisses bereitstellt. Außerdem wird dies erreicht, während nur zwei Bit Daten für jeden Zählwert erfordert werden. Dies ist im Hinblick auf das Speichern der Zählwerte und das Übertragen der Zählwerte zwischen dem Parameterpuffer 114 auf dem Speicher 112 und dem Parametercache 118 auf der Verarbeitungseinheit 102 vorteilhaft.
-
Wenn zwei Bit für die Zählwerte verwendet werden, können die Zählwerte von C1, C34 und C>4 nicht dekrementiert werden, während die Kacheln verarbeitet werden. Der Zählwert von C1 hat keinen niedrigeren Wert, auf den er dekrementiert werden kann. Die Zählwerte C34 und C>4 definieren nicht eindeutig die Anzahl der Kacheln, die einem Parameter zugeordnet sind, und werden dementsprechend nicht dekrementiert, während die Kacheln verarbeitet werden. Ein Zählwert von C2 gibt jedoch an, dass ein Parameter zwei Kacheln zugeordnet ist, und der Zählwert C2 kann auf den Zählwert C1 dekrementiert werden. Deshalb kann der Zählwert eines Parameters mit dem Zählwert C2 auf einen Zählwert von C1 dekrementiert werden, wenn eine diesem Parameter zugeordnete Kachel verarbeitet wird, oder nicht. In anderen Beispielen kann ein Zählwert von C>4 auf einen Zählwert von C34 dekrementiert werden. Weiterhin kann ein Zählwert von C34 auf einen Zählwert von C2 dekrementiert werden. Wie oben in Bezug auf das Dekrementieren von Zählwerten von Cmax beschrieben, können die Zählwerte C34 und C>4 im Parametercache 118 dekrementiert werden, während sie im Parameterpuffer 114 nicht dekrementiert werden. Ferner kann, statt einen Zählwert von C1 zu dekrementieren, wenn eine Kachel verarbeitet wird, der ein Parameter zugeordnet ist, der einen Zähler von C1 aufweist, der Zählwert des Parameters als C1 bleiben, aber ein Cache-Ungültig-Flag für die Parameter gesetzt werden, um anzuzeigen, dass der Parameter im Parametercache 118 überschrieben (d. h. daraus geräumt) werden kann, wenn weitere Parameter in den Parametercache 118 abgerufen werden.
-
In den oben beschriebenen Beispielen werden die Zählwerte im Parametercache 118 und im Parameterpuffer 114 gespeichert. In anderen Beispielen können die Zählwerte jedoch nur im Parameterpuffer 114 gespeichert werden, und für jeden der Parameter im Parametercache 118 wird im Parametercache 118 ein Verweis gespeichert, um auf die Zählwerte für die Parameter aus dem Parameterpuffer 114 zu verweisen. In diesem Fall werden beim Bestimmen, welche der Parameter aus dem Parametercache 118 auszuräumen sind, die Verweise der Parameter im Parametercache 118 verwendet, um die Zählwerte für die Parameter im Parametercache 118 zu bestimmen, indem auf die im Parameterpuffer 114 gespeicherten Zählwerte verwiesen wird, und dann werden die Zählwerte verwendet, um zu bestimmen, welcher Parameter zu räumen ist (z. B. der bzw. die Parameter mit dem niedrigsten Zählwert bzw. den niedrigsten Zählwerten). Dieses Beispiel kann etwas Speicherplatz im Parametercache 118 sparen, weil die Zählwerte nicht im Parametercache 118 gespeichert werden müssen. Die Verweise werden im Parametercache 118 gespeichert, die weniger Bit Speicher benutzen können als das Speichern der Zählwerte selbst im Parametercache 118. Dies kann nützlich sein, weil der Speicherplatz im Parametercache 118 begrenzt ist. Es kann jedoch Verzögerung zu der Verarbeitung der Kacheln hinzugefügt werden, um Zeit dafür zu lassen, dass die Zählwerte aus dem Parameterpuffer 114 abgerufen werden, um zu bestimmen, welche Parameter aus dem Parametercache 118 zu räumen sind.
-
Die oben beschriebenen Beispiele betreffen die Räumung von Parametern aus dem Parametercache 118. Dieselben Prinzipien der Räumrichtlinien können auch auf andere Caches in der Verarbeitungseinheit 102 angewandt werden. Das heißt, für jegliche Grafikdatenelemente, die zum Verarbeiten von Kacheln verwendet werden und die aus einem Grafikdatenspeicher im Speicher 112 in einen Cache auf der Verarbeitungseinheit 102 abgerufen werden, können Indikatoren für die Grafikdatenelemente bestimmt werden, so dass für jedes der Grafikdatenelemente der Indikator für diesen Grafikdatenelemente die Anzahl der Kacheln angibt, denen dieser Grafikdatenelemente zugeordnet ist. Die Indikatoren können dann verwendet werden, um zu bestimmen, welche der Grafikdatenelemente aus dem Cache zu räumen sind, so dass die Räumrichtlinie auf der Kachelabdeckung der Grafikdatenelemente basiert. Die Grafikdatenelemente können zum Beispiel Parameter oder Texel sein, die in Grafikdatensätzen wie Parameterblöcken oder Texturen im Speicher 112 gespeichert werden können.
-
Zum Beispiel kann der Parametercache 120, der vom TSP-Block 110 benutzt wird, eine Räumrichtlinie verwenden, die den oben in Bezug auf den vom ISP-Block 108 verwendeten Parametercache 118 beschriebenen entsprechen. Das heißt, jeder der Parameter kann mit einem zugeordneten Zählwert in den Parametercache 120 abgerufen werden. Der im Parametercache 118 verwendete Zählwert ist von dem im Parametercache 120 verwendeten Zählwert getrennt. Wie oben beschrieben, werden die vom ESP-Block 108 verwendeten (und im Parametercache 118 gespeicherten) Zählwerte aus der von der Kachelungseinheit 106 durchgeführten Kachelung bestimmt. Dieselben Zählwerte können vom TSP-Block 110 verwendet (und im Parametercache 120 gespeichert) werden oder es können andere Zählwerte vom TSP-Block 110 verwendet (und im Parametercache 120 gespeichert) werden, die zum Beispiel auf der Basis der Ergebnisse der vom ISP-Block 108 durchgeführten HSR (Hidden Surface Removal) bestimmt werden können (z. B. dergestalt, dass die Zählwerte für den TSP-Block 110 niedriger als die Zählwerte für den ISP-Block 108 sein können). Ähnlich wie bei den oben in Bezug auf die vom ISP-Block 108 verwendeten Zählwerte beschrieben weist in bestimmten Beispielen jeder Parameterblock einen getrennten Zählwert (zur Verwendung vom TSP-Block 110) der Anzahl der Kacheln auf, denen wenigstens einer der Parameter dieses Parameterblocks zugeordnet ist. Der Zählwert für den TSP-Block 110 wird auf dieselbe Weise wie oben in Bezug auf den Zählwert für den ISP-Block 108 beschrieben verwendet, um zu bestimmen, welche Parameter aus dem Parametercache 120 auszuräumen sind, und kann auf dieselbe Weise dekrementiert werden.
-
In den oben beschriebenen Beispielen gibt es zwei getrennte Parametercaches: den vom ISP-Block 108 verwendeten Parametercache 118 und den vom TSP-Block 110 verwendeten Parametercache 120. In anderen Beispielen kann es einen einzigen (”vereinigten”) Parametercache geben, der sowohl vom ISP-Block 108 als auch vom TSP-Block 110 benutzt werden könnte. Selbst wenn ein einziger Cache verwendet wird, würden getrennte Zählwerte für den ISP-Block 108 und den TSP-Block 110 verwendet. Wenn ein einziger Parametercache verwendet wird, kann jedoch einer der Verarbeitungsblöcke (ISP-Block 108 oder TSP-Block 110) Parameter räumen, die von dem anderen der Verarbeitungsblöcke (TSP-Block 110 oder ISP-Block 108) benötigt werden und umgekehrt. Dies würde zu einem ”Verhauen” des Parametercache führen. Die Verwendung eines einzigen Parametercaches zur Verwendung sowohl vom ISP-Block 108 als auch vom TSP-Block 110 kann deshalb die Effektivität der Cache-Speicherung der Parameter in der Verarbeitungseinheit 102 verringern. Es ist jedoch möglich, dass es nützlich sein könnte, einen einzigen Parametercache zu verwenden.
-
Als ein anderes Beispiel kann der Texturcache 120, der vom TSP-Block 110 verwendet wird, eine Räumrichtlinie verwenden, die den oben in Bezug auf die Parametercaches 118 und 120 beschriebenen entspricht. Der Texturspeicher 116 residiert im Speicher 112 und speichert Texturen. Jede Textur umfasst ein oder mehrere Texel, die auf Primitive eines Objekts angewandt werden können. Die Parameter eines Objekts können einen Teil einer Textur angeben, die auf die Primitive des Objekts anzuwenden ist, wenn eine Kachel im TSP-Block 110 verarbeitet wird. Wenn der TSP-Block 110 eine Kachel verarbeitet, werden die entsprechenden Texel aus der angegebenen Textur aus dem Texturspeicher 116 in den Texturcache 122 abgerufen. Auf dieselben Weisen, wie Zählwerte für die Parameter wie oben beschrieben bestimmt werden können, kann man Zählwerte für die Texel bestimmen, um die Anzahl der Kacheln anzugeben, denen die Texel zugeordnet sind. Zum Beispiel können die Zählwerte über die Granularität der Texturen bestimmt werden (auf dieselbe Weise, wie Zählwerte auf der Granularität der Parameterblöcke wie oben beschrieben bestimmt werden), wodurch jedes Texel in einer Textur denselben Zählwert erhält, der die Anzahl der Kacheln angibt, denen Texel aus dieser Textur zugeordnet sind. Wenn Texel aus dem Texturcache 122 geräumt werden müssen, kann man die Zählwerte für die Texel im Texturcache 122 verwenden, um zu bestimmen, welche Texel aus dem Texturcache 122 auszuräumen sind. Das heißt, die Räumung von Texeln aus dem Texturcache 122 wird auf der Basis der Anzahl der Kacheln, denen die Texel zugeordnet sind, gewichtet.
-
Die Reihenfolge, in der Kacheln in einem Wiedergaberaum verarbeitet werden, kann bestimmt werden. Viele Faktoren können zu der Bestimmung der Reihenfolge beitragen, in der Kacheln zu verarbeiten sind. Zum Beispiel umfassen einfache Ordnungsschemata Rasterabtastung, wobei Kacheln zeilenweise von oben nach unten verarbeitet werden und wobei in jeder Kachelzeile die Ordnung von links nach rechts ist. Andere Ordnungsschemata wie Boustrophedon-Ordnung und Morton-Ordnung sind häufig anzutreffen. Die Verarbeitung der Kacheln kann im Mehrfach-Thread-Verfahren implementiert werden, und es kann nützlich sein, die Kacheln, die in einem Thread zu verarbeiten sind, zu gruppieren, oder nicht. Als ein anderes Beispiel kann eine Lastausgleichtechnik verwendet werden, um die Reihenfolge zu bestimmen, in der Kacheln verarbeitet werden, aber die Einzelheiten solcher Techniken sprengen den Rahmen der vorliegenden Beschreibung.
-
Die oben beschriebenen Beispiele betreffen die Implementierung einer Räumrichtlinie zum Räumen von Grafikdatenelementen (z. B. Parametern oder Texeln) aus einem Cache. Als Teil der Implementierung dieser Räumrichtlinie werden Indikatoren (oder ”Zählwerte”) in den Cache für die Grafikdatenelemente aufgenommen, um die Anzahl der Kacheln anzugeben, denen jedes der Grafikdatenelemente zugeordnet ist. Diese Indikatoren können beim Bestimmen der Reihenfolge, in der die Kacheln zu verarbeiten sind, verwendet werden. Der Einfluss der Indikatoren auf die Bestimmung der Reihenfolge, in der die Kacheln zu verarbeiten sind, kann kleiner sein als andere Faktoren, die bei der Bestimmung berücksichtigt werden, aber wenn andere Faktoren gleich sind, können die Indikatoren im Cache die Reihenfolge bestimmen, in der Kacheln verarbeitet werden. Es kann nützlich sein, Kacheln, die unter Verwendung von Grafikdatenelementen zu verarbeiten sind, die sich bereits im Cache befinden, zu verarbeiten, statt Grafikdatenelemente in den Cache abrufen zu müssen. In Beispielen, bei denen die Indikatoren wie oben beschrieben sich dekrementierende Zählwerte sind, kann es nützlich sein, vorzugsweise Zählwerte für Grafikdatenelemente mit relativ niedrigen Zählwerten in Richtung null zu steuern, so dass sie aus dem Cache geräumt werden (und dadurch Platz im Cache für andere Grafikdatenelemente frei wird) und sie zur Verarbeitung anderer Kacheln nicht benötigt werden. Dies kann geschehen, indem man wählt, Kacheln zu verarbeiten, die diesen Grafikdatenelementen zugeordnet sind. Die Anzeigelisten für die Kacheln können verwendet werden, um zu bestimmen, welche der Kacheln welchen der Grafikdatenelemente zugeordnet sind. Es könnte sein, dass in anderen Szenarien Kacheln zur Verarbeitung gewählt werden, um dadurch die Zählwerte von Grafikdatenelementen mit relativ hohen Zählwerten im Cache zu verringern.
-
Im Allgemeinen können beliebige der oben beschriebenen Funktionen, Verfahren, Techniken oder Komponenten in Modulen unter Verwendung von Software, Firmware, Hardware (z. B. Festlogikschaltungen) oder einer beliebigen Kombination dieser Implementierungen implementiert werden. Die Ausdrücke ”Modul”, ”Funktionalität”, ”Komponente” und ”Logik” werden hier so verwendet, dass sie allgemein Software, Firmware, Hardware oder eine beliebige Kombination davon repräsentieren.
-
Im Fall einer Softwareimplementierung wird durch das Modul, die Funktionalität oder die Komponente oder Logikprogrammcode repräsentiert, der spezifizierte Aufgaben ausführt, wenn er auf einem Prozessor (z. B. einer oder mehreren CPUs) ausgeführt wird. In einem Beispiel können die beschriebenen Verfahren von einem Computer ausgeführt werden, der mit Software in maschinenlesbarer Form konfiguriert ist, die auf einem computerlesbaren Medium gespeichert ist. Eine solche Konfiguration eines computerlesbaren Mediums ist ein signaltragendes Medium und ist somit ausgelegt zum Übertragen der Anweisungen (z. B. als Trägerwelle) zu der Datenverarbeitungsvorrichtung, etwa über ein Netzwerk. Das computerlesbare Medium kann auch als computerlesbares Speichermedium ausgelegt sein und ist somit kein signaltragendes Medium. Beispiele für ein computerlesbares Speichermedium wären ein Direktzugriffsspeicher (RAM), Nurlesespeicher (ROM), ein optischer Datenträger, Flash-Speicher, Festplattenspeicher und andere Speichervorrichtungen, die magnetische, optische und andere Techniken verwenden können, um Anweisungen oder andere Daten zu speichern, auf die eine Maschine zugreifen kann.
-
Die Software kann in Form eines Computerprogramms vorliegen, das Computerprogrammcode zum Konfigurieren eines Computers dafür umfasst, die Bestandteile beschriebener Verfahren auszuführen, oder in Form eines Computerprogramms mit Computerprogrammcodemitteln, ausgelegt zum Ausführen aller Schritte beliebiger der hier beschriebenen Verfahren, wenn das Programm auf einem Computer laufen gelassen wird, und wobei das Computerprogramm auf einem computerlesbaren Medium realisiert sein kann. Der Programmcode kann in einem oder mehreren computerlesbaren Medien gespeichert werden. Die Merkmale der hier beschriebenen Techniken sind plattformunabhängig, was bedeutet, dass die Techniken auf vielfältigen Datenverarbeitungsplattformen, die vielfältige Prozessoren aufweisen, implementiert werden können.
-
Für Fachleute ist außerdem erkennbar, dass die Funktionalität, Techniken oder Verfahren ganz oder teilweise von einer eigenen Schaltung, einer anwendungsspezifischen integrierten Schaltung, einem programmierbaren Logikarray, einem am Einsatzort programmierbaren Gatearray oder dergleichen ausgeführt werden können. Zum Beispiel können das Modul, die Funktionalität, die Komponente oder Logik Hardware in Form von Schaltungen umfassen. Solche Schaltungen können Transistoren und/oder andere in einem Herstellungsprozess verfügbare Hardwareelemente umfassen. Solche Transistoren und/oder anderen Elemente können benutzt werden, um Schaltungen oder Strukturen zu bilden, die beispielsweise Speicher, wie Register, Flipflops oder Latches, logische Operatoren wie Boolsche Operationen, mathematische Operatoren wie Addierer, Multiplizierer oder Schieber und Verbindungselemente implementieren und/oder enthalten. Solche Elemente können als kundenspezifische Schaltungen oder Standardzellenbibliotheken, Makros oder auf anderen Abstraktionsebenen bereitgestellt werden. Solche Elemente können in einer spezifischen Anordnung verbunden werden. Das Modul, die Funktionalität, die Komponente oder die Logik können Schaltungen umfassen, die feste Funktion aufweisen, und Schaltungen, die programmiert werden können, um eine Funktion oder Funktionen auszuführen; solche Programmierung kann aus einem Firmware- oder Softwareaktualisierungs- oder Steuermechanismus bereitgestellt werden. In einem Beispiel weist Hardware Logikschaltungen auf, die eine Festfunktionsoperation, einen Automaten oder Prozess implementieren.
-
Außerdem ist beabsichtigt, Software einzuschließen, die die Konfiguration von Hardware ”beschreibt” oder definiert, die ein Modul, Funktionalität, eine Komponente oder Logik, die oben beschrieben wurden, implementiert, wie etwa HDL-Software (Hardwarebeschreibungssprache), so wie sie zum Entwurf von integrierten Schaltungen oder zum Konfigurieren von programmierbaren Chips verwendet wird, um gewünschte Funktionen auszuführen. Das heißt, es kann ein computerlesbares Speichermedium bereitgestellt werden, worauf computerlesbarer Programmcode zum Erzeugen einer Verarbeitungseinheit codiert ist, ausgelegt zum Ausführen beliebiger der hier beschriebenen Verfahren und zum Erzeugen einer Verarbeitungseinheit, die eine beliebige hier beschriebene Vorrichtung umfasst.
-
Der Ausdruck ”Prozessor” und ”Computer” werden hier als sich auf eine beliebige Vorrichtung oder einen Teil davon mit Verarbeitungsfähigkeit dergestalt, dass sie Anweisungen ausführen kann, oder auf eine eigene Schaltung mit der Fähigkeit zum Ausführen der ganzen oder eines Teils der Funktionalität oder Verfahren oder einer beliebigen Kombination davon beziehend verwendet.
-
Obwohl der Gegenstand in für strukturelle Merkmale und/oder Verfahrensschritte spezifischer Sprache beschrieben wurde, versteht sich, dass der in den angefügten Ansprüchen definierte Gegenstand nicht unbedingt auf die speziellen oben beschriebenen Merkmale oder Schritte beschränkt ist. Stattdessen werden die oben beschriebenen speziellen Merkmale und Schritte als beispielhafte Formen der Implementierung der Ansprüche offenbart. Es versteht sich, dass die oben beschriebenen Vorteile und Nutzen ein Beispiel oder mehrere Beispiele betreffen können.
-
Ein hier gegebener Bereich oder Wert kann erweitert oder geändert werden, ohne den gewünschten Effekt zu verlieren, wie für Fachleute ersichtlich ist. Die Schritte der Verfahren, die hier beschrieben werden, können in einer beliebigen geeigneten Reihenfolge oder gegebenenfalls gleichzeitig ausgeführt werden. Aspekte beliebiger der oben beschriebenen Beispiele können mit Aspekten beliebiger der anderen beschriebenen Beispiele kombiniert werden, um weitere Beispiele zu bilden, ohne den gewünschten Effekt zu verlieren.