DE102013020613A1 - Umgehung der Pixel-Schattierung für die grafische Bilderzeugung mit geringer Leistung - Google Patents

Umgehung der Pixel-Schattierung für die grafische Bilderzeugung mit geringer Leistung Download PDF

Info

Publication number
DE102013020613A1
DE102013020613A1 DE102013020613.8A DE102013020613A DE102013020613A1 DE 102013020613 A1 DE102013020613 A1 DE 102013020613A1 DE 102013020613 A DE102013020613 A DE 102013020613A DE 102013020613 A1 DE102013020613 A1 DE 102013020613A1
Authority
DE
Germany
Prior art keywords
unit
group
graphics processing
colors
processing pipeline
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.)
Pending
Application number
DE102013020613.8A
Other languages
English (en)
Inventor
Eric B. Lum
Justin Cobb
Rui M. Bastos
Christian Rouet
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
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013020613A1 publication Critical patent/DE102013020613A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Abstract

Es wird ein computerimplementiertes Verfahren zur Zeichnung grafischer Objekte in einer Grafikverarbeitungs-Pipeline offenbart. Das Verfahren umfasst die Ermittlung, dass ein Umgehungsmodus für ein erstes Grundelement ein Nicht-Umgehungsmodus ist. Das Verfahren enthält ferner die Rastereinteilung des ersten Grundelements, um eine erste Gruppe an Rastereinteilungsergebnissen zu erzeugen. Das Verfahren umfasst ferner die Erzeugung einer ersten Gruppe an Farben für die erste Gruppe an Rastereinteilungsergebnissen mittels einer Pixel-Schattierungseinheit. Das Verfahren umfasst ferner die Rastereinteilung eines zweiten Grundelements zur Erzeugung einer zweiten Gruppe an Rastereinteilungsergebnissen. Das Verfahren umfasst ferner die Erzeugung einer zweiten Gruppe an Farben für die zweite Gruppe an Rastereinteilungsergebnissen, ohne dass die Pixel-Schattierungseinheit Verarbeitungsoperationen an der zweiten Gruppe an Rastereinteilungsergebnissen ausführt. Das Verfahren umfasst ferner die Ermittelung der ersten Gruppe an Pixelfarben und der zweiten Gruppe an Pixelfarben an eine Rasteroperations-(ROP)Einheit für die Weiterverarbeitung.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Ausführungsformen der vorliegenden Erfindung betreffen allgemein dreidimensionale Grafikverarbeitungs-Pipelines und insbesondere eine Umgehung der Pixel-Schattierung für die grafische Bilderzeugung mit geringer Leistung.
  • Beschreibung des Stands der Technik
  • Eine Anwendung kann manchmal Befehle ausgeben, um zweidimensionale Objekte in einer dreidimensionalen Szene zu zeichnen, die durch eine Grafikverarbeitungs-Pipeline erzeugt wird. Beispielsweise kann eine Anwendung anfordern, dass eine Grafikverarbeitungs-Pipeline zweidimensionale Polygone mit konstanter Farbe oder texturierte zweidimensionale Polygone erzeugt, um Elemente einer Anwenderschnittstelle anzuzeigen oder um einfache grafische Elemente in einer dreidimensionalen erzeugten Szene anzuzeigen. Es gibt mehrere Möglichkeiten, mit der die Grafikverarbeitungs-Pipelines derartige zweidimensionale Objekte anzeigen können.
  • In einer Vorgehensweise kann die Anwendung einen Befehl in die Grafikverarbeitungs-Pipeline senden, um ein Polygon in der dreidimensionalen Szene zu zeichnen, das die gewünschten Eigenschaften hat. Das gewünschte zweidimensionale Objekt wird dann erzeugt und unter Anwendung der standardmäßigen Einrichtungen der Grafikverarbeitungs-Pipeline angezeigt. Ein Nachteil einer derartigen Vorgehensweise besteht darin, dass gewisse Einrichtungen der Grafikverarbeitungs-Pipeline für gewöhnlich für das Zeichnen einfacher zweidimensionale Objekte nicht benötigt werden. Wenn daher die Grafikverarbeitungs-Pipeline angewiesen wird, zweidimensionale Objekte zu erzeugen, wird Verarbeitungsleistung verschwendet.
  • In einem weiteren Ansatz wird ein zweidimensionaler Blitter bzw. Grafikbeschleuniger eingesetzt, um ein zweidimensionales Objekt direkt in das Bilderzeugungsziel der Grafikverarbeitungs-Pipeline zu zeichnen, und das zweidimensionale Objekt wird dann zusammen mit dem Rest der Daten, die zu dem Bilderzeugungsziel gehören, angezeigt. Ein Nachteil einer derartigen Vorgehensweise besteht darin, dass der zweidimensionale Grafikbeschleuniger für gewöhnlich einen großen Teil oder die gesamte Grafikverarbeitungs-Pipeline umgeht. Folglich sind zweidimensionale Objekte, die über einen zweidimensionalen Grafikbeschleuniger gezeichnet werden, häufig von geringerer Qualität als zweidimensionale Objekte, die mittels einer Grafikverarbeitungs-Pipeline erzeugt werden. Ein weiterer Nachteil der Verwendung eines zweidimensionalen Grafikbeschleunigers besteht darin, dass koordinierende Operationen zwischen dem zweidimensionalen Grafikbeschleuniger und der Grafikverarbeitungs-Pipeline schwierig sind, was dazu führen kann, dass die Grafikverarbeitungs-Pipeline untätig ist und geleert wird, um den zweidimensionalen Grafikbeschleuniger zu betreiben, wodurch das Leistungsverhalten reduziert wird.
  • Wie das Vorhergehende zeigt, ist das, was auf diesem Gebiet benötigt wird, ein Verfahren zur Anzeige zweidimensionaler Objekte unter Anwendung geringer Leistung und ohne dass die Leerung und ein untätiger Zustand einer Grafikverarbeitungs-Pipeline erforderlich sind.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Es ist ein computerimplementiertes Verfahren zum Zeichnen grafischer Objekte in einer Grafikverarbeitungs-Pipeline offenbart. Das Verfahren umfasst die Ermittelung, dass ein Umgehungsmodus für ein erstes Grundelement ein Nicht-Umgehungsmodus ist. Das Verfahren umfasst die Rastereinteilung des ersten Grundelements, um eine erste Gruppe an Rastereinteilungsergebnissen zu erzeugen. Das Verfahren umfasst ferner die Erzeugung einer ersten Gruppe von Farben für die erste Gruppe an Rastereinteilungsergebnissen durch eine Pixel-Schattierungseinheit. Das Verfahren umfasst ferner die Rastereinteilung eines zweiten Grundelements, um eine zweite Gruppe an Rastereinteilungsergebnissen zu erzeugen. Das Verfahren umfasst ferner die Erzeugung einer zweiten Gruppe an Farben für die zweite Gruppe an Rastereinteilungsergebnissen, ohne dass die Pixel-Schattierungseinheit Verarbeitungsoperationen an der zweiten Gruppe an Rastereinteilungsergebnissen ausführt. Das Verfahren umfasst ferner die Übertragung der ersten Gruppe an Pixelfarben und der zweiten Gruppe an Pixelfarben an eine Rasteroperations-(ROP-)Einheit für die weitere Verarbeitung.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Um die Art und Weise, in der die oben genannten Merkmale der vorliegenden Erfindung detailliert verstanden werden können, anzugeben, wird eine speziellere Beschreibung der Erfindung, die zuvor kurz zusammengefasst ist, mit Bezug zu Ausführungsformen angegeben, wovon einige in den angefügten Zeichnungen dargestellt sind. Es ist jedoch zu beachten, dass die angefügten Zeichnungen nur typische Ausführungsformen dieser Erfindung darstellen und daher nicht als Einschränkung ihres Schutzbereichs zu betrachten sind, da die Erfindung andere gleichermaßen wirksame Ausführungsformen zulässt.
  • 1 ist eine Blockansicht, die ein Computersystem darstellt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren;
  • 2 ist eine Blockansicht eines Parallelverarbeitungssubsystems für das Computersystem aus 1 gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 3A ist eine Blockansicht einer Partitionseinheit in einer der PPUs aus 2 gemäß einer Ausführungsform der Erfindung;
  • 3B ist eine Blockansicht eines Teils eines Datenstrom-Multiprozessors (SM) in einem allgemeinen Verarbeitungs-Cluster (GPC) aus 2 gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 4 ist eine Konzeptansicht einer Grafikverarbeitungs-Pipeline, in die eine oder mehrere der Parallelverarbeitungseinheiten aus 2 zur Realisierung konfiguriert werden können, gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 5A zeigt eine Grafikverarbeitungs-Pipeline, die ausgebildet ist, einen Nicht-Umgehungsmodus gemäß einer Ausführungsform der vorliegenden Erfindung zu realisieren;
  • 5B zeigt eine Grafikverarbeitungs-Pipeline, die ausgebildet ist, einen texturierten Umgehungsmodus gemäß einer Ausführungsform der vorliegenden Erfindung zu realisieren;
  • 5C zeigt eine Grafikverarbeitungs-Pipeline, die ausgebildet ist, einen Umgehungsmodus mit festgelegter Farbe gemäß einer Ausführungsform der vorliegenden Erfindung zu realisieren;
  • 5B zeigt eine Grafikverarbeitungs-Pipeline, die ausgebildet ist, einen Gradientenfarb-Umgehungsmodus gemäß einer Ausführungsform der vorliegenden Erfindung zu realisieren;
  • 6 zeigt eine anschauliche Szene, die von einer Grafikverarbeitungs-Pipeline als Bild erzeugt werden kann, die gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung ausgebildet ist; und
  • 7 zeigt ein Flussdiagramm von Verfahrensschritten zur Erzeugung von Fragmentdaten in einer Grafikverarbeitungs-Pipeline, die zur Realisierung eines Umgehungsmodus eingerichtet ist, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezielle Details angegeben, um ein gründlicheres Verständnis der vorliegenden Erfindung zu ermöglichen. Jedoch erkennt der Fachmann, dass die vorliegende Erfindung auch ohne eines oder mehrerer dieser speziellen Details in die Praxis umgesetzt werden kann.
  • Systemüberblick
  • 1 ist eine Blockansicht, die ein Computersystem 100 darstellt, das ausgebildet ist, einen oder mehrere Aspekte der vorliegenden Erfindung zu realisieren. Das Computersystem 100 umfasst eine zentrale Recheneinheit (CPU) 102 und einen Systemspeicher 104, die über einen Verbindungspfad, der eine Speicherbrücke 105 enthalten kann, miteinander in Verbindung stehen. Die Speicherbrücke 105, die beispielsweise ein Nordbrücken-Chip sein kann, ist über einen Bus oder einen anderen Kommunikationspfad 106 (beispielsweise eine HyperTransport-Verbindung) mit einer I/O-(Eingabe/Ausgabe-)Brücke 107 verbunden. Die I/O-Brücke 107, die beispielsweise ein Südbrücken-Chip sein kann, empfängt eine Anwendereingabe aus einem oder mehreren Anwender-Eingabegeräten 108 (beispielsweise Tastatur, Maus) und leitet die Eingabe an die CPU 102 über den Kommunikationspfad 106 und die Speicherbrücke 105 weiter. Ein Parallelverarbeitungssubsystem 112 ist mit der Speicherbrücke 105 über einen Bus oder einen zweiten Kommunikationspfad 113 (beispielsweise ein peripherer Komponenten-Verbindung-(PCI)Express, ein beschleunigter Graphikport oder eine HyperTransport-Verbindung) verbunden. In einer Ausführungsform ist das Parallelverarbeitungssubsystem 112 ein Grafiksubsystem, das Pixel einem Anzeigegerät 110 zuleitet, das eine konventionelle Kathodenstrahlröhre, eine Flüssigkristallanzeige, eine Anzeige mit lichtemittierenden Dioden oder dergleichen sein kann. Eine Systemdiskette 114 ist ebenfalls mit der I/O-Brücke 107 verbunden und kann ausgebildet sein, Inhalt und Anwendungen und Daten zur Verwendung durch die CPU 102 und das Parallelverarbeitungssubsystem 112 zu speichern. Die Systemdiskette 114 stellt nicht-flüchtigen Speicherplatz für Anwendungen und Daten bereit und kann fest installierte oder entfernbare Festplattenlaufwerke, Flash-Speichereinrichtungen und CD-(Kompaktdisketten-Nur-Lese-Speicher), DVD-(digitale Vielseitigkeitsdisketten-ROM), Blu-ray, HD-DVD (hochauflösende DVD) oder andere magnetische, optische Speichereinrichtungen oder Halbleiterspeichereinrichtungen umfassen.
  • Ein Schalter bzw. eine Schalteinrichtung 116 stellt Verbindungen zwischen der I/O-Brücke 107 und anderen Komponenten, etwa einem Netzwerkadapter 118 und diversen Zusatzkarten 120 und 121 bereit. Andere Komponenten (nicht explizit gezeigt) einschließlich eines universellen seriellen Busses (USB) oder andere Portverbindungen, Kompaktdisketten-(CD-)Laufwerke, digitale Vielseitigkeitsdisketten-(DVD-)Laufwerke, Filmaufzeichnungsgeräte und dergleichen, können ebenfalls mit der I/O-Brücke 107 verbunden sein. Die diversen Kommunikationspfade, die in 1 gezeigt sind, einschließlich der speziell genannten Kommunikationspfade 106 und 113, können unter Anwendung beliebiger geeigneter Protokolle realisiert werden, etwa durch PCI-Express, AGP (beschleunigter Graphikport), HyperTransport oder durch ein oder mehrere andere Bus- oder Punkt-Zu-Punkt-Kommunikationsprotokolle, und Verbindungen zwischen unterschiedlichen Geräten können unterschiedliche Protokolle benutzen, wie dies im Stand der Technik bekannt ist.
  • In einer Ausführungsform enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für Grafikverarbeitung und Videoverarbeitung optimiert ist, wozu beispielsweise eine Videoausgabeschaltung gehört, und das System bildet eine grafische Verarbeitungseinheit (GPU). In einer weiteren Ausführungsform enthält das Parallelverarbeitungssubsystem 112 eine Schaltung, die für die Verarbeitung für Allgemeinzwecke optimiert ist, wobei dennoch die zu Grunde liegende Rechenarchitektur, die nachfolgend detaillierter beschrieben ist, beibehalten ist. In einer noch weiteren Ausführungsform kann das Parallelverarbeitungssubsystem 112 mit einem oder mehreren anderen Systemelementen zu einem einzelnen Subsystem zusammengefasst sein, etwa durch Vereinigen der Speicherbrücke 105, der CPU 102 und der I/O-Brücke 107, um ein System auf einem Chip (SoC) zu bilden.
  • Zu beachten ist, dass das hierin gezeigte System anschaulicher Natur ist und dass 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 kann nach Bedarf modifiziert werden. Beispielsweise ist in einigen Ausführungsformen der Systemspeicher 104 direkt mit der CPU 102 anstatt über eine Brücke verbunden, und andere Geräte kommunizieren mit dem Systemspeicher 104 über die Speicherbrücke 105 und die CPU 102. In anderen alternativen Topologien ist das Parallelverarbeitungssubsystem 112 mit der I/O-Brücke 107 oder direkt mit der CPU 102 anstatt mit der Speicherbrücke 105 verbunden. 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. Große Ausführungsformen können zwei oder mehr CPUs 102 und zwei oder mehr Parallelverarbeitungssubsysteme 112 aufweisen. Die speziellen Komponenten, die hierin gezeigt sind, sind optional; beispielsweise kann eine beliebige Zahl an Zusatzkarten oder peripheren Geräten unterstützt werden. In einigen Ausführungsformen ist der Schalter 116 weggelassen, und der Netzwerkadapter 118 und die Zusatzkarten 120, 121 sind direkt mit der I/O-Brücke 107 verbunden.
  • 2 zeigt ein Parallelverarbeitungssubsystem 112 gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt, umfasst das Parallelverarbeitungssubsystem 112 eine oder mehrere Parallelverarbeitungseinheiten (PPUs) 202, wovon jede mit einem lokalen Parallelverarbeitungs-(PP)Speicher 204 verbunden ist. Im Allgemeinen enthält ein Parallelverarbeitungssubsystem eine Anzahl U an PPUs, wobei U ≥ 1 ist. (Hierin werden mehrere Instanzen gleicher Objekte mit Bezugszeichen belegt, die das Objekt kennzeichnen, und Zahlen in Klammern geben bei Bedarf die Instanz an.) Die PPUs 202 und die Parallelverarbeitungsspeicher 204 können unter Anwendung einer oder mehrerer integrierter Schaltungseinrichtungen, etwa durch programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASIC), oder Speichereinrichtungen oder durch eine andere technisch machbare Weise realisiert werden.
  • Es sei wieder auf 1 sowie auf 2 verwiesen; in einigen Ausführungsformen sind einige oder alle der PPUs 202 in dem Parallelverarbeitungssubsystem 112 Grafikprozessoren mit Bilderzeugungs-Pipelines, die konfiguriert werden können, um diverse Operationen auszuführen, die betreffen: die Erzeugung von Pixeldaten aus Grafikdaten, die von der CPU 102 und/oder dem Systemspeicher 104 über die Speicherbrücke 105 und den zweiten Kommunikationspfad 113 bereitgestellt werden, die Wechselwirkung mit dem lokalen Parallelverarbeitungsspeicher 204 (der als Grafikspeicher verwendbar ist und beispielsweise einen konventionellen Blockpuffer enthält), um Pixeldaten zu speichern und zu aktualisieren, die Zuleitung von Pixeldaten an das Anzeigegerät 110, und dergleichen. In einigen Ausführungsformen kann das Parallelverarbeitungssubsystem 112 eine oder mehrere PPUs 202 aufweisen, die als Grafikprozessoren arbeiten, und kann eine oder mehrere andere PPUs 202 aufweisen, die für Berechnungen für Allgemeinzwecke verwendet werden. Die PPUs 202 können identisch oder unterschiedlich sein, und jede PPU 202 kann einen oder mehrere spezielle Parallelverarbeitungsspeichereinrichtungen oder keinen speziellen Parallelverarbeitungsspeicher aufweisen. Eine oder mehrere PPUs 202 in dem Parallelverarbeitungssubsystem 112 können Daten an das Anzeigegerät 110 ausgeben, oder jede PPU 202 in dem Parallelverarbeitungssubsystem 112 kann Daten an ein oder mehrere Anzeigegeräte 110 ausgeben.
  • Während des Betriebs ist die CPU 102 der übergeordnete Prozessor des Computersystems 100 und steuert und koordiniert den Betrieb anderer Systemkomponenten. Insbesondere gibt die CPU 102 Befehle aus, die den Betrieb der PPUs 202 steuern. In einigen Ausführungsformen schreibt die CPU 102 einen Strom aus Befehlen für jede PPU 202 in eine Datenstruktur (die in 1 oder 2 nicht explizit gezeigt ist), die in dem Systemspeicher 104, dem Parallelverarbeitungsspeicher 204 oder an einer weiteren Speicherstelle liegen kann, auf die sowohl die CPU 102 als auch die PPU 202 zugreifen kann. Ein Zeiger auf jede Datenstruktur wird in einen Schiebepuffer geschrieben, um die Verarbeitung des Stroms aus Befehlen in der Datenstruktur zu initiieren. Die PPU 202 liest Befehlsströme aus einem oder mehreren Schiebepuffern aus und führt die Befehle asynchron relativ zu der Arbeitsweise der CPU 102 aus. Es können für jeden Schiebepuffer durch ein Anwendungsprogramm über den Gerätetreiber 103 Prioritäten für die Ausführung angegeben werden, um die Disponierung der unterschiedlichen Schiebepuffer zu steuern.
  • Es sei nun wieder auf 2 sowie auf 1 verwiesen; jede PPU 202 enthält eine I/O-(Eingabe/Ausgabe-)Einheit 205, die mit dem Rest des Computersystems 100 über den Kommunikationspfad 113 in Verbindung steht, der mit der Speicherbrücke 105 (oder in einer alternativen Ausführungsform direkt mit der CPU 102) in Verbindung steht. Die Verbindung der PPU 202 mit dem Rest des Computersystems 100 kann auch anders sein. In einigen Ausführungsformen ist das Parallelverarbeitungssubsystem 112 als eine Zusatzkarte realisiert, die in einen Erweiterungssteckplatz des Computersystems 100 eingeführt werden kann. In anderen Ausführungsformen kann eine PPU 202 in einem einzelnen Chip zusammen 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 einem einzelnen Chip integriert sein.
  • In einer Ausführungsform ist der Kommunikationspfad 113 eine PCI-Expressverbindung, in der jeder PPU 202 spezielle Bahnen zugeordnet sind, wie dies im Stand der Technik bekannt ist. Es können auch andere Kommunikationspfade verwendet werden. Eine 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, wodurch die eintreffenden Pakete zu geeigneten Komponenten der PPU 202 weitergeleitet werden. Beispielsweise können Befehle, die Verarbeitungsaufgaben betreffen, an eine Hauptschnittstelle 206 geleitet werden, während Befehle, die Speicheroperationen (beispielsweise das Lesen aus dem oder Schreiben in den Parallelverarbeitungsspeicher 204) betreffen, an eine Speicherkreuzungseinheit 210 geleitet werden können. Die Hauptschnittstelle 206 liest jeden Schiebepuffer aus und gibt den in dem Schiebepuffer gespeicherten Befehlsstrom an einen Frontbereich 212 aus.
  • Jede PPU 202 realisiert vorteilhafterweise eine äußerst parallele Verarbeitungsarchitektur. Wie detailliert gezeigt ist, enthält die PPU 202(0) ein Verarbeitung-Cluster-Array 230, das eine Anzahl C an allgemeinen Verarbeitungs-Clustern (GPCs) 208 enthält, wobei C ≥ 1 ist. Jeder GPC 208 ist in der Lage, eine große Anzahl (beispielsweise hunderte oder tausende) Stränge gleichzeitig auszuführen, wobei jeder Strang eine Instanz eines Programms ist. In diversen Anwendungen können unterschiedliche GPCs 208 zur Verarbeitung unterschiedlicher Arten von Programmen oder zur Ausführung unterschiedlicher Arten von Berechnungen reserviert werden. Die Reservierung bzw. Zuweisung von GPCs 208 kann in Abhängigkeit von der Arbeitslast unterschiedlich sein, die sich für jede Art von Programm oder Berechnung ergibt.
  • Die GPCs 208 empfangen zu verarbeitende Ausführungsaufgabe aus einer Arbeitsverteilungseinheit in einer Aufgaben/Arbeitseinheit 207. Die Arbeitsverteilungseinheit empfängt Zeiger auf Verarbeitungsaufgaben, die als Aufgaben-Metadaten (TMD) (nicht gezeigt) codiert und im Speicher abgelegt sind. Die Zeiger auf die TMD sind in dem 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 Indizes von zu verarbeitenden Daten, sowie Zustandsparameter und Befehle, die definieren, wie die Daten zu verarbeiten sind (beispielsweise welches Programm auszuführen ist). Die Aufgaben/Arbeitseinheit 207 empfängt Aufgaben aus dem Frontbereich 212 und stellt sicher, dass die GPCs 208 in einen zulässigen Zustand konfiguriert werden, bevor die Verarbeitung, wie sie durch jeden Satz der TMD spezifiziert ist, initiiert wird. Es kann eine Priorität für jeden Satz an TMD angegeben werden, die verwendet wird, um die Ausführung der Verarbeitungsaufgaben zu disponieren. Verarbeitungsaufgaben können auch 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 von Verarbeitungsaufgaben (oder einer Liste aus Zeigern auf die Verarbeitungsaufgaben) hinzuzufügen sind, wodurch eine weitere Ebene einer Steuerung zusätzlich zur Priorität bereitgestellt wird.
  • Eine Speicherschnittstelle 214 enthält eine Anzahl D an Partitionseinheiten 215, die jeweils direkt mit einem Teil des Parallelverarbeitungsspeichers 204 verbunden sind, wobei D ≥ 1 ist. Wie gezeigt, ist generell die Anzahl an Partitionseinheiten 215 gleich der Anzahl an dynamischen Speichern mit wahlfreiem Zugriff (DRAM) 220. In anderen Ausführungsformen ist die Anzahl an Partitionseinheiten 215 gegebenenfalls nicht gleich der Anzahl an Speichereinrichtungen. Der Fachmann auf dem Gebiet erkennt, dass die DRAM 220 durch andere geeignete Speichereinrichtungen ersetzt werden können und dass sie von allgemein konventioneller Gestaltung sein können. Eine detaillierte Beschreibung wird daher weggelassen. Bilderzeugungsziele, etwa Blockpuffer oder Texturzuordnungen, können in den DRAMs 220 gespeichert sein, wodurch es den Partitionseinheiten 215 möglich ist, Bereiche jedes Bilderzeugungsziels parallel zu beschreiben, um in effizienter Weise die verfügbare Bandbreite des Parallelverarbeitungsspeichers 204 auszunutzen.
  • Jeder der GPCs 208 kann Daten verarbeiten, dass Sie in die DRAMs 220 in dem Parallelverarbeitungsspeicher 204 geschrieben werden. Die Kreuzungseinheit 210 ist ausgebildet, die Ausgabe jedes GPC 208 dem Eingang einer Partitionseinheit 215 oder einem weiteren GPC 208 für die weitere Verarbeitung zuzuleiten. Die GPCs 208 kommunizieren mit der Speicherschnittstelle 214 über die Kreuzungseinheit 210, um diverse externe Speichereinrichtungen auszulesen oder diese zu beschreiben. In einer Ausführungsform hat die Kreuzungseinheit 210 eine Verbindung zu der Speicherschnittstelle 214, um mit der I/O-Einheit 205 zu kommunizieren, und hat auch eine Verbindung zu dem lokalen Parallelverarbeitungsspeicher 204, wodurch es den Verarbeitungskernen in den unterschiedlichen GPCs 208 ermöglicht wird, mit dem Systemspeicher 104 oder einem anderen Speicher zu kommunizieren, der nicht lokal für die PPU 202 ist. In der in 2 gezeigten Ausführungsform ist die Kreuzungseinheit 210 direkt mit der I/O-Einheit 205 verbunden. Die Kreuzungseinheit 210 kann virtuelle Kanäle verwenden, um Verkehrsströme zwischen den GPCs 208 und den Partitionseinheiten 215 zu trennen.
  • Die GPCs 208 können wiederum so programmiert sein, dass sie Verarbeitungsaufgaben, die eine Fülle von Anwendungen betreffen, ausführen, wozu gehören, ohne einschränkend zu sein, lineare und nicht-lineare Datentransformationen, die Filterung von Video- und/oder Audiodaten, Modellierungsoperationen (beispielsweise die Anwendung physikalischer Gesetze zur Bestimmung der Position, Geschwindigkeit und anderer Attribute von Objekten), Bilderzeugungsoperationen (beispielsweise Programme für die Parkettierungs-Schattierung, Vertex-Schattierung, Geometrie-Schattierung und/oder Pixel Schattierung) usw. Die PPUs 202 können Daten von dem Systemspeicher 104 und/oder dem lokalen Parallelverarbeitungsspeicher 204 in einen internen (Chip internen) Speicher übertragen, die Daten verarbeiten und die Ergebnisdaten zurück in den Systemspeicher 104 und/oder die lokalen Parallelverarbeitungsspeicher 204 schreiben, wo auf derartige Daten von anderen Systemkomponenten zugegriffen werden kann, wozu die CPU 102 oder ein weiteres Parallelverarbeitungssubsystem 112 gehören.
  • Eine PPU 202 kann mit einer beliebigen Größe an lokalem Parallelverarbeitungsspeicher 204 versehen sein, wobei auch kein lokaler Speicher mit eingeschlossen ist, und kann den lokalen Speicher und einen Systemspeicher in beliebiger Kombination verwenden. Beispielsweise kann eine PPU 202 ein Grafikprozessor in einer Ausführungsform mit vereinheitlichter Speicherarchitektur (UMA) sein. In derartigen Ausführungsformen wird wenig oder kein spezieller graphischer (Parallelverarbeitungs-)Speicher bereitgestellt, und die PPU 202 verwendet ausschließlich oder nahezu ausschließlich den Systemspeicher. In UMA-Ausführungsformen kann eine PPU 202 in einem Brückenchip oder einem Prozessorchip integriert sein, oder kann als ein diskreter Chip mit einer Hochgeschwindigkeitsverbindung vorgesehen sein (beispielsweise PCI-Expressverbindung), die die PPU 202 mit dem Systemspeicher über einen Brückenchip oder eine andere Kommunikationseinrichtungen verbindet.
  • Wie zuvor angegeben ist, kann eine beliebige Anzahl an PPUs 202 in einem Parallelverarbeitungssubsystem 112 enthalten sein. Beispielsweise können mehrere PPUs 202 auf einer einzelnen Zusatzkarte bereitgestellt werden, oder es können mehrere Zusatzkarten mit dem Kommunikationspfad 112 verbunden sein, oder eine oder mehrere 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 verschiedene PPUs 202 eine verschiedene Anzahl an Verarbeitungskernen, eine verschiedene Größe an lokalem Parallelverarbeitungsspeicher usw. aufweisen. Wenn mehrere PPUs 202 vorhanden sind, können diese PPUs parallel betrieben werden, so dass Daten mit höherem Durchsatz verarbeitet werden, als dies mit einer einzelnen PPU 202 möglich wäre. Systeme, die eine oder mehrere PPUs 202 enthalten, können in einer Vielzahl von Konfigurationen und Formfaktoren eingerichtet werden, wozu Tischrechner, mobile Rechner oder Hand-Personalcomputer, Dienstleister-Rechner, Arbeitsplatzrechner, Spielekonsolen, eingebettete Systeme und dergleichen gehören.
  • 3A ist eine Blockansicht einer Partitionseinheit 215 in einer der PPUs 202 aus 2 gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt, umfasst die Partitionseinheit 215 einen L2-Cache-Speicher 350, eine Blockpuffer-(FB)DRAM-Schnittstelle 355, und eine Rasteroperationseinheit (ROP) 360. Der L2-Cache-Speicher 350 ist ein Lese/Schreib-Cache-Speicher, der ausgebildet ist, Lade- und Speicheroperationen, die aus der Kreuzungseinheit 210 und der ROP 360 empfangen werden, auszuführen. Lese-Fehltreffer und eilige Rückschreib-Anforderungen werden von dem L2-Cache-Speicher 350 an die FB-DRAM-Schnittstelle 355 zur Verarbeitung ausgegeben. Schmutzige Aktualisierungen der den an den FB 355 für eine Verarbeitung nach Gelegenheit bzw. opportunistische Verarbeitung gesendet. Die FB 355 ist direkt mit dem DRAM 220 verbunden, und gibt Lese- und Schreibanforderungen aus und empfängt Daten, die aus dem DRAM 220 gelesen werden.
  • In Grafikanwendungen ist die ROP 360 eine Verarbeitungseinheit, die Rasteroperationen, etwa Schablone, z-Test, Mischung, und dergleichen ausführt und Pixeldaten als verarbeitete Grafikdaten zur Speicherung in einem Grafikspeicher ausgibt. In einigen Ausführungsformen der vorliegenden Erfindung ist die ROP 360 in jedem GPC 208 anstatt in der Partitionseinheit 215 enthalten, und es werden anstelle von Pixel-Fragmentdaten Pixel-Lese- und Schreibanforderungen über die Kreuzungseinheit 210 gesendet.
  • Die verarbeiteten Grafikdaten können auf dem Anzeigegerät 110 angezeigt werden oder können für die Weiterverarbeitung durch die CPU 102 oder durch eine der Verarbeitungseinheiten in dem Parallelverarbeitungssubsystem 112 weitergeleitet werden. Jede Partitionseinheit 215 umfasst eine ROP 360, um die Verarbeitung der Rasteroperationen zu verteilen. In einigen Ausführungsformen kann die ROP 360 ausgebildet sein, z- oder Farbdaten zu komprimieren, die in den Speicher geschrieben werden, und z- oder Farbdaten zu dekomprimieren, die aus dem Speicher gelesen werden.
  • 3B ist eine Blockansicht eines Teils eines Datenstrom-Multiprozessors (SM) 310 in einem allgemeinen Verarbeitungs-Cluster (GPC) 208 aus 2 gemäß einer Ausführungsform der vorliegenden Erfindung. Jeder GPC 208 kann ausgebildet sein, um eine große Anzahl an Strängen parallel auszuführen, wobei der Begriff „Strang” eine Instanz eines speziellen Programms bezeichnet, das an einem speziellen Eingangsdatensatz 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 bereitgestellt werden. In anderen Ausführungsformen werden Einzelbefehl-Mehrfach-Strang-(SIMT-)Techniken eingesetzt, um eine parallele Ausführung einer großen Anzahl von im allgemeinen synchronisierten Strängen zu unterstützen, wobei eine gemeinsame Befehlseinheit verwendet wird, die ausgebildet ist, Befehle an eine Gruppe von Verarbeitungseinheiten in jedem der GPCs 208 auszugeben. Anders als bei einem SIMD-Ausführungsregime, in welchem alle Verarbeitungseinheiten typischerweise identische Befehle ausführen, erlaubt eine SIMT-Ausführung, dass unterschiedliche Stränge besser divergenten Ausführungspfaden durch ein gegebenes Strangprogramm hindurch folgen. Der Fachmann erkennt, dass ein SIMD-Verarbeitungsregime eine funktionale Teilmenge eines SIMT-Verarbeitungsregimes bildet.
  • Der Betrieb des GPC 208 wird vorteilhafterweise von einem Pipeline-Verwalter (nicht gezeigt) gesteuert, der Verarbeitungsaufgaben auf einen oder mehrere Datenstrom-Multiprozessoren (SM) 310 verteilt, wobei jeder SM 310 ausgebildet ist, eine oder mehrere Stranggruppen auszuführen. Jeder SM 310 enthält einen Befehls-L1-Cache-Speicher 370, der ausgebildet ist, Befehle und Konstanten von einem Speicher über einen L1.5-Cache-Speicher (nicht gezeigt) in dem GPC 208 zu empfangen. Eine Kettendisponier- und Befehlseinheit 312 empfängt Befehle und Konstanten aus dem Befehls-L1-Cache-Speicher 370 und steuert die lokale Registerdatei 304 und die Funktionseinheiten des SM 310 entsprechend den Befehlen und Konstanten. Die Funktionseinheiten des SM 310 umfassen N Exec-(Ausführungs- oder Verarbeitungs-)Einheiten 302 und P Lade-Speichereinheiten (LSU) 303. Die Funktionseinheiten des SM können als Pipeline betrieben sein, wodurch es möglich ist, dass ein neuer Befehl ausgegeben wird, bevor ein vorhergehender Befehl abgeschlossen ist, wie dies im Stand der Technik bekannt ist. Es kann eine beliebige Kombination von Funktionsausführungseinheiten vorgesehen werden. In einer Ausführungsform unterstützen die Funktionseinheiten eine Vielzahl von Operationen, wozu Ganzzahl- und Gleitkommaarithmetik (beispielsweise Addition und Multiplikation), Vergleichsoperationen, Bool'sche Operationen (UND, ODER, EXKLUSIV ODER), Bit-Verschiebung und Berechnung diverser algebraischer Funktionen gehören (beispielsweise ebene Interpolation, geometrische, exponentielle und logarithmische Funktionen, usw.); und die gleiche Hardware der Funktionseinheiten kann vorteilhaft zur Ausführung anderer Operationen verwendet werden.
  • Die Reihe von Befehlen, die an einen speziellen GPC 208 ausgegeben wird, bildet einen Strang, wie dies zuvor hierin definiert ist, und die Ansammlung einer gewissen Anzahl an gleichzeitig ausgeführten Strängen in den Parallelverarbeitungseinheiten (nicht gezeigt) innerhalb eines SM 310 wird hierin als eine „Kette” oder „Stranggruppe” bezeichnet. Wie hierin verwendet ist, bezeichnet eine „Stranggruppe” eine Gruppe aus Strängen, die gleichzeitig in dem gleichen Programm mit unterschiedlichen Eingangsdaten ausgeführt werden, wobei ein Strang der Gruppe einer unterschiedlichen Verarbeitungseinheit innerhalb eines SM 310 zugewiesen ist. Eine Stranggruppe kann weniger Stränge als die Anzahl an Verarbeitungseinheiten innerhalb des SM 310 aufweisen, in welchem Falle gewisse Verarbeitungseinheiten während Arbeitszyklen untätig sind, wenn diese Stranggruppe gerade verarbeitet wird. Eine Stranggruppe kann auch mehr Stränge als die Anzahl an Verarbeitungseinheiten innerhalb des SM 310 aufweisen, in welchem Falle die Verarbeitung über aufeinanderfolgende Taktzyklen erfolgt. Da jeder SM 310 bis zu G Stranggruppen gleichzeitig unterstützen kann, ergibt sich, dass ein System in einem GPC 208, das M Datenstrom-Multiprozessoren 310 aufweist, bis zu G·M Stranggruppen in dem GPC 208 zu jeder Zeit ausgeführt werden können.
  • Ferner können mehrere in Beziehung stehende Stranggruppen (in unterschiedlichen Phasen der Ausführung) gleichzeitig in einen SM 310 aktiv sein. Diese Ansammlung an Stranggruppen wird hierin als ein „kooperatives Strang-Array” („CTA”) oder „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 und typischerweise ein ganzzahliges Vielfaches der Anzahl an Parallelverarbeitungseinheiten innerhalb des SM 310 ist, und wobei m die Anzahl an Stranggruppen ist, die gleichzeitig in dem SM 310 aktiv ist. Die Größe eines CTA wird generell von dem Programmierer und der Menge an Hardware-Ressourcen bestimmt, etwa von Speichern und Registern, die für das CTA verfügbar sind.
  • In Ausführungsformen der vorliegenden Erfindung ist es wünschenswert, die PPU 202 oder einen oder mehrere andere Prozessoren eines Rechensystems zu verwenden, um Berechnungen für Allgemeinzwecke unter Verwendung von Strang-Arrays auszuführen. Jedem Strang in dem Strang-Array ist eine eindeutige Strangkennung („Strang-ID”) zugewiesen, auf die der Strang während der Ausführung des Strangs zugreifen kann. Die Strang-ID, die als ein eindimensionaler oder mehrdimensionaler numerischer Wert definiert sein kann, steuert diverse Aspekte des Verarbeitungsverhaltens des Strangs. Beispielsweise kann eine Strang-ID verwendet werden, um zu bestimmen, welchen Teil eines Eingangsdatensatzes ein Strang zu verarbeiten hat und/oder um zu bestimmen, welchen Teil eines Ausgangsdatensatzes ein Strang zu erzeugen oder zu schreiben hat.
  • Eine Sequenz aus Befehlen pro Strang kann mindestens einen Befehl enthalten, der ein kooperatives Verhalten zwischen dem repräsentativen Strang und einem oder mehreren anderen Strängen des Strang-Arrays angibt. Beispielsweise kann die Sequenz aus Befehlen pro Strang enthalten: einen Befehl, um die Ausführung von Operationen für den repräsentativen Strang an einem speziellen Punkt in der Sequenz zu unterbrechen, bis zu einer Zeit, bei der eine oder mehrere der anderen Stränge diesen speziellen Punkt erreicht haben, einen Befehl für den repräsentativen Strang, Daten in einen gemeinsam benutzten Speicher zu speichern, auf den eine oder mehrere der anderen Stränge Zugriff haben, einen Befehl für den repräsentativen Strang, in atomarer Weise bzw. ungeteilter Weise Daten zu lesen und zu aktualisieren, die in einem gemeinsam benutzten Speicher gespeichert sind, auf den einer oder mehrere der anderen Stränge Zugriff haben auf Grundlage ihrer Strang-ID, oder dergleichen. Das CTA-Programm kann ferner einen Befehl enthalten, um eine Adresse in dem gemeinsam benutzten Speicher zu berechnen, aus der Daten auszulesen sind, wobei die Adresse eine Funktion der Strang-ID ist. Durch die Definition geeigneter Funktionen und durch die Bereitstellung von Synchronisiertechniken können Daten in eine gegebene Speicherstelle in einem gemeinsam benutzten Speicher durch einen Strang eines CTA geschrieben werden, und können aus dieser Speicherstelle von einem anderen Strang des gleichen CTA in vorhersagbarer Weise ausgelesen werden. Folglich kann ein beliebiges gewünschtes Schema an gemeinsamer Datennutzung zwischen Strängen unterstützt werden, und ein beliebiger Strang in einem CTA kann Daten mit einem beliebigen anderen Strang in dem gleichen CTA gemeinsam benutzen. Der Grad, falls verhandeln, einer gemeinsamen Datennutzung zwischen Strängen eines CTA ist durch das CTA-Programm bestimmt; es ist somit zu beachten, dass in einer speziellen Anwendung, die CTAs verwendet, die Stränge eines CTA Daten untereinander gemeinsam nutzen können oder auch nicht, wobei dies von dem CTA-Programm bestimmt ist, und die Begriffe „CTA” und „Strang-Array” werden hierin als Synonym verwendet.
  • Der SM 310 stellt einen chipinternen (internen) Datenspeicherplatz mit unterschiedlichen Ebenen an Zugänglichkeit bereit. Spezialregister (nicht gezeigt) sind von der LSU 303 lesbar aber nicht beschreibbar und können verwendet werden, um Parameter zu speichern, die die „Position” jedes Strangs definieren. In einer Ausführungsform enthalten die Spezialregister ein Register pro Strang (oder pro Exec-Einheit 302 in dem SM 310), das eine Strang-ID speichert. Jedes Register einer Strang-ID ist nur von einer entsprechenden Exec-Einheit 302 ansprechbar. Spezialregister können auch zusätzliche Register enthalten, die von allen Strängen lesbar sind, die die gleiche Verarbeitungsaufgabe ausführen, die durch einem Satz an TMD repräsentiert ist (oder von allen LSU 303), die eine CTA-Kennung, die CTA-Dimensionen, die Dimensionen eines Gitters, zu welchem das CTA gehört (eine Warteschlangenposition, wenn die TMD eine Warteschlangenaufgabe anstelle einer Gitteraufgabe kodieren), und eine Kennung der TMD, denen das CTA zugeordnet ist, speichern.
  • Wenn die TMD Gitter-TMD sind, bewirkt die Ausführung der TMD, dass eine festgelegte Anzahl an CTAs gestartet und ausgeführt wird, um die festgelegte Menge an Daten zu verarbeiten, die in der Warteschlange 525 gespeichert sind. Die Anzahl an CTAs ist als das Produkt der Gitterbreite, Höhe und Tiefe angegeben. Die festgelegte Menge an Daten kann in den TMD gespeichert sein, oder die TMD können einen Zeiger auf die Daten speichern, die von den CTAs verarbeitet werden. Die TMD können ferner eine Startadresse des Programms enthalten, das von den CTAs ausgeführt wird.
  • Wenn die TMD Warteschlange-TMD sind, dann kann eine Warteschlangeneigenschaft der TMD verwendet werden, was bedeutet, dass die zu verarbeitende Datenmenge nicht notwendigerweise festgelegt ist. Warteschlangeneinträge speichern Daten zur Verarbeitung durch die CTAs, die den TMD zugeordnet sind. Die Warteschlangeneinträge können auch eine Kind-Aufgabe repräsentieren, die von weiteren TMD während der Ausführung eines Strangs erzeugt wird, wodurch eine eingebettete Parallelität geschaffen wird. Typischerweise wird die Ausführung des Strangs oder des CTA, das den Strang enthält, unterbrochen, bis die Ausführung der Kind-Aufgabe abgeschlossen ist. Die Warteschlange kann in den TMD oder separat zu den TMD gespeichert werden, in welchem Falle die TMD einen Warteschlangenzeiger auf die Warteschlange speichern. Vorteilhafterweise können die von der Kind-Aufgabe erzeugten Daten in die Warteschlange geschrieben werden, während die TMD, die die Kind-Aufgabe repräsentieren, ausgeführt werden. Die Warteschlange kann als eine Ringwarteschlange realisiert werden, so dass die gesamte Datenmenge nicht auf die Größe der Warteschlange beschränkt ist.
  • CTAs, die einem Gitter angehören, haben implizite Parameter für die Gitterbreite, Höhe und Tiefe, die die Position des jeweiligen CTA innerhalb des Gitters angegeben. Spezialregister werden während der Initialisierung in Reaktion auf Befehle beschrieben, die über den Frontbereich 212 von dem Gerätetreiber 103 empfangen werden, und die Register ändern sich während der Ausführung einer Verarbeitungsaufgabe nicht. Der Frontbereich 212 disponiert jede Verarbeitungsaufgabe für die Ausführung. Jedes CTA ist einem speziellen Satz an TMD für die gleichzeitige Ausführung einer oder mehrerer Aufgaben zugeordnet. Ferner kann ein einzelner GPC 208 mehrere Aufgaben gleichzeitig ausführen.
  • Ein Parameterspeicher (nicht gezeigt) speichert Laufzeitparameter (Konstanten), die von einem beliebigen Strang innerhalb des gleichen CTA (oder einer LSU 303) gelesen aber nicht beschrieben werden können. In einer Ausführungsform leitet der Gerätetreiber 103 Parameter dem Parameterspeicher zu, bevor der SM 310 angewiesen wird, die Ausführung einer Aufgabe zu beginnen, die diese Parameter verwendet. Ein beliebiger Strang innerhalb eines CTA (oder eine Exec-Einheit 302 innerhalb des SM 310) kann auf den globalen Speicher mittels einer Speicherschnittstelle 214 zugreifen. Teile des globalen Speichers können in dem L1-Cache-Speicher 320 liegen.
  • Eine lokale Registerdatei 304 wird von jedem Strang als Arbeitsbereich verwendet; jedes Register ist für die ausschließliche Nutzung durch einen einzigen Strang reserviert, und Daten in einem Register der lokalen Registerdatei 304 sind nur für den Strang verfügbar, dem das Register zugewiesen ist. Die lokale Registerdatei 304 kann als eine Registerdatei realisiert sein, die physikalisch oder logisch in P Bahnen unterteilt ist, wobei jede eine gewisse Anzahl an Einträgen (wobei jeder Eintrag beispielsweise ein 32-Bit-Wort speichern kann) aufweist. Jeder der N Exec-Einheiten 302 und jeder der P Lade-Speichereinheiten LSU 303 ist eine einzelne Bahn zugewiesen, und entsprechende Einträge in unterschiedlichen Bahnen können mit Daten für unterschiedliche Stränge, die in dem gleichen Programm ausgeführt werden, angereichert werden, um eine SIMD-Ausführung zu ermöglichen. Unterschiedliche Teile der Bahnen können unterschiedlichen Gruppen der G gleichzeitigen Stranggruppen zugewiesen sein, so dass auf einen gegebenen Eintrag in der lokalen Registerdatei 304 nur von einem speziellen Strang zugegriffen werden kann. In einer Ausführungsform sind gewisse Einträge innerhalb der lokalen Registerdatei 304 für die Speicherung von Strangkennungen reserviert, wodurch eines der Spezialregister realisiert wird. Ferner speichert ein gleichförmiger L1-Cache-Speicher 320 gleichförmige oder konstante Werte für jede Bahn der N Exec-Einheiten 302 und der P Lade-Speichereinheiten LSU 303.
  • Der gemeinsam genutzte Speicher 306 ist für Stränge innerhalb eines einzelnen CTA zugänglich; anders ausgedrückt, jede Stelle in dem gemeinsam benutzten Speicher 306 ist für einen beliebigen Strang innerhalb des gleichen CTA (oder eine Verarbeitungseinheit innerhalb des SM 310) zugänglich. Der gemeinsam genutzte Speicher 306 kann als eine gemeinsame benutzte Registerdatei oder ein gemeinsam benutzter chipinterner Cache-Speicher mit einer Verbindung realisiert werden, die es einer beliebigen Verarbeitungseinheit ermöglicht, jede Stelle in dem gemeinsam benutzten Speicher zu lesen oder zu beschreiben. In anderen Ausführungsformen kann der gemeinsam benutzte Zustandsraum auf ein Gebiet pro CTA eines chipexternen Speichers abgebildet sein, und kann in dem L1-Cache-Speicher 320 zwischengespeichert sein. Der Parameterspeicher kann als ein spezieller Abschnitt innerhalb der gleichen gemeinsamen benutzten Registerdatei oder als ein gemeinsam benutzter Crash-Speicher realisiert sein, der den gemeinsam benutzten Speicher 306 realisiert, oder kann als eine separate gemeinsame benutzte Registerdatei oder ein chipinterner Cache-Speicher realisiert sein, auf den die LSUs 303 nur einen lesenden Zugriff haben. In einer Ausführungsform wird der Bereich, der den Parameterspeicher bildet, auch verwendet, um die CTA-ID und die Aufgaben-ID sowie die CTA- und Gitter-Abmessungen oder Warteschlangenposition zu speichern, wodurch Teile der Spezialregister realisiert werden. Jede LSU 303 in dem SM 310 ist mit einer vereinheitlichten Adressenzuordnungseinheit 352 verbunden, die eine Adresse, die für Lade- und Speicherbefehle bereitgestellt wird, die in einem vereinheitlichten Speicherraum angegeben sind, eine Adresse in jedem einzelnen Speicherraum umwandelt. Folglich kann ein Befehl verwendet werden, um auf den lokalen, den gemeinsam benutzten oder den globalen Speicherraum zuzugreifen, indem eine Adresse in dem vereinheitlichten Speicherraum angegeben wird.
  • Der L1-Cache-Speicher 320 in jedem SM 310 kann verwendet werden, um private lokale Daten pro Strang und auch globale Daten pro Anwendung zwischenzuspeichern. In einigen Ausführungsformen können die gemeinsamen benutzten Daten pro CTA in dem L1-Cache-Speicher 320 zwischengespeichert werden. Die LSU 303 sind mit dem gemeinsam benutzten Speicher 306 und dem L1-Cache-Speicher 320 über eine Speicher- und Cache-Verbindung 380 verbunden.
  • Zu beachten ist, dass die hierin beschriebene Kernarchitektur anschaulicher Natur ist und dass Variationen und Modifizierungen möglich sind. Es kann eine beliebige Anzahl an Verarbeitungseinheiten, beispielsweise SM 310, in einem GPC 208 enthalten sein. Wie ferner in 2 gezeigt ist, kann eine PPU 202 eine beliebige. Anzahl an GPC 208 enthalten, die vorteilhafterweise in funktionaler Hinsicht ähnlich zueinander sind, so dass das Ausführungsverhalten nicht davon abhängt, welcher GPC 208 welche spezielle Verarbeitungsaufgabe empfängt. Ferner kann jeder GPC 208 vorteilhafterweise unabhängig von anderen GPCs 208 unter Verwendung separater und unterscheidbarer Verarbeitungseinheiten, L1-Cache-Speicher arbeiten, um Aufgaben für ein oder mehrere Anwendungsprogramme auszuführen.
  • Der Fachmann auf dem Gebiet erkennt, dass die in den 13B beschriebene Architektur in keiner Weise den Schutzbereich der vorliegenden Erfindung einschränkt und dass die hierin gelehrten Techniken in einer beliebigen geeignet ausgebildeten Verarbeitungseinheit realisiert werden können, wozu gehören, ohne Einschränkung, eine oder mehrere CPUs, eine oder mehrere Mehrkern-CPUs, eine oder mehrere PPUs 202, ein oder mehrere GPCs 208, eine oder mehrere grafische Verarbeitungseinheiten oder Verarbeitungseinheiten für Allgemeinzwecke, oder dergleichen, ohne von dem Schutzbereich der vorliegenden Erfindung abzuweichen.
  • Architektur der Grafik-Pipeline
  • 4 ist eine Konzeptansicht einer Grafik Verarbeitungs-Pipeline 400, in die eine oder mehrere der PPUs 202 aus 2 zur Realisierung konfiguriert werden können, gemäß einer Ausführungsform der vorliegenden Erfindung. Beispielsweise kann einer der SM 310 konfiguriert werden, um die Funktionen einer Vertex-Verarbeitungseinheit 415 und/oder einer Parkettierungs- und -Initialisierungs-Verarbeitungseinheit 420, und/oder einer Parkettierungs-Verarbeitungseinheit 440 und/oder einer Geometrie-Verarbeitungseinheit 445 und/oder einer Fragment-Verarbeitungseinheit 460 auszuführen. Die Funktionen einer Grundelemente-Verteileinheit 410, einer Aufgabenerzeugungseinheit 425, einer Aufgaben-Verteileinheit 430, einer Topologie-Erzeugungseinheit 435, einer Darstellungsfeldskalier-, Auswahl und Schneideeinheit 450, einer Rastereinheit 455 und einer Rasteroperationseinheit 465 können ebenfalls von anderen Verarbeitungseinheiten innerhalb eines GPC 208 und einer entsprechenden Partitionseinheit 215 ausgeführt werden. Alternativ kann die Grafikverarbeitungs-Pipeline 400 realisiert werden, indem spezielle Verarbeitungseinheiten für eine oder mehrere Funktionen verwendet werden.
  • Die Grafikverarbeitungs-Pipeline 400 umfasst ferner einen lokalen Speicher, der von den Grafikverarbeitungs-Pipelines 400 gemeinsam benutzt wird. Beispielsweise könnte die Grafikverarbeitungs-Pipeline den gemeinsam benutzten Speicher 306 in dem SM 310 als einen derartigen lokalen Speicher verwenden. Wie nachfolgend weiter beschrieben ist, werden Zwischenstufen-Puffer (nicht gezeigt) innerhalb des gemeinsam benutzten Speichers 306 von den diversen Verarbeitungseinheiten in der Grafikverarbeitungs-Pipeline 400 nach Bedarf zugewiesen und wieder freigegeben. Eine Verarbeitungseinheit liest Eingangsdaten aus einem oder mehreren Zwischenstufen-Puffern aus, verarbeitet die Eingangsdaten, um Ausgangsdaten zu erzeugen, und speichert die resultierenden Ausgangsdaten in einem oder mehreren Zwischenstufen-Puffern. Eine nachfolgende Verarbeitungseinheit kann diese resultierenden Ausgangsdaten als Eingangsdaten für die nachfolgende Verarbeitungseinheit lesen. Die nachfolgende Verarbeitungseinheit verarbeitet die Daten und speichert Ausgangsdaten in einem oder mehreren Zwischenstufen-Puffern, usw. Der gemeinsam genutzte Speicher 306 und diverse andere Stufen der Grafikverarbeitungs-Pipeline sind mit dem externen Speicher über die Speicherschnittstelle 214 verbunden.
  • Die Grundelemente-Verteileinheit 410 sammelt als Verarbeitungseinheit Vertex-Daten für Oberflächen höherer Ordnung, Grundelemente und dergleichen, und gibt die Vertex-Daten einschließlich der Vertex-Attribute an die Vertex-Verarbeitungseinheit 415 aus. In einigen Ausführungsformen kann die Grundelemente-Verteileinheit 410 eine Vertex-Attribut-Abholeinheit (nicht gezeigt) aufweisen, die die Vertex-Attribute aus dem gemeinsam benutzten Speicher 306 abruft und die Vertex-Attribute in diesem speichert. Die Vertex-Verarbeitungseinheit 415 ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Vertex-Schattierungsprogramme, Beleuchtung und die Transformation von Vertexdaten-Daten auszuführen, wie dies durch die Vertex-Schattierungsprogramme angegeben ist. Beispielsweise ist die Vertex-Verarbeitungseinheit 415 programmiert, um die Vertex-Daten von einer objektbasierten Koordinatendarstellung (Objektraum) in ein Koordinatensystem mit alternativer Basis, etwa einen Welt-Raum oder in einen Raum für normierte Gerätekoordinaten (NDC) zu transformieren. Die Vertex-Verarbeitungseinheit 415 kann Daten auslesen, die in dem gemeinsam benutzten Speicher 306, dem L1-Cache-Speicher 320, dem Parallelverarbeitungsspeicher 204 oder dem Systemspeicher 104 durch die Grundelemente-Verteil- und Vertex-Attribut-Abholeinheit 410 gespeichert sind zur Verwendung bei der Verarbeitung der Vertices-Daten. Die Vertex-Verarbeitungseinheit 415 speichert verarbeitete Vertices in den Zwischenstufen-Puffern innerhalb des gemeinsam benutzten Speichers 306.
  • Die Parkettierungs- und -Initialisierungs-Verarbeitungseinheit 420 ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Parkettierung-Initialisierungs-Schattierungsprogramme auszuführen. Die Parkettierungs- und -Initialisierungs-Verarbeitungseinheit 420 verarbeitet Vertices, die von der Vertex-Verarbeitungseinheit 415 erzeugt wurden, und erzeugt grafische Grundelemente, die als Flecken bekannt sind. Die Parkettierungs- und -Initialisierungs-Verarbeitungseinheit 420 erzeugt ferner diverse Fleckenattribute. Die Parkettierungs- und -Initialisierungs-Verarbeitungseinheit 420 speichert dann die Fleckendaten und die Fleckenattribute in den Zwischenstufen-Puffern innerhalb des gemeinsam benutzten Speichers 306. In einigen Ausführungsformen kann das Parkettierung-Initialisierungs-Schattierungsprogramm als eine Hüllenschattierung oder eine Parkettierungs- und -Steuerschattierung bezeichnet werden.
  • Die Aufgabenerzeugungseinheit 425 ruft Daten und Attribute für Vertices und Flecken aus den Zwischenstufen-Puffern des gemeinsam benutzten Speichers 306 ab. Die Aufgabenerzeugungseinheit 425 erzeugt Aufgaben für die Verarbeitung der Vertices und Flecken zur Verarbeitung durch spätere Stufen in der Grafikverarbeitungs-Pipeline 400.
  • Die Aufgabenverteilungseinheit 430 verteilt die Aufgaben erneut, die von der Aufgabenerzeugungseinheit 425 erzeugt wurden. Die von den diversen Instanzen des Vertex-Schattierungsprogramms und des Parkettierungs-Initialisierungs-Programms erzeugten Aufgaben können beträchtlich zwischen einer Grafikverarbeitungs-Pipeline 400 und einer weiteren variieren. Die Aufgabenverteilungseinheit 430 verteilt diese Aufgaben erneut um, so dass jede Grafikverarbeitungs-Pipeline 400 ungefähr die gleiche Arbeitslast während späterer Pipeline-Stufen aufweist.
  • Die Topologie-Erzeugungseinheit 435 ruft Aufgaben ab, die von der Aufgabenverteilungseinheit 430 verteilt wurden. Die Topologie-Erzeugungseinheit 435 indiziert die Vertices, einschließlich der mit Flecken bzw. Abschnitten verknüpften Vertices, und berechnet Texturkoordinaten entsprechend den Vertices. Die Topologie-Erzeugungseinheit 435 speichert dann die indizierten Vertices in den Zwischenstufen-Puffern innerhalb des gemeinsam benutzten Speichers 306.
  • Die Parkettierungs-Verarbeitungseinheit 440 ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Parkettierungs-Schattierungsprogramme auszuführen. Die Parkettierungs-Verarbeitungseinheit 440 liest Eingangsdaten aus den Zwischenstufen-Puffern des gemeinsam benutzten Speichers 306 und schreibt Ausgangsdaten in diesen hinein. Diese Ausgangsdaten in den Zwischenstufen-Puffern werden an die nächste Schattierungsstufe, das heißt die Geometrie-Verarbeitungseinheit 445, als Eingangsdaten weitergeleitet. In einigen Ausführungsformen kann das Parkettierungs-Schattierungsprogramm als eine Bereichsschattierung oder eine Parkettierungs-Bewertungsschattierung bezeichnet werden.
  • Die Geometrie-Verarbeitungseinheit 445 ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Geometrie-Schattierungsprogramme auszuführen, wodurch grafische Grundelemente transformiert werden. Vertices werden in Gruppen eingeteilt, um grafische Grundelemente für die Verarbeitung aufzubauen, wobei grafische Grundelemente Dreiecke, Liniensegmente, Punkte und dergleichen umfassen. Beispielsweise kann die Geometrie-Verarbeitungseinheit 445 programmiert werden, um die grafischen Grundelemente in ein oder mehrere neue grafische Grundelemente zu unterteilen und um Parameter zu berechnen, etwa Koeffizienten für die Ebenengleichung, die verwendet werden, um die neuen grafischen Grundelemente in ein Raster einzuteilen.
  • In einigen Ausführungsformen kann die Geometrie-Verarbeitungseinheit 445 ferner Elemente in den Geometrie-Strom hinzufügen oder aus diesem löschen. Die Geometrie-Verarbeitungseinheit 445 gibt die Parameter und Vertices, die neue grafische Grundelemente angeben, an eine Darstellungsfeldskalier-, Auswahl und Schneideeinheit 450 aus. Die Geometrie-Verarbeitungseinheit 445 kann Daten lesen, die in dem gemeinsam genutzten Speicher 306, dem Parallelverarbeitungsspeicher 204 oder dem Systemspeicher 104 gespeichert sind, um bei der Verarbeitung der Geometriedaten verwendet zu werden. Die Darstellungsfeldskalier-, Auswahl und Schneideeinheit 450 führt eine Beschneidung, Auswahl und Transformation des Darstellungsfeldes aus und gibt verarbeitete grafische Grundelemente an eine Rastereinheit 455 aus.
  • Die Rastereinheit 455 konvertiert in abtastender Weise die neuen grafischen Grundelemente und gibt Fragmente und Abdeckungsdaten an die Fragment-Verarbeitungseinheit 460 aus. Ferner kann die Rastereinheit 455 ausgebildet sein, eine z-Auswahl und andere z-basierte Optimierungen durchzuführen.
  • Die Fragment-Verarbeitungseinheit 460 ist eine programmierbare Ausführungseinheit, die ausgebildet ist, Fragment-Schattierungsprogramme auszuführen, wodurch Fragmente, die von der Rastereinheit 455 empfangen werden, transformiert werden, wie dies durch die Fragment-Schattierungsprogramme angegeben ist. Beispielsweise kann die Fragment-Verarbeitungseinheit 460 programmiert sein, Operationen auszuführen, etwa eine perspektivische Korrektur, eine Texturabbildung, eine Schattierung, eine Mischung und dergleichen, um schattierte Fragmente zu erzeugen, die an die Rasteroperationseinheit 465 ausgegeben werden. Die Fragment-Verarbeitungseinheit 460 kann Daten, die in dem gemeinsam benutzten Speicher 306, in dem Parallelverarbeitungsspeicher 204 oder dem Systemspeicher 104 liegen, zur Verwendung bei der Verarbeitung der Fragmentdaten auslesen. Fragmente können auf Pixelebene, Abtast-Ebene oder mit anderer Auflösung abhängig von der programmierten Abtastrate schattiert werden.
  • Die Rasteroperationseinheit 465 ist eine Verarbeitungseinheit, die Rasteroperationen ausführt, etwa Schablone, z-Test, Mischung und dergleichen, und die Pixeldaten als verarbeitete Grafikdaten zur Speicherung im Grafikspeicher ausgibt. Die verarbeiteten Grafikdaten können im Grafikspeicher gespeichert werden, beispielsweise in dem Parallelverarbeitungsspeicher 204, und/oder in dem Systemspeicher 104, um auf dem Anzeigegerät 110 angezeigt werden, oder um von der CPU 102 oder dem Parallelverarbeitungssubsystem 112 weiterverarbeitet zu werden. In einigen Ausführungsformen der vorliegenden Erfindung ist die Rasteroperationseinheit 465 ausgebildet, z- oder Farbdaten zu komprimieren, die in den Speicher geschrieben werden, und um z- oder Farbdaten zu dekomprimieren, die aus dem Speicher ausgelesen werden. In diversen Ausführungsformen kann die ROP 465 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 enthalten sein.
  • Umgehung der Pixel-Schattierung für grafische Bilderzeugung mit geringer Leistung
  • 5A5D zeigen eine Grafikverarbeitungs-Pipeline 400, die zur Realisierung von vier unterschiedlichen Pixel-Schattierung-Umgehungsmodi ausgebildet ist. Die Pixel-Schattierungseinheit 535 ist eine Ausführungseinheit in der Fragment-Verarbeitungseinheit 460, die Pixel-Schattierungsprogramme ausführt. Die Pixel-Schattierungseinheit 535 enthält einen programmierbaren Ausführungskern zur Ausführung von Pixel-Schattierungsprogrammen, und die Fragment-Verarbeitungseinheit 460 enthält eine zusätzliche Hardware mit festgelegter Funktion.
  • Um vier unterschiedliche Umgehungsmodell für die Pixel-Schattierung einzurichten, schaltet die Grafikverarbeitungs-Pipeline 400 in eine der vier Konfigurationen um, die in den 5A5D gezeigt sind. In dem in 5A gezeigten Umgehungsmodus führt die Pixel-Schattierungseinheit 535 Pixelprogramme aus, um Fragmente zu verarbeiten, und wird daher nicht umgangen, während in den Konfigurationen, die in den 5B5D gezeigt sind, die Pixel-Schattierungseinheit 535 keine Pixelprogramme ausführt und daher umgangen wird. Während die Pixel-Schattierungseinheit 535 keine Pixel-Schattierungsprogramme für ein Grundelement ausführt, kann die Pixel-Schattierungseinheit 535 auf untätig geschaltet werden, oder die Pixel-Schattierungseinheit 535 kann Pixel-Schattierungsprogramme für ein weiteres Grundelement ausführen, wodurch das Leistungsverhalten verbessert und/oder die Leistungsaufnahme reduziert werden.
  • Die Grafikverarbeitungs-Pipeline 400 schaltet zwischen dem in den 5A5D gezeigten Konfigurationen auf Basis einzelner Grundelemente um. Um in eine der Konfigurationen zu wechseln, empfängt die Grafikverarbeitungs-Pipeline 400 einen Befehl, um ein Grundelement zu zeichnen, und eine Angabe für einen entsprechenden Umgehungsmodus für die Pixel-Schattierung. Nachfolgend geht die Grafikverarbeitungs-Pipeline 400 in eine der in den 5A5D gezeigten Konfigurationen über, die dem Umgehungsmodus der Pixel-Schattierungseinheit entspricht, den die Grafikverarbeitungs-Pipeline 400 empfängt. Die Konfigurationen sind nachfolgend mit Bezug zu den 5A bis 5D detaillierter beschrieben.
  • 5A zeigt eine Grafikverarbeitungs-Pipeline 400, die ausgebildet ist, einen Nicht-Umgehungsmodus gemäß einer Ausführungsform der vorliegenden Erfindung einzurichten. Wie gezeigt, umfasst die Grafikverarbeitungs-Pipeline 400, die zur Einrichtung des Nicht-Umgehungsmodus ausgebildet ist, die Rastereinheit 455, eine Festkomma-Texturkoordinatengeneratoreinheit 530, die Fragment-Verarbeitungseinheit 460, die Pixel-Schattierungseinheit 535, die ROP-Einheit 465, eine Texturkoordinaten-Generatoreinheit (STRI-Einheit) 540 und eine Textureinheit 545 sowie Datenpfade 502, 506, 508, 510, 512, 514 und 516.
  • Wenn die Grafikverarbeitungs-Pipeline 400 ausgebildet ist, den Nicht-Umgehungsmodus zu realisieren, teilt die Rastereinheit 455 geometrische Daten in ein Raster ein, um Fragmente und Abdeckungsdaten für Grundelemente zu erzeugen. Daher wird der Datenfluss 502 von der Rastereinheit 455 verarbeitet und geht zu der Pixel-Schattierungseinheit 535 in der Fragment-Verarbeitungseinheit 460 weiter. Die programmierbare Pixel-Schattierungseinheit 535 führt Pixel-Schattierungsprogramme aus, um schattierte Fragmente zu erzeugen. Während der Abarbeitung der Pixel-Schattierungsprogramme sendet die Pixel-Schattierungseinheit 535, wenn ein Grundelement eine Textur aufweist, Pixel-Koordinatenanforderungen 506 an die Texturkoordinaten-Generatoreinheit 540 (STRI-Einheit) und empfängt Texturkoordinaten 508 aus der STRI-Einheit 540. Die Pixel-Schattierungseinheit 535 sendet dann die Texturkoordinaten-Datenfluss 510 an die Textureinheit 545 und empfängt Farbwerte 512, die den gesendeten Texturkoordinaten 510 entsprechen. Die Pixel-Schattierungseinheit wendet Farbwerte 512 auf Pixel an, die von der Pixel-Schattierungseinheit 535 bearbeitet werden, führt andere Aufgaben aus, die Funktionen der Pixel-Schattierungseinheit 535 entsprechen, und sendet resultierende Fragmente 514 zu der ROP-Einheit 465 für die Weiterverarbeitung, etwa die Farbmischung. Die ROP gibt Werte 516 aus, die in einen Blockpuffer zu schreiben sind, oder für die Weiterverarbeitung.
  • 5B zeigt eine Grafikverarbeitungs-Pipeline 400, die ausgebildet ist, einen texturierten Umgehungsmodus gemäß einer Ausführungsform der vorliegenden Erfindung zu realisieren. Wie gezeigt, umfasst die Grafikverarbeitungs-Pipeline 400, die zum Einrichten des texturierten Umgehungsmodus ausgebildet ist, die Rastereinheit 455, die Festkomma-Texturkoordinatengeneratoreinheit 530, die Fragment-Verarbeitungseinheit 460, die Pixel-Schattierungseinheit 535, die ROP-Einheit 465, die Texturkoordinaten-Generatoreinheit (STRI-Einheit) 445 und die Textureinheit 545, sowie Datenpfade 518, 520, 522 und 524.
  • Wenn die Grafikverarbeitungs-Pipeline 400 ausgebildet ist, den texturierten Umgehungsmodus zu realisieren, empfängt die Rastereinheit 455 Information im Hinblick auf ein „flaches” zweidimensionales Objekt zur Rastereinteilung auf einer Zieloberfläche, und eine Textur, die auf das zweidimensionale Objekt anzuwenden ist. Das „flache” zweidimensionale Objekt ist parallel zu dem Bilderzeugungsziel für das „flache” zweidimensionales Objekt. Das „flache” zweidimensionale Objekt kann eine beliebige zweidimensionale Form sein, etwa ein Quadrat, ein Dreieck, oder ein Polygon oder eine andere zweidimensionale Form. In diversen Ausführungsformen können „flache” zweidimensionale Formen geeignet sein, um texturierte Elemente einer grafischen Anwenderschnittstelle (GUI) anzuzeigen, um eine einfache Grafikanwendung, etwa für ein einfaches Spiel oder für andere Zwecke anzuzeigen.
  • Um ein „flaches” zweidimensionales Objekt als Bild zu erzeugen, wenn die Grafikverarbeitungs-Pipeline zur Einrichtung des texturierten Umgehungsmodus eingerichtet ist, berechnet die Rastereinheit 455 Abdeckungsdaten für das „flache” zweidimensionale Objekt und gibt Fragmente und Abdeckungsdaten in den Datenfluss 520 aus. Da das zweidimensionale Objekt parallel zu dem Bilderzeugungsziel ist, sind die Berechnungen für die Erzeugung der Texturkoordinaten relativ einfach. Er Festkomma-Texturkoordinatengenerator 530 erzeugt daher Festkomma-Texturkoordinaten auf der Grundlage der Form des zweidimensionalen Objekts und einer ausgewählten Textur. In einer Ausführungsform erzeugt der Festkomma-Texturkoordinatengenerator 530 Festkomma-Texturkoordinaten über eine Festkommaarithmetik.
  • Sobald der Festkomma-Texturkoordinatengenerator 530 Texturkoordinaten berechnet hat, werden Daten aus der Rastereinheit 455 einschließlich von Abdeckungsdaten und Texturkoordinaten im Pfad 520 bereitgestellt. Die Texturkoordinaten werden der Textureinheit 542 zugeleitet, die darauf Farben bereitstellt, die den Texturkoordinaten entsprechen. Die Daten 522, die Farben enthalten, die von der Textureinheit 545 bereitgestellt werden, werden der ROP-Einheit 465 zugeleitet, und eine Ausgabe aus der ROP-Einheit 524 wird für die Weiterverarbeitung und für ein mögliches Speichern in dem Bilderzeugungsziel ausgegeben.
  • Die Datenpfade 520 und 522 verlaufen durch die Fragment-Verarbeitungseinheit 460, wodurch angezeigt wird, dass eine gewisse Hardware mit festgelegter Funktion in der Fragment-Verarbeitungseinheit 460, etwa ein Farbumwandler oder dergleichen, Daten in den Datenpfaden 520 und 522 verarbeitet. Jedoch verarbeitet die Pixel-Schattierungseinheit 535 keine Daten in den Datenpfaden 520 und 522. In einigen Ausführungsformen verlaufen die Datenpfade 520 und 522 nicht durch die Fragment-Verarbeitungseinheit 460.
  • Wenn die Grafikverarbeitungs-Pipeline 400 ausgebildet ist, den texturierten Umgehungsmodus einzurichten, führt die Pixel-Schattierungseinheit 535 keine Pixel-Schattierungsprogramme für das gerade erzeugte Grundelement aus. Ferner berechnet eine Texturkoordinaten-Generatoreinheit (STRI) 540 keine Texturkoordinaten. Daher nimmt die Pixel-Schattierungseinheit 535 nicht bei der Bilderzeugung des Grundelements teil. In einigen Ausführungsformen ist die Pixel-Schattierungseinheit 535 untätig, wodurch die Leistungsaufnahme reduziert wird. In anderen Ausführungsformen führt die Pixel-Schattierungseinheit 535 Berechnungen für andere Grundelemente aus. In einigen Ausführungsformen verarbeiten Einheiten, die zu der Rastereinheit 455 vorgeordnet sind, keine Daten für ein Grundelement, das im texturierten Umgehungsmodus verarbeitet wird, da das flache texturierte Grundelement parallel zu dem Bilderzeugungsziel ist. Beispielsweise verarbeitet gegebenenfalls die Geometrie-Verarbeitungseinheit 445 keine Daten für ein Grundelement, das in dem texturierten Umgehungsmodus verarbeitet wird.
  • 5C zeigt die Grafikverarbeitungs-Pipeline 400, die zur Einrichtung eines Umgehungsmodus mit festgelegter Farbe ausgebildet ist, gemäß einer Ausführungsform der vorliegenden Erfindung. Wie gezeigt, enthält die Grafikverarbeitungs-Pipeline 400, die zur Einrichtung des Umgehungsmodus mit festgelegter Farbe ausgebildet ist, die Rastereinheit 455, die Festkomma-Texturkoordinaten-Generatoreinheit 530, die Fragment-Verarbeitungseinheit 460, die Pixel-Schattierungseinheit 535, die ROP-Einheit 465, die Texturkoordinaten-Generatoreinheit (SIRE-Einheit) 540 und die Textureinheit 545, sowie Datenpfade 526 und 528.
  • Wenn die Grafikverarbeitungs-Pipeline 400 ausgebildet ist, den Umgehungsmodus mit festgelegter Farbe einzurichten, empfängt die Rastereinheit 455 Information im Hinblick auf ein zweidimensionales Objekt mit festgelegter Farbe, dass in einer Zieloberfläche in ein Raster einzuteilen ist, und eine festgelegte Farbe, die auf das zweidimensionale Objekt mit festgelegter Farbe anzuwenden ist. Das zweidimensionale Objekt mit festgelegter Farbe ist im Hinblick auf Position und Orientierung nicht beschränkt und ist daher nicht notwendigerweise parallel zu dem Bilderzeugungsziele. In diversen Ausführungsformen kann das zweidimensionale Objekt mit festgelegter Farbe nützlich sein, um Elemente einer grafischen Anwenderschnittstelle (GUI) mit festgelegter Farbe anzuzeigen, um einfache Grafik für Anwendungen, etwa für ein gelegentliches Spielen, oder für andere Zwecke anzuzeigen.
  • Die Rastereinheit 455 teilt das Grundelement in ein Raster ein, was die Erzeugung von Fragmenten und Abdeckungsdaten für Pixel und Abtaststellen beinhaltet. Die Rastereinheit 455 ordnet dann die festgelegte Farbe den Fragmenten zu, die von der Rastereinheit 455 ausgegeben werden. Die Fragmente werden an die ROP-Einheit 465 in den Datenfluss 526 gesendet. Die ROP-Einheit 465 verarbeitet die Fragmente und gibt den Datenfluss 528 aus. Es wird keine Textur angewendet, und daher werden der Festkomma-Texturkoordinatengenerator 530, die Texturkoordinaten-Generatoreinheit (STRI) 540, die Textureinheit 545 und die Pixel-Schattierungseinheit 535 umgangen. Es wird dabei ein zweidimensionales Objekt in einem dreidimensionalen Raum mit einer einzelnen festgelegten Farbe erzeugt. Durch die Umgehung der Pixel-Schattierungseinheit 535 erzeugt die Grafikverarbeitungs-Pipeline 400 Objekte, ohne dass Leistung für die Pixel-Schattierungseinheit 535 aufgenommen wird.
  • 5D zeigt eine Grafikverarbeitungs-Pipeline 400, die ausgebildet ist, einen Umgehungsmodus für eine Gradientenfarbe gemäß einer Ausführungsform der vorliegenden Erfindung zu realisieren. Wie gezeigt, umfasst die Grafikverarbeitungs-Pipeline 400, die zur Einrichtung des Umgehungsmodus mit Gradientenfarbe konfiguriert ist, die Rastereinheit 455, die Festkomma-Texturkoordinaten-Generatoreinheit 530, die Fragment-Verarbeitungseinheit 460, die Pixel-Schattierungseinheit 535, die ROP-Einheit 465, die Texturkoordinaten-Generatoreinheit (STRI-Einheit) 540, und eine Textureinheit 545, sowie Datenpfade 525, 527 und 529.
  • Wenn die Grafikverarbeitungs-Pipeline 400 ausgebildet ist, den Umgehungsmodus mit Gradientenfarbe einzurichten, empfängt die Rastereinheit 455 Information 525, die eine Gradientenfarbe eines zweidimensionalen Objekts betrifft, das auf einer Zieloberfläche in ein Raster eingeteilt wird, und es wird eine Gradientenfarbe dem zweidimensionalen Objekts mit Gradientenfarbe zugeteilt. Das zweidimensionale Objekt mit Gradientenfarbe ist parallel zu dem Bilderzeugungsziel für das zweidimensionale Objekt mit Gradientenfarbe ähnlich zu dem flachen zweidimensionalen Objekt, das von der Grafikverarbeitungs-Pipeline 400 verarbeitet wird, die zum Einrichten des texturierten Umgehungsmodus konfiguriert ist. Das zweidimensionale Objekt mit Gradientenfarbe kann eine beliebige zweidimensionale Form sein, etwa ein Quadrat, ein Dreieck, ein anderes Polygon oder eine andere zweidimensionale Form. In diversen Ausführungsformen können zweidimensionale Formen mit Gradientenfarbe günstig sein für die Anzeige von texturierten Elementen einer grafischen Anwenderschnittstelle (GUI), für die Anzeige einer einfachen Grafik für Anwendungen, etwa gelegentliches Spielen, oder für andere Zwecke.
  • Die Rastereinheit 455 berechnet Abdeckungsdaten für das zweidimensionale Objekt mit Gradientenfarbe. Der Festkomma-Texturkoordinatengenerator 530 berechnet die Gradientenfarbe nur für Fragmente für das zweidimensionale Objekt mit Gradientenfarbe. Die Rastereinheit 455 gibt Fragmente und Abdeckungsdaten in den Datenfluss 527 aus. Die ROP-Einheit 465 verarbeitet die Daten und gibt den Datenfluss 529 aus.
  • Da das zweidimensionale Objekt parallel zu dem Bilderzeugungsziel ist, sind die Berechnungen für die Erzeugung der Gradientenfarbe relativ einfach. Die Berechnungen für die Erzeugung der Gradientenfarbe sind ähnlich zu den Berechnungen für die Erzeugung von Texturkoordinaten für ein flaches zweidimensionales Objekt, wenn die Grafikverarbeitungs-Pipeline 400 eingerichtet ist, den texturierten Umgehungsmodus einzurichten. Insbesondere für Texturkoordinaten, die von der Grafikverarbeitungs-Pipeline verarbeitet werden, wenn sie zum Einrichten des texturierten Umgehungsmodus ausgebildet ist, interpoliert der Festkomma-Texturkoordinatengenerator 530 linienartige zwischen Bildschirm-Koordinaten, um Texturkoordinaten zu ermitteln. Wenn die Grafikverarbeitungs-Pipeline ausgebildet ist, den Umgehungsmodus für die Gradientenfarbe einzurichten, interpoliert der Festkomma-Texturkoordinaten Generator 530 linear zwischen Farbwerten, um Gradientenfarbwerte zu erzeugen. Da der Festkomma-Texturkoordinatengenerator 530 Gradientenfarbwerte erzeugt, wird die Pixel-Schattierungseinheit 535 umgangen, wodurch Leistung eingespart wird.
  • Da das Grundelement mit Gradientenfarbe parallel zu dem Bilderzeugungsziel ist, verarbeiten in einigen Ausführungsformen Einheiten, die vorgeordnet zu der Rastereinheit 455 angeordnet sind, keine Daten für ein Grundelement, das in dem Umgehungsmodus für die Gradientenfarbe verarbeitet wird. Beispielsweise verarbeitet gegebenenfalls die Geometrie-Verarbeitungseinheit 445 keine Daten für ein Grundelement, das in den Umgehungsmodus für Gradientenfarbe verarbeitet wird.
  • Zu beachten ist, dass die hierin beschriebene Architektur nur anschaulicher Natur ist, und dass Variationen und Modifizierungen möglich sind. Wenn in einem Beispiel die Grafikverarbeitungs-Pipeline 400 ausgebildet ist, den texturierten Umgehungsmodus einzurichten, durchlaufen die Datenflüsse 520 und 522 gegebenenfalls nicht die Fragment-Verarbeitungseinheit 460. In einem weiteren Beispiel können gewisse Einheiten der Grafikverarbeitungs-Pipeline 400 in gewissen Konfigurationen umgangen werden. Beispielsweise kann die Geometrie-Verarbeitungseinheit 445 umgangen werden, wenn die Grafikverarbeitungs-Pipeline 400 ausgebildet ist, den texturierten Umgehungsmodus und den Umgehungsmodus für Gradientenfarbe einzurichten.
  • 6 zeigt eine anschauliche Szene 600, die von der Grafikverarbeitungs-Pipeline 400 gemäß einer Ausführungsform der vorliegenden Erfindung erzeugt wird. Wie gezeigt, enthält die Szene 600 Grundelemente 602, 603, die von der Grafikverarbeitungs-Pipeline 400 gezeichnet werden, die ausgebildet ist, den Nicht-Umgehungsmodus einzurichten, das Grundelement 606, das von der Grafikverarbeitungs-Pipeline 400 gezeichnet wird, die zur Einrichtung des texturierten Umgehungsmodus ausgebildet ist, das Grundelement 608, das von der Grafikverarbeitungs-Pipeline 400 gezeichnet wird, die zur Einrichtung des Umgehungsmodus mit festgelegter Farbe konfiguriert ist, und das Grundelement 610, das von der Grafikverarbeitungs-Pipeline 400 gezeichnet wird, die zur Einrichtung des Umgehungsmodus mit Gradientenfarbe konfiguriert ist.
  • Die Grundelemente 602 und 604 sind und einen Winkel in Bezug auf das Bilderzeugungsziel (der Bildschirm) angeordnet. Die Grundelemente 602 und 604 werden von der Grafikverarbeitungs-Pipeline 400 verarbeitet, die ausgebildet ist, den Nicht-Umgehungsmodus 500 einzurichten, was bedeutet, dass die Pixel-Schattierungseinheit 535 Pixel-Schattierungsprogramme für die Grundelemente 602 und 604 ausführt.
  • Das Grundelement 606 ist parallel zu der Ebene des Bilderzeugungsziels (der Bildschirm). Die Grafikverarbeitungs-Pipeline 400, die zur Einrichtung des texturierten Umgehungsmodus eingerichtet ist, verarbeitet das Grundelement 606. Wenn die Grafikverarbeitungs-Pipeline 400 ausgebildet ist, den texturierten Umgehungsmodus einzurichten, erzeugt der Texturkoordinatengenerator 530 Texturkoordinaten für das Grundelement 606. Daher wird die Pixel-Schattierungseinheit 535 umgangen.
  • Das Grundelement 608 liegt unter einem Winkel in Bezug auf das Bilderzeugungsziel (den Bildschirm) vor. Die Grafikverarbeitungs-Pipeline 400, die zur Einrichtung des Umgehungsmodus für festgelegte Farbe konfiguriert ist, verarbeitet das Grundelement 608. Daher wird die Pixel-Schattierungseinheit 535 umgangen.
  • Schließlich ist das Grundelement 610 parallel zu der Ebene des Bilderzeugungsziels (der Bildschirm). Die Grafikverarbeitungs-Pipeline 400, die zur Einrichtung des Umgehungsmodus für Gradientenfarbe konfiguriert ist, verarbeitet das Grundelement 610. Daher wird die Pixel-Schattierungseinheit 535 umgangen.
  • 7 ist ein Flussdiagramm von Verfahrensschritten zur Erzeugung von Fragmentdaten in einer Ausführungsform der vorliegenden Erfindung. Obwohl die Verfahrensschritte in Verbindung mit den 15D beschrieben sind, erkennt der Fachmann, dass ein beliebiges System, das zur Ausführung der Verfahrensschritte in beliebiger Reihenfolge geeignet ist, innerhalb des Schutzbereichs der vorliegenden Erfindung liegt.
  • Wie gezeigt, beginnt ein Verfahren 700 im Schritt 702, in welchem die Grafikverarbeitungs-Pipeline 400 einen Befehl erhält, ein Grundelement zu zeichnen, und der angibt, dass ein Umgehungsmodus einzurichten ist. Der Umgehungsmodus kann ein texturierter Umgehungsmodus, ein Umgehungsmodus für eine festgelegte Farbe, ein Nicht-Umgehungsmodus oder ein Umgehungsmodus für Gradientenfarbe sein. Im Schritt 704 ermittelt die Grafikverarbeitungs-Pipeline 400, ob der Umgehungsmodus ein Nicht-Umgehungsmodus ist. Wenn der Umgehungsmodus ein Nicht-Umgehungsmodus ist, geht das Verfahren zum Schritt 706 weiter, und die Grafikverarbeitungs-Pipeline 400 verarbeitet den Befehl zur Zeichnung des Grundelements, ohne dass eine Pixel-Schattierungseinheit 535 umgangen wird. Insbesondere teilt die Grafikverarbeitungs-Pipeline 400 das Grundelement in ein Raster ein und führt eine Schattierung und Texturierung an dem Grundelement mittels der Pixel-Schattierungseinheit 535 aus.
  • Es sei wieder auf den Schritt 704 verwiesen; wenn der Umgehungsmodus nicht der Nicht-Umgehungsmodus ist, dann geht das Verfahren zum Schritt 708 weiter. Im Schritt 708 ermittelt die Grafikverarbeitungs-Pipeline 400, ob die Umgehungsmodus ein texturierter Umgehungsmodus ist. Wenn der Umgehungsmodus ein texturierter Umgehungsmodus ist, dann geht das Verfahren zum Schritt 709 weiter. Im Schritt 709 führt die Rastereinheit 455 eine Rastereinteilung an dem Grundelement durch, um Rastereinteilungsergebnisse, etwa Fragmente und Abdeckungsdaten, zu ermitteln. Im Schritt 710 erzeugt ein Festkomma-Texturkoordinatengenerator 530 Texturkoordinaten für das Grundelement. Im Schritt 712 sendet der Festkomma-Texturkoordinatengenerator 530 Texturkoordinaten zu der Textureinheit 542, um Farben zu ermitteln, die auf das Grundelement anzuwenden sind. Im Schritt 714 sendet die Textureinheit 542 die ermittelten Farben an die ROP-Einheit 465 zur Verarbeitung durch die ROP-Einheit 465.
  • Es sei wieder auf den Schritt 708 verwiesen; wenn der Umgehungsmodus nicht ein texturierter Umgehungsmodus ist, dann geht das Verfahren weiter zum Schritt 715. Im Schritt 715 ermittelt die Grafikverarbeitungs-Pipeline 400, ob der Umgehungsmodus ein Umgehungsmodus für konstante Farbe ist. Wenn der Umgehungsmodus ein Umgehungsmodus für konstante Farbe ist, geht das Verfahren zum Schritt 716 weiter. Im Schritt 716 führt die Rastereinheit 455 eine Rastereinteilung an dem Grundelement aus, um Rastereinteilungsergebnisse, etwa Fragmente und Abdeckungsdaten, zu ermitteln. Im Schritt 718 sendet die Rastereinheit die Rastereinteilungsergebnisse und die konstante Farbe an die ROP-Einheit 465 für die Verarbeitung.
  • Es sei nun wieder auf den Schritt 715 verwiesen; wenn der Umgehungsmodus nicht der Umgehungsmodus für konstante Farbe ist, dann ist der Umgehungsmodus ein Umgehungsmodus für die Gradientenfarbe und das Verfahren geht weiter zum Schritt 720. Im Schritt 720 führt die Rastereinheit 455 eine Rastereinteilung an dem Grundelement aus, um Rastereinteilungsergebnisse, etwa Fragmente und Abdeckungsdaten, zu ermitteln. Im Schritt 722 erzeugt der Festkomma-Texturkoordinatengenerator 530 eine Gradientenfarbe. Im Schritt 724 sendet der Festkomma-Texturkoordinatengenerator 530 die Farben an die ROP-Einheit 465 für die weitere Verarbeitung.
  • Zusammengefasst gilt: es wird eine Grafikverarbeitungs-Pipeline bereitgestellt mit drei Umgehungsmodi, die die Grafikverarbeitungs-Pipeline in die Lage versetzen, zweidimensionale Objekte für die Anzeige effizienter zu erzeugen. In einem texturierten Umgehungsmodus berechnet ein Festkomma-Texturkoordinatengenerator in einer Rastereinheit Texturkoordinaten für texturierte zweidimensionale Objekte, die in der Ebene des Bilderzeugungsziels zu erzeugen sind. Die Texturkoordinaten werden alleine Textureinheit gesendet und Texturfarben werden abgeholt und zur Mischung an die ROP-Einheit gesendet. Eine Pixel-Schattierungseinheit und eine Texturkoordinaten-Generatoreinheit (STRI-Einheit) werden nicht verwendet, um die Farbe der erzeugten Pixel oder Texturfarben zu ermitteln, und diese können daher untätig sein, oder in einen Modus mit geringer Leistung umgeschaltet werden, oder sie können für andere grafische Operationen verwendet werden. In einem Umgehungsmodus mit konstanter Farbe erzeugt die Grafikverarbeitungs-Pipeline ein zweidimensionales Objekt in einem dreidimensionalen Raum, ohne dass die Textureinheit, die Pixel-Schattierungseinheit oder die STRI-Einheit verwendet werden. Die Rastereinheit führt eine Rastereinteilung an dem zweidimensionalen Objekt mit konstanten Farbwerten aus, und sendet die Ergebnisse der Rastereinteilung direkt an die ROP-Einheit für die Farbmischung, wodurch die Pixel-Schattierungseinheit, die Textureinheit und die STRI-Einheit umgangen werden. In einem Umgehungsmodus für Gradientenfarbe berechnet eine Festkomma-Texturkoordinateneinheit innerhalb einer Rastereinheit variierende Gradientenfarben für ein zweidimensionales Gradientenobjekt in linearer Weise, das in der Ebene des Bilderzeugungsziels zu erzeugen ist. Die Rastereinheit führt eine Rastereinteilung an dem zweidimensionalen Objekt mit Gradientenfarbe mit entsprechenden Gradientenfarben aus und sendet die Ergebnisse der Rastereinteilung einschließlich der Gradientenfarbe direkt zu der ROP-Einheit für die Farbmischung, wodurch die Pixel-Schattierungseinheit, die Textureinheit und die STRI-Einheit umgangen werden.
  • Ein Vorteil der hierin bereitgestellten Techniken besteht darin, dass eine Grafikverarbeitungs-Pipeline konfiguriert werden kann, um zweidimensionale Objekte für die Anzeige zu zeichnen, ohne dass die Pixel-Schattierungseinheit verwendet wird, wodurch Leistung eingespart und das Gesamtverhalten verbessert wird. Ein weiterer Vorteil der hierin bereitgestellten Techniken besteht darin, dass ein Grafikbeschleuniger nicht erforderlich ist, um zweidimensionale Objekte zu zeichnen. Daher muss die Grafikverarbeitungs-Pipeline nicht geleert und auf untätig gesetzt werden, während ein Grafikbeschleuniger zweidimensionale Objekte zeichnet, wodurch das Gesamtverhalten verbessert wird. Ein noch weiterer Vorteil der hierin bereitgestellten Techniken besteht darin, dass eine Grafikverarbeitungs-Pipeline konfigurierbar ist, um zweidimensionale Objekte unter Anwendung vorteilhafter Grafikoperationen, etwa Farbmischung, zu zeichnen, um die gesamte Bildqualität zu verbessern.
  • 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änkung: (i) nicht-beschreibbare Speichermedien (beispielsweise Nur-Lese-Speichereinrichtungen in einem Computer, etwa CD-ROM-Disketten, die von einem CD-ROM-Laufwerk lesbar sind, Flash-Speicher, ROM-Chips oder eine andere Art eines nicht flüchtigen Halbleiterspeichers), auf welchen Information permanent gespeichert ist; und (ii) beschreibbare Speichermedien (beispielsweise Disketten in einem Diskettenlaufwerk oder ein Festplattenlaufwerk oder eine andere Art eines Halbleiterspeichers mit wahlfreiem Zugriff), auf welchen änderbare Information gespeichert ist.
  • Die Erfindung ist mit Bezug zu speziellen Ausführungsformen beschrieben worden. Der Fachmann erkennt jedoch, dass diverse Modifizierungen und Änderungen daran vorgenommen werden können, ohne von dem breiteren Grundgedanken und dem Schutzbereich der Erfindung abzuweichen, wie sie in den angefügten Patentansprüchen angegeben ist. Die vorhergehende Beschreibung und die Zeichnungen sind daher als anschaulich und nicht als beschränkend zu betrachten.
  • Daher ist der Schutzbereich der vorliegenden Erfindung durch die folgenden Patentansprüche festgelegt.

Claims (11)

  1. Eine Grafikverarbeitungs-Pipeline, die ausgebildet ist, grafische Objekte zu zeichnen, mit: einer Rastereinheit, die ausgebildet ist, eine Rastereinteilung an einem ersten Grundelement und einem zweiten Grundelement vorzunehmen, um eine erste Gruppe an Rastereinteilungsergebnissen und eine zweite Gruppe an Rastereinteilungsergebnissen zu erzeugen; einer Pixel-Schattierungseinheit, die ausgebildet ist zu ermitteln, dass ein Umgehungsmodus für das erste Grundelement ein Nicht-Umgehungsmodus ist, und eine erste Gruppe an Pixelfarben für die erste Gruppe an Rastereinteilungsergebnissen zu erzeugen; und einer Rasteroperations-(ROP)Einheit, die ausgebildet ist, die erste Gruppe an Pixelfarben und eine zweite Gruppe an Pixelfarben zu empfangen, wobei die zweite Gruppe an Pixelfarben für die zweite Gruppe an Rastereinteilungsergebnissen ist und erzeugt wird, ohne dass die Pixel-Schattierungseinheit Verarbeitungsoperationen an der zweiten Gruppe an Rastereinteilungsergebnissen ausführt.
  2. Die Grafikverarbeitungs-Pipeline nach Anspruch 1, wobei: die Rastereinheit ausgebildet ist zu ermitteln, dass ein Umgehungsmodus für das zweite Grundelements ein texturierter Umgehungsmodus ist, und ein Texturkoordinatengenerator ausgebildet ist, Texturkoordinaten für die zweite Gruppe an Rastereinteilungsergebnissen zu berechnen.
  3. Die Grafikverarbeitungs-Pipeline nach Anspruch 2, wobei der Texturkoordinaten Generator ausgebildet ist, die Texturkoordinaten an eine Textureinheit zu senden.
  4. Die Grafikverarbeitungs-Pipeline nach Anspruch 3, wobei Berechnen der Texturkoordinaten ferner Berechnen der Texturkoordinaten über eine Festkommaarithmetik umfasst.
  5. Die Grafikverarbeitungs-Pipeline nach Anspruch 4, wobei das zweite Grundelement verarbeitet wird, ohne dass eine Geometrie-Verarbeitungseinheit Verarbeitungsoperationen an dem zweiten Grundelement ausführt.
  6. Die Grafikverarbeitungs-Pipeline nach Anspruch 3, wobei die Pixel-Schattierungseinheit ausgebildet ist, untätig zu bleiben, während die zweite Gruppe an Farben erzeugt wird.
  7. Die Grafikverarbeitungs-Pipeline nach Anspruch 1, wobei: die Rastereinheit ausgebildet ist zu bestimmen, dass ein Umgehungsmodus ein Übungsmodus für festgelegte Farbe für das zweite Grundelement ist, und die Rastereinheit ausgebildet ist, eine festgelegte Farbe für die zweite Gruppe an Rastereinteilungsergebnissen zu ermitteln.
  8. Die Grafikverarbeitungs-Pipeline nach Anspruch 7, wobei Erzeugen der zweiten Gruppe an Farben umfasst: Festlegen jeder Farbe in der zweiten Gruppe an Farben derart, dass diese gleich zu der festgelegten Farbe ist.
  9. Die Grafikverarbeitungs-Pipeline nach Anspruch 8, wobei die Rastereinheit ausgebildet ist, die zweite Gruppe an Farben an die ROP-Einheit zu senden, ohne dass weder eine Texturkoordinaten-Generatoreinheit noch eine Textureinheit Verarbeitungsoperationen an der zweiten Gruppe an Farben ausführen.
  10. Die Grafikverarbeitungs-Pipeline nach Anspruch 9, wobei die Pixel-Schattierungseinheit ausgebildet ist, untätig zu bleiben, während die zweite Gruppe an Farben erzeugt wird.
  11. Die Grafikverarbeitungs-Pipeline nach Anspruch 1, wobei: die Rastereinheit ausgebildet ist zu ermitteln, dass ein Umgehungsmodus ein Umgehungsmodus für eine Gradientenfarbe für das zweite Grundelement ist, ein Texturkoordinatengenerator ausgebildet ist, Gradientenfarben zu berechnen, und die Rastereinheit ausgebildet ist, die zweite Gruppe an Farben so festzulegen, dass diese gleich zu den berechneten Gradientenfarben sind.
