DE102013017639B4 - Caching of adaptively sized cache tiles in a unified L2 cache with surface compression - Google Patents
Caching of adaptively sized cache tiles in a unified L2 cache with surface compression Download PDFInfo
- Publication number
- DE102013017639B4 DE102013017639B4 DE102013017639.5A DE102013017639A DE102013017639B4 DE 102013017639 B4 DE102013017639 B4 DE 102013017639B4 DE 102013017639 A DE102013017639 A DE 102013017639A DE 102013017639 B4 DE102013017639 B4 DE 102013017639B4
- Authority
- DE
- Germany
- Prior art keywords
- cache
- rendering
- tile
- size
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000006835 compression Effects 0.000 title claims abstract description 12
- 238000007906 compression Methods 0.000 title claims abstract description 12
- 238000009877 rendering Methods 0.000 claims abstract description 179
- 238000000034 method Methods 0.000 claims abstract description 57
- 230000008859 change Effects 0.000 claims abstract description 10
- 238000004513 sizing Methods 0.000 claims abstract description 5
- 230000015654 memory Effects 0.000 claims description 143
- 238000011084 recovery Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 141
- 230000008569 process Effects 0.000 description 27
- 238000003384 imaging method Methods 0.000 description 25
- 239000012634 fragment Substances 0.000 description 22
- 239000000872 buffer Substances 0.000 description 15
- 239000013598 vector Substances 0.000 description 13
- 230000008901 benefit Effects 0.000 description 11
- 238000005192 partition Methods 0.000 description 11
- 238000013459 approach Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 10
- 238000009826 distribution Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 5
- 238000012656 cationic ring opening polymerization Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 238000005286 illumination Methods 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 238000002156 mixing Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000003086 colorant Substances 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 241001235534 Graphis <ascomycete fungus> Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005293 physical law Methods 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/455—Image or video data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/121—Frame memory handling using a cache memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
Ein Verfahren zur adaptiven Dimensionierung von Cache-Kacheln in einem Grafiksystem, wobei das Verfahren umfasst:Festlegen einer Cache-Kachelgröße, die zu einer ersten Cache-Kachel gehört, auf eine erste Größe; basierend auf einer ersten Bilderzeugungskonfiguration, die mehrere erste Bilderzeugungsziele umfasst, wobei die erste Cache-Kachel eine Bildschirmraum-Kachel ist und in mehrere Rasterkacheln unterteilt ist, wobei die Größe von jeder Rasterkachel auf der Cache-Kachelgröße basiert,Erkennen eines Wechsels von einer ersten Bilderzeugungszielkonfiguration, zu einer zweiten Bilderzeugungszielkonfiguration, die mehrere zweite Bilderzeugungsziele umfasst; undFestlegen der Cache-Kachelgröße auf eine zweite Größe mit den Schritten:Berechnen des Cache-Speicherplatzes, der durch die Cache-Kachel eingenommen wird,Berechnen einer ersten Anzahl von Bytes pro Pixel für die zweite Bilderzeugungszielkonfiguration,Anwenden eines Oberflächen Komprimierungsfaktors auf die erste Anzahl von Bytes zur Berechnung einer zweiten Anzahl von Bytes, die pro komprimierten Pixel eingenommen wird;Festlegen der zweiten Größe der Cache-Kachelgröße anhand der zweiten Anzahl von Bytes.A method for adaptively sizing cache tiles in a graphics system, the method comprising:setting a cache tile size associated with a first cache tile to a first size; based on a first rendering configuration that includes a plurality of first rendering targets, the first cache tile being a screen space tile and divided into a plurality of raster tiles, the size of each raster tile being based on the cache tile size,detecting a change from a first rendering target configuration , to a second rendering target configuration comprising a plurality of second rendering targets; andsetting the cache tile size to a second size, comprising the steps of:calculating the cache space occupied by the cache tile,calculating a first number of bytes per pixel for the second rendering target configuration,applying a surface compression factor to the first number of bytes to calculate a second number of bytes consumed per compressed pixel;determining the second size of the cache tile size based on the second number of bytes.
Description
QUERVERWEIS AUF VERWANDTE ANMELDUNGENCROSS REFERENCE TO RELATED APPLICATIONS
Diese Anmeldung beansprucht die Priorität der vorläufigen Patentanmeldung der vereinigten Staaten mit der Seriennummer 61/719 271, die am 26. Oktober 2012 eingereicht wurde mit dem Titel „Ein Ansatz für Kachel-Zwischenspeicherung“. Der Gegenstand dieser verwandten Anmeldung ist hiermit durch Bezugnahme mit eingeschlossen.This application claims priority to United States Provisional Patent Application Serial No. 61/719,271 filed October 26, 2012, entitled "An Approach to Tile Caching." The subject matter of this related application is hereby incorporated by reference.
HINTERGRUND DER ERFINDUNGBACKGROUND OF THE INVENTION
Gebiet der Erfindungfield of invention
Ausführungsformen der vorliegenden Erfindung betreffen allgemein die grafische Verarbeitung und insbesondere eine Zwischenspeicherung von adaptiv dimensionierten Cache-Kacheln in einem vereinheitlichten L2-Cache-Speicher bzw. in einem Einheits-L2-Cache-Speicher mit Oberflächenkomprimierung.Embodiments of the present invention relate generally to graphics processing and more particularly to caching of adaptively sized cache tiles in a unified L2 cache.
Beschreibung des Stands der TechnikDescription of the prior art
In einigen grafischen Subsystemen wird zur Erzeugung von grafischen Bildern eine Kachel-Architektur realisiert, wobei ein oder mehrere Bilderzeugungsziele, etwa ein Blockpuffer, in Bildschirm-Raum-Unterteilungen, die als Kacheln bezeichnet werden, unterteilt werden. In einer derartigen Kachel-Architektur ordnet das Graphiksubsystem Arbeit derart um, dass die mit einer speziellen Kachel verknüpfte Arbeit in einem chipinternen Cache-Speicher für längere Zeit verbleibt, als dies mit einer Architektur der Fall wäre, die Arbeit nicht auf diese Weise umordnet. Diese Umordnung hilft dabei, die Speicherbandbreite im Vergleich zu einer Nicht-Kachel-Architektur zu verbessern.In some graphics subsystems, a tiling architecture is implemented for rendering graphics images, wherein one or more rendering targets, such as a block buffer, are divided into screen-space subdivisions called tiles. In such a tile architecture, the graphics subsystem reorders work such that the work associated with a particular tile resides in an on-chip cache for a longer time than would be the case with an architecture that does not reorder work in this manner. This rearrangement helps improve memory bandwidth compared to a non-tile architecture.
Typischerweise ändert sich die Gruppe aus Bilderzeugungszielen im Laufe der Zeit, wenn die Erzeugung des Bildes voranschreitet. Beispielsweise könnte in einem ersten Durchlauf eine erste Konfiguration von Bilderzeugungszielen angewendet werden, um das Bild teilweise zu erzeugen. In einem zweiten Durchlauf könnte eine zweite Konfiguration von Bilderzeugungszielen verwendet werden, um das Bild zu erzeugen. In einem dritten Durchlauf könnte eine dritte Gruppe an Bilderzeugungszielen verwendet werden, um letztlich die Erzeugung des Bildes zu beenden. Während des Bilderzeugungsvorgangs könnte das Computer-Graphiksubsystem bis zu 50 oder mehr unterschiedliche Konfigurationen für Bilderzeugungsziele verwenden, um das endgültige Bild zu erzeugen. Jede unterschiedliche Konfiguration von Bilderzeugungszielen verbraucht eine unterschiedliche Menge an Speicher. Um die Wahrscheinlichkeit zu erhöhen, dass Arbeit in dem chipinternen Cache-Speicher verbleibt, werden typischerweise Kacheln so dimensioniert, dass sie die komplexeste Konfiguration von Bilderzeugungszielen, die während der Bilderzeugung verwendet werden, aufnehmen. Als Folge davon sind die Kacheln so dimensioniert, dass alle diversen Konfigurationen der Bilderzeugungsziele, die während der Erzeugung des endgültigen Bildes verwendet werden, umfasst werden - von der komplexesten bis zu der wenigsten komplexesten Konfiguration für Bilderzeugungsziele.Typically, the set of imaging targets will change over time as the imaging progresses. For example, in a first pass, a first configuration of imaging targets could be applied to partially render the image. In a second pass, a second configuration of imaging targets could be used to create the image. In a third pass, a third set of rendering targets could be used to ultimately finish rendering the image. During the rendering process, the computer graphics subsystem could use up to 50 or more different rendering target configurations to generate the final image. Each different configuration of rendering targets consumes a different amount of memory. To increase the likelihood of work remaining in the on-chip cache, tiles are typically sized to accommodate the most complex configuration of rendering targets used during rendering. As a result, the tiles are sized to accommodate all of the various rendering target configurations used during generation of the final image - from the most complex to the least complex rendering target configuration.
Ein Nachteil der obigen Vorgehensweise besteht darin, dass Kacheln für weniger komplexe Konfigurationen von Bilderzeugungszielen ineffizient dimensioniert sind. Unter anderem benötigen weniger komplexe Konfigurationen von Bilderzeugungszielen die kleinere Kachelgröße, die für komplexere Konfigurationen von Bilderzeugungszielen erforderlich ist, so dass Arbeit in dem Cache-Speicher während des Bilderzeugungsvorgangs verfügbar bleibt. Bei einer kleineren Kachelgröße werden mehr Kacheln benötigt, um den vollständigen Bildschirm-Raum abzudecken, im Vergleich zu einer größeren Kachelgröße, bei der weniger Kacheln erforderlich sind, um den gleichen Bildschirm-Raum abzudecken. Die geringere Kachelgröße führt zu einem erhöhten Rechenaufwand, da Rechenanforderungen anwachsen, wenn die Anzahl an Kacheln zunimmt. Als Folge davon wird Rechenleistung für weniger komplexe Konfigurationen von Bilderzeugungszielen verschwendet. Wittenbrink C.M. et al geben in „Fermi GF100 GPU architecture“ Micro, IEEE, 2011, Vol 31(2). 50-59 einen Überblick über die Fermi GPU Architektur. Liktor G. et al beschreiben in „Decoupled deferred shading for hardware rasterization“, Proceedings of the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games, ACM, 2012, S. 143-150, ein Verfahren zur Erzeugung einer Geometrie, bei dem Schattierungen unabhängig von der Sichtbarkeit gespeichert werden. Hsiao, C.C: et al zeigt in „A hierarchical primitive lists structure for tile-based rendering“, Computational Science and Engineering, 2009, CSE'09, International Conference on IEEE, 2009, S 408-413 eine kachelbasierte Bilderzeugung welche eine hierarchische Liste von Grundelementen verwendet.A disadvantage of the above approach is that tiles are inefficiently sized for less complex configurations of rendering targets. Among other things, less complex rendering target configurations require the smaller tile size required for more complex rendering target configurations so that work remains available in the cache during the rendering process. A smaller tile size requires more tiles to cover full screen space compared to a larger tile size, which requires fewer tiles to cover the same screen space. The smaller tile size results in increased computational overhead, as computational requirements increase as the number of tiles increases. As a result, computational power is wasted on less complex configurations of imaging targets. Wittenbrink C.M. et al give in "Fermi GF100 GPU architecture" Micro, IEEE, 2011, Vol 31(2). 50-59 an overview of the Fermi GPU architecture. In "Decoupled deferred shading for hardware rasterization", Proceedings of the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games, ACM, 2012, pp. 143-150, Liktor G. et al describe a method for generating a geometry in which shading is independent be saved from visibility. Hsiao, C.C: et al in "A hierarchical primitive lists structure for tile-based rendering", Computational Science and Engineering, 2009, CSE'09, International Conference on IEEE, 2009, S 408-413 shows a tile-based rendering which a hierarchical list used by basic elements.
Wie das Vorhergehende zeigt, ist das, was im Stand der Technik benötigt wird, eine Technik zur effizienteren Nutzung eines Cache-Speichers in einem Graphiksubsystem, das eine Kachel-Architektur verwendet, bei dem Cache Kacheln einfach in ihrer Größe angepasst werden können.As the foregoing indicates, what is needed in the art is a technique for more efficient use of cache memory in a graphics subsystem employing a tile architecture in which cache tiles can be easily resized.
ÜBERBLICK ÜBER DIE ERFINDUNGOVERVIEW OF THE INVENTION
Eine Ausführungsform der vorliegenden Erfindung gibt ein Verfahren zum adaptiven Dimensionieren von Cache- Kacheln in einem Grafiksystem gemäß Anspruch 1 an. Das Verfahren umfasst unter anderem das Festlegen einer mit einer ersten Cache-Kachel verknüpften Cache-Kachelgröße auf eine erste Größe. Das Verfahren umfasst ferner das Erkennen eines Wechsels von einer ersten Bilderzeugungszielkonfiguration, die eine Gruppe aus Bilderzeugungszielen enthält, in eine zweite Bilderzeugungszielkonfiguration, die eine zweite Gruppe aus Bilderzeugungszielen enthält. Das Verfahren umfasst ferner Festlegen der Cache-Kachelgröße auf eine zweite Größe auf der Grundlage der zweiten Bilderzeugungszielkonfiguration.An embodiment of the present invention provides a method for adaptive dimming sioning of cache tiles in a graphics system according to
Ein Vorteil der offenbarten Vorgehensweise besteht darin, dass die Cache-Kachelgröße adaptiv dimensioniert wird auf der Grundlage einer Bilderzeugungszielkonfiguration und einer Cache-Konfiguration. Es werden kleinere Cache-Kachelgrößen für komplexere Bilderzeugungszielkonfigurationen verwendet, während größere Cache-Kachelgrößen für weniger komplexere Bilderzeugungszielkonfigurationen verwendet werden. Durch adaptives Dimensionieren der Cache-Kacheln auf der Grundlage der Bilderzeugungszielkonfiguration wird weniger Rechenleistung benötigt, um die Cache-Kacheln zu verarbeiten, woraus sich eine effizientere Prozessorausnutzung und geringere Leistungsanforderungen ergeben.An advantage of the disclosed approach is that the cache tile size is adaptively sized based on a rendering target configuration and a cache configuration. Smaller cache tile sizes are used for more complex rendering target configurations, while larger cache tile sizes are used for less complex rendering target configurations. By adaptively sizing the cache tiles based on the rendering target configuration, less computing power is required to process the cache tiles, resulting in more efficient processor utilization and lower performance requirements.
Figurenlistecharacter list
Um die Art und Weise, in der die oben genannten Merkmale der vorliegenden Erfindung im Detail zu verstehen sind, anzugeben, wird eine detailliertere Beschreibung der Erfindung, die zuvor kurz zusammengefasst ist, angegeben mit Bezug zu Ausführungsformen, von denen einige in den angefügten Zeichnungen dargestellt sind. Es sollte jedoch beachtet werden, dass die angefügten Zeichnungen nur typische Ausführungsformen dieser Erfindung darstellen und daher nicht als einschränkend für ihren Schutzbereich zu betrachten sind, da die Erfindung andere gleichermaßen wirksame Ausführungsformen zulässt.
-
1 ist eine Blockansicht, die ein Computersystem darstellt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren; -
2 ist eine Blockansicht einer Parallelverarbeitungseinheit, die in dem Parallelverarbeitungssubsystem aus1 gemäß einer Ausführungsform der vorliegenden Erfindung enthalten ist; -
3A ist eine Blockansicht eines allgemeinen Verarbeitungs-Clusters, der in der Parallelverarbeitungseinheit aus2 gemäß einer Ausführungsform der vorliegenden Erfindung enthalten ist; -
3B ist eine Konzeptansicht einer Grafikverarbeitungs-Pipeline, die in der Parallelverarbeitungseinheit aus2 gemäß einer Ausführungsform der vorliegenden Erfindung realisiert werden kann; -
4 ist eine Konzeptansicht einer Cache-Kachel, für die die Grafikverarbeitungs-Pipeline aus3B ausgebildet ist, diese zu erzeugen und zu verarbeiten gemäß einer Ausführungsform der vorliegenden Erfindung; -
5 zeigt eine Gruppe aus Bilderzeugungszielen, wie sie in einem oder mehreren der DRAMs aus2 gemäß einer Ausführungsform der vorliegenden Erfindung gespeichert sind; -
6 zeigt eine Reihe von Bilderzeugungszielkonfigurationen, die mit der Bilderzeugung eines Computergrafikbildes gemäß einer Ausführungsform der vorliegenden Erfindung verknüpft ist; und -
7 gibt ein Flussdiagramm von Verfahrensschritten an, um Cache-Kacheln gemäß einer Ausführungsform der vorliegenden Erfindung adaptiv zu dimensionieren.
-
1 Figure 12 is a block diagram illustrating a computer system configured to implement one or more aspects of the present invention; -
2 Fig. 12 is a block diagram of a parallel processing unit included in theparallel processing subsystem 1 according to an embodiment of the present invention; -
3A Figure 12 is a block diagram of a general processing cluster implemented in theparallel processing unit 2 according to an embodiment of the present invention; -
3B Fig. 12 is a conceptual view of a graphics processing pipeline executed in theparallel processing unit 2 can be implemented according to an embodiment of the present invention; -
4 Figure 12 is a conceptual view of a cache tile for which the graphics processing pipeline is drawn3B configured to generate and process them in accordance with an embodiment of the present invention; -
5 Figure 12 shows a set of imaging targets as defined in one or more of theDRAMs 2 stored in accordance with an embodiment of the present invention; -
6 Figure 12 shows a series of rendering target configurations associated with rendering a computer graphics image in accordance with an embodiment of the present invention; and -
7 Figure 12 provides a flowchart of method steps to adaptively size cache tiles in accordance with an embodiment of the present invention.
DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION
In der folgenden Beschreibung sind diverse spezielle Details angegeben, um ein gründlicheres Verständnis der vorliegenden Erfindung bereitzustellen. Jedoch erkennt der Fachmann auf diesem Gebiet, dass die vorliegende Erfindung ohne ein oder mehrere dieser speziellen Details praktiziert werden kann.In the following description, various specific details are set forth in order to provide a more thorough understanding of the present invention. However, those skilled in the art will recognize that the present invention may be practiced without one or more of these specific details.
Systemüberblicksystem overview
Im Betrieb ist die I/O-Brücke 107 ausgebildet, Anwendereingabeinformation aus Eingabegeräten 108, etwa einer Tastatur oder einer Maus, zu erhalten und die Eingabeinformation an die CPU 102 zur Verarbeitung über den Kommunikationspfad 106 und die Speicherbrücke 105 weiterzuleiten. Der Schalter 116 ist ausgebildet, Verbindungen zwischen der I/O-Brücke 107 und anderen Komponenten des Computersystems 100, etwa einem Netzwerkadapter 118 und diversen Zusatzkarten 120 und 121 herzustellen.In operation, I/O bridge 107 is configured to receive user input information from input devices 108, such as a keyboard or mouse, and to pass the input information to
Wie ferner gezeigt ist, ist die I/O-Brücke 107 mit einer Systemdiskette 114 verbunden, die ausgebildet sein kann, Inhalt und Anwendungen und Daten zur Verwendung durch die CPU 102 und das Parallelverarbeitungssubsystem 112 zu speichern. Allgemein stellt die Systemdiskette 114 nicht-flüchtigen Speicherplatz für Anwendungen und Daten zur Verfügung und kann fest installierte oder entfernbare Festplattenlaufwerke, Fleisch-Speichereinrichtungen und CD-(Kompaktdisketten-Nur-Lese-Speicher), DVD-(digitale Vielseitigkeitsdisketten-ROM), Blu-ray, HD-DVD (hochauflösende DVD) oder andere magnetische, optische oder elektronische Speichereinrichtungen umfassen. Schließlich können, obwohl dies nicht explizit gezeigt ist, andere Komponenten, etwa ein universeller serieller Bus oder andere Portverbindungen, Kompaktdisketten-Laufwerke, digitale Vielseitigkeitsdisketten-Laufwerke, Filmaufzeichnungsgeräte und dergleichen mit der I/O-Brücke 107 ebenfalls verbunden sein.As further shown, I/O bridge 107 is connected to a
In diversen Ausführungsformen kann die Speicherbrücke 105 ein Nordbrücken-Chip sein, und die I/O-Brücke 107 kann ein Südbrücken-Chip sein. Des weiteren können die Kommunikationspfade 106 und 113 sowie andere Kommunikationspfade innerhalb des Computersystems 100 unter Verwendung beliebiger technisch geeigneter Protokolle realisiert werden, wozu, ohne Einschränkung, gehören: AGP (beschleunigter Graphikport), HyperTransport oder andere Bus-oder Punkt-Zu-Punkt-Kommunikationsprotokolle, die im Stand der Technik bekannt sind.In various embodiments,
In einigen Ausführungsformen umfasst das Parallelverarbeitungssubsystem 112 ein Graphiksubsystem, das Pixel an ein Anzeigegerät 110 liefert, das eine beliebige konventionelle Kathodenstrahlröhre, eine Flüssigkristallanzeige, eine Anzeige mit lichtemittierenden Dioden oder dergleichen sein kann. In derartigen Ausführungsformen enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für Grafik-oder Videoverarbeitung optimiert ist, wozu beispielsweise eine Video-Ausgabeschaltung gehört. Wie nachfolgend in
In diversen Ausführungsformen kann das Parallelverarbeitungssubsystem 112 in einem oder mehreren anderen der anderen Elemente aus
Zu beachten ist, dass das hierin gezeigte System anschaulicher Natur ist und dass diverse Variationen und Modifizierungen möglich sind. Die Verbindungstopologie, einschließlich der Anzahl und Anordnung von Brücken, die Anzahl an CPUs 102 und die Anzahl an Parallelverarbeitungssubsystemen 112 können nach Bedarf modifiziert werden. Beispielsweise könnte in einigen Ausführungsformen der Systemspeicher 104 mit der CPU 102 direkt anstatt über die Speicherbrücke 105 verbunden sein, und andere Geräte könnten mit dem Systemspeicher 104 über die Speicherbrücke 105 und die CPU 102 kommunizieren. In anderen alternativen Topologien kann das Parallelverarbeitungssubsystem 112 mit der I/O-Brücke 107 oder direkt mit der CPU 102 anstatt über die Speicherbrücke 105 verbunden sein. In noch anderen Ausführungsformen können die I/O-Brücke 107 und die Speicherbrücke 105 in einem einzelnen Chip integriert sein, anstatt dass sie als ein oder mehrere diskrete Bauelemente vorhanden sind. Schließlich können in gewissen Ausführungsformen eine oder mehrere der in
In einigen Ausführungsformen umfasst die PPU 202 eine grafische Verarbeitungseinheit (GPU), die ausgebildet sein kann, eine Grafikerzeugungs-Pipeline zu realisieren, um diverse Operationen auszuführen, die mit der Erzeugung von Pixeldaten auf der Grundlage von Grafikdaten in Beziehung stehen, die von der CPU 102 und/oder dem Systemspeicher 104 zugeführt werden. Wenn Grafikdaten verarbeitet werden, kann der PP-Speicher 204 als ein Grafikspeicher verwendet werden, der einen oder mehrere konventionelle Blockpuffer und bei Bedarf auch ein oder mehrere andere Bilderzeugungsziele speichert. Unter anderem kann der PP-Speicher 204 verwendet werden, um Pixeldaten zu speichern und zu aktualisieren und schließlich endgültige Pixeldaten oder Anzeigeblöcke zu dem Anzeigegerät 110 zur Darstellung zu leiten. In einigen Ausführungsformen kann die PPU 202 für die Verarbeitung für Allgemeinzwecke und Rechenoperationen ausgebildet sein.In some embodiments, the
Während des Betriebs ist die CPU 102 der übergeordnete Prozessor des Computersystems 100, der den Betrieb anderer Systemkomponenten steuert und koordiniert. Insbesondere gibt die CPU 102 Befehle aus, die den Betrieb der PPU 202 steuern. In einigen Ausführungsformen schreibt die CPU 102 einen Strom von Befehlen für die PPU 202 in eine Datenstruktur (in
Wie ferner gezeigt ist, umfasst die PPU 202 eine I/O-(Eingangs/Ausgangs-) Einheit 205, die mit dem Rest des Computersystems 100 über den Kommunikationspfad 113 und die Speicherbrücke 105 kommuniziert. Die I/O-Einheit 205 erzeugt Pakete (oder andere Signale) zur Übertragung auf dem Kommunikationspfad 113 und empfängt ferner alle eintreffenden Pakete (oder andere Signale) aus dem Kommunikationspfad 113 und leitet die eintreffenden Pakete zu geeigneten Komponenten der PPU 202. Beispielsweise können Befehle, die mit Verarbeitungsaufgaben in Bezug stehen, an eine übergeordnete Schnittstelle bzw. Hauptschnittstelle 206 geleitet werden, während Befehle, die mit Speicheroperationen in Verbindung stehen (beispielsweise Auslesen aus dem und Schreiben in den PP-Speicher 204) zu einer Kreuzungseinheit 210 gesendet werden. Die Hauptschnittstelle 206 liest jeden Schiebepuffer aus und sendet den in dem Schiebepuffer gespeicherten Befehlsstrom an einen Frontbereich 212.As further shown,
Wie zuvor in Verbindung mit
Während des Betriebs sendet der Frontbereich 212 Verarbeitungsaufgaben, die aus der Hauptschnittstelle 206 empfangen werden, an eine Arbeitsverteilungseinheit (nicht gezeigt) in der Aufgaben/Arbeitseinheit 207. Die Arbeitsverteilungseinheit empfängt Zeiger auf Verarbeitungsaufgaben, die als Aufgaben-Metadaten (TMD) codiert und im Speicher gespeichert sind. Die Zeiger auf die TMD sind in einem Befehlsstrom enthalten, der als ein Schiebepuffer gespeichert ist und von der Frontbereichseinheit 212 aus der Hauptschnittstelle 206 empfangen wird. Verarbeitungsaufgaben, die als TMD codiert sein können, enthalten Indices, die mit den zu verarbeitenden Daten verknüpft sind, sowie Zustandsparameter und Befehle, die definieren, wie die Daten zu verarbeiten sind. Beispielsweise können die Zustandsparameter und die Befehle das Programm festlegen, das an den Daten auszuführen ist. Die Aufgaben/Arbeitseinheit 207 empfängt Aufgaben aus dem Frontbereich 212 und stellt sicher, dass GPCs 208 in einen zulässigen Zustand konfiguriert werden, bevor die von jedem Satz der TMD spezifizierte Verarbeitungsaufgabe initiiert wird. Es kann eine Priorität für jeden Satz an TMD spezifiziert werden, die verwendet wird, um die Ausführung der Verarbeitungsaufgaben zu disponieren. Verarbeitungsaufgaben können ferner aus dem Verarbeitungs-Cluster-Array 230 empfangen werden. Optional können die TMD einen Parameter enthalten, der steuert, ob die TMD dem Anfang oder dem Ende einer Liste an Verarbeitungsaufgaben (oder eine Liste aus Zeigern auf die Verarbeitungsaufgaben) hinzugefügt werden, wodurch eine weitere Ebene an Steuerung zusätzlich zur Ausführungspriorität bereitgestellt wird.During operation,
Die PPU 202 realisiert vorteilhafterweise eine hoch parallele Verarbeitungsarchitektur auf der Grundlage eines Verarbeitungs-Cluster-Arrays 230, das eine Gruppe aus C allgemeinen Verarbeitungs-Clustern (GPCs) 208 umfasst, wobei C ≥ 1 ist. Jeder GPC 208 ist in der Lage, eine große Anzahl (beispielsweise hunderte oder tausende) von Strängen gleichzeitig auszuführen, wobei jeder Strang eine Instanz eines Programms ist. In diversen Anwendungen können unterschiedliche GPCs 208 für unterschiedliche Arten von Programmen oder zum Ausführen unterschiedlicher Arten von Berechnungen reserviert bzw. zugewiesen werden. Die Zuweisung von GPCs 208 kann abhängig von der Arbeitslast unterschiedlich sein, die sich für jede Art von Programm oder Berechnung ergibt.The
Eine Speicherschnittstelle 214 enthält eine Gruppe aus D Partitionseinheiten 215, wobei D ≥ 1 ist. Jede Partitionseinheit 215 ist mit einem oder mehreren dynamischen Speichern mit wahlfreiem Zugriff (DRAM) 220 verbunden, die in dem PP-Speicher 204 liegen. In einer Ausführungsform ist die Anzahl an Partitionseinheiten 215 gleich der Anzahl an DRAMs 220, und jede Partitionseinheit 215 ist mit einem anderen DRAM 220 verbunden. In anderen Ausführungsformen unterscheidet sich die Anzahl an Partitionseinheiten 215 von der Anzahl an DRAMs 220. Der Fachmann auf dem Gebiet erkennt, dass ein DRAM 220 durch eine beliebige andere technische geeignete Speichereinrichtung ersetzt werden kann. Im Betrieb können diverse Bilderzeugungsziele, etwa Texturzuordnungen und Blockpuffer, über die DRAMs 220 hinweg gespeichert werden, wodurch es den Partitionseinheiten 215 ermöglicht wird, Bereiche jedes Bilderzeugungsziels parallel zu beschreiben, um effizient die verfügbare Bandbreite des PP-Speichers 204 zu nutzen.A
Ein gegebener GPC 208 kann Daten verarbeiten, die in einen oder mehrere der DRAMs 220 in dem PP-Speicher 204 zu schreiben sind. Die Kreuzungseinheit 210 ist ausgebildet, die Ausgabe jedes GPC 208 zu dem Eingang einer Partitionseinheit 215 oder zu einem anderen GPC 208 für die weitere Verarbeitung zu leiten. Die GPCs 208 kommunizieren mit der Speicherschnittstelle 214 über die Kreuzungseinheit 210, um diverse DRAMs 220 auszulesen oder diese zu beschreiben. In einer Ausführungsform hat die Kreuzungseinheit 210 eine Verbindung zu der I/O-Einheit 205 zusätzlich zu eine Verbindung zu dem PP-Speicher 204 über die Speicherschnittstelle 214, wodurch die Verarbeitungskerne in den unterschiedlichen GPCs 208 in die Lage versetzt werden, mit dem Systemspeicher 104 oder mit einem anderen Speicher, der nicht lokal für die PPU 202 ist, in Verbindung zu treten. In der Ausführungsform aus
Wiederum können die GPCs 208 so programmiert sein, dass sie Verarbeitungsaufgaben ausführen, die mit einer großen Fülle von Anwendungen in Beziehung stehen, wozu gehören, ohne Einschränkung, lineare und nicht-lineare Datentransformationen, die Filterung von Video-und/oder Audiodaten, Modellierungsoperationen (beispielsweise die Anwendung physikalischer Gesetze zur Bestimmung von Position, Geschwindigkeit und anderen Attributen von Objekten), Bilderzeugungsoperationen (beispielsweise Programme zur Parkettierung-Schattierung, Vertex-Schattierung, Geometrie-Schattierung und/oder Pixel/Fragment-Schattierung), allgemeine Berechnungsmethoden, usw. Im Betrieb ist die PPU 202 ausgebildet, Daten von dem Systemspeicher 104 und/oder dem PP-Speicher 204 zu einer oder mehreren chipinternen Speichereinheiten zu übertragen, die Daten zu verarbeiten und Ergebnisdaten zurück in den Systemspeicher 104 und/oder den PP-Speicher 204 zu schreiben. Auf die Ergebnisdaten kann von anderen Systemkomponenten sodann zugegriffen werden, wozu die CPU 102, eine weitere PPU 202 innerhalb des Parallelverarbeitungssubsystems 112 oder ein weiteres Parallelverarbeitungssubsystem 112 in dem Computersystem 100 gehören.Again, the
Wie zuvor angegeben ist, kann eine beliebige Anzahl an PPUs 202 in dem Parallelverarbeitungssubsystem 112 enthalten sein. Beispielsweise können mehrere PPUs 202 in einer einzelnen Zusatzkarte bereitgestellt werden, oder es können mehrere Zusatzkarten mit dem Kommunikationspfad 113 verbunden werden, oder eine oder mehrere der PPUs 202 können in einem Brückenchip integriert sein. Die PPUs 202 in einem Multi-PPU-System können identisch oder unterschiedlich zueinander sein. Beispielsweise können unterschiedliche PPUs 202 eine unterschiedliche Anzahl an Verarbeitungskernen und/oder unterschiedliche Größen des PP-Speichers 204 aufweisen. In Ausführungsformen, in denen mehrere PPUs 202 vorhanden sind, können diese PPUs parallel betrieben werden, um Daten mit einem höheren Durchsatz zu verarbeiten, als dies mit einer einzelnen PPU 202 möglich wäre. Systeme, in denen eine oder mehrere PPUs 202 enthalten sind, können in einer Vielzahl von Konfigurationen und Formfaktoren realisiert werden, wozu gehören, ohne einschränkend zu sein, Tischrechner, Mobilrechner, Hand-Personalcomputer oder andere Hand-Geräte, Dienstleister-Rechner, Arbeitsplatzrechner, Spielekonsolen, eingebettete Systeme und dergleichen.As previously indicated, any number of
Der Betrieb des GPC 208 wird durch einen Pipeline-Verwalter 305 gesteuert, der Verarbeitungsaufgaben, die er aus einer Arbeitsverteilungseinheit (nicht gezeigt) in der Aufgaben/Arbeitseinheit 207 empfängt, an einen oder mehrere Datenstrom-Multiprozessoren (SM) 310 verteilt. Der Pipeline-Verwalter 305 kann auch ausgebildet sein, eine Arbeitsverteilungs-Kreuzungseinheit 330 durch Angabe von Zielen für verarbeitete Daten, die von den SM 310 ausgegeben werden, zu steuern.The operation of the
In einer Ausführungsform enthält der GPC 208 eine Gruppe aus M SM 310, wobei M ≥ 1 ist. Ferner enthält jeder SM 310 eine Gruppe aus Funktionsausführungseinheiten (nicht gezeigt), etwa Ausführungseinheiten und Lade-Speicher-Einheiten. Die Verarbeitung von Operationen, die speziell für jegliche der Funktionsausführungseinheiten ist, kann als Pipeline betrieben bzw. parallel ausgeführt werden, wodurch es möglich ist, dass ein neuer Befehl zur Ausführung ausgegeben wird, bevor die Ausführung eines vorhergehenden Befehls abgeschlossen ist. Es kann eine beliebige Kombination aus Funktionsausführungseinheiten in einem gegebenen SM 310 bereitgestellt werden. In diversen Ausführungsformen können die Funktionsausführungseinheiten ausgebildet sein, eine Vielzahl unterschiedlicher Operationen zu unterstützen, wozu Ganzzahl-und Fließkommaarithmetik (beispielsweise Addition und Multiplikation), Vergleichsoperationen, Bool'sche Operationen (UND, ODER, EXKLUSIV ODER), Bit-Verschiebung und Berechnung diverser algebraischer Funktionen (beispielsweise ebene Interpolation, trigonometrische, exponentielle und logarithmische Funktionen usw.) gehören. Vorteilhafterweise kann die gleiche Funktionsausführungseinheiten ausgebildet sein, unterschiedliche Operationen auszuführen.In one embodiment,
Im Betrieb ist jeder SM 310 ausgebildet, eine oder mehrere Stranggruppen zu verarbeiten. Wie hierin verwendet, bedeutet eine „Stranggruppe“ oder „Wölbung“ eine Gruppe von Strängen, die gleichzeitig das gleiche Programm an unterschiedlichen Eingangsdaten ausführen, wobei ein einzelner Strang der Gruppe einer anderen Ausführungseinheit innerhalb eines SM 310 zugewiesen ist. Eine Stranggruppe kann weniger Stränge enthalten als es der Anzahl an Ausführungseinheiten innerhalb des SM 310 entspricht, in welchem Falle einige der Ausführungseinheiten während gewisser Zyklen untätig sein können, wenn diese Stranggruppe verarbeitet wird. Eine Stranggruppe kann auch mehr Stränge enthalten, als dies der Anzahl an Ausführungseinheiten innerhalb des SM 310 entspricht, in welchem Falle die Verarbeitung sich über aufeinanderfolgende Taktzyklen erstrecken kann. Da jeder SM 310 bis zu G Stranggruppen gleichzeitig unterstützen kann, folgt, dass bis zu G*M Stranggruppen in dem GPC 208 gleichzeitig ausgeführt werden können.In operation, each
Ferner können mehrere in Beziehung stehende Stranggruppen gleichzeitig in einen SM 310 aktiv sein (in unterschiedlichen Phasen der Ausführung). Diese Ansammlung an Stranggruppen wird hierin als ein „kooperatives Strang-Array“ („CTA“) oder als „Strang-Array“ bezeichnet. Die Größe eines speziellen CTA ist gleich m*k, wobei k die Anzahl an gleichzeitig ausgeführten Strängen in einer Stranggruppe ist, was typischerweise ein ganzzahliges Vielfaches der Anzahl an Ausführungseinheiten innerhalb des SM 310 ist, und m die Anzahl an Stranggruppen ist, die gleichzeitig in dem SM 310 aktiv sind.Furthermore, multiple related thread groups may be active in an
Obwohl in
Jeder GPC 208 kann eine zugehörige Speicherverwaltungseinheit (MMU) 320 aufweisen, die ausgebildet ist, virtuelle Adressen auf physikalische Adressen abzubilden. In diversen Ausführungsformen kann die MMU 320 in dem GPC 208 liegen oder kann in der Speicherschnittstelle 214 liegen. Die MMU 320 enthält eine Gruppe aus Seitentabelleneinträgen (PTE), die verwendet werden, um eine virtuelle Adresse einer physikalischen Adresse einer Kachel oder einer Speicherseite und optional einem Cache-Zeilenindex zuzuordnen. Die MMU 320 kann Adressen-Translations-Nebenschaupuffer (TLB) oder Cache-Speicher enthalten, die in den SM 310, in einem oder mehreren L1-Cache-Speichern oder in dem GPC 208 liegen können.Each
In Grafik-und Rechenanwendungen kann der GPC 208 so ausgebildet sein, dass jeder SM 310 mit einer Textureinheit 315 zum Auslesen von Texturzuordnungsanforderungen verbunden ist, etwa die Bestimmung von Texturabtastpositionen, Auslesen von Texturdaten und Filterung von Texturdaten.In graphics and computing applications, the
Im Betrieb sendet jeder SM 310 eine Aufgabe zu der Arbeitsverteilungs-Kreuzungseinheit 330, um die verarbeitete Aufgabe einem weiteren GPC 208 für die Weiterverarbeitung zuzuleiten oder um die verarbeitete Aufgabe in einem L2-Cache-Speicher (nicht gezeigt), dem Parallelverarbeitungsspeicher 204 oder dem Systemspeicher 104 über die Kreuzungseinheit 210 zu speichern. Ferner ist eine Vor-Rasteroperationen-(vor-ROP-) Einheit 325 ausgebildet, Daten aus dem SM 310 zu empfangen, Daten einer oder mehreren Rasteroperationen-(ROP-) Einheiten in den Partitionseinheiten 215 zuzuführen, Optimierungen für Farbmischung auszuführen, Pixel-Farbdaten zu organisieren und Adressenübersetzungen auszuführen.In operation, each
Zu beachten ist, dass die hierin beschriebene Kernarchitektur anschaulicher Natur ist und dass Änderungen und Modifizierungen möglich sind. Unter anderem kann eine beliebige Anzahl an Verarbeitungseinheiten, etwa SM 310, Textureinheiten 315 oder Vor-ROP-Einheiten 325 in dem GPC 208 enthalten sein. Wie ferner oben in Verbindung mit
Grafik-Pipeline-ArchitekturGraphics pipeline architecture
Die PD 355 sammelt Vertex-Daten, die mit Oberflächen höherer Ordnung, grafischen Grundelementen und dergleichen verknüpft sind, aus dem Frontbereich 212 und sendet die Vertex-Daten an die VAF 360.The
Die VAF 360 ruft Vertex-Attribute, die mit jedem der eintreffenden Vertices verknüpft sind, aus dem gemeinsam benutzten Speicher ab und speichert die Vertex-Daten zusammen mit den zugehörigen Vertex-Attributen in dem gemeinsam benutzten Speicher.The
Die VTG 365 ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Vertex-Schattierungsprogramme, Parkettierung Programme und Geometrieprogramme auszuführen. Diese Programme verarbeiten Vertex-Daten und Vertex- Attribute, die aus der VAF 360 empfangen werden, und erzeugen grafische Grundelemente, etwa Farbwerte, Vektoren der Oberflächennormalen und Transparenzwerte an jedem Vertex für die grafischen Grundelemente für die weitere Verarbeitung innerhalb der Grafikverarbeitungs-Pipeline 350. Obwohl dies nicht explizit gezeigt ist, kann die VTG 365 in einigen Ausführungsformen eine oder mehrere der folgenden Einheiten umfassen: eine Vertex-Verarbeitungseinheit, eine Parkettierung-Initialisierungs-Verarbeitungseinheit, eine Aufgabenerzeugungseinheit, eine Aufgabenverteilungseinheit, eine Topologie-Erzeugungseinheit, eine Parkettierung-Verarbeitungseinheit und eine Geometrie-Verarbeitungseinheit.The
Die Vertex-Verarbeitungseinheit ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Vertex-Schattierungsprogramme, Beleuchtung und Transformation von Vertexdaten, wie sie von den Vertex-Schattierungsprogrammen angegeben werden, zu verarbeiten. Beispielsweise kann die Vertex-Verarbeitungseinheit programmiert sein, um die Vertex-Daten aus einer objektbasierten Koordinatendarstellung (Objektraum) in ein Koordinatensystem mit alternativer Basis, etwa einen Welt-Raum oder in einen Raum mit normierten Gerätekoordinaten (NDC) umzuwandeln. Die Vertex-Verarbeitungseinheit kann Vertex-Daten und Vertex-Attribute auslesen, die in einem gemeinsam benutzten Speicher von der VAF gespeichert wurden, und kann die Vertex-Daten und die Vertex-Attribute verarbeiten. Die Vertex-Verarbeitungseinheit 415 speichert verarbeitete Vertices in einem gemeinsam benutzten Speicher.The vertex processing unit is a programmable execution unit configured to process vertex shader programs, lighting, and transformation of vertex data as specified by the vertex shader programs. For example, the vertex processing unit may be programmed to convert the vertex data from an object-based coordinate representation (object space) to an alternative basis coordinate system, such as world space or normalized device coordinate (NDC) space. The vertex processing unit can read vertex data and vertex attributes stored in a shared memory by the VAF and process the vertex data and the vertex attributes. The vertex processing unit 415 stores processed vertices in shared memory.
Die Parkettierung-Initialisierungs-Verarbeitungseinheit ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Parkettierungs-Initialisierungs-Schattierungsprogramme auszuführen. Die Parkettierung-Initialisierungs-Verarbeitungseinheit verarbeitete Vertices, die von der Vertex-Verarbeitungseinheit erzeugt wurden, und erzeugt grafische Grundelemente, die als Fleckenbereiche bekannt sind. Die Parkettierung-Initialisierungs-Verarbeitungseinheit erzeugt ferner diverse Attribute für Fleckenbereiche. Die Parkettierung-Initialisierungs-Verarbeitungseinheit speichert dann die Fleckenbereichsdaten und Fleckenbereichsattribute in dem gemeinsam benutzten Speicher. In einigen Ausführungsformen kann das Parkettierung-Initialisierungs-Schattierungsprogramm eine Hüllenschattierung oder eine Parkettierungs-Steuer-Schattierung genannt werden.The tessellation initialization processing unit is a programmable execution unit configured to execute tessellation initialization shader programs. The tessellation initialization processing unit processes vertices generated by the vertex processing unit and generates graphics primitives known as patch regions. The tessellation initialization processing unit also creates various attributes for patch areas. The tessellation initialization processing unit then stores the blob area data and blob area attributes in the shared memory. In some embodiments, the tessellation initialization shader may be called a skin shade or a tessellation control shade.
Die Aufgabenerzeugungseinheit ruft Daten und Attribute für Vertices und Fleckenbereiche aus dem gemeinsam benutzten Speicher ab. Die Aufgabenerzeugungseinheit erzeugt Aufgaben zur Verarbeitung der Vertices und Fleckenbereiche für die Verarbeitung durch spätere Stufen in der Grafikverarbeitungs-Pipeline 350.The task generation unit retrieves data and attributes for vertices and blob areas from shared memory. The task generation unit generates tasks to process the vertices and patch areas for processing by later stages in the
Die Aufgabenverteilungseinheit verteilt die von der Aufgabenerzeugungseinheit erzeugten Aufgaben um. Die von den diversen Instanzen des Vertex-Schattierungsprogramms und dem Parkettierung-Initialisierungsprogramm erzeugten Aufgaben können von der einen Grafikverarbeitungs-Pipeline 350 zu einer weiteren deutlich unterschiedlich sein. Die Aufgabenverteilungseinheit verteilt diese Aufgaben derart um, dass jede Grafikverarbeitungs-Pipeline 350 während späterer Pipeline-Stufen ungefähr die gleiche Arbeitslast aufweist.The task distribution unit redistributes the tasks generated by the task generation unit. The tasks generated by the various instances of the vertex shader and the tessellation initializer can vary significantly from one
Die Topologie-Erzeugungseinheit ruft von der Aufgabenverwaltungseinheit verteilte Aufgaben ab. Die Topologie-Erzeugungseinheit indiziert die Vertices, einschließlich von Vertices, die mit Fleckenbereichen verknüpft sind, und berechnet (U, V) Koordinaten für Parkettierungs-Vertices und die Indices, die die die parkettartig verteilten Vertices verbinden, um grafische Grundelemente zu bilden. Die Topologie-Erzeugungseinheit speichert dann die indizierten Vertices in dem gemeinsam benutzten Speicher.The topology generation unit retrieves tasks distributed from the task management unit. The topology generation unit indexes the vertices, including vertices associated with patch regions, and computes (U,V) coordinates for tessellation vertices and the indices connecting the tessellated vertices to form graphical primitives. The topology generation unit then stores the indexed vertices in the shared memory.
Die Parkettierung-Verarbeitungseinheit ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Parkettierung-Schattierungsprogramme auszuführen. Die Parkettierung-Verarbeitungseinheit liest Eingangsdaten aus dem gemeinsam benutzten Speicher und schreibt Ausgangsdaten in diesen hinein. Diese Ausgangsdaten in dem gemeinsam benutzten Speicher werden an die nächste Schattierungsstufe, d.h. die Geometrie-Verarbeitungseinheit 445, als Eingangsdaten weitergegeben. In einigen Ausführungsformen kann das Parkettierung-Schattierungsprogramm als eine Bereichsschattierungseinheit oder eine Parkettierung-Bewertungs-Schattierungseinheit bezeichnet werden.The tessellation processing unit is a programmable execution unit configured to execute tessellation shading programs. The tessellation processing unit reads input data from and writes output data to the shared memory. This output data in shared memory is passed to the next shading stage, i.e. geometry processing unit 445, as input data. In some embodiments, the tessellation shader may be referred to as a region shader or a tessellation score shader.
Die Geometrie-Verarbeitungseinheit ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Geometrie-Schattierungsprogramme auszuführen, wodurch grafische Grundelemente transformiert werden. Es werden Vertices gruppiert, um grafische Grundelemente für die Verarbeitung zu bilden, wobei grafische Grundelemente Dreiecke, Liniensegmente, Punkte und dergleichen umfassen. Beispielsweise kann die Geometrie-Verarbeitungseinheit so programmiert sein, dass die grafischen Grundelemente in ein oder mehrere neue grafische Grundelemente unterteilt werden, und um Parameter zu berechnen, etwa Koeffizienten für eine Ebenengleichung, die verwendet werden, um die neuen grafischen Grundelemente in Raster einzuteilen.The geometry processing unit is a programmable execution unit configured to execute geometry shading programs, thereby transforming graphics primitives. Vertices are grouped to form graphics primitives for processing, where graphics primitives include triangles, line segments, points, and the like. For example, the geometry processing unit may be programmed to partition the graphics primitives into one or more new graphics primitives and to calculate parameters, such as coefficients for a plane equation, used to rasterize the new graphics primitives.
Die Geometrie-Verarbeitungseinheit sendet die Parameter und die Vertices, die die neuen grafischen Grundelemente angeben, an die VPC 370. Die Geometrie-Verarbeitungseinheit kann Daten auslesen, die in dem gemeinsam benutzten Speicher gespeichert sind, um diese bei der Verarbeitung der Geometriedaten zu verwenden. Die VPC 370 führt Schneidevorgänge, Auswahlvorgänge, perspektivische Korrekturen und eine Transformation des Darstellungsfeldes durch, um zu ermitteln, welche grafischen Grundelemente in dem schließlich erzeugten Bild potentiell betrachtet werden können, und welche grafischen Grundelemente potentiell nicht betrachtet werden können. Die VPC 370 sendet dann die verarbeiteten grafischen Grundelemente an die Kacheleinheit 375.The geometry processing unit sends the parameters and the vertices that the new graphi indicate geometric primitives to the
Die Kacheleinheit 375 ist eine Einheit zum Sortieren grafischer Grundelemente, die zwischen einer Welt-Raum-Pipeline 252 und einer Bildschirm-Raum-Pipeline 354 liegt, wie dies näher hierin beschrieben ist. Grafische Grundelemente werden in der Welt-Raum-Pipeline 352 verarbeitet und anschließend an die Kacheleinheit 375 übergeben. Der Bildschirm-Raum wird in Cache-Kacheln unterteilt, wobei jede Cache-Kachel mit einem Bereich des Bildschirm-Raums verknüpft ist. Für jedes grafische Grundelemente ermittelt die Kacheleinheit 375 die Gruppe aus Cache-Kacheln, die einen Schnittpunkt mit dem grafischen Grundelementen haben, wobei dieser Vorgang wird als „unterteilen in Kacheln“ bezeichnet ist. Nachdem eine gewisse Anzahl an grafischen Grundelementen in Kacheln unterteilt ist, verarbeitet die Kacheleinheit 375 die grafischen Grundelemente auf Ebene von Cache-Kacheln, wobei grafische Grundelemente, die zu einer speziellen Cache-Kachel gehören, zu der Einrichtungseinheit 380 gesendet werden. Die Kreuzungseinheit 375 sendet grafische Grundelemente an die Einrichtungseinheit 380, wobei eine einzige Cache-Kachel pro Zeiteinheit übergeben wird. Grafische Grundelemente, die mehrere Cache-Kacheln schneiden, werden typischerweise einmal in der Welt-Raum-Pipeline 352 verarbeitet, werden dann aber mehrere Male an die Bildschirm-Raum-Pipeline 354 übergeben.The
Eine derartige Technik verbessert die Cache-Speicherlokalität während der Verarbeitung in der Bildschirm-Raum-Pipeline 354, wobei mehrere Speicheroperationen, die mit einer ersten Cache-Kachel verknüpft sind, auf ein Gebiet der L2-Cache-Speicher zugreifen, oder auf einen anderen technisch machbaren Cache-Speicher, der während der Bildschirm-Raum-Verarbeitung der ersten Cache-Kachel beibehalten wird. Sobald die grafischen Grundelemente, die zu der ersten Cache-Kachel gehören, von der Bildschirm-Raum-Pipeline 354 verarbeitet sind, kann der Bereich der L2-Cache-Speicher, der zu der ersten Cache-Kachel gehört, gelöscht werden und die Kacheleinheit kann grafische Grundelemente, die zu einer zweiten Cache-Kachel gehören, übertragen. Es können mehrere Speicheroperationen, die mit einer zweiten Cache-Kachel verknüpft sind, dann auf das Gebiet der L2-Cache-Speicher zugreifen, die während der Bildschirm-Raum-Verarbeitung der zweiten Cache-Kachel erhalten bleiben. Folglich kann der gesamte Speicherverkehr zu den L2-Cache-Speichern und zu den Bilderzeugungszielen reduziert werden. In einigen Ausführungsformen wird die Welt-Raum-Berechnung für ein gegebenes grafisches Grundelement einmal ausgeführt, unabhängig von der Anzahl an Cache-Kacheln in dem Bildschirm-Raum, die das grafische Grundelemente schneiden.Such a technique improves cache locality during processing in the screen-
Die Einrichtungseinheit 380 empfängt Vertex-Daten aus der VPC 370 über die Kreuzungseinheit 375 und berechnet Parameter, die mit dem grafischen Grundelemente verknüpft sind, wozu gehören, ohne einschränkend zu sein, Kantengleichungen, Gleichungen für Teilebenen und Tiefebenen-Gleichungen. Die Einrichtungseinheit 380 sendet dann die verarbeiteten grafischen Grundelemente an die Rastereinheit 385.The
Die Rastereinheit 385 wandelt durch Abtastung die neuen grafischen Grundelemente um und sendet Fragmente und Abdeckungsdaten an die Pixel-Schattierungseinheit 390. Des weiteren kann die Rastereinheit 385 ausgebildet sein, eine z-Auswahl und andere z-basierte Optimierungen auszuführen.The
Die Pixel-Schattierungseinheit 390 ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Fragment-Schattierungsprogramme auszuführen, die Fragmente transformiert, die von der Rastereinheit 385 erhalten werden, wie sie von den Fragment-Schattierungsprogramme angegeben werden. Fragment-Schattierungsprogramme können Fragmente mit einer Auflösung auf Pixelebene schattieren, wobei derartige Schattierungsprogramme Pixel-Schattierungsprogramme genannt werden können. Alternativ können Fragment-Schattierungsprogramme mit einer Auflösung auf Abtastebene schattieren, wobei jedes Pixel mehrere Abtastwerte enthält, und wobei jeder Abtastwert einen Teilbereich eines Pixels repräsentiert. Alternativ können Fragment-Schattierungsprogramme Fragmente mit einer beliebigen anderen technisch machbaren Auflösung schattieren, wobei dies von der programmierten Abtastrate abhängig ist.The
In diversen Ausführungsformen kann die Fragment-Verarbeitungseinheit 460 programmiert sein, um Operationen, etwa perspektivische Korrektur, Texturzuordnungen, Schattierung, Mischung und dergleichen auszuführen, um schattierte Fragmente zu erzeugen, die dann an die ROP 395 gesendet werden. Die Pixel-Schattierungseinheit 300 kann Daten lesen, die in dem gemeinsam benutzten Speicher gespeichert sind.In various embodiments, fragment processing unit 460 may be programmed to perform operations such as perspective correction, texture mapping, shading, blending, and the like to generate shaded fragments that are then sent to
Die ROP 395 ist eine Verarbeitungseinheit, die Raster-Operationen, etwa Schablone, z-Test, Mischung und dergleichen ausführt, und die Pixeldaten als verarbeitete Grafikdaten zur Speicherung im Grafikspeicher über die Speicherschnittstelle 214 übergibt, wobei der Grafikspeicher typischerweise als ein oder mehrere Bilderzeugungsziele strukturiert ist. Die verarbeiteten Grafikdaten können in dem Grafikspeicher, in dem Parallelverarbeitungsspeicher 204 oder in den Systemspeicher 104 zur Darstellung auf dem Anzeigegerät 110 oder für die Weiterverarbeitung durch die CPU 102 oder das Parallelverarbeitungssubsystem 112 gespeichert werden. In einigen Ausführungsformen ist die ROP 395 ausgebildet, z-Daten oder Farbdaten zu komprimieren, die in den Speicher geschrieben werden, und z-Daten oder Farbdaten, die aus dem Speicher gelesen werden, zu dekomprimieren. In diversen Ausführungsformen kann die ROP 395 in der Speicherschnittstelle 214, in den GPCs 208, in dem Verarbeitungs-Cluster-Array 230 außerhalb der GPCs oder in einer separaten Einheit (nicht gezeigt) in den PPUs 202 angeordnet sein.The
Die Grafikverarbeitungs-Pipeline kann durch ein oder mehrere Verarbeitungselemente in der PPU 202 realisiert werden. Beispielsweise kann einer der SM 310 aus
In einigen Ausführungsformen kann die Grafikverarbeitungs-Pipeline 350 in eine Bild-Raum-Pipeline 352 und eine Bildschirm-Raum-Pipeline 354 unterteilt werden. Die Welt-Raum-Pipeline 352 verarbeitet grafische Objekte im 3D-Raum, in welchem die Position jedes grafischen Objekts relativ zu anderen grafischen Objekten und relativ zu einem 3D-Koordinatensystem bekannt ist. Die Bildschirm-Raum-Pipeline 354 verarbeitet grafische Objekte, die von dem 3D-Koordinatensystem auf eine 2D-ebene Fläche projiziert worden sind, die die Oberfläche des Anzeigegeräts 110 repräsentiert. Beispielsweise kann die Welt-Raum-Pipeline 352 Pipeline-Stufen in der Grafikverarbeitungs-Pipeline 350 aus der PD 355 bis zu der VPC 370 enthalten. Die Bildschirm-Raum-Pipeline 354 kann Pipeline-Stufen in der Grafikverarbeitungs-Pipeline 350 von der Einrichtungseinheit 380 bis zu der ROP 395 aufweisen. Die Kacheleinheit 375 würde nach der letzten Stufe der Welt-Raum-Pipeline 352, d.h., nach der VPC 370, auftreten. Die Kacheleinheit 375 würde vor der ersten Stufe der Bildschirm-Raum-Pipeline 354, d.h. vor der Einrichtungseinheit 380, auftreten.In some embodiments, the
In einigen Ausführungsformen kann die Bild-Raum-Pipeline 352 weiter in eine Alpha-Phasen-Pipeline und eine Beta-Phasen-Pipeline unterteilt werden. Beispielsweise kann die Alpha-Phasen-Pipeline Pipeline-Stufen in der Grafikverarbeitungs-Pipeline 350 von der PD 355 bis zu der Aufgabenerzeugungseinheit enthalten. Die Beta-Phasen-Pipeline kann Pipeline-Stufen in der Grafikverarbeitungs-Pipeline 350 von der Topologie-Erzeugungseinheit bis zu der VPC 370 enthalten. Die Grafikverarbeitungs-Pipeline 350 führt eine erste Gruppe aus Operationen während der Verarbeitung in der Alpha-Phasen-Pipeline aus und führt eine zweite Gruppe aus Operationen während der Verarbeitung in der Beta-Phasen-Pipeline aus. Im hierin verwendeten Sinne ist eine Gruppe aus Operationen als ein oder mehrere Befehle definiert, die von einem einzelnen Strang, von einer Stranggruppe oder von mehreren Stranggruppen, die als Einheit agieren, ausgeführt werden.In some embodiments, the image-
In einem System mit mehreren Grafikverarbeitungs-Pipelines 350 können die Vertex-Daten und die Vertex-Attribute, die mit einer Gruppe aus grafischen Objekten verknüpft sind, so unterteilt werden, dass jede Grafikverarbeitungs-Pipeline 350 ungefähr die gleiche Menge an Arbeitslast während der Alpha-Phase besitzt. Die Alpha-Phasenverarbeitung kann die Menge an Vertex-Daten und Vertex-Attributen deutlich erweitern, so dass die Menge an Vertex-Daten und Vertex-Attributen, die von der Aufgabenerzeugungseinheit erzeugt werden, deutlich größer ist als die Menge an Vertex-Daten und Vertex-Attributen, die von der PD 255 und der VAF 360 erzeugt wird. Ferner kann die Aufgabenerzeugungseinheit, die mit einer einzelnen Grafikverarbeitungs-Pipeline 350 verknüpft ist, eine deutlich größere Menge an Vertex-Daten und Vertex-Attributen erzeugen als die Aufgabenerzeugungseinheit, die mit einer anderen Grafikverarbeitungs-Pipeline 350 verknüpft ist, selbst in Fällen, in denen die zwei Grafikverarbeitungs-Pipelines 350 die gleiche Menge an Attributen zu Beginn der Alpha-Phasen-Pipeline verarbeiten. In derartigen Fällen verteilt die Aufgabenverteilungseinheit die Attribute, die von der Alpha-Phasen-Pipeline erzeugt werden, derart um, dass jede Grafikverarbeitungs-Pipeline 350 ungefähr die gleiche Arbeitsauslastung zu Beginn der Beta-Phasen-Pipeline besitzt.In a system with multiple
Zu beachten ist ferner, dass, wie hierin verwendet, Verweise auf einen gemeinsam benutzten Speicher einen oder mehrere technisch machbare Speicher umfassen, wozu gehören, ohne einschränkend zu sein, ein lokaler Speicher, der gemeinsam von dem einen oder den mehreren SM 310 benutzt wird, oder ein Speicher, auf den über die Speicherschnittstelle 214 zugegriffen werden kann, etwa ein Cache-Speicher, der Parallelverarbeitungsspeicher 204 oder der Systemspeicher 104. Es sollte ferner beachtet werden, dass im hierin verwendeten Sinne Verweise auf einen Cache-Speicher einen oder mehrere technisch machbare Speicher mit einschließt, wozu gehören, ohne einschränkend zu sein, ein L1-Cache-Speicher, ein L1.5-Cache-Speicher und die L2-Cache-Speicher.It is further noted that, as used herein, references to shared memory include one or more technically feasible memories, including without limitation local memory shared by the one or
Gekachelte ZwischenspeicherungTiled caching
Der Bildschirm-Raum 400 repräsentiert einen oder mehrere Speicherpuffer bzw. Pufferspeicher, die ausgebildet sind, erzeugte Bilddaten und andere Daten, die von den Funktionseinheiten innerhalb der Grafikverarbeitungs, Pipeline 350 übergeben wurden, zu speichern. In einigen Ausführungsformen sind der eine oder die mehreren Pufferspeicher als ein oder mehrere Bilderzeugungsziele ausgebildet. Der Bildschirm-Raum repräsentiert einen Pufferspeicher, der ausgebildet ist, das von der Grafikverarbeitungs-Pipeline erzeugte Bild zu speichern. Der Bildschirm-Raum 400 kann mit einer beliebigen Anzahl an Bilderzeugungszielen verknüpft sein, wobei jedes Bilderzeugungsziel unabhängig von anderen Bilderzeugungszielen so konfiguriert sein kann, dass es eine beliebige Anzahl an Feldern enthält. Jedes Feld in einem Bilderzeugungsziel ist unabhängig von anderen Feldern so ausgebildet sein, dass es eine beliebige Anzahl an Bits enthält. Jedes Bilderzeugungsziel kann mehrere Bildelemente (Pixel) enthalten, und jedes Pixel kann wiederum mehrere Abtastwerte enthalten. In einigen Ausführungsformen kann die Größe jeder Cache-Kachel auf der Größe und der Konfiguration der Bilderzeugungsziele, die mit dem Bildschirm-Raum verknüpft sind, beruhen. Wenn im Betrieb die Bilderzeugung abgeschlossen ist, können die Pixel in dem einen oder den mehreren Bilderzeugungszielen an ein Anzeigegerät gesendet werden, um das erzeugte Bild anzuzeigen.
Beispielsweise kann eine Gruppe aus Bilderzeugungszielen für den Bildschirm-Raum 400 acht Bilderzeugungsziele enthalten. Das erste Bilderzeugungsziel kann vier Felder enthalten, die Farben repräsentieren, wozu Rot-, Grün-und Blau-Komponentenfarben und Transparenzinformation, die mit einem entsprechenden Fragment verknüpft sind, gehören. Das zweite Bilderzeugungsziel kann zwei Felder enthalten, die entsprechend Tiefeninformationen und Schabloneninformation repräsentieren, die mit dem entsprechenden Fragment verknüpft sind. Das dritte Bilderzeugungsziel kann drei Felder enthalten, die Information über den Oberflächennormalenvektor einschließlich eines Normalenvektors in der X-Achse und eines Normalenvektors in der Y-Achse und eines Normalenvektors in der Z- Achse, die mit dem entsprechenden Fragment verknüpft sind, repräsentieren. Die verbleibenden fünf Bilderzeugungsziele können so konfiguriert sein, dass sie zusätzliche Information, die zu dem entsprechenden Fragment gehört, speichern. Derartige Konfigurationen können umfassen: einen Speicher für diverse Information einschließlich, ohne einschränkend zu sein, 3D-Positionsdaten, Information für diffuse Beleuchtung und Information für Glanzeleuchtung.For example, a set of render targets for screen-
Jede Cache-Kachel 410 repräsentiert einen Teilbereich des Bildschirm-Raums 400. Der Klarheit halber sind nur fünf Cache-Kacheln 410(0)-410(4) in
Die Raster-Kacheln 420 repräsentieren einen Teilbereich der Cache-Kachel 410(0). Wie gezeigt, enthält die Cache-Kachel 410(0) 16 Raster-Kacheln 420(0)-420(15), die in einem Array angeordnet sind, das eine Breite von vier Raster-Kacheln 420 und eine Höhe von vier Raster-Kacheln 420 aufweist. In Systemen, die mehrere GPCs 208 enthalten, kann die Verarbeitung, die mit einer gegebenen Cache-Kachel 410(0) verknüpft ist, auf die verfügbaren GPCs 208 aufgeteilt werden. In dem gezeigten Beispiel gilt, dass, wenn die 16 Raster-Kacheln der Cache-Kachel 410(0) durch viele unterschiedliche GPCs 208 zu verarbeiten sind, dann jeder GPC 208 so zugeordnet werden kann, dass er vier der 16 Raster-Kacheln 420 in der Cache-Kachel 410(0) verarbeitet. Insbesondere kann der erste GPC 208 zugewiesen werden, die Raster-Kacheln 420(0), 420(7), 420(10) und 420(13) zu verarbeiten. Der zweite GPC 208 kann zugewiesen werden, um Raster-Kacheln 420(1), 420(4), 420(11) und 420(14) zu verarbeiten. Der dritte GPC 208 kann zugewiesen werden, um Raster-Kacheln 420(2), 420(5), 420(8) und 420(15) zu verarbeiten. Der vierte GPC 208 kann dann zugewiesen werden, um Raster-Kacheln 420(3), 420(6), 420(9) und 420(12) zu verarbeiten. In anderen Ausführungsformen kann die Verarbeitung der unterschiedlichen Raster-Kacheln in einer gegebenen Cache-Kachel auf die GPCs 208 oder andere Verarbeitungseinheiten, die in dem Computersystem 100 enthalten sind, auf eine beliebige technisch machbare Weise aufgeteilt werden.The
Adaptiv dimensionierte Cache-KachelnAdaptively sized cache tiles
Die Cache-Kacheln aus
Das erste Bilderzeugungsziel 510(0) enthält vier Felder, die einen ersten Satz aus Farb-und Transparenzinformation, der mit einer entsprechenden Abtastung oder einem Fragment verknüpft ist, repräsentieren. Wie gezeigt, umfassen die vier Felder einen Rotwert 515, einen Grünwert 520, einen Blauwert 525 und einen Alpha-oder Transparenz-Wert 530. Der Rotwert 515, der Grünwert 520, der Blauwert 525 und der Alpha-Wert 530 enthalten jeweils ein einzelnes Byte an Daten. Dieses erste Bilderzeugungsziel 520(0) kann als C0 bezeichnet werden, wodurch angegeben wird, dass das erste Bilderzeugungsziel 510(0) einen ersten Satz an Farb-und Alpha-Informationen enthält.The first render target 510(0) contains four fields representing a first set of color and transparency information associated with a corresponding scan or fragment. As shown, the four fields include a
Das zweite Bilderzeugungsziel 510(1) enthält vier Felder, die einen zweiten Satz an Farb-und Transparenzinformationen, die mit einer entsprechenden Abtastung oder einem Fragment verknüpft sind, repräsentieren. Wie gezeigt, beinhalten die vier Felder einen Rotwert 535, einen Grünwert 540, einen Blauwert 545 und einen Alpha-oder Transparenz-Wert 550. Der Rotwert 535, der Grünwert 540, der Blauwert 545 und der Alpha-Wert 550 enthalten jeweils ein einzelnes Byte an Daten. Dieses zweite Bilderzeugungsziel 520(1) kann als C1 bezeichnet werden, wodurch angegeben ist, dass das zweite Bilderzeugungsziel 510(1) einen zweiten Satz an Farb-und Alpha-Informationen enthält.The second render target 510(1) contains four fields representing a second set of color and transparency information associated with a corresponding scan or fragment. As shown, the four fields include a red 535 value, a green 540 value, a blue 545 value, and an alpha or
Das dritte Bilderzeugungsziel 510(2) beinhaltet zwei Felder, die einen ersten Satz an Tiefen-und Schabloneninformationen, die mit einem entsprechenden Abtastwert oder einem Fragment verknüpft sind, repräsentieren. Wie gezeigt, umfassen die beiden Felder einen z-oder Tiefen-Wert 555 und eine Schablonenmaske 560. Wie gezeigt, enthält der z-Wert 555 drei Bytes an Daten, während die Schablonenmaske 560 ein einzelnes Byte an Daten enthält. Dieses dritte Bilderzeugungsziel 520(2) kann als Z0 bezeichnet werden, wodurch angegeben ist, dass das dritte Bilderzeugungsziel 510(2) einen ersten Satz an z-und Schabloneninformationen enthält.The third render target 510(2) includes two fields representing a first set of depth and template information associated with a corresponding sample or fragment. As shown, the two fields include a z or
Das vierte Bilderzeugungsziel 510(3) enthält zwei Felder, die einen zweiten Satz an Tiefen-und Schabloneninformationen, die mit einem entsprechenden Abtastwert oder Fragment verknüpft sind, repräsentieren. Wie gezeigt, beinhalten die beiden Felder einen z-oder Tiefen-Wert 565 und eine Schablonenmaske 570. Wie gezeigt, enthält der z-Wert 565 drei Bytes an Daten, während die Schablonenmaske 570 ein einzelnes Byte an Daten enthält. Dieses vierte Bilderzeugungsziel 520(3) kann als Z1 bezeichnet werden, wodurch angegeben wird, dass das vierte Bilderzeugungsziel 510(3) einen zweiten Satz an z-und Schabloneninformationen enthält.The fourth rendering target 510(3) contains two fields representing a second set of depth and template information associated with a corresponding sample or fragment. As shown, the two fields include a z or
Das fünfte Bilderzeugungsziel 510(4) enthält vier Felder, die Informationen über Oberflächennormalenvektoren, die mit einem entsprechenden Abtastwert oder einem Fragment verknüpft sind, repräsentieren. Wie gezeigt, enthalten die vier Felder einen X- Achsen-Normalvektor 475, einen Y-Achsen-Normalvektor 580 und einen Z- Achsen-Normalvektor 585. In dieser speziellen Konfiguration für das fünfte Bilderzeugungsziel 510(4) ist das vierte Feld ein ungenutztes Feld 590. Der X-Achsen-Normalvektor 575, der Y-Achsen-Normalvektor 580 und der Z-Achsen-Normalvektor 585 und das unbenutzte Feld 590 enthalten jeweils 1 Byte an Daten. Dieses fünfte Bilderzeugungsziel 520(4) kann als N0 bezeichnet werden, wodurch angegeben wird, dass das fünfte Bilderzeugungsziel 510(4) einen ersten Satz an Oberflächennormaleninformation enthält.The fifth rendering target 510(4) contains four fields representing information about surface normal vectors associated with a corresponding sample or fragment. As shown, the four fields include an X-axis normal vector 475, a Y-axis
Beim Voranschreiten des Bilderzeugungsvorgangs ändert sich die Bilderzeugungszielkonfiguration. Jede Bilderzeugungszielkonfiguration enthält die Gruppe aus Bilderzeugungszielen, die für eine spezielle Phase der Bilderzeugung verwendet wird. Die Cache-Kachel kann gelöscht und neu dimensioniert werden an der Grenze zwischen einer aktuellen Bilderzeugungszielkonfiguration und einer neuen Bilderzeugungszielkonfiguration. In einigen Ausführungsformen wird die Cache-Kachel nicht gelöscht und neu dimensioniert in Fällen, in denen die neue Bilderzeugungszielkonfiguration eine Teilmenge der aktuellen Bilderzeugungszielkonfiguration ist.As the imaging process progresses, the imaging target configuration changes ration. Each rendering target configuration contains the set of rendering targets used for a particular stage of rendering. The cache tile can be cleared and resized at the boundary between a current rendering target configuration and a new rendering target configuration. In some embodiments, the cache tile is not flushed and resized in cases where the new rendering target configuration is a subset of the current rendering target configuration.
Wenn die Bilderzeugung des Computergrafikbildes beginnt, gibt die erste Bilderzeugungszielkonfiguration 610(0) an, dass das erste Farb/Alpha-Bilderzeugungsziel C0, das erste Z/Schablonen-Bilderzeugungsziel Z0 und das Normalenvektor-Bilderzeugungsziel N0 während dieser Phase der Bilderzeugung verwendet werden. Folglich wird diese erste Bilderzeugungszielkonfiguration 610(0) als C0Z0N0 bezeichnet.When rendering of the computer graphics image begins, the first rendering target configuration 610(0) indicates that the first color/alpha rendering target C0, the first Z/template rendering target Z0, and the normal vector rendering target N0 are used during this phase of rendering. Consequently, this first rendering target configuration 610(0) is denoted as C0Z0N0.
Es wird eine Cache-Kachelgröße auf der Grundlage der ersten Bilderzeugungszielkonfiguration 610(0) berechnet. Zuerst wird die Größe des Cache-Speichers, der von der Cache-Kachel eingenommen wird, durch die Speichergröße geteilt, die für jede Position in der ersten Bilderzeugungszielkonfiguration 610(0) benötigt wird, woraus sich die Anzahl an Pixel in der Cache-Kachel ergibt. Der Speicherraum könnte in Einheiten von Bytes oder einem anderen geeigneten Maß gemessen werden. Diese Ansammlung an Pixel wird dann verwendet, um die Cache-Kachelgröße zu ermitteln. In einem Beispiel beträgt die Größe des Cache-Speichers 153600 Bytes und die Hälfte des Cache-Speichers wird von der Cache-Kachel eingenommen. Die Größe des Speichers, der von der Cache-Kachel eingenommen wird, wäre 153600/2 oder 76800 Bytes. Die Anzahl an Bytes, die von jedem Platz in der Bilderzeugungszielkonfiguration 610(0) eingenommen wird, wäre drei Bilderzeugungsziele X vier Bytes pro Bilderzeugungsziel, oder 12 Bytes. Die Anzahl an Pixel in der Cache-Kachel beträgt dann 76800/12 oder 6400 Pixel. Für quadratische Cache-Kacheln ergäbe sich die Cache-Kachel zu 6400½ oder 80 Pixel Breite X 80 Pixel Höhe. Alternativ könnte die Cache-Kachelgröße auch ein beliebiges technisch machbares Format sein, das nicht quadratisch ist, etwa eine Breite von 64 Pixel X eine Höhe von 100 Pixel.A cache tile size is calculated based on the first rendering target configuration 610(0). First, the amount of cache memory occupied by the cache tile is divided by the amount of memory required for each location in the first rendering target configuration 610(0), which gives the number of pixels in the cache tile . Storage space could be measured in units of bytes or some other suitable measure. This collection of pixels is then used to determine the cache tile size. In one example, the size of the cache memory is 153600 bytes and half of the cache memory is occupied by the cache tile. The amount of memory occupied by the cache tile would be 153600/2 or 76800 bytes. The number of bytes occupied by each location in render target configuration 610(0) would be three render targets X four bytes per render target, or 12 bytes. The number of pixels in the cache tile is then 76800/12 or 6400 pixels. For square cache tiles, the cache tile would be 6400½ or 80 pixels wide X 80 pixels high. Alternatively, the cache tile size could be any technically feasible format that is not square, such as 64 pixels
Beim Voranschreiten der Bilderzeugung eines Computergrafikbildes gibt die zweite Bilderzeugungszielkonfiguration 610(1) an, dass das zweite Farb/Alpha-Bilderzeugungsziel C1 und das zweite Z/Schablonen-Bilderzeugungsziel Z1 während dieser Phase der Bilderzeugung verwendet werden. Folglich wird diese zweite Bilderzeugungszielkonfiguration 610(1) als C1Z1 bezeichnet. Da sich die Bilderzeugungszielkonfiguration geändert hat, wird die Cache-Kachel gelöscht, und es wird eine neue Cache-Kachelgröße berechnet.As the rendering of a computer graphics image proceeds, the second rendering target configuration 610(1) indicates that the second color/alpha rendering target C1 and the second Z/template rendering target Z1 are used during this phase of rendering. Consequently, this second imaging target configuration 610(1) is referred to as C1Z1. Since the render target configuration has changed, the cache tile is cleared and a new cache tile size is calculated.
Die neue Cache-Kachelgröße wird auf der Grundlage der zweiten Bilderzeugungszielkonfiguration 610(1) berechnet. In einem Beispiel beträgt die Größe des Cache-Speichers 153600 Bytes und die Hälfte des Cachespeichers, d.h. 76800 Bytes, wird von der Cache-Kachel eingenommen. Die Anzahl an Bytes, die von jeder Position in der Bilderzeugungszielkonfiguration 610(1) eingenommen wird, beträgt zwei Bilderzeugungsziele X vier Bytes pro Bilderzeugungsziel, oder 8 Bytes. Die Anzahl an Pixel in der Cache-Kachel beträgt dann 76800/8 oder 9600 Pixel. Für quadratische Cache-Kacheln ergäbe sich für die Cache-Kachel 9600½ ' was sich auf 98 Pixel Breite X 98 Pixel Höhe aufrundet. Alternativ kann die Cache-Kachelgröße ein beliebiges technisch machbares Format sein, das nicht quadratisch ist, etwa eine Breite von 75 Pixel X eine Höhe von 128 Pixel.The new cache tile size is calculated based on the second rendering target configuration 610(1). In one example, the size of the cache memory is 153600 bytes and half of the cache memory, ie 76800 bytes, is occupied by the cache tile. The number of bytes occupied by each position in render target configuration 610(1) is two render targets X four bytes per render target, or 8 bytes. The number of pixels in the cache tile is then 76800/8 or 9600 pixels. For square cache tiles, the cache tile would be 9600 ½ ', which rounds up to 98 pixels wide X 98 pixels high. Alternatively, the cache tile size can be any technically feasible format that is not square, such as 75 pixels wide X 128 pixels high.
Beim Voranschreiten der Bilderzeugung des Computergrafikbildes gibt die dritte Bilderzeugungszielkonfiguration 610(2) an, dass das erste Farb/Alpha-Bilderzeugungsziel C0 und das erste Z/Schablonen-Bilderzeugungsziel Z0 während dieser Phase der Bilderzeugung verwendet werden. Folglich wird diese dritte Bilderzeugungszielkonfiguration 610(2) C0Z0 bezeichnet. Da sich die Bilderzeugungszielkonfiguration geändert hat, wird die Cache-Kachel gelöscht, und es wird eine neue Cache-Kachelgröße berechnet. In diesem Falle ist die Anzahl an Bytes, die der dritten Bilderzeugungszielkonfiguration 610(2) entspricht, die gleiche wie für die zweite Bilderzeugungszielkonfiguration 610(1). Folglich ändert sich die Cache-Kachelgröße von der zweiten Bilderzeugungszielkonfiguration 610(1) zu der dritten Bilderzeugungszielkonfiguration 610(2) nicht.As the rendering of the computer graphics image progresses, the third rendering target configuration 610(2) indicates that the first color/alpha rendering target C0 and the first Z/template rendering target Z0 are used during this phase of rendering. Accordingly, this third rendering target configuration 610(2) is denoted C0Z0. Since the rendering target configuration has changed, the cache tile is cleared and a new cache tile size is calculated. In this case, the number of bytes corresponding to the third rendering target configuration 610(2) is the same as for the second rendering target configuration 610(1). Consequently, the cache tile size does not change from the second rendering target configuration 610(1) to the third rendering target configuration 610(2).
Beim Voranschreiten der Bilderzeugung des Computergrafikbildes gibt die vierte Bilderzeugungszielkonfiguration 610(3) an, dass das erste Farb/Alpha-Bilderzeugungsziel C0, das zweite Farb/Alpha-Bilderzeugungsziel C1 und das erste Z/Schablonen-Bilderzeugungsziel Z0 während dieser Phase der Bilderzeugung verwendet werden. Folglich wird diese vierte Bilderzeugungszielkonfiguration 610(3) als C0C1Z0 bezeichnet. Da sich die Bilderzeugungszielkonfiguration geändert hat, wird die Cache-Kachel gelöscht, und es wird eine neue Cache-Kachelgröße berechnet. In diesem Falle ist die Anzahl an Bytes, die der vierten Bilderzeugungszielkonfiguration 610(3) entspricht, gleich derjenigen für die erste Bilderzeugungszielkonfiguration 610(0). Folglich wird die Cache-Kachelgröße so berechnet, wie dies zuvor in Verbindung mit der ersten Bilderzeugungszielkonfiguration 610(0) beschrieben ist. As the rendering of the computer graphics image progresses, the fourth rendering target configuration 610(3) indicates that the first color/alpha rendering target C0, the second color/alpha rendering target C1, and the first Z/template rendering target Z0 are used during this phase of rendering . Consequently, this fourth rendering target configuration 610(3) is denoted as C0C1Z0. Because the rendering target configuration has changed, the cache tile is cleared and a new cache tile size calculated. In this case, the number of bytes corresponding to the fourth rendering target configuration 610(3) is equal to that for the first rendering target configuration 610(0). Thus, the cache tile size is calculated as previously described in connection with the first rendering target configuration 610(0).
Beim Voranschreiten der Bilderzeugung des Computergrafikbildes spezifizieren jeweils die fünfte bis achte Bilderzeugungszielkonfiguration 610(4)-610(7) Bilderzeugungszielkonfigurationen C0Z0, C0C1Z0, C0C1 und C0C1Z0. In einer Ausführungsform wird die Cache-Kachel gelöscht und es wird eine neue Cache-Kachel berechnet, wie dies zuvor beschrieben ist, wenn die Bilderzeugung jeweils die Änderung in der Bilderzeugungszielkonfiguration 610 durchläuft. Jedoch können das Löschen und die neue Dimensionierung der Cache-Kachel rechentechnisch aufwändig sein und können die Bilderzeugung mit einer neuen Bilderzeugungszielkonfiguration 610 verzögern, während die aktuelle Cache-Kachel gelöscht wird. Ferner reduziert die Löschung die Anzahl an grafischen Grundelementen, die zusammen in der Cache-Kachel eingeteilt sind, wodurch entsprechend der Vorteil der Kachelbildung verringert wird.As the rendering of the computer graphics image progresses, the fifth through eighth rendering target configurations 610(4)-610(7) specify rendering target configurations C0Z0, C0C1Z0, C0C1, and C0C1Z0, respectively. In one embodiment, as the rendering progresses through each change in
Folglich wird in einer weiteren Ausführungsform die Cache-Kachel weder gelöscht noch neu dimensioniert, wenn eine neue Bilderzeugungszielkonfiguration 610 eine Teilmenge der aktuellen Bilderzeugungszielkonfiguration 610 repräsentiert. Diese Vorgehensweise schließt eine Situation mit ein, in der die neue Bilderzeugungszielkonfiguration 610 die gleiche ist wie die aktuelle Bilderzeugungszielkonfiguration 610. Eine derartige Vorgehensweise kann in einer weniger effizienten Nutzung des Cache-Speichers resultieren. Andererseits können das Löschen und die neu Dimensionierung von Cache-Kacheln verringert werden, was zu einer größeren Effizienz und Leistungssteigerung führen kann, und zwar in einem höheren Maße, als die Effizienz der Cache-Speichernutzung reduziert ist. In einer noch weiteren Ausführungsform kann die Verbesserung der Effizienz der Cache-Speichernutzung, die sich aus der Änderung der Cache-Kachelgröße ergibt, verglichen werden mit der Leistungssteigerung für den Fall, wenn die Cache-Kachel nicht gelöscht und neu dimensioniert wird. Die Entscheidung darüber, ob die aktuelle Cache-Kachelkonfiguration beibehalten werden soll, oder ob die Cache-Kachel gelöscht und neu dimensionierten soll, kann gemäß diesem Vergleich getroffen werden.Thus, in another embodiment, when a new
Mit dieser zuletzt genannten Vorgehensweise ist jeweils die fünfte bis achte Bilderzeugungszielkonfiguration 610(4)-610(7) eine Teilmenge der vierten Bilderzeugungszielkonfiguration 610(3). Damit kann die Cache-Kachelgröße so bleiben, wie sie für die vierte Bilderzeugungszielkonfiguration 610(3) konfiguriert ist, während der Bilderzeugungsvorgang die fünfte bis achte Bilderzeugungszielkonfiguration 610(4)-610(7) durchläuft. Alternativ können die Cache-Kachel und einige oder alle Änderungen in der fünften bis achten Bilderzeugungszielkonfiguration 610(4)-610(7) gelöscht und neu dimensioniert werden.With this latter approach, each of the fifth through eighth rendering target configurations 610(4)-610(7) is a subset of the fourth rendering target configuration 610(3). This allows the cache tile size to remain as configured for the fourth rendering target configuration 610(3) while the rendering process progresses through the fifth through eighth rendering target configurations 610(4)-610(7). Alternatively, the cache tile and some or all of the changes in the fifth through eighth rendering target configurations 610(4)-610(7) may be cleared and resized.
In einer Ausführungsform kann die Cache-Kachelgröße gemäß dem aktuell ausgewählten Fehlerbehebungsmodus modifiziert werden. In dem Fehlerbehebungsmodus können mehrere Abtastwerte für jede Pixelposition gespeichert und später zusammengeführt werden, woraus sich eine verbesserte Bildqualität in dem schließlich erzeugten Bild ergibt. Der Fehlerbehebungsmodus kann numerisch angegeben werden, wobei Bezeichnungen verwendet werden, etwa AA-1, AA-2, AA-4 oder AA-8, wodurch angegeben wird, dass jedes Pixel entsprechend 1, 2, 4, oder 8 Abtastwerte enthält. Folglich kann jedes Pixel einer Cache-Kachel 1, 2, 4, oder 8 mal der Menge an Bytes entsprechend verbrauchen im Vergleich zu einem Pixel in einer Cache-Kachel, in der keine Fehlerbehebung verwendet wird. Die Berechnung der Cache-Kachelgröße kann den Fehlerbehebungsmodus berücksichtigen, wenn die Cache-Kachelgröße berechnet wird. Beispielsweise kann eine Cache-Kachel 76800 Bytes in einer Bilderzeugungszielkonfiguration enthalten, die 12 Bytes pro Pixel einnimmt. Eine derartige Cache-Kachel würde 6400 Pixel ohne Fehlerbehebungsmodus enthalten, wie zuvor beschrieben ist. Mit einem Fehlerbehebungsmodus würde die Cache-Kachel entsprechend 6400, 3200, 1600 oder 800 Pixel für den AA-1, AA-2, AA-4 oder AA-8-Modus enthalten. Wenn die Cache-Kacheln quadratisch sind, würde jede Cache-Kachel entsprechend als 80 X 80, 57 X 57, 40 X 40 oder 29 X 29 Pixel formatiert.In one embodiment, the cache tile size may be modified according to the currently selected debugging mode. In debugging mode, multiple samples can be stored for each pixel location and later merged, resulting in improved image quality in the final image produced. The debugging mode can be specified numerically using labels such as AA-1, AA-2, AA-4, or AA-8, indicating that each pixel contains 1, 2, 4, or 8 samples, respectively. Thus, each pixel of a cache tile may consume 1, 2, 4, or 8 times the amount of bytes, respectively, compared to a pixel in a cache tile that does not use error recovery. The cache tile size calculation can take the debug mode into account when calculating the cache tile size. For example, a cache tile may contain 76800 bytes in a rendering target configuration that occupies 12 bytes per pixel. Such a cache tile would contain 6400 pixels with no debugging mode as previously described. With an error-fixing mode, the cache tile would contain 6400, 3200, 1600, or 800 pixels for AA-1, AA-2, AA-4, or AA-8 mode, respectively. If the cache tiles are square, each cache tile would be formatted as 80 X 80, 57 X 57, 40 X 40, or 29 X 29 pixels, respectively.
In einigen Ausführungsformen können die Cache-Kacheln größer sein, um vorteilhaft die Tatsache auszunutzen, dass die Abtastdaten für jedes Pixel bei höheren Fehlerbehebungsmodi komprimiert werden können. Beispielsweise können die Fehlerbehebungsmodi AA-1, AA-2, AA-4 oder AA-8 1, 2, 3 oder 5 mal die Menge an Bytes entsprechend verbrauchen im Vergleich zu einem Pixel einer Cache-Kachel, wenn keine Fehlerbehebung eingesetzt wird. Die Berechnung der Cache-Kachelgröße kann den Fehlerbehebungsmodus berücksichtigen, wenn die Cache-Kachelgröße berechnet wird. Eine Cache-Kachel kann 76800 Bytes in einer Bilderzeugungszielkonfiguration enthalten, die 12 Bytes pro Pixel einnimmt. Eine derartige Cache-Kachel würde 6100 Pixel ohne Fehlerbehebungsmodus enthalten, wie zuvor beschrieben ist. Mit Fehlerbehebungsmodus würde die Cache-Kachel entsprechend 6400, 3200, 2134 oder 1280 Pixel für den AA-1, AA-2, AA-4 oder AA-8-Modus enthalten. Wenn die Cache-Kacheln quadratisch sind, würde jede Cache-Kachel sprechend als 80 X 80, 57 X 57, 47 X 47 oder 36 X 36 Pixel formatiert werden.In some embodiments, the cache tiles may be larger to take advantage of the fact that sample data for each pixel may be compressed at higher debugging modes. For example, debugging modes AA-1, AA-2, AA-4, or AA-8 may consume 1, 2, 3, or 5 times the amount of bytes, respectively, compared to a pixel of a cache tile if no debugging is employed. The cache tile size calculation can take the debug mode into account when calculating the cache tile size. A cache tile can contain 76800 bytes in a rendering target configuration that occupies 12 bytes per pixel. Such a cache tile would contain 6100 pixels with no debugging mode as previously described. With debugging mode, the cache tile would be 6400, 3200, 2134, or 1280 pixels for the AA-1, AA-2, AA-4 or AA-8 mode included. Similarly, if the cache tiles are square, each cache tile would be formatted as 80 X 80, 57 X 57, 47 X 47, or 36 X 36 pixels.
In einer noch weiteren Ausführungsform kann eine Oberflächenkomprimierung angewendet werden, um die Cache-Kachelgröße weiter zu erhöhen. Oberflächendaten aus den Raster-Operationseinheiten 395, etwa ZROP-und CROP-Daten, können in komprimierter Weise in den Bilderzeugungszielen 510 gespeichert werden. Derartige komprimierte Oberflächendaten können mit den L2-Cache-Speichern ohne Dekomprimierung und Rekomprimierung der Daten ausgetauscht werden, wodurch der Verkehr zwischen den Bilderzeugungszielen und dem L2-Cache-Speicher reduziert wird. Die komprimierten Oberflächendaten können in dem L2-Cache-Speicher in einem komprimierten Format gespeichert werden, wodurch der Speicherverbrauch in dem L2-Cache-Speicher verringert wird. Die Berechnung der Cache-Kachelgröße kann in einer Weise modifiziert werden, die ähnlich zu der zuvor in Verbindung mit den Fehlerbehebungsmodi beschriebenen Weise ist, wobei das abgeschätzte oder tatsächliche Komprimierungsverhältnis, das mit der Oberflächenkomprimierung verknüpft ist, verwendet wird.In yet another embodiment, surface compression may be applied to further increase the cache tile size. Surface data from the
In einer weiteren Ausführungsform, in der die Cache-Kachel in einem vereinheitlichten Cache-Speicher liegt, etwa dem L2-Cache-Speicher, wie dies hierin beschrieben ist, kann eine Cache-Steuerung vorteilhaft anderen Cache-Verkehr zu und von den Bilderzeugungszielen 510 ausnutzen, um die externe Speicherbandbreite zu verringern und das Leistungsverhalten zu verbessern. Cache-Kacheln können in dem L2-Cache-Speicher mittels einer EVICT_NORMAL-Politik gespeichert werden, wobei Cache-Kacheln standardmäßigen Verdrängungsregeln unterworfen werden, die andere Daten betreffen können, die in dem L2-Cache-Speicher gespeichert sind und die die gleiche Verdrängungspolitik besitzen, etwa wenn sie in Beziehung stehen zu der ROP-Einheit 395, der VAF 360 und der Textureinheit (nicht gezeigt). Wenn die geometrischen Grundelemente für eine spezielle Cache-Kachel verarbeitet werden, können der Datenstrom-Multiprozessor 310 (über globale Ladeoperationen und globale Speicheroperationen), die ROP 395 und die Textureinheit Speicheroperationen ausführen, die mit dem speziellen Gebiet des Bildschirms, das die Cache-Kachel beeinflusst, verknüpft sind. Alle derartigen Speicheroperationen können über den gleichen L2-Cache-Speicher ausgeführt werden.In another embodiment where the cache tile resides in a unified cache, such as L2 cache, as described herein, a cache controller may advantageously exploit other cache traffic to and from
Die Zwischenspeicherung von Daten über einen vereinheitlichten L2-Cache-Speicher, wie dies zuvor beschrieben ist, ermöglicht es der Cache-Steuerung, den Cache-Speicher zwischen diversen Nutzungsformen dynamisch zuzuweisen, wozu, ohne einschränkend zu sein, Cache-Kacheldaten, Vertex-Attributdaten und Texturdaten gehören. Beispielsweise kann die Cache-Steuerung einen größeren Teil des Cache-Speichers für Daten, die keine Cache-Kacheldaten sind, etwa Texturdaten, zuweisen, wodurch sich ein verbessertes Cache-Leistungsverhalten für diese anderen Daten ergibt. Damit ist die Cache-Steuerung nicht auf eine statische L2-Cache-Partitionierung oder auf eine Architektur beschränkt, die einen separaten speziellen Cache-Speicher für Cache-Kacheldaten und einen zweiten speziellen Cache-Speicher für andere Daten, etwa Vertex-Attributdaten und Texturdaten enthalten. Vielmehr wählt die Cache-Steuerung dynamisch die Partitionierung bzw. Aufteilung des einzelnen vereinheitlichten L2-Cache-Speichers zwischen Cache-Kacheldaten und anderen Daten aus auf der Grundlage der aktuellen Anforderungen für die Cache-Speicherressourcen.Caching data via a unified L2 cache as described above allows the cache controller to dynamically allocate cache memory between various usages including, without limitation, cache tile data, vertex attribute data and texture data. For example, the cache controller may allocate more of the cache memory for non-cache-tile data, such as texture data, resulting in improved cache performance for that other data. Thus, cache control is not limited to static L2 cache partitioning or to an architecture that includes a separate dedicated cache for cache tile data and a second dedicated cache for other data such as vertex attribute data and texture data . Rather, the cache controller dynamically selects the partitioning of the single unified L2 cache between cache tile data and other data based on current cache resource requirements.
Da Zugriffe auf die Cache-Kacheldaten der gleichen EVICT_NORMAL-Verdrängungsstrategie wie andere L2-Daten-Verkehrsströme unterliegen, enthält der L2-Cache-Speicher keine statische Partitionierung zwischen diesen unterschiedlichen Verkehrsströmen. Folglich kann die Cache-Steuerung Verkehr zwischen dem L2-Cache-Speicher und Bereichen eines Bilderzeugungszielspeichers kombinieren, um den Verkehr zwischen dem L2-Cache-Speicher und den Bilderzeugungszielen 510 weiter zu reduzieren, wobei die zeitliche und räumliche Lokalität von Cache-Daten vorteilhaft ausgenutzt wird.Since accesses to the cache tile data are subject to the same EVICT_NORMAL eviction policy as other L2 data traffic streams, the L2 cache does not include static partitioning between these different traffic streams. Thus, the cache controller may combine traffic between the L2 cache and regions of rendering target memory to further reduce traffic between the L2 cache and
In einem Beispiel kann die Cache-Steuerung Schreib-Transaktionen kombinieren, die an die gleiche Bilderzeugungszielposition aus der ZROP-Einheit, der CROP-Einheit oder aus globalen Speicherzugriffen aus dem SM 310 gerichtet sind. Die Cache-Steuerung kann diese Schreib-Transaktionen in den L2-Cache-Speicher mittels der Zurückschreiben-Strategie kombinieren, während die Cache-Kachel in dem L2-Cache-Speicher liegt. Die Cache-Steuerung kann dann die Daten aus dem L2-Cache-Speicher in die Bilderzeugungsziele 510 in einer einzelnen Transaktion schreiben. Diese Vorgehensweise nutzt vorteilhaft die räumliche Lokalität für Schreib-Transaktionen, die mit Bilderzeugungszieldaten verknüpft sind, aus.In one example, the cache controller may combine write transactions directed to the same rendering target location from the ZROP unit, the CROP unit, or from
In einem noch weiteren Beispiel kann aufgrund der quadratischen oder rechteckigen Form der Cache-Kacheln, die in einem Gebiet aus benachbarten Pixel in den Bilderzeugungszielen 510 vorhanden sind, die Cache-Steuerung mit höherer Wahrscheinlichkeit benachbarte Speicheradressen aus den Bilderzeugungszielen auslesen. Derartige Daten können einmal aus den Bilderzeugungszielen 510 abgeholt und in dem L2-Cache-Speicher gespeichert werden. Auf die gelesenen Daten kann dann mehrere Male zugegriffen werden, während die Daten in dem L2-Cache-Speicher liegen. Diese Vorgehensweise nutzt die räumliche Lokalität für Lese-Transaktionen, die mit den Bilderzeugungszieldaten verknüpft sind, vorteilhaft aus.In yet another example, due to the square or rectangular shape of the cache tiles present in an area of adjacent pixels in the render
In einem noch weiteren Beispiel können Speicher-Lese-Transaktionen, die sich auf die gleiche Position in den Bilderzeugungszielen 510 zielen, zeitlich nahe beieinander während der Bilderzeugung erfolgen. Überlappende Grundelemente können auf die gleiche Textur zugreifen, wobei die Textur-Koordinaten zu den Cache-Kachelkoordinaten ausgerichtet sind. In derartigen Fällen kann auf den Texturspeicher in den Bilderzeugungszielen 510 mehrere Male zugegriffen werden, wobei die Zugriffe zeitlich nahe beieinander liegen. Die Cache-Steuerung kann diese Zugriffe in eine einzelne Lese-Transaktion kombinieren, die auf den Texturspeicher in den Bilderzeugungszielen 510 gerichtet ist. Diese Vorgehensweise nutzt vorteilhaft die zeitliche Lokalität der Bilderzeugungszieldaten aus. Zusätzlich zu Textur-Zugriffen können ähnliche Vorteile der zeitlichen Lokalität für Lese-und Schreib-Zugriffe durch die ROP 395 und für die allgemeinen globalen Lade-und globalen Speicher-Zugriffe durch den SM 310 erreicht werden. In einigen Ausführungsformen kann die gleiche Vorgehensweise für das Zugreifen auf den Texturspeicher angewendet werden, der zu einer Oberfläche gehört, die kein Bilderzeugungsziel ist.In yet another example, memory read transactions targeting the same location in rendering
Zu beachten ist, dass die hierin beschriebene Architektur anschaulicher Natur ist und dass Variationen und Modifizierungen möglich sind. In einem Beispiel sind die Techniken hierin im Zusammenhang mit einer speziellen Gruppe aus Bilderzeugungszielen 500 in einer gegebenen Konfiguration beschrieben. Jedoch können die beschriebenen Techniken unter Anwendung einer beliebigen Anzahl an Bilderzeugungszielen 500 eingesetzt werden. Jedes Bilderzeugungsziel 510 kann unabhängig von anderen Bilderzeugungszielen konfiguriert werden, so dass es eine beliebige Anzahl an Feldern enthält. Derartige Felder können ohne Einschränkung 3D-Positionsdaten, Information für diffuse Beleuchtung und Information für Glanzbeleuchtung enthalten. Jedes Feld in einem Bilderzeugungsziel 510 kann unabhängig von anderen Feldern so konfiguriert werden, dass es eine beliebige Anzahl an Bits enthält. In einem weiteren Beispiel können beliebige technisch machbare Bilderzeugungszielkonfigurationen 610 spezifiziert werden, obwohl spezielle Bilderzeugungskonfigurationen 610 in der Reihe aus Bilderzeugungszielkonfigurationen 600 gezeigt sind. In einer noch weiteren Beispiel kann während der Erzeugung eines speziellen Bildes eine Reihe von Bilderzeugungszielkonfigurationen 600 eingesetzt werden, wobei eine beliebige Menge an Bilderzeugungszielkonfigurationen 610 angegeben werden kann, und wobei eine beliebige Bilderzeugungszielkonfiguration 610 einer anderen Bilderzeugungszielkonfiguration 610 vorausgehen oder ihr nachfolgen kann.It should be noted that the architecture described herein is illustrative in nature and that variations and modifications are possible. In one example, the techniques are described herein in the context of a specific set of
Wie gezeigt, beginnt ein Verfahren 700 im Schritt 702, in welchem der Gerätetreiber 103 eine neue Bilderzeugungszielkonfiguration erkennt, die sich von einer aktuellen Bilderzeugungszielkonfiguration unterscheidet. Die Änderung der Bilderzeugungszielkonfiguration kann von dem Start eines neuen Bilderzeugungsprozesses oder von einem Wechsel von einer aktuellen Bilderzeugungszielkonfiguration in eine neue Bilderzeugungszielkonfiguration während eines Bilderzeugungsprozesses herrühren. Im Schritt 704 ermittelt der Gerätetreiber 103, ob die neue Bilderzeugungszielkonfiguration eine Teilmenge der aktuellen Bilderzeugungszielkonfiguration ist. Wenn die neue Bilderzeugungszielkonfiguration eine Teilmenge der aktuellen Bilderzeugungszielkonfiguration ist, dann ist das Verfahren 700 beendet.As shown, a
Wenn jedoch die neue Bilderzeugungszielkonfiguration keine Teilmenge der aktuellen Bilderzeugungszielkonfiguration ist, dann geht das Verfahren 700 weiter zum Schritt 706, in welchem der Gerätetreiber 103 den Cache-Speicherplatz berechnet, der von der Cache-Kachel eingenommen wird. Beispielsweise könnte die Cache-Kachel die Hälfte oder ein Drittel des gesamten verfügbaren Cache-Speichers einnehmen. Im Schritt 708 berechnet der Gerätetreiber 103 die Größe des Speicherplatzes, der von jedem Pixel eingenommen wird. Beispielsweise kann der Gerätetreiber 103 die Anzahl an Bytes aufsummieren, die von jedem Feld jedes Bilderzeugungsziels in der neuen Bilderzeugungszielkonfiguration eingenommen wird.However, if the new rendering target configuration is not a subset of the current rendering target configuration, then the
Im Schritt 710 wendet der Gerätetreiber 103 einen Faktor des Fehlerbehebungsmodus auf die Speicherplatzberechnung im Schritt 708 an. In einem Beispiel kann der Gerätetreiber 103 den Speicherplatz pro Pixel mit einem Faktor von 1, 2, 4, oder 8 entsprechend für AA-1, AA-2, AA-4 oder AA-8 multiplizieren. In einem weiteren Beispiel kann der Gerätetreiber 103 den Speicherplatz pro Pixel mit einem Faktor von 1, 2, 3, oder 5 entsprechend AA-1, AA-2, AA-4 oder AA-8 multiplizieren, wobei der Fähigkeit Rechnung getragen wird, Pixel in höheren Fehlerbehebungsmodi komprimieren zu können. Im Schritt 712 wendet der Gerätetreiber 103 einen Oberflächenkomprimierungsfaktor auf die Berechnung des Speicherplatzes des Schritts 708 an. Beispielsweise kann der Gerätetreiber 103 den Speicherplatz pro Pixel mit einem Faktor multiplizieren, der auf einem abgeschätzten oder tatsächlichen Komprimierungsfaktor von ZROP-Daten oder CROP-Daten beruht.In
Im Schritt 714 berechnet der Gerätetreiber 103 die Anzahl an Pixel in der Cache-Kachel auf der Grundlage eines oder mehrerer der folgenden Faktoren: der Cache-Speicherkonfiguration, der neuen Bilderzeugungszielkonfiguration, dem Fehlerbehebungsfaktor und dem Faktor für die Oberflächenkomprimierung. Im Schritt 716 berechnet der Gerätetreiber 103 die Cache-Kachelgröße. Im Schritt 718 legt der Gerätetreiber 103 die Cache-Kachelgröße auf die berechnete Cache-Kachelgröße aus dem Schritt 716 fest. Das Verfahren 700 endet dann.In
Zusammengefasst gilt: Cache-Kacheln werden neu dimensioniert, wenn eine Änderung in der Bilderzeugungszielkonfiguration erkannt wird. Die Größe der Cache-Kacheln beruht auf der Bilderzeugungszielkonfiguration sowie auf der Cache-Konfiguration. Die Summe an Bytes, die für eine einzelne Position in jedem Bilderzeugungsziel benötigt wird, wird berechnet. Die Menge an Bytes in dem Cache-Speicher, die für Cache-Kacheln verfügbar ist, wird durch diese Summe geteilt, um die Anzahl an Pixel in der Cache-Kachel zu ermitteln. Wenn die Cache-Kachel quadratisch ist, dann wird die Quadratwurzel der Anzahl an Pixel berechnet und auf die nächste Ganzzahl aufgerundet, woraus sich die Breite und die Höhe der Cache-Kachel ergeben. Wenn die Cache-Kachel nicht quadratisch ist, dann werden eine Breite und eine Höhe ausgewählt, wobei das Produkt der Breite und der Höhe gleich zumindest der Anzahl an Pixel ist.In summary, cache tiles are resized when a change in rendering target configuration is detected. The size of the cache tiles is based on the rendering target configuration as well as the cache configuration. The sum of bytes required for a single position in each render target is calculated. The amount of bytes in the cache that are available for cache tiles is divided by this sum to determine the number of pixels in the cache tile. If the cache tile is square, then the square root of the number of pixels is calculated and rounded up to the nearest integer, giving the width and height of the cache tile. If the cache tile is not square, then a width and a height are chosen, where the product of the width and the height is equal to at least the number of pixels.
Die Cache-Kachelgröße kann so gewählt werden, dass mehrere Cache-Kacheln in dem Cache-Speicher enthalten sind, so dass Arbeit für eine oder mehrere Cache-Kacheln empfangen werden kann, während eine weitere Cache-Kachel gerade verarbeitet wird. Wenn die Cache-Kachel in einem Cache-Speicher für Allgemeinzwecke liegt, kann die Cache-Kachelgröße so festgelegt werden, dass nur ein Teil des Cache-Speichers verbraucht wird, etwa eine Hälfte oder ein Drittel des Cache-Speichers, wodurch der Rest des Cache-Sprechers für andere Cache-Klienten verbleibt. Die Cache-Kacheldaten können komprimiert werden, um die Cache-Kachelgröße weiter zu reduzieren, wobei Dateneffizienzen bei höheren Fehlerbehebungsmodi und die Oberflächenkomprimierung, etwa ZROP-und CROP-Komprimierung, vorteilhaft ausgenutzt werden.The cache tile size can be chosen to include multiple cache tiles in the cache memory, so that work for one or more cache tiles can be received while another cache tile is being processed. If the cache tile resides in a general-purpose cache memory, the cache tile size can be set to consume only a portion of the cache memory, about a half or a third of the cache memory, leaving the rest of the cache -Speaker for other cache clients remains. The cache tile data may be compressed to further reduce the cache tile size, taking advantage of data efficiencies at higher debugging modes and surface compression, such as ZROP and CROP compression.
Ein Vorteil der offenbarten Vorgehensweise besteht darin, dass die Cache-Kachelgröße adaptiv auf der Grundlage einer Bilderzeugungszielkonfiguration und der Cache-Konfiguration dimensioniert wird. Kleinere Cache-Kachelgrößen werden für komplexere Bilderzeugungszielkonfigurationen ausgewählt, während größere Cache-Kachelgrößen für weniger komplexere Bilderzeugungszielkonfigurationen gewählt werden. Durch adaptives Dimensionieren der Cache-Kacheln auf der Grundlage der Bilderzeugungszielkonfiguration wird weniger Rechenleistung benötigt, um die Cache-Kacheln zu verarbeiten, woraus sich eine effizientere Prozessorauslastung und geringere Leistungsanforderungen ergeben. Ein weiterer Vorteil der offenbarten Vorgehensweise besteht darin, dass, wenn komprimierte Cache-Kacheldaten in dem Cache-Speicher gespeichert werden, die Cache-Kachelgröße weiter reduziert werden kann, wodurch der verfügbare Cache-Speicher noch weiter vergrößert werden kann. Alternativ bleibt die Cache-Kachelgröße gleich, und jede Cache-Kachel kann einen größeren Bereich der Bildschirmoberfläche abdecken. Als Folge davon kann die gesamte Anzahl an Cache-Kacheln reduziert werden, woraus sich ein geringerer Verarbeitungsaufwand, der mit der Kachelbildung verknüpft ist, ergibt. Des Weiteren erlaubt eine vereinheitlichte L2-Cache-Kachel eine dynamische Partitionierung des Cachespeichers zwischen Cache-Kacheldaten und anderen Daten, wobei der Bereich des L2-Cache-Speichers, der diversen Kategorien von Daten zugewiesen ist, auf der Grundlage aktueller Anforderungen variieren kann. Schließlich kann die Cache-Steuerung die Anzahl an Bilderzeugungszielzugriffen reduzieren, indem Lese-und Schreib-Operationen für das gleiche Bilderzeugungsziel, die von mehreren Klienten ausgegeben werden, kombiniert werden, indem die Bilderzeugungszieldaten einmal abgeholt werden und diese Daten dann mehrere Male erneut verwendet werden, um vorteilhaft die räumliche und zeitliche Lokalität auszunutzen.An advantage of the disclosed approach is that the cache tile size is adaptively sized based on a rendering target configuration and the cache configuration. Smaller cache tile sizes are chosen for more complex rendering target configurations, while larger cache tile sizes are chosen for less complex rendering target configurations. By adaptively sizing the cache tiles based on the rendering target configuration, less computing power is required to process the cache tiles, resulting in more efficient processor utilization and lower performance requirements. Another advantage of the disclosed approach is that when compressed cache tile data is stored in the cache memory, the cache tile size can be further reduced, thereby increasing the available cache memory even more. Alternatively, the cache tile size remains the same and each cache tile can cover a larger area of the screen surface. As a result, the total number of cache tiles can be reduced, resulting in less processing overhead associated with tiling. Furthermore, a unified L2 cache tile allows for dynamic partitioning of cache memory between cache tile data and other data, where the area of L2 cache memory allocated to various categories of data may vary based on current needs. Finally, the cache controller can reduce the number of render target accesses by combining reads and writes to the same render target issued by multiple clients, by fetching the render target data once and then reusing that data multiple times. to take advantage of spatial and temporal locality.
Eine Ausführungsform der Erfindung kann als ein Programmprodukt zur Verwendung in einem Computersystem realisiert werden. Das bzw. die Programme des Programmprodukts definieren Funktionen der Ausführungsformen (einschließlich der hierin beschriebenen Verfahren) und können in einer Vielzahl von computerlesbaren Speichermedien enthalten sein. Zu anschaulichen computerlesbaren Speichermedien gehören, ohne einschränkend zu sein: (i) nichtbeschreibbare Speichermedien (beispielsweise Nur-Lese-Speichereinrichtungen innerhalb eines Computers, etwa Kompaktdisketten-Nur-Lese-Speicher-(CD-ROM) Disketten, die von einem CD-ROM-Laufwerk lesbar sind, Flash-Speicher, Nur-LeseSpeicher-(ROM) Chips oder eine andere Art an nicht-flüchtigen elektronischen Halbleiterspeichern), auf welchen Information permanent gespeichert ist; und (ii) beschreibbare Speichermedien (beispielsweise Disketten in einem Diskettenlaufwerk oder ein Festplattenlaufwerk oder eine andere Art an elektronischem Halbleiterspeicher mit wahlfreiem Zugriff), auf welchen änderbare Information gespeichert ist.An embodiment of the invention may be implemented as a program product for use in a computer system. The program(s) of the program product define functions of the embodiments (including the methods described herein) and may be embodied on a variety of computer-readable storage media. Illustrative computer-readable storage media include, but are not limited to: (i) non-writable storage media (e.g., read-only memory devices within a computer, such as compact disk read-only memory (CD-ROM) floppy disks read only from a CD-ROM Drive Readable, Flash Memory, Read Only Memory (ROM) chips or other type of non-volatile electronic semiconductor memory) on which information is permanently stored; and (ii) writable storage media (e.g., floppy disks in a floppy disk drive or a hard disk drive or other type of solid-state random access electronic memory) on which alterable information is stored.
Claims (6)
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261719271P | 2012-10-26 | 2012-10-26 | |
US61/719,271 | 2012-10-26 | ||
US14/012,308 | 2013-08-28 | ||
US14/012,308 US9734548B2 (en) | 2012-10-26 | 2013-08-28 | Caching of adaptively sized cache tiles in a unified L2 cache with surface compression |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102013017639A1 DE102013017639A1 (en) | 2014-04-30 |
DE102013017639B4 true DE102013017639B4 (en) | 2023-01-12 |
Family
ID=50479794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102013017639.5A Active DE102013017639B4 (en) | 2012-10-26 | 2013-10-25 | Caching of adaptively sized cache tiles in a unified L2 cache with surface compression |
Country Status (4)
Country | Link |
---|---|
US (1) | US9734548B2 (en) |
CN (1) | CN103810669B (en) |
DE (1) | DE102013017639B4 (en) |
TW (1) | TWI533255B (en) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8941676B2 (en) * | 2012-10-26 | 2015-01-27 | Nvidia Corporation | On-chip anti-alias resolve in a cache tiling architecture |
WO2014209252A1 (en) * | 2013-06-24 | 2014-12-31 | Intel Corporation | Page management approach to fully utilize hardware caches for tiled rendering |
US9842428B2 (en) * | 2014-06-27 | 2017-12-12 | Samsung Electronics Co., Ltd. | Dynamically optimized deferred rendering pipeline |
US10089238B2 (en) * | 2014-07-17 | 2018-10-02 | Qualcomm Incorporated | Method and apparatus for a shared cache with dynamic partitioning |
US10180947B2 (en) | 2015-04-29 | 2019-01-15 | Box, Inc. | File-agnostic data downloading in a virtual file system for cloud-based shared content |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
US20170206172A1 (en) * | 2016-01-19 | 2017-07-20 | SK Hynix Inc. | Tehcniques with os- and application- transparent memory compression |
US10120187B2 (en) | 2016-02-18 | 2018-11-06 | Nvidia Corporation | Sub-frame scanout for latency reduction in virtual reality applications |
CN105744275B (en) * | 2016-02-22 | 2019-04-05 | 青岛海信电器股份有限公司 | A kind of input of video data, output method and device |
US10453169B2 (en) * | 2016-03-28 | 2019-10-22 | Intel Corporation | Method and apparatus for multi format lossless compression |
US10176090B2 (en) * | 2016-09-15 | 2019-01-08 | Qualcomm Incorporated | Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems |
US10607390B2 (en) * | 2016-12-14 | 2020-03-31 | Nvidia Corporation | Techniques for tiling compute work with graphics work |
US11470131B2 (en) | 2017-07-07 | 2022-10-11 | Box, Inc. | User device processing of information from a network-accessible collaboration system |
US10929210B2 (en) | 2017-07-07 | 2021-02-23 | Box, Inc. | Collaboration system protocol processing |
CN109189533A (en) * | 2018-08-29 | 2019-01-11 | 万帮充电设备有限公司 | A kind of screen size adaptation method and system |
US11069023B2 (en) * | 2019-05-24 | 2021-07-20 | Nvidia Corporation | Techniques for efficiently accessing memory and avoiding unnecessary computations |
US11062507B2 (en) * | 2019-11-04 | 2021-07-13 | Apple Inc. | Compression techniques for pixel write data |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6697063B1 (en) | 1997-01-03 | 2004-02-24 | Nvidia U.S. Investment Company | Rendering pipeline |
US6856320B1 (en) | 1997-11-25 | 2005-02-15 | Nvidia U.S. Investment Company | Demand-based memory system for graphics applications |
US7102646B1 (en) | 1997-11-25 | 2006-09-05 | Nvidia U.S. Investment Company | Demand-based memory system for graphics applications |
US6535209B1 (en) | 1999-03-17 | 2003-03-18 | Nvidia Us Investments Co. | Data stream splitting and storage in graphics data processing |
US6323860B1 (en) | 1999-03-17 | 2001-11-27 | Nvidia Corporation | Circuit and method for deferring the binding of render states to primitives in a graphics system |
US6674443B1 (en) * | 1999-12-30 | 2004-01-06 | Stmicroelectronics, Inc. | Memory system for accelerating graphics operations within an electronic device |
US6885378B1 (en) * | 2000-09-28 | 2005-04-26 | Intel Corporation | Method and apparatus for the implementation of full-scene anti-aliasing supersampling |
US7317718B1 (en) | 2002-12-06 | 2008-01-08 | Juniper Networks, Inc. | Flexible counter update and retrieval |
US7634621B1 (en) * | 2004-07-13 | 2009-12-15 | Nvidia Corporation | Register file allocation |
US8214601B2 (en) * | 2004-07-30 | 2012-07-03 | Hewlett-Packard Development Company, L.P. | Purging without write-back of cache lines containing spent data |
US7649537B2 (en) * | 2005-05-27 | 2010-01-19 | Ati Technologies, Inc. | Dynamic load balancing in multiple video processing unit (VPU) systems |
US8766995B2 (en) * | 2006-04-26 | 2014-07-01 | Qualcomm Incorporated | Graphics system with configurable caches |
US7808507B1 (en) * | 2006-09-18 | 2010-10-05 | Nvidia Corporation | Compression tag state interlock |
GB2452300B (en) | 2007-08-30 | 2009-11-04 | Imagination Tech Ltd | Predicated geometry processing in a tile based rendering system |
US8933943B2 (en) * | 2008-04-30 | 2015-01-13 | Intel Corporation | Technique for performing load balancing for parallel rendering |
KR101511273B1 (en) * | 2008-12-29 | 2015-04-10 | 삼성전자주식회사 | System and method for 3d graphic rendering based on multi-core processor |
US8605102B1 (en) | 2009-10-08 | 2013-12-10 | Nvidia Corporation | Rasterization tile coalescer and reorder buffer |
US8412971B2 (en) * | 2010-05-11 | 2013-04-02 | Advanced Micro Devices, Inc. | Method and apparatus for cache control |
-
2013
- 2013-08-28 US US14/012,308 patent/US9734548B2/en active Active
- 2013-10-25 TW TW102138728A patent/TWI533255B/en not_active IP Right Cessation
- 2013-10-25 DE DE102013017639.5A patent/DE102013017639B4/en active Active
- 2013-10-28 CN CN201310517195.2A patent/CN103810669B/en active Active
Non-Patent Citations (3)
Title |
---|
HSIAO, Chih-Chieh; CHUNG, Chung-Ping; YANG, Hui-Chin. A hierarchical primitive lists structure for tile-based rendering. In: Computational Science and Engineering, 2009. CSE'09. International Conference on. IEEE, 2009. S. 408-413. doi: 10.1109/CSE.2009.386 |
LIKTOR, Gábor; DACHSBACHER, Carsten. Decoupled deferred shading for hardware rasterization. In: Proceedings of the ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games. ACM, 2012. S. 143-150. doi: 10.1145/2159616.2159640 |
WITTENBRINK, Craig M.; KILGARIFF, Emmett; PRABHU, Arjun. Fermi GF100 GPU architecture. Micro, IEEE, 2011, Vol. 31(2): 50-59. doi: 10.1109/MM.2011.24 |
Also Published As
Publication number | Publication date |
---|---|
CN103810669B (en) | 2017-12-22 |
TWI533255B (en) | 2016-05-11 |
US20140118379A1 (en) | 2014-05-01 |
CN103810669A (en) | 2014-05-21 |
TW201432611A (en) | 2014-08-16 |
DE102013017639A1 (en) | 2014-04-30 |
US9734548B2 (en) | 2017-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102013017639B4 (en) | Caching of adaptively sized cache tiles in a unified L2 cache with surface compression | |
DE102013017640B4 (en) | Distributed tiled caching | |
DE102018132468A1 (en) | MULTI-GPU FRAME RENDERING | |
US9411596B2 (en) | Tiled cache invalidation | |
DE102009039231B4 (en) | Single-pass tiling | |
DE102016122297A1 (en) | Multi-pass rendering in a screen space pipeline | |
DE102012220267B4 (en) | Arithmetic work distribution - reference counter | |
DE102013020613A1 (en) | Bypass pixel shading for low power graphic imaging | |
DE102012211670A1 (en) | Simultaneous submission to a multi-producer queue using multiple threads | |
DE102018114286A1 (en) | Perform a traversal stack compression | |
DE102013020614A1 (en) | Consistent grid division with multi-resolution | |
DE102013020807A1 (en) | Handling Subordinate Z Cover Data in Raster Operations | |
DE102015115232A1 (en) | Improved anti-aliasing by spatially and / or temporally varying sample patterns | |
DE102013018445A1 (en) | Defining a subordinate imaging state in an upstream shading entity | |
DE102013020966B4 (en) | Power efficient attribute handling for tessellation and geometry shading units | |
DE102013020810A1 (en) | Efficient super-scanning with shading strands per pixel | |
DE102013022257A1 (en) | Programmable mixing in multi-strand processing units | |
DE102013018139A1 (en) | Technique for storing common vertices | |
DE102016109905A1 (en) | Piecewise linear irregular rasterization | |
DE102013020968A1 (en) | Technique for accessing a content-addressable memory | |
DE112010003750T5 (en) | Hardware for parallel command list generation | |
DE112018004343T5 (en) | MULTI-ROOM RENDERING WITH CONFIGURABLE TRANSFORMATION PARAMETERS | |
US20210158598A1 (en) | Graphics processing systems | |
DE102013018136A1 (en) | Technique for storing common vertices | |
DE102013020967B4 (en) | Technique for performing memory access operations via texture hardware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R082 | Change of representative |
Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE |
|
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |