DE102013017641B4 - Umordnung von Grundelementen zwischen einer Welt-Raum-Pipeline und einer Bildschirm-Raum-Pipeline mit Pufferbeschränkter Verarbeitung - Google Patents

Umordnung von Grundelementen zwischen einer Welt-Raum-Pipeline und einer Bildschirm-Raum-Pipeline mit Pufferbeschränkter Verarbeitung Download PDF

Info

Publication number
DE102013017641B4
DE102013017641B4 DE102013017641.7A DE102013017641A DE102013017641B4 DE 102013017641 B4 DE102013017641 B4 DE 102013017641B4 DE 102013017641 A DE102013017641 A DE 102013017641A DE 102013017641 B4 DE102013017641 B4 DE 102013017641B4
Authority
DE
Germany
Prior art keywords
graphics
tile
memory
processing
primitives
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
Application number
DE102013017641.7A
Other languages
English (en)
Other versions
DE102013017641A1 (de
Inventor
Ziyad S. Hakura
Robert OHANNESSIAN
Cynthia Ann Edgeworth Allison
Dale L. Kirkland
Pierre SOUILLOT
Rouslan Dimitrov
Walter R. Steiner
Karim M. Abdalla
Rui M. Bastos
Jerome F. Duluk jr.
Jeffrey A. Bolz
Andrei Khodakovsky
Amanpreet GREWAL
Joseph Cavanaugh
Emmett M. Kilgariff
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/023,309 external-priority patent/US8704826B1/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013017641A1 publication Critical patent/DE102013017641A1/de
Application granted granted Critical
Publication of DE102013017641B4 publication Critical patent/DE102013017641B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

Ein Verfahren zur Verarbeitung grafischer Grundelemente, die mit einer oder mehreren Cache-Kacheln verknüpft sind, wenn ein Bild erzeugt wird in einem Grafiksubsystem, das eine Welt-Rau-Grafikverarbeitungs-Pipeline und eine Bildschirm-Raum-Grafikverarbeitungs-Pipeline aufweist, wobei das Verfahren umfasst:Empfangen mehrerer erster grafischer Grundelemente, die mit einer ersten Bilderzeugungszielkonfiguration verknüpft sind, aus der Welt-Raum-Grafikverarbeitungs-Pipeline der Grafikverarbeitungs-Pipeline;Speichern der mehreren ersten grafischen Grundelemente in einem Kachel-Speicher;Erkennen einer Bedingung, die angibt, dass die mehreren ersten grafischen Grundelemente für die Verarbeitung bereit sind durch Ermitteln, ob eine Löschbedingung für Daten aus dem Kachel-Speicher erfüllt ist, wobei die Löschbedingung angibt, dass ein oder mehrere Puffer eine Füllstandsschwelle erreicht haben, wobei, wenn dies der Fall ist,Überprüfen, ob der Kachel-Speicher nicht leere Cache-Kacheln für die Verarbeitung enthält;Auswählen einer Cache-Kachel, die mindestens ein grafisches Grundelement aus den mehreren ersten grafischen Grundelementen schneidet; undÜbergeben des mindestens einen grafischen Grundelements aus den mehreren ersten grafischen Grundelementen, das die Cache- Kachel schneidet, an die Bildschirm-Raum-Grafikverarbeitungs-Pipeline zur Verarbeitung.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Ausführungsformen der vorliegenden Erfindung betreffen generell die grafische Verarbeitung und insbesondere eine Umordnung von Grundelementen zwischen einer Welt-Raum-Pipeline und einer Bildschirm-Raum-Pipeline mit pufferbeschränkter Verarbeitung.
  • Beschreibung des Stands der Technik
  • 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 bzw. Partitionen, die als Kacheln bezeichnet werden, unterteilt werden. In einer derartigen Kachel-Architektur ordnet das Grafiksubsystem Arbeit derart um, dass die mit einer speziellen Kachel verknüpfte Arbeit in einem chipinternen Cache-Speicher für eine 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.
  • Typischerweise ändert sich die Gruppe aus Bilderzeugungszielen im Laufe der Zeit, wenn die Bilderzeugung der Bilder voranschreitet. Beispielsweise könnte ein erster Durchlauf eine erste Konfiguration aus Bilderzeugungszielen verwenden, um das Bild teilweise zu erzeugen. Ein zweiter Durchlauf könnte eine zweite Konfiguration aus Bilderzeugungszielen verwenden, um die Bilderzeugung weiter voranzutreiben. Ein dritter Durchlauf könnte eine dritte Gruppe aus Bilderzeugungszielen verwenden, um die abschließende Erzeugung des Bildes abzuschließen. Während des Bilderzeugungsprozesses kann das Computergrafiksubsystem eine beliebige Anzahl an unterschiedlichen Bilderzeugungszielkonfigurationen verwenden, um das endgültige Bild zu erzeugen.
  • Für jede Bilderzeugungszielkonfiguration werden zunächst grafische Objekte in einer Welt-Raum-Pipeline verarbeitet. Die Welt-Raum-Pipeline erzeugt grafische primitive Elemente bzw. Grundelemente, die mit den grafischen Objekten verknüpft sind. Die grafischen Grundelemente werden erzeugt und von der Welt-Raum-Pipeline ohne Bezug auf die Position der grafischen Grundelemente in der Bildschirm-Oberfläche, die durch die Bilderzeugungsziele repräsentiert ist, übergeben. Das Grafiksubsystem ordnet die grafischen Grundelemente in eine Kachelordnung um, wobei jede Kachel einen Teilbereich der Bildschirmoberfläche repräsentiert. Die umgeordneten grafischen Grundelemente werden dann von der Bildschirm-Raum-Pipeline verarbeitet, während die Reihenfolge der Anwendungsprogrammierschnittstelle (API) beibehalten wird.
  • Obwohl der Speicher, der zur Speicherung von Kacheln reserviert ist, generell so gestaltet ist, dass er alle notwendigen grafischen Grundelemente für eine gegebene Bilderzeugungszielkonfiguration enthält, können gewisse Bedingungen bewirken, dass dieser Speicher keinen Platz mehr hat. Beispielsweise könnte eine spezielle Kachel eine große Anzahl an sehr kleinen Grundelementen enthalten, etwa, wenn ein oder mehrere grafische Objekte fein als Parkett dargestellt werden. In derartigen Fällen könnte sich der Kachel-Speicher mit grafischen Grundelementen füllen, bevor das gesamte Bild in der Welt-Raum-Pipeline verarbeitet ist. Ferner können andere Daten, die zu den grafischen Grundelementen gehören, etwa Vertex-Attributdaten, in einem Cache-Speicher für Allgemeinzwecke gespeichert werden. In gewissen Fällen kann sich der Cache-Speicher mit Vertex-Attributdaten oder anderen Daten, die zu den grafischen Grundelementen gehören, füllen, wodurch bewirkt wird, dass grafische Grundelemente aus dem Kachel-Speicher verdrängt werden und dass die Vertex-Daten oder andere Daten, die mit den grafischen Grundelementen verknüpft sind, aus dem Cache-Speicher verdrängt werden. Derartige verdrängte Daten können in den Blockpufferspeicher geschrieben und später abgerufen werden
  • Ein Nachteil der obigen Vorgehensweise besteht darin, dass der Blockpufferspeicher generell außerhalb des Chips ist; wohingegen der Kachel-Speicher und der Cache-Speicher generell chipinternen sind. Zugriffe auf einen chipexternen Speicher verbrauchen typischerweise mehr Leistung und mehr Zeit, bis sie abgeschlossen sind. Eine derartige erhöhte Leistungsaufnahme kann zu einer kürzeren Batteriestandzeit führen, insbesondere für Grafiksubsysteme, die in Mobilgeräten angeordnet sind. Des weiteren wird bei Zunahme der chipexternen Zugriffe auf den Blockpufferspeicher die Zeit für die Bilderzeugung länger, woraus sich ein schlechteres Leistungsverhalten der Grafik und eine reduzierte visuelle Wahrnehmung ergeben. Antiochi, losif et al beschreiben in „Scene Management Models and Overlap Tests for Tile_Based Rendering“ in Digital System Design 2004. DSD 2004, Euromicro Symposium on IEEE, 2004, S. 424.431 ein System mit Kachelbasiertem Rendern und einem Cache Speicher.
  • Wie das Vorhergehende zeigt, ist das, was im Stand der Technik benötigt wird, eine Technik zur Reduzierung von Zugriffen auf einen chipexternen Speicher in einem Grafiksubsystem, das Kachel-Architekturen anwendet.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Eine Ausführungsform der vorliegenden Erfindung gibt ein Verfahren zur Verarbeitung von grafischen Grundelementen gemäß Anspruch 1 an, die mit einer oder mehreren Cache-Kacheln verknüpft sind, wenn ein Bild erzeugt wird. Das Verfahren umfasst unter anderem ein Empfangen einer Gruppe aus grafischen Grundelementen, die zu einer ersten Bilderzeugungszielkonfiguration gehören, aus einem ersten Teilbereich einer Grafikverarbeitungs-Pipeline, und Speichern der Gruppe aus grafischen Grundelementen in einem ersten Speicher. Das Verfahren umfasst ferner Erkennen einer Bedingung, die angibt, dass die Gruppe aus grafischen Grundelementen für die Verarbeitung bereit ist, und Auswählen einer Cache-Kachel, die mindestens ein grafisches Grundelement aus der Gruppe aus grafischen Grundelementen schneidet. Das Verfahren umfasst ferner das Übertragen mindestens eines grafischen Grundelements aus der Gruppe aus grafischen Grundelementen, das die Cache- Kachel schneidet, zu einem zweiten Teilbereich der Grafikverarbeitungs-Pipeline zur Verarbeitung.
  • Andere Ausführungsformen umfassen ein Subsystem gemäß Anspruch 2, das eine Verarbeitungseinheit umfasst, die ausgebildet ist, einen oder mehrere Aspekte der offenbarten Verfahren zu realisieren, sowie eine Recheneinrichtung, die ausgebildet ist, einen oder mehrere Aspekte der offenbarten Verfahren zu realisieren.
  • Ein Vorteil der offenbarten Vorgehensweise besteht darin, dass grafische Grundelemente und zugehörige Daten mit größerer Wahrscheinlichkeit chipintern während einer Cache-Kachelerzeugung gespeichert bleiben, wodurch die Leistungsaufnahme reduziert und das Leistungsverhalten der Bilderzeugung verbessert wird.
  • Figurenliste
  • 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 zur Realisierung eines oder mehrerer Aspekte der vorliegenden Erfindung ausgebildet ist;
    • 2 ist eine Blockansicht einer Parallelverarbeitungseinheit, die in dem Parallelverarbeitungssubsystem aus 1 gemäß einer Ausführungsform der vorliegenden Erfindung enthalten ist;
    • 3A ist eine Blockansicht eines allgemeinen Verarbeitungs-Clusters, der in der Parallelverarbeitungseinheit aus 2 gemäß einer Ausführungsform der vorliegenden Erfindung enthalten ist;
    • 3B ist eine Konzeptansicht einer Grafikverarbeitungs-Pipeline, die in der Parallelverarbeitungseinheit aus 2 gemäß einer Ausführungsform der vorliegenden Erfindung realisiert werden kann;
    • 4 ist eine Konzeptansicht einer Cache-Kachel, für die die Grafikverarbeitungs-Pipeline aus 3B ausgebildet ist, diese zu erzeugen und zu verarbeiten gemäß einer Ausführungsform der vorliegenden Erfindung;
    • 5 zeigt den Ablauf zur Unterteilung in Kacheln, der mit einer pufferbeschränkten Unterteilungen in Kacheln verknüpft ist, gemäß einer Ausführungsform der vorliegenden Erfindung; und
    • 6A-6B zeigen ein Flussdiagramm von Verfahrensschritten zur Verarbeitung von Grundelementen, die zu einer oder mehreren Cache-Kacheln gehören, wenn ein Bild gemäß einer Ausführungsform der vorliegenden Erfindung erzeugt wird.
  • DETAILLIERTE BESCHREIBUNG
  • 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.
  • Systemüberblick
  • 1 ist eine Blockansicht, die ein Computersystem 100 zeigt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren. Wie gezeigt, umfasst das Computersystem 100, ohne Einschränkung, eine zentrale Recheneinheit (CPU) 102 und einen Systemspeicher 104, die über eine Speicherbrücke 105 und einen Kommunikationspfad 113 mit einem Parallelverarbeitungssubsystem 112 verbunden sind. Die Speicherbrücke 105 ist ferner mit einer I/O-(Eingangs/Ausgangs-) Brücke 107 über einen Kommunikationspfad 106 verbunden, und die I/O-Brücke 107 ist wiederum mit einem Schalter 116 verbunden.
  • 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.
  • 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.
  • 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 Grafikport), HyperTransport oder andere Bus-oder Punkt-Zu-Punkt-Kommunikationsprotokolle, die im Stand der Technik bekannt sind.
  • In einigen Ausführungsformen umfasst das Parallelverarbeitungssubsystem 112 ein Grafiksubsystem, 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 2 detaillierter beschrieben ist, kann eine derartige Schaltung in einer oder mehreren Parallelverarbeitungseinheiten (PPUs) enthalten sein, die in dem Parallelverarbeitungssubsystem 112 enthalten sind. In anderen Ausführungsformen enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für eine Verarbeitung für Allgemeinzwecke und/oder für eine Rechenverarbeitung optimiert ist. Wiederum kann eine derartige Schaltung in einer oder mehreren PPUs enthalten sein, die in dem Parallelverarbeitungssubsystem 112 enthalten sind, und die ausgebildet sind, derartige Operationen für Allgemeinzwecke und/oder Berechnungen auszuführen. In noch anderen Ausführungsformen können die eine oder die mehreren PPUs, die in dem Parallelverarbeitungssubsystem 112 enthalten sind, ausgebildet sein, Operationen für eine Grafikverarbeitung, eine Verarbeitung für Allgemeinzwecke und eine Verarbeitung von Berechnungen auszuführen. Der Systemspeicher 104 enthält mindestens einen Gerätetreiber 103, der ausgebildet ist, die Verarbeitungsoperationen der einen oder den mehreren PPUs in dem Parallelverarbeitungssubsystem 112 zu verwalten.
  • In diversen Ausführungsformen kann das Parallelverarbeitungssubsystem 112 in einem oder mehreren anderen der anderen Elemente aus 1 integriert sein, um ein einzelnes System zu bilden. Beispielsweise kann das Parallelverarbeitungssubsystem 112 mit der CPU 102 und einer anderen Verbindungsschaltung auf einem einzelnen Chip integriert sein, um ein System auf einem Chip (SoC) zu bilden.
  • 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 1 gezeigten Komponenten gegebenenfalls nicht vorhanden sein. Beispielsweise könnte der Schalter 116 weggelassen werden, und der Netzwerkadapter 118 und die Zusatzkarten 120, 121 könnten direkt mit der I/O-Brücke 107 verbunden sein.
  • 2 ist eine Blockansicht einer Parallelverarbeitungseinheit (PPU) 202, die in dem Parallelverarbeitungssubsystem 112 aus 1 gemäß einer Ausführungsform der vorliegenden Erfindung enthalten ist. Obwohl 2 eine einzelne PPU 202 darstellt, kann, wie oben angegeben ist, das Parallelverarbeitungssubsystem 112 eine beliebige Anzahl an PPUs 202 enthalten. Wie gezeigt, ist die PPU 202 mit einem lokalen Parallelverarbeitungs-(PP-) Speicher 204 verbunden. Die PPU 202 und der PP-Speicher 204 können unter Verwendung einer oder mehrerer integrierter Schaltungseinrichtungen, etwa programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASIC) oder Speichereinrichtungen oder in einer anderen technisch machbaren Art und Weise realisiert werden.
  • 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.
  • 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 1 oder 2 nicht explizit gezeigt), die in dem Systemspeicher 104, in dem PP-Speicher 204 oder an einer anderen Speicherstelle liegen kann, auf die sowohl die CPU 102 als auch die PPU 202 zugreifen können. Ein Zeiger auf die Datenstruktur wird in einen Schiebepuffer geschrieben, um die Verarbeitung des Stroms an Befehlen in der Datenstruktur zu initiieren. Die PPU 202 liest Befehlsströme aus dem Schiebepuffer aus und führt dann Befehle asynchron relativ zu der Betriebsweise der CPU 102 aus. In Ausführungsformen, in denen mehrere Schiebepuffer erzeugt werden, können Prioritäten für die Ausführung für jeden Schiebepuffer durch ein Anwendungsprogramm über den Gerätetreiber 103 angegeben werden, um die Disponierung der unterschiedlichen Schiebepuffer zu steuern.
  • 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 übertragen werden. Die Hauptschnittstelle 206 liest jeden Schiebepuffer aus und überträgt den in dem Schiebepuffer gespeicherten Befehlsstrom an einen Frontbereich 212.
  • Wie zuvor in Verbindung mit 1 erwähnt ist, kann die Verbindung der PPU 202 zu dem Rest des Computersystems 100 unterschiedlich sein. In einigen Ausführungsformen ist das Parallelverarbeitungssubsystem 112, das mindestens eine PPU 202 enthält, als eine Zusatzkarte realisiert, die in einen Erweiterungssteckplatz des Computersystems 100 eingeführt werden kann. In anderen Ausführungsformen kann die PPU 202 auf einem einzelnen Chip mit einer Busbrücke, etwa der Speicherbrücke 105 oder der I/O-Brücke 107 integriert sein. In noch anderen Ausführungsformen können einige oder alle Elemente der PPU 202 zusammen mit der CPU 102 in einer einzelnen integrierten Schaltung oder einem System auf einem Chip (SoC) enthalten sein.
  • Während des Betriebs überträgt 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.
  • 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.
  • 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.
  • 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 2 ist die Kreuzungseinheit 210 direkt mit der I/O-Einheit 205 verbunden. In diversen Ausführungsformen kann die Kreuzungseinheit 210 virtuelle Kanäle verwenden, um Verkehrsströme zwischen den GPCs 208 und den Partitionseinheiten 215 zu trennen.
  • 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.
  • 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.
  • 3A ist eine Blockansicht eines GPC 208, der in der PPU 202 aus 2 gemäß einer Ausführungsform der vorliegenden Erfindung enthalten ist. Im Betrieb kann der GPC 208 ausgebildet sein, eine große Anzahl an Strängen parallel auszuführen, um Operationen für Grafik, allgemeine Verarbeitung und/oder Berechnungen auszuführen. Im hierin verwendeten Sinne bezeichnet ein „Strang“ eine Instanz eines speziellen Programms, das an einer speziellen Menge an Eingangsdaten ausgeführt wird. In einigen Ausführungsformen werden Einzelbefehl, Mehrfach-Daten-(SIMD) Befehlsausgabetechniken eingesetzt, um eine parallele Ausführung einer großen Anzahl an Strängen zu unterstützen, ohne dass mehrere unabhängige Befehlseinheiten vorzusehen sind. In anderen Ausführungsformen werden Einzelbefehl, Mehrfach-Strang-(SIMT) Techniken eingesetzt, um die parallele Ausführung einer großen Anzahl an allgemein synchronisierten Strängen zu unterstützen, wobei eine gemeinsame Befehlseinheit ausgebildet ist, Befehle an eine Gruppe von Verarbeitungseinheiten innerhalb des GPC 208 auszugeben. Anders als ein SIMD-Ausführungsregime, in welchem alle Verarbeitungseinheiten typischerweise identische Befehle ausführen, erlaubt eine SIMT-Ausführung, dass unterschiedliche Stränge effizienter divergenten Ausführungspfaden durch ein gegebenes Programm hindurch folgen. Der Fachmann auf dem Gebiet erkennt, dass ein SIMD-Verarbeitungsregime eine funktionale Teilmenge eines SIMT-Verarbeitungsregimes darstellt.
  • 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.
  • 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.
  • 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.
  • 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.
  • Obwohl in 3A nicht gezeigt, enthält jeder SM 310 einen Cache-Speicher der Ebene eins (L1) oder verwendet Platz in einem entsprechenden L1-Cache-Speicher außerhalb des SM 310, um unter anderem Lade-und SpeicherOperationen zu unterstützen, die von den Ausführungseinheiten ausgeführt werden. Jeder SM 310 hat ferner Zugriff auf Cache-Speicher der Ebene zwei (L2) (nicht gezeigt), die gemeinsam von allen GPCs 208 in der PPU 202 verwendet werden. Die L2-Cache-Speicher können verwendet werden, um Daten zwischen Strängen auszutauschen. Schließlich können die SM 310 auch Zugriff auf einen chipexternen „globalen“ Speicher haben, der den PP-Speicher 204 und/oder den Systemspeicher 104 enthalten kann. Ferner ist zu beachten, dass ein beliebiger Speicher außerhalb der PPU 202 als globaler Speicher verwendbar ist. Wie ferner in 3A gezeigt ist, kann ein Cache-Speicher der Ebene eins-Punkt-fünf (L1.5) in dem GPC 208 verwendet werden und kann ausgebildet sein, aus dem Speicher über die Speicherschnittstelle 214 von den SM 310 angeforderte Daten zu empfangen und zu halten. Derartige Daten können enthalten, ohne Einschränkung, Befehle, gleichförmige Daten und konstante Daten. In Ausführungsformen mit mehreren SM 310 innerhalb des GPC 208 können die SM 310 vorteilhafterweise gemeinsame Befehle und Daten, die in dem L1.5-Cache-Speicher 325 zwischengespeichert sind, gemeinsam nutzen.
  • 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.
  • 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.
  • 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.
  • 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 2 beschrieben ist, kann die PPU 202 eine beliebige Anzahl an GPCs 208 enthalten, die ausgebildet sind, dass sie in ihrer Funktion ähnlich zueinander sind, so dass das Ausführungsverhalten nicht davon abhängt, welcher GPC 208 welche spezielle Verarbeitungsaufgabe erhält. Ferner arbeitet jeder GPC 208 unabhängig von den anderen GPCs 208 in der PPU 202, um Aufgaben für ein oder mehrere Anwendungsprogramme auszuführen. Im Hinblick auf das zuvor Gesagte erkennt der Fachmann, dass die in den 1-3A beschriebene Architektur in keiner Weise einschränkend für den Schutzbereich der vorliegenden Erfindung ist.
  • Grafik-Pipeline-Architektur
  • 3B ist eine Konzeptansicht einer Grafikverarbeitungs-Pipeline 350, die in der PPU 202 aus 2 gemäß einer Ausführungsform der vorliegenden Erfindung realisiert werden kann. Wie gezeigt, umfasst die Grafikverarbeitungs-Pipeline 350, ohne einschränkend zu sein, eine Verteileinheit für primitive Elemente bzw. Grundelemente (PD) 355; eine Vertex-Attributabholeinheit (VAF) 360; eine Vertex-, Parkettierung-, Geometrie-Verarbeitungseinheit (VTG) 365; eine Darstellungsfeldskalier-, Auswahl-und Schneide-Einheit (VPC) 370; eine Kacheleinheit 375, eine Einrichtungseinheit (Einrichten) 380, eine Rastereinheit (Raster) 385; eine Fragmentverarbeitungseinheit, auch als eine Pixel-Schattierungseinheit (PS) 390 bezeichnet, und eine Raster-Operationen-Einheit (ROP) 395.
  • 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 überträgt die Vertex-Daten an die VAF 360.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Die Geometrie-Verarbeitungseinheit überträgt 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 überträgt dann die verarbeiteten grafischen Grundelemente an die Kacheleinheit 375.
  • 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 übertragen werden. Die Kreuzungseinheit 375 überträgt 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.
  • 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.
  • 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 überträgt dann die verarbeiteten grafischen Grundelemente an die Rastereinheit 385.
  • Die Rastereinheit 385 wandelt durch Abtastung die neuen grafischen Grundelemente um und überträgt 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.
  • 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.
  • 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 übertragen werden. Die Pixel-Schattierungseinheit 300 kann Daten lesen, die in dem gemeinsam benutzten Speicher gespeichert sind.
  • 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.
  • Die Grafikverarbeitungs-Pipeline kann durch ein oder mehrere Verarbeitungselemente in der PPU 202 realisiert werden. Beispielsweise kann einer der SM 310 aus 3A ausgebildet sein, die Funktionen der VTG 365 und/oder der Pixel-Schattierungseinheit 390 auszuführen. Die Funktionen der PD 355, der VAF 360, der VPC 450, der Kacheleinheit 375, der Einrichtungseinheit 380, der Rastereinheit 385 und der ROP 395 können ebenfalls von Verarbeitungselementen innerhalb eines speziellen GPC 208 in Verbindung mit einer entsprechenden Partitionseinheit 215 ausgeführt werden. Alternativ kann die Grafikverarbeitungs-Pipeline 350 unter Anwendung spezieller Verbindungselemente mit festgelegter Funktion für eine oder mehrere der zuvor aufgeführten Funktionen realisiert werden. In diversen Ausführungsformen kann die PPU 202 ausgebildet sein, eine oder mehrere Grafikverarbeitungs-Pipelines 350 zu realisieren.
  • 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 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 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.
  • 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.
  • Gekachelte Zwischenspeicherung
  • 4 ist eine Konzeptansicht einer Cache-Kachel 410(0), für die die Grafikverarbeitungs-Pipeline 350 aus 3B ausgebildet ist, diese zu erzeugen und zu verarbeiten gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt, repräsentiert die Cache-Kachel 410(0) einen Teilbereich eines Bildschirm-Raums 400 und ist in mehrere Raster-Kacheln 420 unterteilt.
  • 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 übertragen 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.
  • 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 4 gezeigt. In einigen Ausführungsformen besitzen die Cache-Kacheln in dem X-und Y-Bildschirm-Raum eine willkürliche Größe. Wenn beispielsweise eine Cache-Kachel in einem Cache-Speicher liegt, der auch verwendet wird, um andere Daten zu speichern, dann kann die Cache-Kachel so dimensioniert sein, dass nur ein spezieller Bereich des Cache-Speichers eingenommen wird. Die Größe einer Cache-Kachel kann auf einer Reihe von Faktoren beruhen, wozu gehören: die Quantität und die Konfiguration der Bilderzeugungsziele, die mit dem Bildschirm-Raum 400 verknüpft sind, die Menge an Abtastwerten pro Pixel, und ob die in der Cache-Kachel gespeicherten Daten komprimiert sind. Allgemein gilt, dass eine Cache-Kachel so dimensioniert wird, dass die Wahrscheinlichkeit erhöht ist, dass die Cache-Kacheldaten in dem Cache-Speicher beibehalten werden, bis alle grafischen Grundelemente, die mit der Cache-Kachel verknüpft sind, vollständig verarbeitet sind.
  • 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.
  • Pufferbeschränkte Kachelunterteilung
  • Während der Bildbearbeitung werden grafische Objekte einmal durch die Welt-Raum-Pipeline 352 verarbeitet, wobei ein oder mehrere grafische Grundelemente, die mit jedem grafischen Objekt verknüpft sind, erzeugt werden. Es wird für jedes grafische Grundelement oder für Gruppen aus grafischen Grundelementen ein abgrenzendes Feld berechnet. Obwohl dieses als ein abgrenzendes „Feld“ beschrieben ist, kann ein beliebiges technisch machbares abgrenzendes Grundelement berechnet werden, wozu, ohne Einschränkung, gehören: ein Quadrat, ein Rechteck, ein unregelmäßiges Achteck oder jede andere regelmäßige oder unregelmäßige abgrenzende Form. Jedes grafische Grundelement wird dann in Kacheln unterteilt, d.h., das grafische Grundelement wird mit einer oder mehreren Bildschirm-Raum-Kacheln verknüpft, und die Daten der grafischen Grundelemente werden in der Kacheleinheit 375 gespeichert. Jedes grafische Grundelement wird dann ein oder mehrere Male von der Bildschirm-Raum-Pipeline 354 auf der Grundlage der Anzahl an Kacheln verarbeitet, die von dem grafischen Grundelement geschnitten werden. Folglich wird eine Welt-Raum-Berechnung einmal für jedes grafische Objekt ausgeführt, unabhängig von der Anzahl der Bildschirm-Cache-Kacheln, die die Grafik schneidet. Da die Welt-Raum-Berechnung einmal ausgeführt wird, kann der Gerätetreiber 103 auf die Grafikverarbeitungs-Pipeline 350 als eine Pipeline mit nur einem einzelnen Durchlauf zugreifen. Damit muss der Gerätetreiber 103 nicht die grafischen Objekte und zugehörige Vertex-Attribute oder andere Zustandsattribute mehr als einmal durchlaufen, selbst wenn die grafischen Objekte von der Bildschirm-Raum-Pipeline 354 mehrere Male verarbeitet werden. Der Kachel-Speicher in der Kacheleinheit 375 ist so dimensioniert, dass die von der Welt-Raum-Pipeline 352 erzeugten Daten der grafischen Grundelemente gespeichert werden. Für einige Bilder werden jedoch von der Welt-Raum-Pipeline 352 mehr Daten erzeugt als in dem Kachel-Speicher und zugehörigen Cache-Speichern gespeichert werden können. In derartigen Fällen wendet die Kacheleinheit 375 eine pufferbeschränkte Verarbeitung an. Die pufferbeschränkte Verarbeitung ist nachfolgend weiter beschrieben.
  • 5 zeigt einen Arbeitsablauf zur Kachelunterteilung 500, der mit der pufferbeschränkten Kachelunterteilung gemäß einer Ausführungsform der vorliegenden Erfindung verknüpft ist. Wie gezeigt, umfasst der Kachelunterteilungsarbeitsablauf 500 eine Welt-Raum-Pipeline 352, eine Kreuzungseinheit 505, eine Kachel-Infrastruktur 510 und eine Bildschirm-Raum-Pipeline 354. Sofern nachfolgend nicht anders beschrieben ist, sind die Welt-Raum-Pipeline 352 und die Bildschirm-Raum-Pipeline 354 in ihrer Funktion im Wesentlichen gleich zu dem, was zuvor in Verbindung mit 3B beschrieben ist.
  • Die Welt-Raum-Pipeline 352 verarbeitet grafische Objekte, die zu einem Bild gehören, das gerade in der Grafikverarbeitungs-Pipeline 350 erzeugt wird, und sie erzeugt grafische Grundelemente, die zu grafischen Objekten gehören. Die Welt-Raum-Pipeline 352 übergibt dann die grafischen Grundelemente an die Kreuzungseinheit 505.
  • Die Kreuzungseinheit 505 empfängt grafische Grundelemente aus der Welt-Raum-Pipeline 352 und übergibt die grafischen Grundelemente an die Kachel-Infrastruktur 510. In den GPCs 208, die mehrere Grafikverarbeitungs-Pipelines 350 enthalten, können die GPCs 208 mehrere Welt-Raum-Pipelines 352, Kachel-Infrastrukturen 510 und Bildschirm-Raum-Pipelines 354 aufweisen. In derartigen Fällen überträgt die Kreuzungseinheit 505 grafische Grundelemente, die sie aus einer der Welt-Raum-Pipelines 352 empfangen hat, zu einer, mehreren oder allen Kachel-Infrastrukturen, wie dies geeignet ist.
  • Die Kachel-Infrastruktur 510 empfängt grafische Grundelemente aus der Kreuzungseinheit 505 und unterteilt die grafischen Grundelemente in Bildschirm-Raum-Kacheln. Wie gezeigt, enthält die Kachel-Infrastruktur 510 eine Kacheleinheit 375 und einen L2-Cache-Speicher 550. Wenn dies nicht anders nachfolgend beschrieben ist, arbeiten die Kacheleinheit 375 und der L2-Cache-Speicher 550 im Wesentlichen in der gleichen Weise, wie dies in Verbindung mit den 3A-3B beschrieben ist.
  • Die Kacheleinheit 375 empfängt grafische Grundelemente aus der Kreuzungseinheit 505 und unterteilt die Daten in Kacheln für die Bildschirm-Raum-Verarbeitung. Wie gezeigt, enthält die Kacheleinheit 375 eine Kachel-Verarbeitungseinheit 515 und einen Kachel-Speicher 520.
  • Die Kachel-Verarbeitungseinheit 515 ist eine Verarbeitungseinheit, die grafische Grundelemente, die von der Kreuzungseinheit 505 empfangen werden, verarbeitet und die verarbeiteten Daten in dem Kachel-Speicher 520 speichert. Insbesondere speichert die Kachel-Verarbeitungseinheit 515 Daten für grafische Grundelemente 530 für jedes grafische Grundelement, wobei die Daten für grafische Grundelemente 530 umfassen, ohne einschränkend zu sein: primitive bzw. grundlegende Deskriptoren, die die Art an grafischen Grundelementen bezeichnen, etwa einen Punkt, ein Liniensegment oder ein Dreieck; und einen Zeiger auf jeden Vertex bzw. Eckpunkt des grafischen Grundelements. Grafische Grundelemente werden aus der Kreuzungseinheit 505 in der Reihenfolge empfangen, in der die grafischen Grundelemente von der Welt-Raum-Pipeline 352 verarbeitet werden. Die mit den grafischen Grundelementen verknüpften Daten werden in der empfangenen Reihenfolge unabhängig von Bildschirm-Raum-Positionen der grafischen Grundelemente gespeichert.
  • Der Zeiger auf jeden Vertex bzw. Eckpunkt eines grafischen Grundelements kann in einer beliebigen technisch machbaren Weise spezifiziert werden, wozu gehören, ohne Einschränkung, eine direkte Speicheradresse, eine Offset-Adresse ausgehend von einer speziellen Basisadresse oder ein numerischer Index. In einer Ausführungsform verbraucht jeder Vertex-Zeiger 4 Bytes an Speicher in dem Kachel-Speicher 520. Jeder Zeiger auf einen Vertex eines grafischen Grundelements zeigt auf eine Stelle in dem L2-Cache-Speicher 550, die die Vertex-Attributdaten 560, die zu dem Vertex gehören, angibt. Die Kachel-Verarbeitungseinheit 515 speichert auch Daten des abgrenzenden Feldes 540, wobei jeder Eintrag in den Daten 540 des abgrenzenden Feldes die Position und die Größe im Bildschirm-Raum eines rechteckigen abgrenzenden Feldes definiert, das ein oder mehrere zugehörige grafische Grundelemente umgibt. Aus den Daten 540 für das abgrenzende Feld kann die Kachel-Verarbeitungseinheit 515 die Gruppe aus Bildschirm-Kacheln ermitteln, die jedes grafische Grundelement schneiden.
  • Der Kachel-Speicher 520 ist eine spezielle Art eines internen Speichers, der Daten für die Kachel-Verarbeitungseinheit 515 speichert, wozu gehören, ohne Einschränkung, Daten 530 für die grafischen Grundelemente und Daten 540 für das abgrenzende Feld. Der Kachel-Speicher 520 arbeitet als ein Cache-Speicher, wobei Daten, die nicht in den Kachel-Speicher 520 passen, in einen chipexternen Speicher geschrieben oder daraus gelesen werden können, etwa einen Cache-Speicher einer höheren Ebene oder einen Blockpufferspeicher. Wie gezeigt, enthält der Kachel-Speicher 520 die Daten 530 für grafische Grundelemente und die Daten 540 für abgrenzende Felder.
  • Wie in Verbindung mit 3 beschrieben ist, ist der L2-Cache-Speicher 550 ein vereinheitlichter Cache-Speicher der Ebene 2. Wie gezeigt, enthält der L2-Cache-Speicher 550 die Vertex-Attributdaten 560, Zustandsinformationsdaten 570 und eine oder mehrere Cache-Kacheln 580 und konstante Daten 590.
  • Die Vertex-Attributdaten 560 sind ein ringförmiger Puffer in dem L2-Cache-Speicher 550, der diverse Attribute enthält, die mit den Vertices der grafischen Grundelemente verknüpft sind, die von der Welt-Raum-Pipeline 352 verarbeitet werden. Die Vertex-Attributdaten 560 sind mit einer EVICT_LAST-Verdrängungsstrategie gespeichert, um die Wahrscheinlichkeit zu vergrößern, dass die Vertex-Attributdaten 560 für eine längere Zeitdauer in dem L2-Cache-Speicher 550 bleiben. In einer Ausführungsform verbraucht jeder Eintrag in den Vertex-Attributdaten 560 64 Bytes an Speicher in dem L2-Cache-Speicher 550. Die Vertex-Zeiger, die in den Daten für grafische Grundelemente 530 des Kachel-Speichers 520 gespeichert sind, zeigen auf die Einträge in den Vertex-Attributdaten 560.
  • Die Zustandsinformationsdaten 570 enthalten zusätzliche Zustandsinformation, wie sie von der Bildschirm-Raum-Pipeline 354 benötigt wird. In einigen Ausführungsformen können die Zustandsinformationsdaten 570 Daten enthalten, die mit einem oder mehreren Vertices korreliert sind, wie sie in den Vertex-Attributdaten 560 gespeichert sind. In einigen Ausführungsformen können die Zustandsinformationsdaten 570 Daten enthalten, die nicht mit Vertices korreliert sind, die in den Vertex-Attributdaten 560 gespeichert sind.
  • Der Teil für die Cache-Kachel 580 des L2-Cache-Speichers 550 speichert eine oder mehrere Cache-Kacheln, wie dies in Verbindung mit 4 beschrieben ist. Wenn die Bildschirm-Raum-Pipeline 354 grafische Grundelemente, die aus der Kachel-Infrastruktur 510 empfangen werden, verarbeitet, dann greift die Bildschirm-Raum-Pipeline 354 auf zugehörige Daten in dem Teil für die Cache-Kachel 580 des L2-Cache-Speichers 550 zu.
  • Der Bereich 590 für konstante Daten des L2-Cachespeichers 550 speichert Daten von Konstanten, die nicht in Registern oder einem anderen Speicher gespeichert sind.
  • Der L2-Cache-Speicher 550 speichert ferner diverse Daten (nicht gezeigt), die zu dem Parallelverarbeitungssubsystem 112 gehören. Der L2-Cache-Speicher 550 arbeitet als ein Cache-Speicher, wobei Daten, die nicht in den L2-Cache-Speicher 550 passen, in einen chipexternen Speicher geschrieben und aus diesem gelesen werden können, etwa der Blockpufferspeicher.
  • In GPCs 208, die mehrere Grafikverarbeitungs-Pipelines 350 enthalten, kann jeder GPC 208 eine Bildschirm-Raum-Pipeline 354 entsprechend zu jeder Kachel-Infrastruktur 510 aufweisen. In derartigen Fällen übergibt jede Kachel-Infrastruktur 510 grafische Grundelemente an eine entsprechende Bildschirm-Raum-Pipeline 354.
  • Die Bildschirm-Raum-Pipeline 354 empfängt in Kacheln aufgeteilte grafische Grundelemente aus der entsprechenden Kachel-Infrastruktur 510 für die Bildschirm-Raum-Verarbeitung. Insbesondere empfängt die Einrichtungseinheit 380 in der Bildschirm-Raum-Pipeline 354 die Daten 530 für grafische Grundelemente und die Daten 540 für Abgrenzungsfelder aus der Kacheleinheit 375 und die Vertex-Attributdaten 560, die Zustandsinformationsdaten 570 und die Cache-Kacheln 580 aus dem L2-Cache-Speicher 550. Die Bildschirm-Raum-Pipeline 354 verarbeitet dann die empfangenen Daten gemäß der Kachel-Reihenfolge, wie sie aus der Kachel-Infrastruktur 510 empfangen wurden.
  • Zu beachten ist, dass das hierin gezeigte System anschaulicher Natur ist und dass Variationen und Modifizierungen möglich sind. In einem Beispiel ist die Kachel-Infrastruktur 510 so beschrieben, dass sie einen Kachel-Speicher 520 und einen L2-Cache-Speicher 550 aufweist, die jeweils diverse Abschnitte enthalten. Jedoch können die diversen Abschnitte des Kachel-Speichers 520 und des L2-Cache-Speichers 550 in einem beliebigen technisch machbaren Speicherchipintern oder chipextern - gespeichert werden, unabhängig davon, ob ein derartiger Speicher ein Cache-Speicher ist. In einem weiteren Beispiel können Bereiche des Kachel-Speichers 520 und des L2-Cache-Speichers 550 andere Daten (nicht gezeigt) speichern, wie sie von diversen Verarbeitungselementen benötigt werden, wozu gehören, ohne einschränkend zu sein, die Kacheleinheit 375, die GPCs 208 und die CPU 102. In einem noch weiteren Beispiel sind die Vertex-Attributdaten 560 so beschrieben, dass sie mit einer EVICT_L AST-Verdrängungsstrategie gespeichert sind. Jedoch können die Vertex-Attributdaten 560 einer beliebigen anderen technisch machbaren Cache-Verdrängungspolitik unterliegen. Alternativ können die Vertex-Attributdaten 560 einer Cache-Strategie unterliegen, etwa, wenn die Vertex-Attributdaten 560 in einem Speicher gespeichert werden, der kein Cache-Speicher ist.
  • Die Daten 530 für grafische Grundelemente, die Daten 540 für abgrenzende Felder, die Vertex-Attributdaten 560 und andere Daten können jeweils individuell für diverse Pufferebenen ausgewählt werden, wozu gehören, ohne einschränkend zu sein, eine Einzel-Zwischenspeicherung, eine Doppel-Zwischenspeicherung, eine dreifache Zwischenspeicherung und eine vierfache Zwischenspeicherung. Beispielsweise können die Daten 530 für grafische Grundelemente und die Daten 540 für abgrenzende Felder doppelt zwischengespeichert werden, während die Vertex-Attributdaten dreifach zwischengespeichert sein können und konstante Daten könnten einfach zwischengespeichert sein. Der Grad der Zwischenspeicherung kann auf der Grundlage beliebiger geeigneter Kriterien ausgewählt werden, wozu gehören, ohne einschränkend zu sein, die Größe der gespeicherten Daten, die Wichtigkeit der Daten und die Zeitdauer, mit der man erwartet, dass die Daten in einem chipinternen Speicher bleiben. Eine derartige Vorgehensweise kann die Wahrscheinlichkeit erhöhen, dass Daten, die mit verarbeiteten grafischen Grundelementen in Beziehung stehen, für längere Zeit im chipinternen Speicher verbleiben. Ferner kann diese Vorgehensweise den zusätzlichen Speicherverkehr verringern, der ansonsten hervorgerufen würde für das Schreiben und das Zurücklesen zu und von dem Blockpufferspeicher der Vertex-Attributdaten, die von der Welt-Raum-Pipeline 352 erzeugt werden.
  • Wenn die Kacheleinheit 375 grafische Grundelemente auf der Basis einzelner Kacheln neu ordnet, überwacht die Kacheleinheit 375 Schwellwertpegel für diverse Datenabschnitte, die mit der Kachelunterteilung verknüpft sind, wozu gehören, ohne einschränkend zu sein, die Daten 530 für grafische Grundelemente, die Daten 540 für abgrenzende Felder, die Vertex-Attributdaten 560 und die konstanten Daten 590. Die Schwellwerte werden individuell für jeweils diese Datenabschnitte festgelegt, um anzugeben, wann die Daten aktuell in den Kachel-Speicher 520 verarbeitet werden sollten, bevor einer der chipinternen Speicher überfüllt wird, etwa der Kachel-Speicher 520 und der L2-Cache-Speicher 550. Wenn ein Schwellwert in einem oder mehreren Datenabschnitten erreicht wird, initiiert die Kacheleinheit 375 eine „Löschoperation“, wobei die grafischen Grundelemente, die in dem Kachel-Speicher 520 gespeichert sind, verarbeitet und an die Bildschirm-Raum-Pipeline 354 auf Basis einzelner Kacheln übertragen werden. Die entsprechenden Einträge in dem Kachel-Speicher 520 werden dann geleert, wodurch der zugehörige Kachel-Speicher für die Aufnahme weiterer grafischer Grundelemente freigegeben wird.
  • Die Speicherbandbreite für verarbeitete Geometrie kann substantiell sein, insbesondere in Anwesenheit einer Geometrie-Erweiterung, etwa während der Parkettierung-und Geometrie-Schattierung. Ferner können signifikante Mengen von Daten 530 für grafische Grundelemente und Vertex-Attributdaten 560 erzeugt werden, wenn Bilder erzeugt werden, die viele kleine grafische Grundelemente enthalten. Die hierin beschriebenen Vorgehensweisen können vorteilhafter Weise die Speicherbandbreite während der gekachelten Bilderzeugung verringern.
  • In einigen Ausführungsformen kann der Speicherplatz, der zum Speichern der Vertex-Attributdaten 560 in dem L2-Cachespeicher 550 vorgesehen ist, über eine Softwareanwendung programmierbar sein. Damit können die Vertex-Attributdaten 560 so dimensioniert werden, dass diese in den Blockpufferspeicher überlaufen. Eine derartige Vorgehensweise kann vorteilhaft sein, wenn die Leistungseinbuße zum Schreiben in und zum Lesen aus dem Blockpufferspeicher kleiner ist als die Einbuße, die mit dem Löschen des Kachel-Speichers 520 verknüpft ist.
  • 6A-6B zeigen ein Flussdiagramm von Verfahrensschritten zur Verarbeitung von Grundelementen, die mit einer oder mehreren Cache-Kacheln verknüpft sind, wenn ein Bild gemäß einer Ausführungsform der vorliegenden Erfindung erzeugt wird. Obwohl die Verfahrensschritte in Verbindung mit den Systemen der 1-5 beschrieben sind, erkennt der Fachmann auf diesem Gebiet, dass ein beliebiges System, das zum Ausführen der Verfahrensschritte in beliebiger Reihenfolge ausgebildet ist, innerhalb des Schutzbereichs der Erfindung liegt.
  • Wie gezeigt, beginnt ein Verfahren 600 in einem Schritt 602, in welchem die Kacheleinheit 375 eine neue Cache-Kachelgröße enthält, die einer neuen Bilderzeugungszielkonfiguration entspricht. Im Schritt 604 ermittelt die Kacheleinheit 375, ob eine Löschbedingung erkannt wird. Eine Löschbedingung beinhaltet dass ein oder mehrere Puffer eine Füllstandsschwelle erreicht haben. Zusätzlich kann als Löschbedingung ein Löschbefehl von einem Anwendungsprogramm empfangen werden, oder eine neue Bilderzeugungszielkonfiguration wird erkannt. Wenn eine Löschbedingung nicht erkannt wird, dann geht das Verfahren 600 zum Schritt 606 weiter, in welchem die Kacheleinheit 375 ermittelt, ob ein neues grafisches Grundelement aus der Welt-Raum-Pipeline 352 empfangen wurde. Wenn ein neues grafisches Grundelement aus der Welt-Raum-Pipeline 352 empfangen worden ist, dann geht das Verfahren 600 weiter zum Schritt 608, in welchem die Kacheleinheit 375 das empfangene grafische Grundelement in dem Kachel-Speicher 520 gespeichert. Das Verfahren 600 kehrt dann zum Schritt 604 zurück, der zuvor beschrieben ist. Wenn im Schritt 606 jedoch kein neues grafisches Grundelement aus der Welt-Raum-Pipeline 352 empfangen worden ist, dann geht das Verfahren 600 weiter zum Schritt 604, der zuvor beschrieben ist.
  • Zurück zum Schritt 604: wenn eine Löschbedingung erkannt wird, dann geht das Verfahren 600 weiter zum Schritt 610, in welchem die Kacheleinheit 375 ermittelt, ob der Kachel-Speicher 520 nicht-leere Kacheln für die Verarbeitung enthält. Wenn der Kachel-Speicher 520 nicht-leere Kacheln für die Verarbeitung enthält, dann geht das Verfahren 600 weiter zum Schritt 612, in welchem die Kacheleinheit 375 eine Kachel zur Verarbeitung auswählt. Im Schritt 614 analysiert die Kacheleinheit 375 die Daten 530 für grafische Grundelemente in dem Kachel-Speicher 520, um die grafischen Grundelemente zu ermitteln, die die ausgewählte Kachel schneiden. Im Schritt 616 übergibt die Kacheleinheit 375 Scheren-Daten, die mit der Position und der Größe der ausgewählten Kachel verknüpft sind, an die Bildschirm-Raum-Pipeline 354, wobei die Scheren-Daten den Teilbereich der schneidenden grafischen Grundelemente definieren, der in der ausgewählten Kachel liegt. Im Schritt 618 übergibt die Kacheleinheit 375 die Daten 530 für grafische Grundelemente, die mit den schneidenden grafischen Grundelementen verknüpft sind, an die Bildschirm-Raum-Pipeline 354. Die Kacheleinheit 375 kann ferner die Daten 540 für abgrenzende Felder, etwa die Position und die Größe für ein abgrenzendes Feld, das mit einem oder mehreren der übergebenen grafischen Grundelemente verknüpft ist, übergeben. Das Verfahren 600 kehrt dann zum Schritt 610 zurück, der zuvor beschrieben ist.
  • Wenn im Schritt 610 der Kachel-Speicher 520 keine nicht-leeren Kacheln für die Verarbeitung enthält, dann geht das Verfahren 600 weiter zum Schritt 620, in welchem die Kacheleinheit 375 ermittelt, ob die Löschbedingung des Schritts 608 aufgrund einer neuen Bilderzeugungszielkonfiguration vorlag. Wenn die Löschbedingung nicht aufgrund einer neuen Bilderzeugungszielkonfiguration vorlag, dann kehrt das Verfahren 600 zum Schritt 604 zurück, der zuvor beschrieben ist. Wenn im Schritt 620 jedoch die Löschbedingung aufgrund einer neuen Bilderzeugungszielkonfiguration vorlag, dann kehrt das Verfahren 600 zurück zum Schritt 602, der zuvor beschrieben ist.
  • Auf diese Weise erhält die Kacheleinheit 375 kontinuierlich grafische Grundelemente aus der Welt-Raum-Pipeline 352 und überträgt gekachelte grafische Grundelemente an die Bildschirm-Raum-Pipeline 354. Wenn der Kachel-Speicher 520 doppelt zwischengespeichert ist, dann speichert die Kacheleinheit 375 die von der Welt-Raum-Pipeline 352 erhaltenen grafischen Grundelemente in einem Puffer und überträgt gekachelte grafische Grundelemente zu der Bildschirm-Raum-Pipeline 354 aus dem anderen Puffer. Wenn der Kachel-Speicher 520 dreifach zwischengespeichert ist, dann speichert die Kacheleinheit 375 die aus der Welt-Raum-Pipeline 352 empfangenen grafischen Grundelemente in zwei Puffern und überträgt gekachelte grafische Grundelemente an die Bildschirm-Raum-Pipeline 354 aus dem dritten Puffer. Alternativ speichert die Kacheleinheit 375 die aus der Welt-Raum-Pipeline 352 erhaltenen grafischen Grundelemente in einem einzelnen Puffer und überträgt gekachelte grafische Grundelemente an die Bildschirm-Raum-Pipeline 354 aus den anderen zwei Puffern.
  • Zusammengefasst gilt: es werden grafische Objekte einmal durch die Welt-Raum-Pipeline verarbeitet und in einem Kachel-Speicher zwischen dem Ende der Welt-Raum-Pipeline und dem Beginn der Bildschirm-Raum-Pipeline gespeichert. Geometrische grundlegende Daten werden in einem chipinternen Kachel-Speicher gespeichert, während zugehörige Daten, etwa Vertex-Attributdaten, in einem chipinternen Cache-Speicher gespeichert werden. Diverse Schwellwertpegel begrenzen den Füllstand für den Kachel-Speicher, den Cache-Speicher und andere zugehörige chipinterne Speicherbereiche. Wenn ein chipinterner Speicher sich bis zu einem entsprechenden Schwellwertpegel füllt, dann wird der Kachel-Speicher gelöscht, wodurch die Kachelunterteilung angehalten wird, und die grafischen Grundelemente in dem Kachel-Speicher werden verarbeitet. Die Kachelunterteilung geht dann weiter im Hinblick auf die nicht verarbeiteten grafischen Grundelemente. Ein weiteres Merkmal liegt darin, dass die Vertex-Attributdaten in dem Cache-Speicher mit einer EVICT_LAST-Politik gespeichert werden, wodurch die Wahrscheinlichkeit erhöht wird, dass die Vertex-Attributdaten verfügbar bleiben, wenn die Kachelunterteilung fortgesetzt wird und zusätzliche grafische Grundelemente verarbeitet werden. In einigen Ausführungsformen ist es zulässig, dass die grafischen Grundelemente im Kachel-Speicher oder Vertex-Attributdaten im Cache-Speicher „überlaufen“ in den Blockpufferspeicher in Fällen, in denen der Nachteil durch das Schreiben und das Auslesen des Blockpufferspeichers als geringer erkannt wird als der Nachteil durch das Löschen der grafischen Grundelemente in dem Kachel-Speicher.
  • Ein Vorteil der offenbarten Vorgehensweise besteht darin, dass grafische Grundelemente und zugehörige Daten mit höherer Wahrscheinlichkeit chipintern während der Cache-Kachelerzeugung gespeichert bleiben, wodurch die Leistungsaufnahme reduziert und das Bilderzeugungsleistungsverhalten verbessert wird. Ein weiterer Vorteil der offenbarten Vorgehensweise besteht darin, dass die Welt-Raum-Verarbeitung einmal ausgeführt wird, unabhängig davon, wie viele Cache-Kacheln in dem Bildschirm sind, in welchem die Geometrie liegt. Folglich müssen das Anwendungsprogramm und der Gerätetreiber nicht mehrere Verarbeitungsdurchläufe für die grafischen Objekte und zugehörigen Zustände ausführen. Folglich können Anwendungsprogramme und Gerätetreiber eine vereinfachte Struktur besitzen, was zu weniger Programmierfehlern und zu einem weiter verbesserten Leistungsverhalten führt.
  • 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.
  • Daher ist der Schutzbereich der Ausführungsformen der vorliegenden Erfindung in den folgenden Patentansprüchen angegeben.