DE102013020613.8A 2013-03-12 2013-12-15 Umgehung der Pixel-Schattierung für die grafische Bilderzeugung mit geringer Leistung Pending DE102013020613A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/795,693 US9286647B2 (en) 2013-03-12 2013-03-12 Pixel shader bypass for low power graphics rendering
US13/795,693 2013-03-12

Publications (1)

Publication Number Publication Date
DE102013020613A1 true DE102013020613A1 (de) 2014-09-18

Family

ID=51418502

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013020613.8A Pending DE102013020613A1 (de) 2013-03-12 2013-12-15 Umgehung der Pixel-Schattierung für die grafische Bilderzeugung mit geringer Leistung

Country Status (4)

Country Link
US (1) US9286647B2 (de)
CN (1) CN104050706B (de)
DE (1) DE102013020613A1 (de)
TW (1) TWI559729B (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9256976B2 (en) * 2013-07-09 2016-02-09 Intel Corporation Techniques for extracting and displaying partially processed graphics information
WO2015108218A1 (ko) * 2014-01-20 2015-07-23 (주)넥셀 그래픽 처리 장치 및 방법
US9626733B2 (en) 2014-11-24 2017-04-18 Industrial Technology Research Institute Data-processing apparatus and operation method thereof
US11170460B2 (en) * 2014-12-05 2021-11-09 Intel Corporation Dedicated hardware unit to offload blending of values from memory
CN104933752B (zh) * 2015-06-29 2018-08-07 上海兆芯集成电路有限公司 一种计算机系统、图形处理单元及其图形处理方法
US9779542B2 (en) 2015-09-25 2017-10-03 Intel Corporation Apparatus and method for implementing flexible finite differences in a graphics processor
CN105513003B (zh) * 2015-12-11 2018-10-26 中国航空工业集团公司西安航空计算技术研究所 一种图形处理器统一染色器阵列体系结构
US10089708B2 (en) * 2016-04-28 2018-10-02 Qualcomm Incorporated Constant multiplication with texture unit of graphics processing unit
US9953395B2 (en) * 2016-08-29 2018-04-24 Intel Corporation On-die tessellation distribution
US9984434B1 (en) * 2016-09-23 2018-05-29 Apple Inc. Techniques to derive efficient conversion and/or color correction of video data
KR20180070314A (ko) * 2016-12-16 2018-06-26 삼성전자주식회사 그래픽스 처리 장치 및 그래픽스 처리 장치에서 그래픽스 파이프라인을 처리하는 방법
US10579121B2 (en) * 2017-04-01 2020-03-03 Intel Corporation Processor power management
US10706612B2 (en) * 2017-04-01 2020-07-07 Intel Corporation Tile-based immediate mode rendering with early hierarchical-z
US10109078B1 (en) * 2017-04-10 2018-10-23 Intel Corporation Controlling coarse pixel size from a stencil buffer
US10474408B2 (en) 2017-09-07 2019-11-12 Apple Inc. Image data processing pipeline bypass systems and methods
US11195308B2 (en) * 2018-12-05 2021-12-07 Sony Group Corporation Patcher tool
CN111105477B (zh) * 2019-11-25 2023-04-28 航天科技控股集团股份有限公司 全液晶仪表2d虚拟指针绘制方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6016151A (en) 1997-09-12 2000-01-18 Neomagic Corp. 3D triangle rendering by texture hardware and color software using simultaneous triangle-walking and interpolation for parallel operation
KR100519779B1 (ko) * 2004-02-10 2005-10-07 삼성전자주식회사 깊이영상기반 3차원 그래픽 데이터의 고속 시각화 방법 및장치
US7385609B1 (en) 2004-11-02 2008-06-10 Nvidia Corporation Apparatus, system, and method for increased processing flexibility of a graphic pipeline
CN1928918B (zh) * 2005-10-14 2012-10-10 威盛电子股份有限公司 图形处理装置及于图形处理装置中执行着色操作的方法
US9135017B2 (en) 2007-01-16 2015-09-15 Ati Technologies Ulc Configurable shader ALU units
US8325184B2 (en) 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof

Also Published As

Publication number Publication date
US20140267318A1 (en) 2014-09-18
TWI559729B (zh) 2016-11-21
CN104050706B (zh) 2017-07-07
US9286647B2 (en) 2016-03-15
TW201448564A (zh) 2014-12-16
CN104050706A (zh) 2014-09-17

Similar Documents

Publication Publication Date Title
DE102013020613A1 (de) Umgehung der Pixel-Schattierung für die grafische Bilderzeugung mit geringer Leistung
DE102013020614A1 (de) Mit Mehrfachauflösung konsistente Rastereinteilung
DE102013017639B4 (de) Zwischenspeicherung von adaptiv dimensionierten Cache-Kacheln in einem vereinheitlichten L2-Cache-Speicher mit Oberflächenkomprimierung
DE102013017640B4 (de) Verteilte gekachelte Zwischenspeicherung
DE102013020807A1 (de) Handhabung von nachgeordneten Z-Abdeckungsdaten in Rasteroperationen
DE102013020810A1 (de) Effiziente Super-Abtastung mit Schattierungs-Strängen pro Pixel
DE102013018139A1 (de) Technik zur Speicherung gemeinsamer Vertices
DE102013022257A1 (de) Programmierbares Mischen in mehrsträngigen Verarbeitungseinheiten
DE102018132468A1 (de) Multi-gpu-frame-rendern
DE102016122297A1 (de) Mehrfach-Durchlauf-Rendering in einer Bildschirm-Raum-Pipeline
DE102013018445A1 (de) Festlegung eines nachgeordneten Bilderzeugungszustands in einer vorgeordneten Schattierungseinheit
DE102013020966B4 (de) Leistungseffiziente Attribut-Handhabung für Parkettierungs- und Geometrie-Schattierungseinheiten
DE102013018136A1 (de) Technik zur Speicherung gemeinsamer Vertices
DE102013020968A1 (de) Technik zum Zugreifen auf einen inhaltsadressierbaren Speicher
DE102018114286A1 (de) Durchführen einer Traversierungs-Stack-Komprimierung
DE102013017981A1 (de) Optimierung einer Dreieck-Topologie für Pfad-Bilderzeugung
DE102012211670A1 (de) Simultanes Unterbreiten an eine Mehr-Produzenten-Queue mittels mehrerer Threads
DE102013020967B4 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE102013021046A1 (de) Erzeugung fehlerbefreiter Voxel-Daten
DE102013020485A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE102008026431A1 (de) Extrapolation von nicht residenten Mipmap-Daten unter Verwendung residenter Mipmap-Daten
DE112017001703T5 (de) Verfahren und Vorrichtung zum effizienteren Ray-Tracing von instanziierter Geometrie
DE112017003234T5 (de) Reduzieren von Speicherzugrifflatenzen während der Strahltraversierung
DE102013019333A1 (de) Registerzuweisung für als cluster vorliegende mehrebenen-registerdaten
DE102020121814A1 (de) Vorrichtung und Verfahren zum Verwenden von Dreieckspaaren und gemeinsam genutzten Transformationsschaltungen zum Verbessern der Strahlverfolgungsleistung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06T0001000000

Ipc: G06T0015000000

R082 Change of representative

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

R016 Response to examination communication