Claims (10)

  1. Ein Verfahren zur Verarbeitung grafischer Grundelemente, die mit einer oder mehreren Cache-Kacheln verknüpft sind, wenn ein Bild erzeugt wird in einem Grafiksubsystem, das eine Welt-Rau-Grafikverarbeitungs-Pipeline und eine Bildschirm-Raum-Grafikverarbeitungs-Pipeline aufweist, wobei das Verfahren umfasst: Empfangen mehrerer erster grafischer Grundelemente, die mit einer ersten Bilderzeugungszielkonfiguration verknüpft sind, aus der Welt-Raum-Grafikverarbeitungs-Pipeline der Grafikverarbeitungs-Pipeline; Speichern der mehreren ersten grafischen Grundelemente in einem Kachel-Speicher; Erkennen einer Bedingung, die angibt, dass die mehreren ersten grafischen Grundelemente für die Verarbeitung bereit sind durch Ermitteln, ob eine Löschbedingung für Daten aus dem Kachel-Speicher erfüllt ist, wobei die Löschbedingung angibt, dass ein oder mehrere Puffer eine Füllstandsschwelle erreicht haben, wobei, wenn dies der Fall ist, Überprüfen, ob der Kachel-Speicher nicht leere Cache-Kacheln für die Verarbeitung enthält; Auswählen einer Cache-Kachel, die mindestens ein grafisches Grundelement aus den mehreren ersten grafischen Grundelementen schneidet; und Übergeben des mindestens einen grafischen Grundelements aus den mehreren ersten grafischen Grundelementen, das die Cache- Kachel schneidet, an die Bildschirm-Raum-Grafikverarbeitungs-Pipeline zur Verarbeitung.
  2. Ein Grafiksubsystem mit: einer Grafikverarbeitungs-Pipeline, die eine Welt-Raum-Grafikverarbeitungs-Pipeline und eine Bildschirm-Raum-Grafikverarbeitungs-Pipeline aufweist; und einer Kacheleinheit, die mit der Welt-Raum-Grafikverarbeitungs-Pipeline und der Bildschirm-Raum-Grafikverarbeitungs-Pipeline verbunden und ausgebildet ist, um: mehrere erste grafische Grundelemente, die mit einer ersten Bilderzeugungszielkonfiguration verknüpft sind, aus der Welt-Raum-Grafikverarbeitungs-Pipeline der Grafikverarbeitungs-Pipeline zu empfangen; die mehreren ersten grafischen Grundelemente in einem Kachel-Speicher zu speichern; eine Bedingung zu erkennen, die angibt, dass die mehreren ersten grafischen Grundelemente für die Verarbeitung bereit sind durch Ermitteln, ob eine Löschbedingung für Daten aus dem Kachel-Speicher erfüllt ist, wobei die Löschbedingung angibt, dass ein oder mehrere Puffer eine Füllstandsschwelle erreicht haben, wobei, wenn dies der Fall ist, zu prüfen, ob der Kachel-Speicher nicht leere Cache-Kacheln für die Verarbeitung enthält; eine Cache-Kachel auszuwählen, die mindestens ein grafisches Grundelement aus den mehreren ersten grafischen Grundelementen schneidet; und das mindestens eine grafische Grundelement aus den mehreren ersten grafischen Grundelementen, das die Cache- Kachel schneidet, an die Bildschirm-Raum-Grafikverarbeitungs-Pipeline zur Verarbeitung zu übergeben.
  3. Das Grafiksubsystem nach Anspruch 2, wobei Erkennen der Bedingung umfasst: Erkennen, dass der erste Speicher bis zu einem ersten Pegel, der mit einem ersten Schwellwert verknüpft ist, gefüllt ist.
  4. Das Grafiksubsystem nach Anspruch 2, wobei Erkennen der Bedingung umfasst: Erkennen, dass ein zweiter Speicher, der Vertex-Attributdaten, die mit den mehreren ersten grafischen Grundelementen verknüpft sind, enthält, bis zu einem zweiten Pegel gefüllt ist, der mit einem zweiten Schwellwert verknüpft ist.
  5. Das Grafiksubsystem nach Anspruch 2, wobei Erkennen der Bedingung umfasst: Erkennen eines mit den mehreren ersten grafischen Grundelementen verknüpften Löschbefehls, die von einer Softwareanwendung ausgegeben werden.
  6. Das Grafiksubsystem nach Anspruch 2, wobei Erkennen der Bedingung umfasst: Erkennen, dass zumindest ein Teil mehrerer zweiter grafischer Grundelemente, die mit einer zweiten Bilderzeugungszielkonfiguration verknüpft sind, zur Verarbeitung durch den ersten Bereich einer Grafikverarbeitungs-Pipeline bereit sind.
  7. Das Grafiksubsystem nach Anspruch 6, wobei die Kachel-Verarbeitungseinheit ferner ausgebildet ist, eine Cache-Kachelgröße von einem ersten Wert, der mit der ersten Bilderzeugungszielkonfiguration verknüpft ist, in einen zweiten Wert zu ändern, der mit einer zweiten Bilderzeugungszielkonfiguration verknüpft ist.
  8. Das Grafiksubsystem nach Anspruch 2, wobei die Kachel-Verarbeitungseinheit ferner ausgebildet ist, Scheren-Daten, die mit der Cache- Kachel verknüpft sind, an den zweiten Bereich der Grafikverarbeitungs-Pipeline zu übertragen.
  9. Das Grafiksubsystem nach Anspruch 2, wobei die Kachel-Verarbeitungseinheit ferner ausgebildet ist, ein abgrenzendes Grundelement, das mit dem mindestens einen grafischen Grundelement aus den mehreren ersten grafischen Grundelementen verknüpft ist, das die Cache- Kachel schneidet, an den zweiten Bereich der Grafikverarbeitungs-Pipeline zu übertragen.
  10. Das Grafiksubsystem nach Anspruch 2, wobei das mindestens ein erstes grafisches Grundelement aus den mehreren ersten grafischen Grundelementen zu einer Cache-Kachel gehört, die in einem zweiten Speicher gespeichert ist.
DE102013017641.7A 2012-10-26 2013-10-25 Umordnung von Grundelementen zwischen einer Welt-Raum-Pipeline und einer Bildschirm-Raum-Pipeline mit Pufferbeschränkter Verarbeitung Active DE102013017641B4 (de)

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/023,309 US8704826B1 (en) 2012-10-26 2013-09-10 Primitive re-ordering between world-space and screen-space pipelines with buffer limited processing
US14/023,309 2013-09-10

Publications (2)

Publication Number Publication Date
DE102013017641A1 DE102013017641A1 (de) 2014-04-30
DE102013017641B4 true DE102013017641B4 (de) 2022-09-22

Family

ID=50479796

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013017641.7A Active DE102013017641B4 (de) 2012-10-26 2013-10-25 Umordnung von Grundelementen zwischen einer Welt-Raum-Pipeline und einer Bildschirm-Raum-Pipeline mit Pufferbeschränkter Verarbeitung

Country Status (1)

Country Link
DE (1) DE102013017641B4 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080150950A1 (en) 2006-12-04 2008-06-26 Arm Norway As Method of and apparatus for processing graphics

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080150950A1 (en) 2006-12-04 2008-06-26 Arm Norway As Method of and apparatus for processing graphics

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ANTOCHI, Iosif, et al. Scene management models and overlap tests for tile-based rendering. In: Digital System Design, 2004. DSD 2004. Euromicro Symposium on. IEEE, 2004. S. 424-431. doi: 10.1109/DSD.2004.1333306
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

Also Published As

Publication number Publication date
DE102013017641A1 (de) 2014-04-30

Similar Documents

Publication Publication Date Title
DE102013017639B4 (de) Zwischenspeicherung von adaptiv dimensionierten Cache-Kacheln in einem vereinheitlichten L2-Cache-Speicher mit Oberflächenkomprimierung
DE102013017640B4 (de) Verteilte gekachelte Zwischenspeicherung
DE102015113797B4 (de) Relative Kodierung für eine blockbasierte Begrenzungsvolumenhierarchie
DE102018132468A1 (de) Multi-gpu-frame-rendern
TWI515716B (zh) 具備緩衝區限制處理的世界空間與螢幕空間管線間之圖元重新排序
DE102014004841B4 (de) Grafik auf Kachelbasis
US11170555B2 (en) Graphics processing systems
DE102016122297A1 (de) Mehrfach-Durchlauf-Rendering in einer Bildschirm-Raum-Pipeline
DE102012211670A1 (de) Simultanes Unterbreiten an eine Mehr-Produzenten-Queue mittels mehrerer Threads
DE102013020807A1 (de) Handhabung von nachgeordneten Z-Abdeckungsdaten in Rasteroperationen
DE102013020613A1 (de) Umgehung der Pixel-Schattierung für die grafische Bilderzeugung mit geringer Leistung
DE102013020614A1 (de) Mit Mehrfachauflösung konsistente Rastereinteilung
DE102016109905A1 (de) Stückweise lineare unregelmäßige Rasterisierung
DE102015113927B4 (de) Graphikverarbeitungseinheit zum Einstellen eines Detailierungsgrads, Verfahren zum Betreiben derselben und Vorrichtungen mit derselben
DE102013022257A1 (de) Programmierbares Mischen in mehrsträngigen Verarbeitungseinheiten
DE102013018445A1 (de) Festlegung eines nachgeordneten Bilderzeugungszustands in einer vorgeordneten Schattierungseinheit
DE102013020810A1 (de) Effiziente Super-Abtastung mit Schattierungs-Strängen pro Pixel
US11216993B2 (en) Graphics processing systems
DE102013020966B4 (de) Leistungseffiziente Attribut-Handhabung für Parkettierungs- und Geometrie-Schattierungseinheiten
DE102013020968A1 (de) Technik zum Zugreifen auf einen inhaltsadressierbaren Speicher
DE102013021046A1 (de) Erzeugung fehlerbefreiter Voxel-Daten
DE102013020485A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE102017109472A1 (de) Stereo-mehrfach-projektion implementiert unter verwendung einer graphikverarbeitungs-pipeline
DE102013020967A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE102019101720A1 (de) Techniken zur Darstellung und Verarbeitung von Geometrie innerhalb einer erweiterten Grafikverarbeitungspipeline

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R012 Request for examination validly filed

Effective date: 20131025

R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final