DE102015002581A1 - Mapping a multi-rate harm to monolithic programs - Google Patents

Mapping a multi-rate harm to monolithic programs Download PDF

Info

Publication number
DE102015002581A1
DE102015002581A1 DE102015002581.3A DE102015002581A DE102015002581A1 DE 102015002581 A1 DE102015002581 A1 DE 102015002581A1 DE 102015002581 A DE102015002581 A DE 102015002581A DE 102015002581 A1 DE102015002581 A1 DE 102015002581A1
Authority
DE
Germany
Prior art keywords
pixel
coarse
shading
group
processor
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
DE102015002581.3A
Other languages
German (de)
Inventor
Prasoonkumar Surti
Tomasz Janczak
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/492,471 external-priority patent/US9905046B2/en
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102015002581A1 publication Critical patent/DE102015002581A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Abstract

Beim Mehrratenshading wird eine Grobratenshadingphase zu einer existierenden Pixelratenphase hinzugefügt, um die Leistungsfähigkeit bei einem minimalen Einfluss auf die Bildqualität erheblich zu verbessern. Zwei Shadingphasen, die bei unterschiedlichen Raten bewertet werden, können auf ein monolithisches Programm abgebildet werden, das auf Prozessorgraphik-einzelner-Befehl-mehrere-Daten-(SIMD)-Maschinen läuft. Gemäß einer Ausführungsform ermöglicht das Mehrratenshading einen einzelnen Renderdurchgang zum Ausführen eines Shadingcodes bei einer oder mehreren verschiedenen Raten: pro Pixelgruppe, pro Pixel und pro Abtastwert.In multi-rate shading, a coarse data hading phase is added to an existing pixel rate phase to significantly improve performance with minimal impact on image quality. Two shading phases, valued at different rates, can be mapped to a monolithic program running on single-instruction-command-multiple-data-processor (SIMD) machines. In one embodiment, the multi-rate shading enables a single rendering pass to execute a shading code at one or more different rates: per pixel group, per pixel and per sample.

Description

Querverweis auf verwandte AnmeldungCross-reference to related application

Dies ist eine nicht vorläufige Anmeldung, welche die Priorität der am 3. April 2014 eingereichten vorläufigen Anmeldung mit der laufenden Nummer 61/974 602, die hier ausdrücklich durch Verweis aufgenommen ist, beansprucht.This is a non-provisional application claiming priority of provisional application Serial No. 61 / 974,602 filed April 3, 2014, which is expressly incorporated herein by reference.

Hintergrundbackground

Ein erheblicher Teil der Leistungskosten in einer 3D-Pipeline ist auf das Pixelshading zurückzuführen. Höhere Anzeigeauflösungen und eine höhere Graphikqualität, insbesondere bei handgehaltenen Vorrichtungen, sind mit der Anforderung des Minimierens der Leistungsabfuhr unvereinbar. Es wäre daher besonders vorteilhaft, Pixelshader wirksamer arbeiten zu lassen.A significant part of the performance costs in a 3D pipeline is attributed to pixel shading. Higher display resolutions and higher graphics quality, especially in hand-held devices, are incompatible with the requirement of minimizing power dissipation. It would therefore be particularly advantageous to make pixel shaders work more effectively.

Das Grobpixelsshading nutzt die Tatsache aus, dass eine geometrische Verdeckung typischerweise Einzelheiten mit höherer Frequenz als beim Oberflächenshading herbeiführt, und das Shading wird dabei bei einer niedrigeren Rate als beim Sichtbarkeitstesten ausgeführt. Das Grobpixelshading ist für Anzeigen mit einer hohen Pixeldichte gut geeignet, wo die Wirkungen verringerter Shadingraten aus normalen Betrachtungsabständen kaum wahrnehmbar sind. Die Shadingraten können in Bildschirmgebieten weiter verringert sein, welche verschwommen oder auf andere Weise für den Benutzer weniger wahrnehmbar sind, beispielsweise in Gebieten, die durch Bewegungs- oder Defokussierungsunschärfe beeinflusst werden, oder in Gebieten außerhalb der fovealen Sicht des Benutzers.Coarse pixel shading takes advantage of the fact that geometric occlusion typically causes details of higher frequency than surface shading, and shading is performed at a lower rate than in visibility testing. Coarse pixel shading is well-suited for displays with a high pixel density where the effects of reduced shading rates from normal viewing distances are barely perceptible. The shading rates may be further reduced in screen areas which are blurred or otherwise less noticeable to the user, for example in areas affected by motion or defocusing blur, or in areas outside the user's foveal vision.

Es ist schwierig, diese Gelegenheiten auf aktuellen Graphikarchitekturen auszunutzen, bei denen Shader bei einer Pro-Pixel- oder Pro-Abtastwert-Rate arbeiten. Die Shadingraten können durch Ändern der Rahmenpufferauflösung grob gesteuert werden, dies ermöglicht jedoch keine feinkörnigere Änderung der Shadingraten, beispielsweise pro Objekt, pro Dreieck oder pro Bildgebiet, welche noch mit der Sichtbarkeitsabtastrate gekoppelt sind.It is difficult to capitalize on these opportunities on current graphics architectures where shaders operate at a per-pixel or per-sample rate. The shading rates can be coarsely controlled by changing the frame buffer resolution, but this does not allow for a finer-grained change in the shading rates, for example, per object, per triangle, or per image area, which are still coupled to the visibility sample rate.

Das Grobpixelshading (CPS) ist eine Architektur zum Ändern von Shadingraten in einer Rasterisierungspipeline, während die Sichtbarkeitsabtastrate konstant gehalten wird.Coarse pixel shading (CPS) is an architecture for changing shading rates in a rasterization pipeline while keeping the visibility sampling rate constant.

Es wurden viele Ansätze vorgeschlagen, um die Shadingwirksamkeit durch Abtasten des Shadings mit einer niedrigeren Rate als der Sichtbarkeitsabtastrate zu verbessern. Mehrere-Abtastwerte-Anti-Aliasing (MSAA) ist eine solche Technik, die häufig durch Graphikprozessorhardware unterstützt wird. Mit MSAA werden mehrere Abdeckungsabtastwerte (auch als Sichtbarkeitsabtastwerte bezeichnet) pro Pixel gespeichert, Pixelshader werden jedoch nur einmal für jedes von einem primitiven Element abgedeckte Pixel ausgeführt. Dies steht im Gegensatz zur Überabtastung, wobei Shader einmal pro abgedecktem Abtastwert ausgeführt werden.Many approaches have been proposed to improve shading efficiency by sampling the shading at a lower rate than the visibility sampling rate. Multiple-sample anti-aliasing (MSAA) is one such technique often supported by graphics processor hardware. MSAA stores multiple coverage samples (also called visibility scans) per pixel, but pixel shaders are executed only once for each pixel covered by a primitive. This is in contrast to oversampling, where shaders are executed once per covered sample.

Kurzbeschreibung der ZeichnungBrief description of the drawing

Einige Ausführungsformen werden mit Bezug auf die folgenden Figuren beschrieben. Es zeigen:Some embodiments will be described with reference to the following figures. Show it:

1 ein Grobviereckpixellayout und seine SIMD-Ausführungssequenz mit einer Breite von 4 gemäß einer Ausführungsform, 1 a coarse square pixel layout and its 4-width SIMD execution sequence according to one embodiment,

2 ein weiteres Grobpixellayout und seine SIMD-Ausführungssequenz mit einer Breite von 4 gemäß einer Ausführungsform, 2 another coarse pixel layout and its 4-width SIMD execution sequence according to one embodiment,

3A ein Flussdiagramm für einen Kern zum Behandeln sowohl des Grobshadings als auch des Pixelratenshadings gemäß einer Ausführungsform, 3A 10 is a flow chart for a kernel for handling both coarse and pixel rate harming according to one embodiment;

3B ein Flussdiagramm für einen Festfunktionsbeschleuniger gemäß einer Ausführungsform, 3B a flowchart for a solid-state accelerator according to an embodiment,

4 eine Pipelineabstraktion von Nachrasterisierungsstufen, 4 a pipeline abstraction of rasterization levels,

5 einen Abschnitt einer Graphikpipeline für ein Grobpixelshading, 5 a section of a graphics pipeline for coarse pixel shading,

6 ein Mehrratenshading mit einem Grobpixelviereck, geplant in einem Einzel-Thread auf einem SIMD-Prozessor mit einer Breite von 4, 6 a multi-rate shading with a coarse pixel quadrangle, planned in a single thread on a SIMD processor with a width of 4,

7 ein Blockdiagramm eines Datenverarbeitungssystems gemäß einer Ausführungsform, 7 a block diagram of a data processing system according to an embodiment,

8 ein Blockdiagramm des in 7 dargestellten Prozessors gemäß einer Ausführungsform, 8th a block diagram of the in 7 represented processor according to an embodiment,

9 ein Blockdiagramm des Graphikprozessors aus 7 gemäß einer Ausführungsform, 9 a block diagram of the graphics processor 7 according to an embodiment,

10 ein Blockdiagramm einer Graphikverarbeitungsmaschine gemäß einer Ausführungsform, 10 a block diagram of a graphics processing machine according to an embodiment,

11 ein Blockdiagramm eines Graphikprozessors gemäß einer anderen Ausführungsform, 11 a block diagram of a graphics processor according to another embodiment,

12 eine Thread-Ausführungslogik für eine Ausführungsform, 12 a thread execution logic for an embodiment,

13 ein Blockdiagramm eines Graphikprozessorausführungseinheitsbefehlsformats gemäß einer Ausführungsform und 13 a block diagram of a graphics processor execution unit command format according to an embodiment and

14 eine Graphiksoftwarearchitektur für eine Ausführungsform. 14 a graphics software architecture for one embodiment.

Detaillierte BeschreibungDetailed description

Beim Grobpixelshading (CPS) werden das Shading und die Sichtbarkeit in einer entkoppelten Weise abgetastet. Das Pixelshading wird bequem über ein Bildraumshadinggitter bewertet und in einem Memorisierungs-Cache zur Wiederverwendung für eine reguläre oder stochastische Rasterisierung (SR) zwischengespeichert. Bei einem anderen Grobpixelabtastansatz wird das Shading in einem parametrischen Fleckraum in einer optimierten Reyes-Architektur gleichmäßig abgetastet. Diese Techniken ermöglichen Shadinggitter mit einem beliebigen Gitterabstand, wodurch gemäß einigen Ausführungsformen eine flexiblere Steuerung der Shadingrate ermöglicht wird.Coarse pixel shading (CPS) scans the shading and visibility in a decoupled manner. The pixel shading is conveniently evaluated via an image space fading grid and cached in a reuse memorization cache for regular or stochastic rasterization (SR). In another coarse pixel sampling approach, the shading in a parametric patch space is uniformly sampled in an optimized Reyes architecture. These techniques enable shading gratings with any grid spacing, thereby allowing for more flexible control of the shading rate, in accordance with some embodiments.

Beim Mehrratenshading wird eine Grobratenshadingphase zur existierenden Pixelratenphase hinzugefügt, um gemäß einigen Ausführungsformen die Leistungsfähigkeit bei einem minimalen Einfluss auf die Bildqualität erheblich zu verbessern. Zwei Shadingphasen, die bei verschiedenen Raten bewertet werden, können auf ein monolithisches Programm abgebildet werden, das auf Prozessorgraphik-Einzelner-Befehl-mehrere-Daten-(SIMD)-Maschinen läuft. Ein monolithisches Programm ist eine einschichtige Software, deren Ausführung nicht von einem anderen Programm abhängt. Gemäß einer Ausführungsform ermöglicht ein Mehrratenshading, dass ein einziger Renderdurchgang einen Shadingcode bei einer oder mehreren verschiedenen Raten ausführt: pro Pixelgruppe, pro Pixel und pro Abtastwert.In multi-rate shading, a coarse data hading phase is added to the existing pixel rate phase to significantly improve performance with minimal impact on image quality, in accordance with some embodiments. Two shading phases, valued at different rates, can be mapped onto a monolithic program running on processor graphics single instruction multiple data (SIMD) machines. A monolithic program is a one-tier software whose execution does not depend on another program. In one embodiment, multi-rate shading allows a single rendering pass to execute a shading code at one or more different rates: per pixel group, per pixel and per sample.

Ein neuer Assembly-Befehl (Schnittstelle zum Festfunktionshardwarebeschleuniger) ermöglicht eine schnelle Umschaltung der Programmausführung von der Grobrate zur Pixelrate innerhalb desselben auf der SIMD-Maschine laufenden Kernprogramms.A new assembly command (hard-function hardware accelerator interface) allows for rapid switching of program execution from the rough rate to the pixel rate within the same core program running on the SIMD engine.

Die neue Festfunktionslogik beschleunigt gemäß einigen Ausführungsformen die Grob-zu-Pixel-Abbildung, die eine viel geringere Komplexität/viel geringere Kosten aufweist als die Logik, die erforderlich ist, um getrennte Programme zu verwalten. Gleichzeitig ist der Softwarezusatzaufwand für die Verwendung der neuen Logik minimal, so dass die Leistungsfähigkeit monolithischer Programme gemäß einigen Ausführungsformen nicht behindert wird.The new hard-function logic, in some embodiments, speeds up the coarse-to-pixel mapping, which has a much lower complexity / cost than the logic required to manage separate programs. At the same time, the software overhead for using the new logic is minimal, so that the performance of monolithic programs is not hindered according to some embodiments.

1 zeigt ein Beispiel einer Mehrratenshaderausführung für ein Grobpixelvierecklayout von 1×2-Pixeln, die für verschiedene Layouts von Grobpixeln auf ein SIMD-Programm abgebildet werden. Ein Grobpixel ist eine Gruppe von Pixeln, die sich das Ergebnis einer einzelnen Grobpixelshaderbewertung teilen. 2 zeigt ein Beispiel einer Mehrratenshaderausführung für ein 2×2-Grobpixelvierecklayout. Die Diagramme zeigen aus Gründen der Einfachheit ein SIMD-Viereck mit einer Breite von 4, diese Lösung gilt jedoch für Vierecke beliebiger Zahlen, die auf breitere SIMD-Maschinen abgebildet werden. Die Zahlen (0, 1, 2, 3) repräsentieren Grobpixel, während die Großbuchstaben (A, B, C, ...) Pixel repräsentieren. Die linke Seite jedes Diagramms zeigt eine zweidimensionale Ansicht von Pixeln nach der Rasterisierung, wobei Zahlen/Buchstaben in einem helleren Text nicht beleuchtete Pixel bezeichnen. Die rechte Seite zeigt die Ausführungsreihenfolge von Phasen in einem monolithischen Programm auf einer SIMD-Maschine. 1 Figure 12 shows an example of a multi-rate shader execution for a coarse pixel quad layout of 1x2 pixels mapped to a SIMD program for different coarse pixel layouts. A coarse pixel is a group of pixels that share the result of a single coarse pixel shader evaluation. 2 Figure 15 shows an example of multi-rate shader execution for a 2 x 2 coarse pixel quad layout. For simplicity, the diagrams show a 4-width SIMD rectangle, but this solution applies to quadrilaterals of arbitrary numbers mapped to wider SIMD machines. The numbers (0, 1, 2, 3) represent coarse pixels, while the capital letters (A, B, C, ...) represent pixels. The left side of each diagram shows a two-dimensional view of pixels after rasterization, with numbers / letters in a lighter text denoting unilluminated pixels. The right side shows the execution order of phases in a monolithic program on a SIMD machine.

In der ersten Phase (”Grobphase”) führen alle vier SIMD-Bahnen Grobratenbefehle für ein Grobpixelviereck aus. In der nächsten Phase (Pixelphase #1) werden dieselben SIMD-Bahnen verwendet, um nachfolgende Gruppen von Pixelvierecken auszuführen, die durch das grobe Viereck bedeckt sind. Der Satz von Pixelshadervierecken und ihre Abbildung auf Grobpixel hängen sowohl vom Grobpixellayout (beispielsweise 1×1, 1×2, 2×1, 2×2, 2×4, 4×2, 4×4) als auch von der Rasterisierungsmaske (einige Vierecke können vollständig unbeleuchtet sein) ab. Ferner kann die SIMD-Ausführungsmaske für jede Gruppe verschieden sein. In the first phase ("coarse phase"), all four SIMD paths execute coarse-pixel commands for a coarse-pixel quadrilateral. In the next phase (pixel phase # 1), the same SIMD paths are used to perform subsequent groups of pixel quads covered by the coarse quad. The set of pixel shader quads and their mapping to coarse pixels depend on both the coarse pixel layout (e.g., 1 × 1, 1 × 2, 2 × 1, 2 × 2, 2 × 4, 4 × 2, 4 × 4) and the rasterization mask (some Squares can be completely unlighted). Furthermore, the SIMD execution mask may be different for each group.

In Phase 1, wobei die ersten drei Pixel beleuchtet sind und das vierte Pixel nicht beleuchtet ist, ist die Ausführungsmaske (1, 1, 1, 0), so dass das nicht beleuchtete Pixel nicht ausgeführt wird. Die Grob-zu-Pixel-Abbildung für die Phase #1 ist (0, 1, 0, 1), oder Grobpixel 0 wird auf Pixel A abgebildet, Grobpixel 1 wird auf Pixel B abgebildet, Pixel C wird auch auf Grobpixel 0 abgebildet und Pixel D wird auf Grobpixel 1 abgebildet. Für die Phase #2 ist die Grob-zu-Pixel-Abbildung 2, 3, 2, 3. All diese Informationsbestandteile sind bei der Shaderkompilierung unbekannt, was zu einem erheblichen Softwarezusatzaufwand beitragen würde, falls der Grob-zu-Pixel-Übergang unter Verwendung eines existierenden Satzes von Assembly-Befehlen in Software implementiert werden würde.In Phase 1, where the first three pixels are illuminated and the fourth pixel is not illuminated, the execution mask is (1, 1, 1, 0) so that the unilluminated pixel is not executed. The coarse-to-pixel mapping for phase # 1 is (0, 1, 0, 1), or coarse pixel 0 is mapped to pixel A, coarse pixel 1 is mapped to pixel B, pixel C is also mapped to coarse pixel 0 and Pixel D is mapped to coarse pixel 1. For phase # 2, the coarse-to-pixel map is 2, 3, 2, 3. All of these pieces of information are unknown in shader compilation, which would add significant software overhead if the coarse-to-pixel transition were used an existing set of assembly instructions would be implemented in software.

Die Ausführungssequenzen auf der rechten Seite in den 1 und 2 zeigen ein monolithisches Programm unter Verwendung eines neuen Assembly-Befehls (Grob-zu-Pixel-Raten-Schalten) zum Verringern des mit Phasenübergängen verbundenen Softwarezusatzaufwands. Der neue Befehl nimmt Pixelgruppen_Kennung als Eingabe und gibt für jede Pixelgruppe Folgendes zurück:

  • Pixel_Maske – Angabe, welche Pixel in jeder Gruppe beleuchtet sind
  • Pixel_zu_Grob_Abbildung – Angabe eines übergeordneten Grobpixels für jedes Pixel (zum Vermischen von Zwischenphasendaten von Grobphasenausgaben verwendet)
  • Pixel_Raten_Schwerpunkt – Pixelort des Schwerpunkts zum Bewerten von Eingangsattributen
  • Nächste_Gruppe_Kennung – Kennung der nächsten zu verarbeitenden Pixelgruppe
The execution sequences on the right in the 1 and 2 show a monolithic program using a new assembly instruction (coarse-to-pixel rate switching) to reduce software overhead associated with phase transitions. The new command takes pixel_group_identifier as input and returns the following for each pixel group:
  • Pixel_Mask - specifies which pixels in each group are illuminated
  • Pixel_to_Grob_map - specifying a parent coarse pixel for each pixel (used to blend interphase data from coarse phase outputs)
  • Pixel_Rate_Point - Pixel location of center of gravity for evaluating input attributes
  • Next_group_identifier - Identifier of the next pixel group to be processed

Der neue Befehl ist eine Schnittstelle zum Festfunktionshardwarebeschleuniger. Der Beschleuniger bestimmt eine zweidimensionale Abbildung grober Vierecke auf Pixelvierecke und verwaltet die veränderliche Erweiterung dieser Abbildung, weil die Anzahl der zu verarbeitenden Pixelvierecke sowohl vom Grobvierecklayout als auch von der Rasterisierungsmaske abhängt. Insbesondere unterdrückt der Beschleuniger ganze Vierecke, falls alle Pixel nicht beleuchtet sind. Mit diesem Ansatz abstrahiert ein monolithisches Shaderprogramm von spezifischen Grobvierecklayouts und Abbildungen und verarbeitet Pixelgruppen in einer Schleife, bis der Hardwarebeschleuniger informiert, dass die Verarbeitung abgeschlossen ist (Nächste_Gruppe_Kennung = 0).The new command is an interface to the hard-function hardware accelerator. The accelerator determines a two-dimensional mapping of coarse squares onto pixel quadrilaterals and manages the variable extension of that image because the number of pixel quads to be processed depends on both the coarse square layout and the rasterization mask. In particular, the accelerator suppresses whole squares if all the pixels are not illuminated. With this approach, a monolithic shader program abstracts from specific coarse quad layouts and mappings and loops pixel groups until the hardware accelerator informs that processing is complete (Next_Group_Key = 0).

Figure DE102015002581A1_0002
Figure DE102015002581A1_0002

Gemäß einigen Ausführungsformen führt ein einziger Kern Programme sowohl für das Grob- als auch das Pixelratenshading aus. Gemäß einigen Ausführungsformen kann die SIMD-Maschine verwendet werden, in welcher die gleichen Bahnen sowohl für Grob- als auch für Pixelvierecke, die von den Grobvierecken bedeckt sind, verwendet werden.According to some embodiments, a single core executes programs for both coarse and pixel rate shading. According to some embodiments, the SIMD engine may be used in which the same paths are used for both coarse and pixel quads covered by the rough quads.

Die in 3A dargestellte Sequenz kann in Software, Firmware und/oder Hardware verwirklicht werden. Bei Software- und Firmwareausführungsformen kann sie durch computerausgeführte Befehle implementiert werden, die in einem oder mehreren nicht flüchtigen computerlesbaren Medien in der Art eines magnetischen, optischen oder Halbleiterspeichers gespeichert sind.In the 3A Sequence shown can be realized in software, firmware and / or hardware. In software and firmware embodiments, it may be implemented by computer-executed instructions stored in one or more non-transitory computer-readable media such as a magnetic, optical, or semiconductor memory.

In der Sequenz aus 3A wird, wie in Block 10 angegeben, eine Grobphase für alle Gruppen oder Vierecke implementiert. Dieser folgt in Block 12 die Implementation einer Pixelphase für jede Gruppe unter Verwendung der Grob-zu-Pixel-Abbildung und der Ausführungsmaske, so dass die gleichen SIMD-Bahnen verwendet werden können, um sowohl Grobvierecke als auch Pixelvierecke, die von den Grobvierecken bedeckt werden, auszuführen.In the sequence 3A will, as in block 10 indicated, a coarse phase implemented for all groups or squares. This follows in block 12 the implementation of a pixel phase for each group using the coarse-to-pixel mapping and the execution mask so that the same SIMD paths can be used to perform both rough squares and pixel squares covered by the coarse squares.

Dann empfängt die Sequenz eine Pixelgruppenkennung (Pixelgruppen_Kennung) (Block 14), um eine bestimmte Pixelgruppe in der Art eines Vierecks zu identifizieren. Die Ausführungsmaske wird auf der Grundlage der Pixelbeleuchtungsmaske, die durch den in 3B dargestellten Festfunktionsbeschleuniger bestimmt wird, für die aktuelle Pixelgruppe festgelegt (Block 16). Dann wird die Grob-zu-Pixel-Abbildung verwendet, um benutzerdefinierte Zwischenstufendaten zwischen entsprechenden Grob- und Pixelphasen zu übergeben, wie in Block 18 angegeben ist. Die Pro-Pixel-Eingangsattributwerte werden bestimmt, und die Pixelratenshadingphase wird für jede Gruppe in Block 20 ausgeführt. In Block 22 wird die nächste zu verarbeitende Gruppe identifiziert.Then, the sequence receives a pixel group identifier (pixel group identifier) (block 14 ) to identify a particular pixel group in the manner of a quadrilateral. The execution mask is based on the pixel lighting mask represented by the in 3B fixed function accelerator determined for the current pixel group (block 16 ). Then, the coarse-to-pixel mapping is used to pass custom interstitial data between corresponding coarse and pixel phases, as in block 18 is specified. The per-pixel input attribute values are determined, and the pixel rate shading phase becomes block for each group 20 executed. In block 22 the next group to be processed is identified.

Gemäß einigen Ausführungsformen kann ein Festfunktionsbeschleuniger in Software, Firmware und/oder Hardware implementiert werden. Bei Software- und Firmwareausführungsformen kann der Beschleuniger durch computerlesbare Befehle implementiert werden, die in einem oder mehreren nicht flüchtigen computerlesbaren Medien wie magnetischen, optischen oder Halbleiterspeichern gespeichert sind. According to some embodiments, a fixed-function accelerator may be implemented in software, firmware, and / or hardware. In software and firmware embodiments, the accelerator may be implemented by computer-readable instructions stored in one or more non-transitory computer-readable media, such as magnetic, optical, or semiconductor memories.

Die in 3B dargestellte Sequenz 30 kann damit beginnen, dass eine Kennung einer neuen Pixelgruppe empfangen wird, wie in Block 32 angegeben ist. Sie bestimmt eine zweidimensionale Grob-zu-Pixel-Abbildung. Auf dieser Grundlage bestimmt sie eine neue Pixelgruppe, wobei eine variable Erweiterung und Unterdrückung verwaltet wird. Für dieses Viereck wird bestimmt, welche Pixel beleuchtet sind, wie in Block 34 angegeben ist. Dann wird die Grob-zu-Pixel-Abbildung für die Gruppe definiert und werden die Pixelorte und die baryzentrische Form in Block 36 bestimmt. Die 2D-Abbildung von Grobpixeln auf Pixelvierecke kann bestimmt werden, wie in Block 38 angegeben ist. Dann wird die variable Erweiterung der Abbildung verwaltet, wie in Block 40 angegeben ist. Schließlich werden ganze Vierecke unterdrückt, falls alle Pixel unbeleuchtet sind, wie in Block 42 angegeben ist. Der Ablauf wird zyklisch fortgesetzt, wenn neue Pixelgruppen empfangen werden. Der Beschleuniger gibt die neue Pixelgruppe, ihre Ausführungsmaske (Block 16 aus 3A) und die Grob-zu-Pixel-Abbildung für diese Gruppe (Block 18 aus 3A) zurück.In the 3B represented sequence 30 may begin by receiving an identifier of a new pixel group, as in block 32 is specified. It determines a two-dimensional, coarse-to-pixel mapping. On this basis, it determines a new pixel group, managing a variable extension and suppression. For this quadrilateral, it is determined which pixels are illuminated, as in block 34 is specified. Then the coarse-to-pixel mapping for the group is defined, and the pixel locations and the barycentric shape become block 36 certainly. The 2D mapping from coarse pixels to pixel quads can be determined as in block 38 is specified. Then the variable extension of the image is managed, as in block 40 is specified. Finally, entire squares are suppressed if all pixels are unlit, as in block 42 is specified. The process continues cyclically when new pixel groups are received. The accelerator gives the new pixel group, its execution mask (block 16 out 3A ) and the coarse-to-pixel mapping for this group (block 18 out 3A ) back.

Die einzigartige Schnittstelle und Zerlegung der Funktionalität zwischen Software (SIMD-Programm) und Hardware (Festfunktionsbeschleuniger) ermöglicht gemäß einer Ausführungsform eine wirksame Abbildung von Mehrratenshadingphasen auf ein monolithisches SIMD-Programm. Gemäß einer Ausführungsform verringert dieser Ansatz erheblich die Hardwarekomplexität (Logik, Puffern) und beeinträchtigt die Leistungsfähigkeit nicht.The unique interface and decomposition of functionality between software (SIMD program) and hardware (fixed function accelerator), according to one embodiment, enables efficient mapping of multi-rate skipping phases to a monolithic SIMD program. In one embodiment, this approach significantly reduces hardware complexity (logic, buffers) and does not degrade performance.

Zum Ermöglichen eines Shadings mit einer Rate, die niedriger als einmal pro Pixel ist, wird der Begriff eines Grobpixels (CP) eingeführt. Ein CP ist eine Gruppe von Nx×Ny Pixeln, die sich das Ergebnis einer einzigen Grobpixelshader-(CPS)-Bewertung teilen. Dies ähnelt der Art, wie sich mehrere Sichtbarkeitsproben eine einzige Pixelshaderbewertung mit MSAA teilen, wobei der Unterschied darin besteht, dass die Shadingrate durch Ändern der CP-Größe geändert werden kann. Gruppen von 2×2-CP, die als Grobvierecke (CQ) bezeichnet werden, werden zu einer Zeit geshadet, um das Berechnen von Ableitungen unter Verwendung endlicher Differenzen zu erleichtern.To allow shading at a rate lower than once per pixel, the notion of a coarse pixel (CP) is introduced. A CP is a set of N x N y pixels sharing the result of a single coarse pixel shader (CPS) rating. This is similar to the way multiple visibility samples share a single pixel shard score with MSAA, the difference being that the shading rate can be changed by changing the CP size. Groups of 2 × 2 CP, called coarse squares (CQ), are shaded at one time to facilitate calculating derivatives using finite differences.

Viele Anwendungen können von der Fähigkeit profitieren, Shadingraten über verschiedene Gebiete des Bildschirms zu variieren. Um eine solche Variation der Shadingrate zu ermöglichen, kann der Bildschirm in Kacheln mit der Größe Tx×Ty unterteilt werden, während für jede Kachel ein verschiedener Wert der CP-Größe erlaubt wird. Jede Kachel wird auf ein Shadinggitter von CQ mit der ausgewählten CP-Größe abgebildet.Many applications can benefit from the ability to vary shading rates across different areas of the screen. To allow such variation of the shading rate, the screen may be divided into tiles of size T x x T y , while for each tile a different value of CP size is allowed. Each tile is mapped to a CQ shading grid with the selected CP size.

Eine vereinfachte entkoppelte Abtasttechnik kann durch Vermeiden überlappender Shadinggitter erreicht werden, wodurch gewährleistet wird, dass jedes Pixel eindeutig zu nur einem CQ gehört. Dies kann erreicht werden, indem die CP-Größen auf einen endlichen Wertesatz beschränkt werden, wodurch gewährleistet wird, dass das Shadinggitter mit den Kachelgrenzen vollkommen ausgerichtet ist. Unter dieser Annahme kann die Shadingtechnik folgendermaßen zusammengefasst werden:

Figure DE102015002581A1_0003
A simplified decoupled sampling technique can be achieved by avoiding overlapping shading lattices, thereby ensuring that each pixel clearly belongs to only one CQ. This can be achieved by limiting the CP sizes to a finite set of values, ensuring that the shading grid is perfectly aligned with the tile boundaries. Under this assumption, the shading technique can be summarized as follows:
Figure DE102015002581A1_0003

Um ein vollkommen ausgerichtetes Gitter von CQ innerhalb einer Kachel zu gewährleisten, können die CP-Größen so beschränkt werden, dass die Kachelgröße ein gemeinsames Vielfaches (beispielsweise das kleinste gemeinsame Vielfache (LCM)) aller erlaubten CQ-Größen ist. To ensure a perfectly aligned grid of CQ within a tile, the CP sizes can be constrained so that the tile size is a common multiple (eg, the least common multiple (LCM)) of all allowed CQ sizes.

Eine kleine Anzahl von Modi, die leicht zu verwenden sind, kann die CP-Größe steuern, diese Modi sind jedoch mächtig genug, um einen Bereich von Anwendungen zu unterstützen. In jedem Fall braucht der Benutzer eine CP-Größe nicht direkt zu spezifizieren, sondern vielmehr ein Paar von CP-Parametern (sx, sy), wodurch die gewünschte CP-Größe spezifiziert wird. Die CP-Parameter werden dann auf die nächstliegende verfügbare CP-Größe quantisiert, welche die angeforderte Shadingrate erfüllt oder überschreitet. Auf der Grundlage des ausgewählten Modus können die CP-Parameter (sx, sy)

  • • anhand Pro-Vertex-Shaderausgaben interpoliert werden,
  • • unter Verwendung des Renderzustands auf einen konstanten Wert gelegt werden oder
  • • als eine radiale Funktion von Bildschirmkoordinaten ausgedrückt werden.
A small number of modes that are easy to use can control CP size, but these modes are powerful enough to support a range of applications. In either case, the user need not directly specify a CP size but rather a pair of CP parameters (s x , s y ), thereby specifying the desired CP size. The CP parameters are then quantized to the nearest available CP size that meets or exceeds the requested shading rate. Based on the selected mode, the CP parameters (s x , s y )
  • • interpolated using pro vertex shader outputs,
  • • be set to a constant value using the rendering state or
  • • expressed as a radial function of screen coordinates.

Das Steuern der CP-Parameter mit einer Shaderausgabe ist sehr flexibel und ermöglicht es, viele Verwendungsfälle auszudrücken.Controlling the CP parameters with a shader output is very flexible and allows many usage cases to be expressed.

Aus Gründen der Einfachheit können konstante CP-Parameter ermöglicht werden. Dies ist das am wenigsten invasive Verfahren, um CPS zu einer existierenden Anwendung hinzuzufügen. Die Fähigkeit, eine radiale Funktion zu verwenden, ist insbesondere für das foveale Rendern aufgenommen. Weil eine radiale Funktion nicht robust unter Verwendung einer linearen Interpolation von Pro-Vertex-Attributen ausgedrückt werden kann, kann ein getrennter Modus für diesen Spezialfall verwendet werden.For the sake of simplicity, constant CP parameters can be enabled. This is the least invasive method to add CPS to an existing application. The ability to use a radial function is especially included for foveal rendering. Because a radial function can not be robustly expressed using linear interpolation of pro-vertex attributes, a separate mode can be used for this special case.

Um stets die erforderliche Shadingrate zu erfüllen, wird die CP-Größe, Nx×Ny, durch Berechnen konservativer Untergrenzen für |sx| und |sy| innerhalb der Kachel bestimmt und auf die nächstgelegene verfügbare CP-Größe abgerundet. Die Verwendung von Absolutwerten ermöglicht hier die Verwendung negativer CP-Parameter für eine Bewegungs- und Defokussierungsunschärfe.To always meet the required shading rate, the CP size, N x x N y , is calculated by computing conservative lower limits for | s x | and | s y | within the tile and rounded to the nearest available CP size. The use of absolute values allows the use of negative CP parameters for a movement and defocusing blur.

Es gibt zwei Quantisierungsquellen von CP-Größen. Erstens wird die CP-Größe nur einmal pro Kachel bewertet. Zweitens wird die CP-Größe auf eine der endlichen verfügbaren CP-Größen quantisiert. Diese beiden Quellen bewirken, dass sich Diskontinuitäten in den CP-Größen von Kachel zu Kachel bewegen, was zu sichtbaren Kachelübergängen führen kann. Um diese Diskontinuitäten zu kompensieren, wird die Detailniveau-(LOD)-Berechnung des Texturabtasters erweitert, um die angeforderte (nicht quantisierte) CP-Größe widerzuspiegeln. Dies kann durch Skalieren der endlichen Differenzen von Texturkoordinaten erfolgen, die für das Berechnen des Textur-LOD-Werts verwendet werden:

Figure DE102015002581A1_0004
wobei δx und δy die endlichen Differenzen der Texturkoordinaten entlang der x- bzw. der y-Achse sind. Die Werte von δx und δy werden anders als die CP-Größe, die einmal pro Kachel bewertet wird, für jedes CP bewertet. Die Kompensation des Textur-LODs erzeugt eine glatte Variation von Bildeinzelheiten, wodurch die Diskontinuitäten in der CP-Größe maskiert werden.There are two quantization sources of CP sizes. First, the CP size is scored only once per tile. Second, the CP size is quantized to one of the finite available CP sizes. These two sources cause discontinuities in the CP sizes to move from tile to tile, which can lead to visible tile transitions. To compensate for these discontinuities, the detail level (LOD) calculation of the texture scanner is extended to reflect the requested (unquantized) CP size. This can be done by scaling the finite differences of texture coordinates used to calculate the texture LOD value:
Figure DE102015002581A1_0004
where δ x and δ y are the finite differences of the texture coordinates along the x and y axes, respectively. The values of δ x and δ y are evaluated for each CP other than the CP size, which is evaluated once per tile. The compensation of the texture LOD produces a smooth variation of image detail, masking the discontinuities in the CP size.

Wenngleich die LOD-Kompensation in vielen Fällen wirksam sein kann, gibt es einige Szenarien, in denen sie nicht anwendbar sein könnte, beispielsweise für prozedural erzeugte Texturen. In diesen Fällen können LOD-Kompensationstechniken möglicherweise im Benutzerraum auf der Grundlage der CP-Größe und CP-Parameter, die als Shadereingaben verfügbar sind, angewendet werden.Although LOD compensation can be effective in many cases, there are some scenarios in which it may not be applicable, such as procedurally generated textures. In these cases, LOD compensation techniques may possibly be applied in user space based on the CP size and CP parameters available as shader inputs.

Das Shading kann mit drei verschiedenen Raten innerhalb desselben Renderdurchgangs ausgeführt werden. Einige der Shaderberechnungen können zu einer niedrigeren Rate als einmal pro Pixel verschoben werden, während bestimmte Hochfrequenzeffekte pro Pixel oder sogar pro Sichtbarkeitsabtastwert bewertet werden können, um das Aliasing zu verringern. Dies ist bei aktuellen Graphikanwendungsprogrammschnittstellen (API) nicht möglich, weil der Pixelshader dafür ausgelegt sein kann, bei der Pixel- oder Abtastrate zu laufen, die beiden einander jedoch ausschließen. Konzeptionell wird die einzelne Pixelshaderstufe der Graphikpipeline in drei verschiedene Phasen unterteilt, nämlich eine für jede Rate (siehe 2). Daher wird, nachdem eine Kachel in Grobvierecke unterteilt wurde, jedes Viereck bei einer oder mehreren verschiedenen Raten geshadet, nämlich pro CP, pro Pixel und pro Abtastwert.Shading can be performed at three different rates within the same rendering pass. Some of the shader calculations may be shifted at a rate lower than once per pixel, while certain high frequency effects per pixel or even per visibility sample may be evaluated to reduce aliasing. This is not possible with current graphics application program interfaces (API) because the pixel shader may be designed to run at the pixel or sample rate, but the two exclude each other. Conceptually, the single pixel shader stage of the graphics pipeline is divided into three distinct phases, one for each rate (see 2 ). Therefore, after a tile has been divided into coarse squares, each quad is heaped at one or more different rates, namely, per CP, per pixel, and per sample.

4 zeigt, wie der CPS in eine existierende Graphikpipeline integriert werden kann. Der Rasterisierer 41 testet eingegebene primitive Elemente, um Viereckfragmente zu erzeugen, die einem frühen Tiefentest unterzogen werden (Block 43) und dann für jede Kachel auf dem Bildschirm im Kachelpuffer 44 gepuffert werden. Die gepufferten Fragmente werden auf der Grundlage der Grobpixelgröße (Block 50) in Block 46 auf Grobpixel und Grobvierecke abgebildet, die dann in Block 48 geshadet werden und in die Ausgabepuffer abgebildet werden. Mit einer vereinfachten entkoppelten Abtasttechnik können rasterisierte Abtastwerte für eine gegebene Kachel und primitive Elemente in einem Kachelpuffer 44 gepuffert werden, und es wird dann der Pixelshader 48 für fertige CQ aufgerufen. Der Kachelpuffer erhält die Bildschirmkoordinaten und alle erforderlichen Informationen für das Auflösen der Sichtbarkeit in der Art der Tiefenwerte und von Abdeckungsinformationen. Wenn eine neue Kachel oder ein neues primitives Element rasterisiert wird, wird der Kachelpuffer geräumt, so dass nur eine einer einzigen Kachel entsprechende Datenmenge gepuffert werden muss. 4 shows how the CPS can be integrated into an existing graphics pipeline. The rasterizer 41 Tests input primitive elements to generate quadrilateral fragments that undergo an early depth test (Block 43 ) and then for each tile on the screen in the tile buffer 44 be buffered. The buffered fragments are based on the coarse pixel size (block 50 ) in block 46 Shown on coarse pixels and rough squares, which are then in block 48 and are mapped into the output buffers. With a simplified decoupled sampling technique, rasterized samples for a given tile and primitive elements in a tile buffer can be used 44 buffered, and then it becomes the pixelshader 48 called for finished CQ. The tiling buffer receives the screen coordinates and all the information needed to resolve the visibility in terms of the depth values and coverage information. When a new tile or a new primitive element is rasterized, the tile buffer is evicted so that only a single amount of data corresponding to a single tile needs to be buffered.

5 zeigt wie CPS und das Mehrratenshading in die Pipelineabstraktion einer existierenden Graphikarchitektur in der Art von Direct3D 11 integriert werden, um Renderziele 66 zu erzeugen. Jede Shadingphase hat Zugang zu interpolierten Pro-Vertex-Attributen IA, und eine kleine Datenmenge kann durch benutzerdefinierte Shaderausgaben von einer Phase zur nächsten übermittelt werden, wobei die zulässige Datenmenge eine implementationsspezifische Grenze ist. Beliebige der Phasen (CP 60, Pixel 62, Abtastwert 64) können auch Ausgaben schreiben, die in späteren Pipelinestufen verbraucht werden (beispielsweise Rahmenpuffervermischung). 5 Figure 4 illustrates how CPS and multi-rate shading are integrated into the pipelined abstraction of an existing graphics architecture, such as Direct3D 11, to render targets 66 to create. Each shading phase has access to interpolated pro vertex attributes IA, and a small amount of data can be passed from one phase to another through user-defined shader outputs, with the allowable amount of data being an implementation-specific limit. Any of the phases (CP 60 , Pixels 62 , Sample 64 ) may also write outputs that are consumed in later pipeline stages (eg, frame buffer merging).

Beim Mehrratenshading wird ein Niederfrequenzdiffusionsterm pro Grobpixel berechnet und wird ein Hochfrequenzspiegelterm pro Pixel berechnet. Die CP-Größe wird durch den Vertexshader gesteuert. Gemäß einer Ausführungsform kann eine einzige konzeptionelle Pipelinestufe einen einzigen Shader ausführen, der von bis zu drei verschiedenen Eingangspunkten kompiliert wurde, wobei einer jeder Rate zugeordnet ist, wie nachstehend dargestellt ist:

Figure DE102015002581A1_0005
In multi-rate shading, a low frequency diffusion term per coarse pixel is calculated and a high frequency mirror term per pixel is calculated. The CP size is controlled by the vertex shader. In one embodiment, a single conceptual pipeline stage may execute a single shader compiled from up to three different entry points, with one associated with each rate, as shown below:
Figure DE102015002581A1_0005

Dieser Ansatz bietet Programmierern ein hohes Maß an Einsicht in und ein hohes Maß an Steuerung darüber, welcher Code bei jeder Rate abläuft sowie welche Daten zwischen Phasen fließen. Die einfacheren vorstehend beschriebenen Modelle können noch als geschichtete Abstraktionen in Fällen implementiert werden, in denen die Steuerung im Interesse einer einfachen Verwendung geopfert werden kann.This approach provides programmers with a high degree of insight into and control over which code expires at each rate and which data flows between phases. The simpler models described above may still be implemented as layered abstractions in cases where control may be sacrificed for the sake of ease of use.

Wenn die CP-Größe durch den Shadercode gesteuert wird, wird ein zusätzlicher vom System interpretierter Wert, SV_GrobPixelGröße, der letzten Shadingstufe vor dem Rasterisierer verfügbar gemacht. Diese Ausgabe ist ein Zweikomponentenvektor und entspricht den CP-Parametern (δx, δy). Typischerweise wird diese Ausgabe in einen Vertexshader eingesetzt, könnte jedoch auch in einem Hüllen-, Domain- oder Geometrieshader definiert werden, falls verwendet.If the CP size is controlled by the shader code, an additional system interpreted value, SV_GrobPixelSize, of the last shading level before the rasterizer is made available. This output is a two-component vector and corresponds to the CP parameters (δ x , δ y ). Typically, this output is used in a vertex shader, but could also be defined in a shell, domain, or geometry shader, if used.

Zusätzlich hat der bei der CP-Rate laufende Shadercode Zugriff auf Eingaben sowohl für die interpolierten Werte der CP-Parameter vor der Quantisierung als auch für die tatsächliche Grobpixelgröße: SV_AngeforderteGrobPixelGröße bzw. SV_GrobPixelGröße. Diese beiden Werte reichen zusammen aus, damit ein Shader seine eigene LOD-Kompensation für die Verwendung bei Berechnungen berechnen kann, welche den Texturabtaster nicht einschließen (beispielsweise Vorfiltern einer prozeduralen Textur).In addition, the shader code running at the CP rate has access to inputs for both the interpolated values of the CP parameters before quantization and for the actual coarse pixel size: SV_ requestedGrobPixelSize and SV_GrobPixelSize, respectively. These two values are sufficient for a shader to compute its own LOD compensation for use in calculations that do not include the texture scanner (for example, prefiltering a procedural texture).

Es gibt mehrere wichtige Verwendungsfälle, in denen CPS verwendet werden kann, um das Ausmaß der Pixelshadingarbeit erheblich zu verringern. Dies ist in keiner Weise eine erschöpfende Liste, weil es viel mehr Verwendungsfälle gibt.There are several important uses cases where CPS can be used to significantly reduce the amount of pixel shading work. This is by no means an exhaustive list because there are many more uses.

Das Rendern auf die native Auflösung von Anzeigen mit hohen DPI-Werten ist häufig eine für eine Graphikverarbeitungseinheit (GPU) zu anspruchsvolle Aufgabe. Das typische Gegenmittel besteht darin, die gerenderte Auflösung zu verringern und eine Aufwärtsabtastung des Bilds vorzunehmen, was zu einer wahrnehmbaren Qualitätsverschlechterung entlang Objektsilhouetten führt, während Änderungen im Inneren von Flächen nicht so auffällig sind. Stattdessen können wir durch Verwendung von CPS und Legen der CP-Parameter auf einen konstanten Wert, wie 2×2-Pixel, eine drastische Verringerung der Shadingrate erreichen, während die meisten Einzelheiten beibehalten werden.Rendering to the native resolution of displays with high DPI values is often a demanding task for a graphics processing unit (GPU). The typical antidote is to reduce the rendered resolution and upsample the image, resulting in perceptible quality degradation along object silhouettes, while changes in interior surfaces are not so noticeable. Instead, by using CPS and setting the CP parameters to a constant value, such as 2 × 2 pixels, we can achieve a drastic reduction in the shading rate while retaining most of the details.

Mit einer flexibleren Steuerung über die Shadingrate kann ein breiterer Anwendungsbereich ermöglicht werden, wie nachstehend erörtert wird.With more flexible control over the shading rate, a wider scope of application can be enabled, as discussed below.

Einige Materialien weisen zahlreiche Oberflächeneinzelheiten auf, während dies bei anderen nicht der Fall ist. Durch Wählen eines vom Materialtyp abhängigen CP-Parameters können Berechnungen eingespart werden, bei denen der sichtbare Einfluss minimal ist. Beispielsweise kann ein Teilchensystem für das Rendern von Rauch ziemlich homogen sein und bei einer niedrigen Rate geshadet werden, während ein Zeichen mit Text ein Shading mit einer höheren Auflösung rechtfertigen kann. Ähnlich können Objekte in einem Vollschatten möglicherweise bei einer geringeren Rate geshadet werden als Objekte im hellen Sonnenlicht.Some materials have numerous surface details, while others do not. By choosing a CP parameter that depends on the material type, calculations can be saved where the visible influence is minimal. For example, a particle system may be quite homogeneous for rendering smoke and be shed at a low rate, while a character with text may justify shading at a higher resolution. Similarly, objects in a full shade may possibly be shaded at a lower rate than objects in bright sunlight.

CPS erleichtert es, mit einer fovealen Renderung wirksam zu shaden, wodurch vermieden wird, dass eine Geometrie über mehrere Renderdurchgänge erneut gesendet wird. Eine konfigurierbare radiale Funktion steuert die Shadingrate mit wenigen Parametern: dem Punkt c, welcher dem Sichtzentrum entspricht, dem Aspektverhältnis a, inneren und äußeren kleinen Radien ri und ro und inneren und äußeren CP-Parametern smin und smax. Für ein foveales Rendern kann ri auf eine Größe gesetzt werden, welche einen Sichtwinkel von etwa 5° repräsentiert, und kann für eine kreisförmige Abfallfunktion a = 1 gesetzt werden.CPS makes it easier to effectively shade with a foveal rendering, which avoids retransmitting a geometry over multiple render passes. A configurable radial function controls the shading rate with few parameters: the point c, which corresponds to the view center, the aspect ratio a, inner and outer small radii r i and r o, and inner and outer CP parameters s min and s max . For a foveal rendering, r i can be set to a size representing a viewing angle of about 5 ° and can be set for a circular truncation function a = 1.

Wenngleich das Shadingsystem gemäß einigen Ausführungsformen beliebige Positionen für das Gebiet hoher Auflösung unterstützt, erzeugt auch das einfache Fixieren von c im Zentrum des Bildschirms und das Verwenden einer breiteren Sicht gute Ergebnisse, und zwar insbesondere, wenn aus einer First-Person-Perspektive gerendert wird. Diese Technik kann als peripheres CPS-Rendern im Gegensatz zum eigentlichen fovealen Rendern bezeichnet werden, was nur bei der Sichtverfolgung möglich ist.While the shading system, in accordance with some embodiments, supports any location for the high resolution area, simply fixing c in the center of the screen and using a broader view produces good results, especially when rendering from a first-person perspective. This technique may be referred to as peripheral CPS rendering as opposed to actual foveal rendering, which is only possible with visual tracking.

Gebiete des Bildschirms mit einer Bewegungs- oder Defokussierungsunschärfe haben typischerweise eine schmale Frequenzantwort und können mit einer niedrigeren Rate geshadet werden. Mit CPS kann die Shadingrate in diesen Gebieten gesteuert werden, indem CP-Parameter im Vertexshader festgelegt werden, die proportional zur Bildschirmraumgeschwindigkeit oder zum Konfusionskreis an diesem Vertex sind. Weil der Vertexshader vor dem Abschneiden bewertet wird, können sich Vertexe hinter der Kamera oder bei einer Tiefe von Null befinden. Für diese Fälle wird die Shadingrate nicht verringert, um Robustheit zu gewährleisten.Regions of the screen with a motion or defocus blur typically have a narrow frequency response and can be shaded at a lower rate. With CPS, the shading rate in these areas can be controlled by setting CP parameters in the vertex shader that are proportional to the screen space velocity or the confusion circle at that vertex. Because the vertex shader is scored before truncation, vertexes may be behind the camera or at a depth of zero. For these cases, the shading rate is not reduced to ensure robustness.

Die CP-Parameter können für die x- und y-Achsen getrennt bestimmt werden, um anisotrope Shadingraten für die Bewegungsunschärfe zu erzeugen. Durch Zuweisen negativer CP-Parameter für Vertexe vor der Brennebene und positiver CP-Parameter für jene, die dahinter liegen, interpolieren die CP-Parameter an der Brennebene auf Null. Ähnlich gewährleistet das Zuweisen signierter CP-Parameter für die Geschwindigkeit Nullwerte an stationären Punkten innerhalb eines sich bewegenden primitiven Elements. Weil der Konfusionskreisradius des Bildschirmraums und die Geschwindigkeit lineare Funktionen im Bildschirmraum sind, sollte eine perspektivisch korrekte Interpolation für den CP-Parameter in diesen Fällen deaktiviert werden.The CP parameters can be determined separately for the x and y axes to produce anisotropic shading rates for motion blur. By assigning negative CP parameters for vertexes before the focal plane and positive CP parameters for those behind, the CP parameters at the focal plane interpolate to zero. Similarly, assigning signed CP parameters for velocity ensures zero values at stationary points within a moving primitive element. Because the confusion circle radius of the screen space and the velocity are linear functions in the screen space, a perspective correct interpolation for the CP parameter should be disabled in these cases.

Es gibt mehrere verschiedene Anwendungen, bei denen ein Mehrratenshading ein wertvolles Werkzeug für das Skalieren der Qualität gegen die Leistungsfähigkeit bereitstellt. Der Umgebungsverdeckungsterm hoher Qualität wird unter Verwendung einer Voxelkegelverfolgung alle 2×2 Pixel berechnet, während diffuse Texturnachschlagewerte bei einer Pixelrate bewertet werden, um möglichst viele Oberflächeneinzelheiten zu erhalten. Ähnlich können auch komplexe niederfrequente Beleuchtungsberechnungen in der Art der Berechnung einer indirekten Beleuchtung bei einer niedrigeren Rate bewertet werden. There are several different applications where multi-rate shading provides a valuable tool for scaling quality versus performance. The high quality ambient occlusion term is calculated using voxel-cone tracking every 2 x 2 pixels, while evaluating diffuse texture lookup values at a pixel rate to obtain as many surface details as possible. Similarly, complex low-frequency lighting calculations such as the calculation of indirect lighting at a lower rate can also be evaluated.

Ein weiteres Beispiel ist die lokale Erhöhung der Shadingrate in schwierigen Gebieten. Dies kann erfolgen, um das Shading bei einer Pixel- oder Abtastwertrate nur um spiegelnde Merkmale zu berechnen und ansonsten bei einer niedrigeren Rate zu berechnen. Es ist bei den heutigen Echtzeitarbeitsbelastungen recht üblich, einen Typ eines Mehrratenshadings unter Verwendung eines Ansatzes mit zwei Durchgängen zu implementieren. In diesem Fall läuft der erste Durchgang bei der Pixelrate (MSAA), verwirft jedoch schwierige Pixel, die in einem Stencil-Puffer markiert werden. Der zweite Durchgang führt das Shading dann pro Abtastwert aus, jedoch nur für Pixel, die im Stencil-Puffer markiert sind. Unter Verwendung von CPS können diese Algorithmen in einen einzigen Durchgang umgewandelt werden, der selektiv das Ergebnis in Pixel- und Abtastwert-Raten-Shadern berechnet, die bei sogar noch niedrigeren Raten Ergebnisse liefern, wenn dies möglich ist.Another example is the local increase in shading rates in difficult areas. This can be done to calculate the shading at a pixel or sample rate only by specular features and otherwise compute at a lower rate. It is quite common in today's real-time workloads to implement one type of multi-rate harming using a two-pass approach. In this case, the first pass runs at the pixel rate (MSAA), but discards difficult pixels that are marked in a stencil buffer. The second pass then performs shading per sample, but only for pixels marked in the stencil buffer. Using CPS, these algorithms can be converted into a single pass that selectively calculates the result in pixel and sample rate shaders that yield results at even lower rates, if possible.

Das CPS-Mehrratenshading kann auch verwendet werden, um ein Aussondern auf einer Pro-CP-(beispielsweise 4×4 Pixel)-Basis auszuführen.CPS multi-rate shading may also be used to perform paging on a per-CP (e.g., 4 x 4 pixels) basis.

Eine CPS-Softwareimplementation ist eine Pipeline in einem Zentralprozessor auf der Grundlage eines funktionellen Direct3D-11-Simulators. Für diese Implementation können eine Kachelgröße von 16×16 Pixeln und CP-Breiten und Höhen von 1, 2 oder 4 verwendet werden. Um die CPS-Programmiererabstraktionen zu unterstützen, wird die DirectX High Level Shading Language erweitert und können neue API-Funktionen eingeführt werden. Der Simulator kann dafür eingerichtet werden, den dynamischen Befehlszählwert zu messen, um einen Hinweis auf die Kosten des Shadings zu geben. Alle Speicherzugriffe auf den Farbpuffer können zum Messen der Farbbandbreite verfolgt werden.A CPS software implementation is a pipeline in a central processor based on a Direct3D-11 functional simulator. For this implementation, a tile size of 16x16 pixels and CP widths and heights of 1, 2, or 4 may be used. To support the CPS programmer abstractions, the DirectX High Level Shading Language is extended and new API functions can be introduced. The simulator can be set up to measure the dynamic command count to give an indication of the cost of shading. All memory accesses to the color buffer can be tracked to measure color bandwidth.

Zusätzlich zum Pixelshading können eine Grobpixel-(CP)- sowie eine Abtastwertratenshadingphase in die Pipeline eingebracht werden. Es gibt mehrere mögliche Implementationsstrategien für das Mehrratenshading abhängig davon, wie diese zusätzlichen Phasen über mehrere Prozessoren und Threads geplant werden. Bei einer Planungsstrategie werden die CP-, Pixel- und Abtastwertratenshadingphasen nacheinander auf demselben Thread ausgeführt. Eine Beschränkung des Plans in dieser Weise ermöglicht eine einfache Implementation, wobei erheblich weniger Änderungen an der Pipeline erforderlich sind. Dadurch wird es unnötig, Daten über Phasen zu transportieren, weil die Daten in denselben Registern bleiben können. Dadurch werden auch komplexe Ablaufsteuermechanismen für das Drosseln von Zwischenphasendaten vermieden.In addition to pixel shading, a coarse pixel (CP) as well as a sample rate shading phase may be introduced into the pipeline. There are several possible implementation strategies for multi-rate shading depending on how these additional phases are scheduled across multiple processors and threads. In a scheduling strategy, the CP, pixel and sample rate slopes phases are executed one after the other on the same thread. Limiting the plan in this manner allows for easy implementation, with significantly fewer changes to the pipeline. This makes it unnecessary to transport data across phases because the data can remain in the same registers. This also avoids complex flow control mechanisms for throttling interphase data.

6 zeigt ein Grobviereck mit einer CP-Größe von 2×2, das auf einem SIMD-Prozessor mit einer Breite von 4 mit Bahnen 70 geplant ist. Zuerst werden die vier CP in dem Grobviereck (beispielsweise 0123, 4567, ... 12131415) bei 72 gleichzeitig über die SIMD-Bahnen ausgeführt, wodurch eine Berechnung von endlichen Differenzen erleichtert wird. Nach der Grobphase plant der Prozessor gleichzeitig 2×2-Pixelvierecke bei 74 innerhalb des Grobvierecks, wobei er eine Schleife über alle abgedeckten Vierecke legt. Weil dieses Planungsschema eine Verschiebung von Daten über SIMD-Bahnen erfordert, wenn ein Übergang zwischen Phasen erfolgt, nehmen wir die Verfügbarkeit von Prozessorbefehlen an, um dies wirksam zu ermöglichen. 6 Figure 4 shows a coarse square with a CP size of 2 x 2 on a SIMD processor with a width of 4 with lanes 70 it's planned. First, the four CPs in the coarse square (for example 0123, 4567, ... 12131415) are added 72 simultaneously through the SIMD paths, thereby facilitating calculation of finite differences. After the coarse phase, the processor schedules 2 × 2 pixel quads simultaneously 74 within the rough rectangle, looping over all covered squares. Because this scheduling scheme requires a shift of data over SIMD lanes when transitioning between phases, we assume the availability of processor instructions to enable this effectively.

Für SIMD-Breiten, die größer als 4 sind (beispielsweise 8 oder 12), können mehrere Grobvierecke gleichzeitig geplant werden. Weil jedes Grobviereck jedoch eine andere Anzahl abgedeckter Pixel aufweisen kann, kann eine höhere SIMD-Breite auch zu einer geringeren Verwendung einiger SIMD-Bahnen führen, weil einige Pixelphasenschleifen früh enden. Für eine verbesserte Effizienz mit großen SIMD-Breiten kann ein besseres Planungsschema gewählt werden, das die Pixelphasenarbeit gleichmäßiger über SIMD-Bahnen oder sogar getrennte Threads verteilt.For SIMD widths greater than 4 (for example, 8 or 12), multiple coarse quads can be scheduled simultaneously. However, because each coarse square may have a different number of covered pixels, a higher SIMD width may also result in less use of some SIMD traces because some pixel phase loops will end sooner. For improved efficiency with large SIMD widths, a better scheduling scheme can be chosen that distributes pixel phase work more uniformly across SIMD lanes or even separate threads.

Ein Shading bei einer niedrigeren Rate als einmal pro Pixel hat einen Einfluss darauf, wie gut eine Farbpufferkompression für das Verringern der Speicherbandbreite wirkt. Ein höherer Gleichmäßigkeitsgrad in Farbwerten innerhalb von 2×2-Pixelblöcken oder größeren Pixelblöcken verringert im Allgemeinen die Entropie und macht die Kompression wirksamer. Es gibt viele existierende Verfahren für die Farbkompression, die von CPS profitieren können. Um zu veranschaulichen, dass dies in der Praxis funktioniert, kann das Schema von Pool u. a. verwendet werden, das Farbdifferenzen zwischen Pixeln berechnet und dann eine Entropiecodierung über die Differenzen unter Verwendung eines Fibonacci-Codierers anwendet. Pool u. a. ”Lossless Compression of Variable Precision Floating-Point Buffers on GPUs,” Symposium on Interactive 3D Graphics and Games (2012), S. 47–54 .Shading at a rate lower than once per pixel has an impact on how well color buffer compression works for reducing memory bandwidth. Greater uniformity in color values within 2 x 2 pixel blocks or larger pixel blocks generally reduces entropy and makes compression more efficient. There are many existing color compression techniques that can benefit from CPS. To illustrate that this works in practice, the scheme of Pool et al. May be used which calculates color differences between pixels and then applies entropy coding over the differences using a Fibonacci encoder. Pool among others "Lossless Compression of Variable Precision Floating-Point Buffers on GPUs, Symposium on Interactive 3D Graphics and Games (2012), pp. 47-54 ,

Das Schema von Pool u. a. kann modifiziert werden, so dass die Pixel stets unter Verwendung einer vordefinierten Hilbert-Kurve in einer hierarchischen Weise aufgesucht werden. Dadurch werden die Differenzen zuerst innerhalb eines 2×2-Vierecks und dann innerhalb eines 4×4-Gebiets usw. berechnet. Wenn die CPS aktiviert wird, ist es wahrscheinlich, dass mehrere Farben innerhalb einiger dieser Gebiete gleich sind, wodurch Nulldifferenzen erzeugt werden, die unter Verwendung eines Fibonacci-Codierers wirksam codiert werden. Wir verwenden eine Cacheleitungsgröße von 128 Bytes, entsprechend 8×4 Pixeln für ein RGBA8-Renderziel. Wenn eine Leitung aus dem Farbcache ausgestoßen wird, wird sie komprimiert, und falls die sich ergebende Größe kleiner oder gleich 64 Bytes ist, ist die Kompression erfolgreich, und die Leitung wird in einem getrennten Steuerpuffer als komprimiert markiert und in nur einer 64-Byte-Transaktion zum Speicher gesendet. Andernfalls werden die unkomprimierten Daten in zwei 64-Byte-Transaktionen zum Speicher gesendet. Ein 64-kB-Farbcache wird mit einer Am-wenigstens-kürzlich-verwendeten-(LRU)-Ersetzungsrichtlinie modelliert.The scheme of Pool u. a. can be modified so that the pixels are always visited using a predefined Hilbert curve in a hierarchical manner. Thereby, the differences are first calculated within a 2 × 2 quadrilateral and then within a 4 × 4 region and so on. When the CPS is activated, it is likely that several colors will be the same within some of these areas, producing zero differences that are effectively coded using a Fibonacci coder. We use a cache line size of 128 bytes, corresponding to 8x4 pixels for an RGBA8 render destination. When a line is ejected from the color cache, it is compressed, and if the resulting size is less than or equal to 64 bytes, compression is successful and the line is marked as compressed in a separate control buffer and written in only one 64-byte stream. Transaction sent to the store. Otherwise, the uncompressed data is sent to memory in two 64-byte transactions. A 64kB color cache is modeled using an Am At Least Recently Used (LRU) replacement policy.

Das Grobpixelshading (CPS) kann die Kosten des Shadens mit einem geringen bis keinem wahrnehmbaren Einfluss auf die Bildqualität erheblich verringern. Die CPS passt natürlich in die Entwicklung der Echtzeitgraphikpipeline, weil sie einen neuen Grad an Flexibilität durch programmierbare Shadingraten einführt, während sie noch einen realen Bedarf an Energieeffizienz für den schnell wachsenden Markt handgehaltener Vorrichtungen adressiert.Coarse pixel shading (CPS) can significantly reduce the cost of shadowing with little to no noticeable impact on image quality. Of course, the CPS fits in with the development of the real-time graphics pipeline because it introduces a new level of flexibility through programmable shading rates while still addressing a real need for energy efficiency for the fast growing handheld device market.

7 ist ein Blockdiagramm eines Datenverarbeitungssystems 100 gemäß einer Ausführungsform. Das Datenverarbeitungssystem 100 weist einen oder mehrere Prozessoren 102 und einen oder mehrere Graphikprozessoren 108 auf und kann ein Einzelprozessordesktopsystem, ein Mehrprozessorworkstationsystem oder ein Serversystem mit einer großen Anzahl von Prozessoren 102 oder Prozessorkernen 107 sein. Gemäß einer Ausführungsform ist das Datenverarbeitungssystem 100 ein integriertes Schaltungssystem auf einem Chip (SOC) zur Verwendung in mobilen, handgehaltenen oder eingebetteten Vorrichtungen. 7 is a block diagram of a data processing system 100 according to one embodiment. The data processing system 100 has one or more processors 102 and one or more graphics processors 108 and may be a single-processor desktop system, a multi-processor workstation system, or a server system with a large number of processors 102 or processor cores 107 be. According to one embodiment, the data processing system 100 an integrated circuit system on a chip (SOC) for use in mobile, handheld or embedded devices.

Eine Ausführungsform des Datenverarbeitungssystems 100 kann eine serverbasierte Spielplattform, eine Spielkonsole, einschließlich einer Spiel- und Medienkonsole, einer mobilen Spielkonsole, einer handgehaltenen Spielkonsole oder einer Onlinespielkonsole, aufweisen oder darin aufgenommen sein. Gemäß einer Ausführungsform ist das Datenverarbeitungssystem 100 ein Mobiltelefon, ein Smartphone, eine Tablettrechenvorrichtung oder eine mobile Internetvorrichtung. Das Datenverarbeitungssystem 100 kann auch eine tragbare Vorrichtung in der Art einer tragbaren Smart-Watch-Vorrichtung, einer Smart-Brillen-Vorrichtung, einer Erweiterte-Realität-Vorrichtung oder einer Virtuelle-Realität-Vorrichtung aufweisen, damit gekoppelt sein oder damit integriert sein. Gemäß einer Ausführungsform ist das Datenverarbeitungssystem 100 ein Fernsehgerät oder eine Settop-Box-Vorrichtung mit einem oder mehreren Prozessoren 102 und einer graphischen Schnittstelle, die von einem oder mehreren Graphikprozessoren 108 erzeugt wird.An embodiment of the data processing system 100 may include or be included in a server-based gaming platform, game console, including a gaming and media console, a mobile gaming console, a handheld gaming console, or an online gaming console. According to one embodiment, the data processing system 100 a mobile phone, a smartphone, a tablet computing device, or a mobile internet device. The data processing system 100 may also include, be coupled to, or integrated with a wearable device, such as a smart-watch wearable device, a smart eyewear device, an augmented reality device, or a virtual reality device. According to one embodiment, the data processing system 100 a television or set-top box device having one or more processors 102 and a graphical interface provided by one or more graphics processors 108 is produced.

Der eine oder die mehreren Prozessoren 102 weisen jeweils einen oder mehrere Prozessorkerne 107 zum Verarbeiten von Befehlen auf, die, wenn sie ausgeführt werden, Operationen für System- und Benutzersoftware ausführen. Gemäß einer Ausführungsform ist jeder von dem einen oder den mehreren Prozessorkernen 107 dafür ausgelegt, einen spezifischen Befehlssatz 109 zu verarbeiten. Der Befehlssatz 109 kann eine komplexe Befehlssatzberechnung (CISC), eine reduzierte Befehlssatzberechnung (RISC) oder eine Berechnung durch ein sehr langes Befehlswort (VLIW) erleichtern. Mehrere Prozessorkerne 107 können jeweils einen anderen Befehlssatz 109 verarbeiten, welcher Befehle für das Erleichtern der Emulation anderer Befehlssätze aufweisen kann. Ein Prozessorkern 107 kann auch andere Verarbeitungsvorrichtungen in der Art eines digitalen Signalprozessors (DSP) aufweisen.The one or more processors 102 each have one or more processor cores 107 to process instructions that, when executed, perform operations on system and user software. In one embodiment, each of the one or more processor cores 107 designed for a specific instruction set 109 to process. The instruction set 109 may facilitate a complex instruction set calculation (CISC), a reduced instruction set calculation (RISC), or a very long instruction word (VLIW) calculation. Multiple processor cores 107 can each have a different instruction set 109 which may have instructions for facilitating the emulation of other instruction sets. A processor core 107 may also include other processing devices such as a digital signal processor (DSP).

Gemäß einer Ausführungsform weist der Prozessor 102 einen Cachespeicher 104 auf. Abhängig von der Architektur kann der Prozessor 102 einen einzigen internen Cache oder mehrere Ebenen eines internen Cache aufweisen. Gemäß einer Ausführungsform wird der Cachespeicher zwischen verschiedenen Komponenten des Prozessors 102 geteilt. Gemäß einer Ausführungsform verwendet der Prozessor 102 auch einen externen Cache (beispielsweise einen Level-3-(L3)-Cache oder einen Last Level Cache (LLC)) (nicht dargestellt), der unter Verwendung bekannter Cachekohärenztechniken von den Prozessorkernen 107 geteilt verwendet werden kann. Eine Registerdatei 106 ist zusätzlich in den Prozessor 102 aufgenommen, welche verschiedene Registertypen zum Speichern verschiedener Datentypen aufweisen kann (beispielsweise Ganzzahlregister, Gleitkommaregister, Statusregister und ein Befehlszeigerregister). Einige Register können Register für allgemeine Zwecke sein, während andere Register für den Entwurf des Prozessors 102 spezifisch sein können.According to one embodiment, the processor 102 a cache 104 on. Depending on the architecture, the processor may 102 have a single internal cache or multiple levels of internal cache. According to one embodiment, the cache is between different components of the processor 102 divided. In one embodiment, the processor uses 102 also includes an external cache (eg, a Level 3 (L3) cache or a Last Level Cache (LLC)) (not shown) that uses known cache coherency techniques from the processor cores 107 can be used shared. A register file 106 is in addition to the processor 102 which may include various register types for storing various data types (eg, integer registers, floating point registers, status registers, and an instruction pointer register). Some registers may be general purpose registers while others may be registers for the design of the processor 102 can be specific.

Der Prozessor 102 ist mit einem Prozessorbus 110 gekoppelt, um Datensignale zwischen dem Prozessor 102 und anderen Komponenten im System 100 zu übertragen. Das System 100 verwendet eine als Beispiel dienende ”Hub”-Systemarchitektur, einschließlich eines Speichersteuerungs-Hubs 116 und eines Ein-/Ausgabe-(I/O)-Steuerungs-Hubs 130. Der Speichersteuerungs-Hub 116 erleichtert die Kommunikation zwischen einer Speichervorrichtung und anderen Komponenten des Systems 100, während der I/O-Steuerungs-Hub (ICH) 130 über einen lokalen I/O-Bus Verbindungen zu I/O-Vorrichtungen bereitstellt. The processor 102 is with a processor bus 110 coupled to data signals between the processor 102 and other components in the system 100 transferred to. The system 100 uses an example "hub" system architecture, including a memory control hub 116 and an input / output (I / O) control hub 130 , The storage control hub 116 facilitates communication between a storage device and other components of the system 100 while the I / O Control Hub (ICH) 130 Provides connections to I / O devices over a local I / O bus.

Die Speichervorrichtung 120 kann eine dynamische Direktzugriffsspeicher-(DRAM)-Vorrichtung, eine statische Direktzugriffsspeicher-(SRAM)-Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung mit einer geeigneten Leistungsfähigkeit, um als Prozessspeicher zu dienen, sein. Der Speicher 120 kann Daten 122 und Befehle 121 zur Verwendung, wenn der Prozessor 102 einen Prozess ausführt, speichern. Der Speichersteuerungs-Hub 116 koppelt auch mit einem optionalen externen Graphikprozessor 112, der mit dem einen oder den mehreren Graphikprozessoren 108 in den Prozessoren 102 kommunizieren kann, um Graphik- und Medienoperationen auszuführen.The storage device 120 For example, a Dynamic Random Access Memory (DRAM) device, a Static Random Access Memory (SRAM) device, a flash memory device, or other memory device with suitable performance to serve as a process memory. The memory 120 can data 122 and commands 121 for use when the processor 102 execute a process, save. The storage control hub 116 Also interfaces with an optional external graphics processor 112 that with the one or more graphics processors 108 in the processors 102 can communicate to perform graphics and media operations.

Der ICH 130 ermöglicht es, dass Peripheriegeräte über einen Hochgeschwindigkeits-I/O-Bus mit dem Speicher 120 und dem Prozessor 102 verbunden werden. Die I/O-Peripheriegeräte umfassen eine Audiosteuereinrichtung 146, eine Firmwareschnittstelle 128, einen Drahtlostransceiver 126 (beispielsweise WiFi, Bluetooth), eine Datenspeichervorrichtung 124 (beispielsweise ein Festplattenlaufwerk, einen Flash-Speicher usw.) und eine Legacy-I/O-Steuereinrichtung zum Koppeln von Legacy-(beispielsweise Personal System 2 (PS/2))-Vorrichtungen mit dem System. Eine oder mehrere Universeller-Serieller-Bus-(USB)-Steuereinrichtungen 142 schließen Eingabevorrichtungen in der Art von Tastatur- und Mauskombinationen 144 an. Eine Netzsteuereinrichtung 134 kann auch mit dem ICH 130 gekoppelt werden. Gemäß einer Ausführungsform ist eine Hochleistungs-Netzsteuereinrichtung (nicht dargestellt) mit dem Prozessorbus 110 gekoppelt.The ICH 130 allows peripheral devices to connect to the memory via a high-speed I / O bus 120 and the processor 102 get connected. The I / O peripherals include an audio controller 146 , a firmware interface 128 , a wireless transceiver 126 (eg WiFi, Bluetooth), a data storage device 124 (for example, a hard disk drive, a flash memory, etc.) and a legacy I / O controller for coupling legacy (eg, Personal System 2 (PS / 2)) devices to the system. One or more Universal Serial Bus (USB) controllers 142 include input devices such as keyboard and mouse combinations 144 at. A network controller 134 can also with the ICH 130 be coupled. According to one embodiment, a high performance network controller (not shown) is connected to the processor bus 110 coupled.

8 ist ein Blockdiagramm einer Ausführungsform eines Prozessors 200 mit einem oder mehreren Prozessorkernen 202A–N, einer integrierten Speichersteuereinrichtung 214 und einem integrierten Graphikprozessor 208. Der Prozessor 200 kann zusätzliche Kerne bis zu einem zusätzlichen Kern 202N, der durch die gestrichelten Kästchen dargestellt ist, und unter Einschluss von diesem aufweisen. Jeder der Kerne 202A–N weist eine oder mehrere interne Cacheeinheiten 204A–N auf. Gemäß einer Ausführungsform hat jeder Kern auch Zugang zu einer oder mehreren geteilt verwendeten Cacheeinheiten 206. 8th is a block diagram of one embodiment of a processor 200 with one or more processor cores 202A -N, an integrated memory controller 214 and an integrated graphics processor 208 , The processor 200 can add extra cores to an additional core 202N , which is represented by the dashed box, and including this. Each of the cores 202A -N has one or more internal cache units 204A -N up. In one embodiment, each core also has access to one or more shared cache units 206 ,

Die internen Cacheeinheiten 204A–N und die geteilten Cacheeinheiten 206 repräsentieren eine Cachespeicherhierarchie innerhalb des Prozessors 200. Die Cachespeicherhierarchie kann wenigstens eine Befehlsebene und einen Datencache innerhalb jedes Kerns und eine oder mehrere Ebene eines geteilten Mittel-Ebenen-Cache in der Art von Level 2 (L2), Level 3 (L3), Level 4 (L4) oder anderer Cacheebenen aufweisen, wobei die höchste Cacheebene vor dem externen Speicher als Last Level Cache (LLC) klassifiziert wird. Gemäß einer Ausführungsform hält eine Cachekohärenzlogik die Kohärenz zwischen den verschiedenen Cacheeinheiten 206 und 204A–N aufrecht.The internal cache units 204A -N and the shared cache units 206 represent a cache hierarchy within the processor 200 , The cache hierarchy may include at least one instruction level and data cache within each core, and one or more levels of a shared mid-level cache, such as level 2 (L2), level 3 (L3), level 4 (L4), or other cache levels. wherein the highest cache level before the external memory is classified as Last Level Cache (LLC). In one embodiment, cache coherency logic maintains coherency between the various cache units 206 and 204A -N upright.

Der Prozessor 200 kann auch einen Satz einer oder mehrerer Bussteuereinheiten 216 und eines Systemagenten 210 aufweisen. Die eine oder die mehreren Bussteuereinheiten verwalten einen Satz von Peripheriebussen in der Art eines oder mehrerer Peripheriekomponentenverbindungsbusse (beispielsweise PCI, PCI Express). Der Systemagent 210 stellt den verschiedenen Prozessorkomponenten eine Verwaltungsfunktionalität bereit. Gemäß einer Ausführungsform weist der Systemagent 210 eine oder mehrere integrierte Speichersteuereinrichtungen 214 zum Verwalten des Zugriffs auf verschiedene externe Speichervorrichtungen (nicht dargestellt) auf.The processor 200 may also be a set of one or more bus controllers 216 and a system agent 210 exhibit. The one or more bus controllers manage a set of peripheral buses, such as one or more peripheral component connection buses (eg, PCI, PCI Express). The system agent 210 provides management functionality to the various processor components. According to one embodiment, the system agent 210 one or more integrated memory controllers 214 for managing access to various external storage devices (not shown).

Gemäß einer Ausführungsform weisen der eine oder die mehreren Kerne 202A–N eine Unterstützung für ein gleichzeitiges Multi-Threading auf. Gemäß dieser Ausführungsform weist der Systemagent 210 Komponenten für das Koordinieren und Betreiben von Kernen 202A–N während der Multi-Thread-Verarbeitung auf. Der Systemagent 210 kann zusätzlich eine Leistungssteuereinheit (PCU) aufweisen, welche Logik und Komponenten aufweist, um den Leistungszustand der Kerne 202A–N und des Graphikprozessors 208 zu regulieren.According to one embodiment, the one or more cores 202A -N support for concurrent multi-threading. According to this embodiment, the system agent 210 Components for coordinating and operating cores 202A -N during multi-thread processing. The system agent 210 may additionally include a power control unit (PCU) having logic and components to determine the power state of the cores 202A -N and the graphics processor 208 to regulate.

Der Prozessor 200 weist zusätzlich einen Graphikprozessor 208 zum Ausführen von Graphikverarbeitungsoperationen auf. Gemäß einer Ausführungsform ist der Graphikprozessor 208 mit dem Satz geteilter Cacheeinheiten 206 und der Systemagenteneinheit 210, einschließlich der einen oder mehreren integrierten Speichersteuereinrichtungen 214, gekoppelt. Gemäß einer Ausführungsform ist eine Anzeigesteuereinrichtung 211 mit dem Graphikprozessor 208 gekoppelt, um die Graphikprozessorausgabe zu einer oder mehreren angeschlossenen Anzeigen zu treiben. Die Anzeigesteuereinrichtung 211 kann ein getrenntes Modul sein, das über wenigstens eine Verbindung mit dem Graphikprozessor gekoppelt ist, oder sie kann mit dem Graphikprozessor 208 oder dem Systemagenten 210 integriert sein.The processor 200 additionally has a graphics processor 208 for performing graphics processing operations. According to one embodiment, the graphics processor is 208 with the set of shared cache units 206 and the system agent unit 210 including the one or more integrated memory controllers 214 , coupled. According to one embodiment, a display control device 211 with the graphics processor 208 coupled to the graphics processor output to one or more drive connected ads. The display controller 211 may be a separate module coupled to the graphics processor via at least one connection, or it may communicate with the graphics processor 208 or the system agent 210 be integrated.

Gemäß einer Ausführungsform wird eine ringbasierte Verbindungseinheit 212 verwendet, um die internen Komponenten des Prozessors 200 zu koppeln, es kann jedoch auch eine alternative Verbindungseinheit verwendet werden, in der Art einer Punkt-zu-Punkt-Verbindung, einer geschalteten Verbindung oder anderer Techniken, einschließlich auf dem Fachgebiet wohlbekannter Techniken. Gemäß einer Ausführungsform ist der Graphikprozessor 208 über eine I/O-Strecke 213 mit der Ringverbindung 212 gekoppelt.According to one embodiment, a ring-based connection unit 212 used to the internal components of the processor 200 however, an alternative connection unit may be used, such as a point-to-point connection, a switched connection, or other techniques, including techniques well known in the art. According to one embodiment, the graphics processor is 208 over an I / O route 213 with the ring connection 212 coupled.

Die als Beispiel dienende I/O-Strecke 213 repräsentiert wenigstens eine von mehreren Spielarten von I/O-Verbindungen, einschließlich einer Paket-I/O-Verbindung, welche die Kommunikation zwischen verschiedenen Prozessorkomponenten erleichtert, und eines eingebetteten Hochleistungs-Speichermoduls 218 in der Art eines eDRAM-Moduls. Gemäß einer Ausführungsform verwenden jeder der Kerne 202A–N und der Graphikprozessor 208 die eingebetteten Speichermodule 218 als geteilten Last Level Cache.The example I / O route 213 represents at least one of several varieties of I / O connections, including a packet I / O connection that facilitates communication between different processor components, and an embedded high performance storage module 218 in the manner of an eDRAM module. According to one embodiment, each of the cores use 202A -N and the graphics processor 208 the embedded memory modules 218 as a shared last level cache.

Gemäß einer Ausführungsform sind die Kerne 202A–N homogene Kerne, welche die gleiche Befehlssatzarchitektur ausführen. Gemäß einer anderen Ausführungsform sind die Kerne 202A–N in Bezug auf die Befehlssatzarchitektur (ISA) heterogen, wobei einer oder mehrere der Kerne 202A–N einen ersten Befehlssatz ausführen, während wenigstens einer der anderen Kerne einen Untersatz des ersten Befehlssatzes oder einen anderen Befehlssatz ausführt.According to one embodiment, the cores are 202A -N homogeneous cores, which execute the same instruction set architecture. According to another embodiment, the cores are 202A -N in relation to the instruction set architecture (ISA) heterogeneous, where one or more of the cores 202A -N execute a first instruction set while at least one of the other cores executes a subset of the first instruction set or another instruction set.

Der Prozessor 200 kann Teil eines oder mehrerer Substrate sein oder unter Verwendung einer Anzahl von Prozesstechnologien darauf implementiert sein, beispielsweise komplementärer Metall-Oxid-Halbleiter-(CMOS)-, bipolarer Sperrschicht/komplementärer Metall-Oxid-Halbleiter-(BiCMOS)- oder N-leitender-Metall-Oxid-Halbleiter-Logik (NMOS-Logik). Zusätzlich kann der Prozessor 200 auf einem oder mehreren Chips oder als eine integrierte System-auf-einem-Chip-(SOC)-Schaltung mit den dargestellten Komponenten zusätzlich zu anderen Komponenten implementiert sein.The processor 200 may be part of one or more substrates or implemented thereon using a number of process technologies, for example, complementary metal-oxide-semiconductor (CMOS), bipolar junction / complementary metal-oxide-semiconductor (BiCMOS) or N-type devices. Metal oxide semiconductor logic (NMOS logic). In addition, the processor can 200 be implemented on one or more chips or as an integrated system-on-a-chip (SOC) circuit with the illustrated components in addition to other components.

9 ist ein Blockdiagramm einer Ausführungsform eines Graphikprozessors 300, der eine diskrete Graphikverarbeitungseinheit sein kann oder ein Graphikprozessor sein kann, der mit mehreren Verarbeitungskernen integriert ist. Gemäß einer Ausführungsform wird mit dem Graphikprozessor über eine Speicher-abgebildete I/O-Schnittstelle mit Registern auf dem Graphikprozessor und über in den Prozessorspeicher gegebene Befehle kommuniziert. Der Graphikprozessor 300 weist eine Speicherschnittstelle 314 zum Zugreifen auf Speicher auf. Die Speicherschnittstelle 314 kann eine Schnittstelle zum lokalen Speicher, zu einem oder mehreren internen Cachespeichern, zu einem oder mehreren geteilten externen Cachespeichern und/oder zum Systemspeicher sein. 9 Fig. 10 is a block diagram of one embodiment of a graphics processor 300 , which may be a discrete graphics processing unit or may be a graphics processor integrated with multiple processing cores. In one embodiment, the graphics processor communicates via a memory mapped I / O interface with registers on the graphics processor and commands issued to the processor memory. The graphics processor 300 has a memory interface 314 to access memory. The storage interface 314 may be an interface to local memory, to one or more internal caches, to one or more shared external caches, and / or to system memory.

Der Graphikprozessor 300 weist auch eine Anzeigesteuereinrichtung 302 zum Treiben von Anzeigeausgabedaten zu einer Anzeigevorrichtung 320 auf. Die Anzeigesteuereinrichtung 302 weist Hardware für eine oder mehrere Überlagerungsebenen für die Anzeige und zur Zusammensetzung mehrerer Videoschichten oder Benutzerschnittstellenelementen auf. Gemäß einer Ausführungsform weist der Graphikprozessor 300 eine Videocodecmaschine 306 auf, um Medien zu, von oder zwischen einem oder mehreren Mediencodierformaten zu codieren, zu decodieren oder zu transcodieren, einschließlich Moving-Picture-Experts-Group-(MPEG)-Formaten, wie MPEG-2, Advanced-Video-Codier-(AVC)-Formaten, wie H.264/MPEG-4 AVC, sowie den Society-of-Motion-Picture&Television-Engineers-(SMPTE)-421M/VC-1-Formaten und den Joint-Photographic-Experts-Group-(JPEG)-Formaten, wie JPEG- und Motion-JPEG-(MJPEG)-Formaten, jedoch ohne Einschränkung auf diese.The graphics processor 300 also has a display controller 302 for driving display output data to a display device 320 on. The display controller 302 has hardware for one or more overlay layers for the display and composition of multiple video layers or user interface elements. According to one embodiment, the graphics processor 300 a video codec machine 306 to encode, decode or transcode media to, from or between one or more media encoding formats, including Moving Picture Experts Group (MPEG) formats such as MPEG-2, Advanced Video Encoding (AVC ) Formats, such as H.264 / MPEG-4 AVC, as well as the Society of Motion Picture and Television Engineers (SMPTE) -421M / VC-1 formats and the Joint Photographic Experts Group (JPEG) Formats, such as, but not limited to, JPEG and Motion JPEG (MJPEG) formats.

Gemäß einer Ausführungsform weist der Graphikprozessor 300 eine Blockbildübertragungs-(BLIT)-Maschine 304 zum Ausführen zweidimensionaler (2D) Rasterisiereroperationen, einschließlich beispielsweise Bitgrenzenblockübertragungen, auf. Gemäß einer Ausführungsform werden 2D-Graphikoperationen jedoch unter Verwendung einer oder mehrerer Komponenten der Graphikverarbeitungsmaschine (GPE) 310 ausgeführt. Die Graphikverarbeitungsmaschine 310 ist eine Rechenmaschine zum Ausführen von Graphikoperationen, einschließlich dreidimensionaler (3D) Graphikoperationen und Medienoperationen.According to one embodiment, the graphics processor 300 a block image transfer (BLIT) engine 304 for performing two-dimensional (2D) rasterizer operations, including, for example, bit boundary block transfers. However, in one embodiment, 2D graphics operations are performed using one or more components of the graphics processing engine (GPE). 310 executed. The graphics processing machine 310 is a calculator for performing graphics operations, including three-dimensional (3D) graphics operations and media operations.

Die GPE 310 weist eine 3D-Pipeline 312 zum Ausführen von 3D-Operationen in der Art des Renderns dreidimensionaler Bilder und Szenen unter Verwendung von Verarbeitungsfunktionen, welche auf primitive 3D-Formen einwirken (beispielsweise Rechteck, Dreieck usw.), auf. Die 3D-Pipeline 312 weist programmierbare und Festfunktionselemente auf, die verschiedene Aufgaben innerhalb des Elements ausführen und/oder Ausführungs-Threads für ein 3D/Medien-Untersystem 315 hervorbringen. Wenngleich die 3D-Pipeline 312 für die Ausführung von Medienoperationen verwendet werden kann, weist eine Ausführungsform der GPE 310 auch eine Medienpipeline 316 auf, die spezifisch für das Ausführen von Medienoperationen in der Art einer Videonachbearbeitung und einer Bildverbesserung verwendet wird.The GPE 310 has a 3D pipeline 312 for performing 3D operations in the manner of rendering three-dimensional images and scenes using processing functions that affect primitive 3D shapes (eg, rectangle, triangle, etc.). The 3D pipeline 312 has programmable and fixed function elements that perform various tasks within the element and / or Execution threads for a 3D / media subsystem 315 bring forth. Although the 3D pipeline 312 for the execution of media operations, an embodiment of the GPE 310 also a media pipeline 316 specifically used for performing media operations such as video post-processing and image enhancement.

Gemäß einer Ausführungsform weist die Medienpipeline 316 Festfunktions- oder programmierbare Logikeinheiten auf, um eine oder mehrere spezialisierte Medienoperationen in der Art einer Videodecodierbeschleunigung, eines Video-Deinterlacings und einer Videocodierbeschleunigung an Stelle der Videocodecmaschine 306 oder für diese auszuführen. Gemäß einer Ausführungsform weist die Medienpipeline 316 zusätzlich eine Thread-Hervorbringungseinheit auf, um Threads für die Ausführung auf dem 3D/Medien-Untersystem 315 hervorzubringen. Die hervorgebrachten Threads führen Berechnungen für die Medienoperationen auf einer oder mehreren im 3D/Medien-Untersystem enthaltenen Graphikausführungseinheiten aus.According to one embodiment, the media pipeline 316 Fixed-function or programmable logic units to perform one or more specialized media operations such as video decode acceleration, video de-interlacing, and video encoding acceleration in place of the video codec engine 306 or perform for this. According to one embodiment, the media pipeline 316 additionally, a thread spawning unit to execute threads on the 3D / media subsystem 315 produce. The spawned threads perform calculations for the media operations on one or more graphics execution units included in the 3D / Media subsystem.

Das 3D/Medien-Untersystem 315 weist eine Logik auf, um von der 3D-Pipeline 312 und der Medienpipeline 316 hervorgebrachte Threads auszuführen. Gemäß einer Ausführungsform senden die Pipelines Thread-Ausführungsanforderungen zum 3D/Medien-Untersystem 315, das eine Thread-Abfertigungslogik aufweist, um die verschiedenen Anforderungen verfügbarer Thread-Ausführungsressourcen zu beurteilen und abzufertigen. Die Ausführungsressourcen weisen ein Feld von Graphikausführungseinheiten für das Verarbeiten der 3D- und Medien-Threads auf. Gemäß einer Ausführungsform weist das 3D/Medien-Untersystem 315 einen oder mehrere interne Cachespeicher für Thread-Befehle und -Daten auf. Gemäß einer Ausführungsform weist das Untersystem auch einen geteilt verwendeten Speicher unter Einschluss von Registern und adressierbarem Speicher auf, um Daten zwischen Threads geteilt zu verwenden und Ausgangsdaten zu speichern.The 3D / media subsystem 315 has logic to move from the 3D pipeline 312 and the media pipeline 316 execute spawned threads. According to one embodiment, the pipelines send thread execution requests to the 3D / media subsystem 315 which has thread dispatching logic to assess and handle the various requirements of available thread execution resources. The execution resources comprise an array of graphics execution units for processing the 3D and media threads. According to one embodiment, the 3D / media subsystem 315 One or more internal caches for thread commands and data. In one embodiment, the subsystem also includes shared memory including registers and addressable memory to share data between threads and to store output data.

10 ist ein Blockdiagramm einer Ausführungsform einer Graphikverarbeitungsmaschine 410 für einen Graphikprozessor. Gemäß einer Ausführungsform ist die Graphikverarbeitungsmaschine (GPE) 410 eine Version der in 9 dargestellten GPE 310. Die GPE 410 weist eine 3D-Pipeline 412 und eine Medienpipeline 416 auf, die jeweils von den Implementationen der 3D-Pipeline 312 und der Medienpipeline 316 aus 9 verschieden sein können oder diesen ähneln können. 10 Fig. 10 is a block diagram of one embodiment of a graphics processing engine 410 for a graphics processor. According to one embodiment, the graphics processing machine (GPE) is 410 a version of in 9 represented GPE 310 , The GPE 410 has a 3D pipeline 412 and a media pipeline 416 on, respectively, from the implementations of the 3D pipeline 312 and the media pipeline 316 out 9 may be different or similar.

Gemäß einer Ausführungsform koppelt die GPE 410 mit einem Befehls-Streamer 403, der einen Befehlsstrom für die GPE-3D- und Medienpipelines 412, 416 bereitstellt. Der Befehls-Streamer 403 ist mit dem Speicher gekoppelt, der ein Systemspeicher oder einer oder mehrere vom internen Cachespeicher und von einem geteilten Cachespeicher sein kann. Der Befehls-Streamer 403 empfängt Befehle vom Speicher und sendet die Befehle zur 3D-Pipeline 412 und/oder zur Medienpipeline 416. Die 3D- und die Medienpipeline verarbeiten die Befehle durch Ausführen von Operationen durch Logik innerhalb der jeweiligen Pipelines oder durch Übergeben eines oder mehrerer Ausführungs-Threads an das Ausführungseinheitsfeld 414. Gemäß einer Ausführungsform ist das Ausführungseinheitsfeld 414 skalierbar, so dass das Feld eine veränderliche Anzahl von Ausführungseinheiten auf der Grundlage der Zielleistungs- und Leistungsfähigkeitsebene der GPE 410 aufweist.In one embodiment, the GPE couples 410 with a command streamer 403 , which provides a command stream for the GPE-3D and media pipelines 412 . 416 provides. The command streamer 403 is coupled to the memory, which may be a system memory or one or more of the internal cache and a shared cache. The command streamer 403 receives commands from memory and sends the commands to the 3D pipeline 412 and / or the media pipeline 416 , The 3D and media pipelines process the instructions by performing operations by logic within the respective pipelines or by passing one or more execution threads to the execution unit field 414 , According to one embodiment, the execution unit field is 414 scalable so that the field has a variable number of execution units based on the GPE's target performance and performance level 410 having.

Eine Abtastmaschine 430 koppelt mit dem Speicher (beispielsweise dem Cachespeicher oder dem Systemspeicher) und dem Ausführungseinheitsfeld 414. Gemäß einer Ausführungsform stellt die Abtastmaschine 430 einen Speicherzugriffsmechanismus für das skalierbare Ausführungseinheitsfeld 414 bereit, welcher es dem Ausführungsfeld 414 ermöglicht, Graphik- und Mediendaten aus dem Speicher zu lesen. Gemäß einer Ausführungsform weist die Abtastmaschine 430 Logik zum Ausführen spezialisierter Bildabtastvorgänge für Medien auf.A scanning machine 430 couples to memory (for example, the cache or system memory) and the execution unit field 414 , According to one embodiment, the scanning engine 430 a memory access mechanism for the scalable execution unit field 414 ready, which it the execution field 414 allows to read graphics and media data from memory. According to one embodiment, the scanning machine 430 Logic for performing specialized image scanning for media.

Die spezialisierte Medienabtastlogik in der Abtastmaschine 430 weist ein Rauschentfernungs-/Deinterlace-Modul 432, ein Bewegungsschätzmodul 434 und ein Bildskalier- und Filtermodul 436 auf. Das Rauschentfernungs-/Deinterlace-Modul 432 weist eine Logik zum Ausführen eines oder mehrerer Rauschentfernungs- oder Deinterlace-Algorithmen an decodierten Videodaten auf. Die Deinterlace-Logik kombiniert alternierende Felder von Interlaced-Videoinhalt zu einem einzigen Videorahmen. Die Rauschentfernungslogik verringert oder entfernt das Datenrauschen aus Video- und Bilddaten. Gemäß einer Ausführungsform sind die Rauschentfernungslogik und die Deinterlace-Logik bewegungsadaptiv und verwenden ein räumliches oder zeitliches Filtern auf der Grundlage des in den Videodaten festgestellten Bewegungsmaßes. Gemäß einer Ausführungsform weist das Rauschentfernungs-/Deinterlace-Modul 432 eine zweckgebundene Bewegungserkennungslogik (beispielsweise innerhalb der Bewegungsschätzmaschine 434) auf.The specialized media scanning logic in the scanning machine 430 has a noise removal / deinterlacing module 432 , a motion estimation module 434 and an image scaling and filtering module 436 on. The noise removal / deinterlacing module 432 includes logic for executing one or more noise removal or deinterlace algorithms on decoded video data. The deinterlacing logic combines alternating fields of interlaced video content into a single video frame. The noise removal logic reduces or removes data noise from video and image data. In one embodiment, the noise removal logic and deinterlacing logic are motion adaptive and utilize spatial or temporal filtering based on the amount of motion detected in the video data. According to one embodiment, the noise removal / deinterlacing module 432 a dedicated motion detection logic (eg, within the motion estimation engine 434 ) on.

Die Bewegungsschätzmaschine 434 stellt eine Hardwarebeschleunigung für Videooperationen durch Ausführen von Videobeschleunigungsfunktionen in der Art einer Bewegungsvektorschätzung und einer Vorhersage an Videodaten bereit. Die Bewegungsschätzmaschine bestimmt Bewegungsvektoren, welche die Transformation von Bilddaten zwischen aufeinander folgenden Videorahmen beschreiben. Gemäß einer Ausführungsform verwendet ein Graphikprozessormediencodec die Videobewegungsschätzmaschine 434 zum Ausführen von Operationen an Video auf der Makroblockebene, welche andernfalls unter Verwendung eines Prozessors für allgemeine Zwecke rechenintensiv sein können. Gemäß einer Ausführungsform steht die Bewegungsschätzmaschine 434 im Allgemeinen Graphikprozessorkomponenten zur Verfügung, um Videodecodier- und Bearbeitungsfunktionen zu unterstützen, die für die Richtung oder den Betrag der Bewegung in Videodaten empfindlich oder adaptiv sind.The motion estimation machine 434 provides hardware acceleration for video operations by performing video acceleration functions such as motion vector estimation and video acceleration functions Prediction of video data ready. The motion estimation engine determines motion vectors describing the transformation of image data between consecutive video frames. According to one embodiment, a graphics processor media codec uses the video motion estimation engine 434 to perform operations on video at the macroblock level, which may otherwise be computationally intensive using a general purpose processor. According to one embodiment, the motion estimation engine stands 434 In general, graphics processor components are available to support video decoding and editing functions that are sensitive or adaptive to the direction or amount of motion in video data.

Das Bildskalier- und Filtermodul 436 führt Bildverarbeitungsoperationen aus, um die sichtbare Qualität erzeugter Bilder und erzeugten Videos zu verbessern. Gemäß einer Ausführungsform verarbeitet das Skalier- und Filtermodul 436 Bild- und Videodaten während des Abtastvorgangs, bevor die Daten dem Ausführungseinheitsfeld 414 bereitgestellt werden.The image scaling and filter module 436 performs image processing operations to improve the visual quality of generated images and generated video. In one embodiment, the scaling and filtering module processes 436 Image and video data during the scanning process before the data enters the execution unit field 414 to be provided.

Gemäß einer Ausführungsform weist die Graphikverarbeitungsmaschine 410 einen Datenport 444 auf, der Graphikuntersystemen einen zusätzlichen Mechanismus für das Zugreifen auf Speicher bereitstellt. Der Datenport 444 erleichtert den Speicherzugriff für Operationen, einschließlich Renderzielschreibvorgängen, konstanten Pufferlesevorgängen, Scratch-Speicherraum-Lese-/Schreibvorgängen und Medienoberflächenzugriffen. Gemäß einer Ausführungsform weist der Datenport 444 einen Cachespeicherraum für Cachezugriffe auf den Speicher auf. Der Cachespeicher kann ein einziger Datencache sein oder in mehrere Caches für die mehreren Untersysteme, die über den Datenport auf Speicher zugreifen, verteilt sein (beispielsweise einen Renderpuffercache, einen konstanten Puffercache usw.). Gemäß einer Ausführungsform kommunizieren Threads, die auf einer Ausführungseinheit im Ausführungseinheitsfeld 414 ausgeführt werden, mit dem Datenport durch Austauschen von Nachrichten über eine Datenverteilungsverbindung, welche die jeweiligen Untersysteme der Graphikverarbeitungsmaschine 410 koppelt.According to one embodiment, the graphics processing engine 410 a data port 444 which provides graphics subsystems with an additional mechanism for accessing memory. The data port 444 facilitates memory access for operations, including render target writes, constant buffer reads, scratch memory space read / write, and media surface accesses. According to one embodiment, the data port 444 a cache memory space for cache accesses to the memory. The cache may be a single data cache or distributed in multiple caches for the multiple subsystems accessing memory via the data port (eg, a render buffer cache, a constant buffer cache, etc.). In one embodiment, threads executing on an execution unit in the execution unit field 414 with the data port by exchanging messages over a data distribution link containing the respective subsystems of the graphics processing engine 410 coupled.

11 ist ein Blockdiagramm einer anderen Ausführungsform eines Graphikprozessors. Gemäß einer Ausführungsform weist der Graphikprozessor eine Ringverbindung 502, ein Pipelinefrontend 504, eine Medienmaschine 537 und Graphikkerne 580A–N auf. Die Ringverbindung 502 koppelt den Graphikprozessor mit anderen Verarbeitungseinheiten, einschließlich anderer Graphikprozessoren oder eines oder mehrerer Prozessorkerne für allgemeine Zwecke. Gemäß einer Ausführungsform ist der Graphikprozessor einer von vielen Prozessoren, die in ein Mehrkernverarbeitungssystem integriert sind. 11 Fig. 10 is a block diagram of another embodiment of a graphics processor. According to one embodiment, the graphics processor has a ring connection 502 , a pipeline frontend 504 , a media machine 537 and graphic cores 580A -N up. The ring connection 502 couples the graphics processor to other processing units, including other graphics processors or one or more general purpose processor cores. According to one embodiment, the graphics processor is one of many processors integrated into a multi-core processing system.

Der Graphikprozessor empfängt Befehlsstapel über die Ringverbindung 502. Die eingehenden Befehle werden durch einen Befehls-Streamer 503 im Pipelinefrontend 504 interpretiert. Der Graphikprozessor weist eine skalierbare Ausführungslogik auf, um eine 3D-Geometrieverarbeitung und Medienverarbeitung über den Graphikkern (die Graphikkerne) 580A–N auszuführen. Für 3D-Geometrieverarbeitungsbefehle führt der Befehls-Streamer 503 die Befehle der Geometriepipeline 536 zu. Für wenigstens einige Medienverarbeitungsbefehle führt der Befehls-Streamer 503 die Befehle einem Videofrontend 534 zu, das mit einer Medienmaschine 537 koppelt. Die Medienmaschine 537 weist eine Videoqualitätsmaschine (VQE) 530 zur Video- und Bildnachbearbeitung und eine Mehrformat-Codier/Decodier-(MFX)-Maschine 533 zum Bereitstellen einer hardwarebeschleunigten Mediendatencodierung und -decodierung auf. Die Geometriepipeline 536 und die Medienmaschine 537 erzeugen jeweils Ausführungs-Threads für die Thread-Ausführungsressourcen, die von wenigstens einem Graphikkern 580A bereitgestellt werden.The graphics processor receives command stacks over the ring connection 502 , The incoming commands are through a command streamer 503 in the pipeline frontend 504 interpreted. The graphics processor has scalable execution logic to provide 3D geometry processing and media processing via the graphics core (graphics cores). 580A -N. For 3D geometry processing instructions, the command streamer executes 503 the commands of the geometry pipeline 536 to. For at least some media processing commands, the command streamer executes 503 the commands a Videofrontend 534 to, that with a media machine 537 coupled. The media machine 537 has a video quality machine (VQE) 530 for video and image post-processing and a multi-format encoding / decoding (MFX) engine 533 for providing hardware accelerated media data encoding and decoding. The geometry pipeline 536 and the media machine 537 each generate execution threads for the thread execution resources that are from at least one graphics kernel 580A to be provided.

Der Graphikprozessor weist skalierbare Thread-Ausführungsressourcen mit modularen Kernen 580A–N (manchmal als Kern-Slices bezeichnet) auf, die jeweils mehrere Unterkerne 550A–N, 560A–N (manchmal als Kern-Unter-Slices bezeichnet) aufweisen. Der Graphikprozessor kann eine beliebige Anzahl von Graphikkernen 580A bis 580N aufweisen. Gemäß einer Ausführungsform weist der Graphikprozessor einen Graphikkern 580A mit wenigstens einem ersten Unterkern 550A und einem zweiten Unterkern 560A auf. Gemäß einer anderen Ausführungsform ist der Graphikprozessor ein Prozessor mit niedriger Leistungsaufnahme mit einem einzigen Unterkern (beispielsweise 550A). Gemäß einer Ausführungsform weist der Graphikprozessor mehrere Graphikkerne 580A–N auf, welche jeweils einen Satz erster Unterkerne 550A–N und einen Satz zweiter Unterkerne 560A–N aufweisen. Jeder Unterkern in dem Satz erster Unterkerne 550A–N weist wenigstens einen ersten Satz von Ausführungseinheiten 552A–N und Medien/Textur-Abtastern 554A–N auf. Jeder Unterkern in dem Satz zweiter Unterkerne 560A–N weist wenigstens einen zweiten Satz von Ausführungseinheiten 562A–N und Abtastern 564A–N auf. Gemäß einer Ausführungsform teilen sich die jeweiligen Unterkerne 550A–N, 560A–N einen Satz geteilter Ressourcen 570A–N. Gemäß einer Ausführungsform weisen die geteilten Ressourcen einen geteilten Cachespeicher und eine Pixelbetriebslogik auf. Andere geteilte Ressourcen können auch in den verschiedenen Ausführungsformen des Graphikprozessors enthalten sein.The graphics processor has scalable thread execution resources with modular cores 580A -N (sometimes referred to as core slices), each containing several kernels 550A -N, 560A -N (sometimes referred to as core sub-slices). The graphics processor can be any number of graphics cores 580A to 580N exhibit. According to one embodiment, the graphics processor has a graphics core 580A with at least a first sub-core 550A and a second subkernel 560A on. According to another embodiment, the graphics processor is a low power processor with a single sub-core (e.g. 550A ). According to one embodiment, the graphics processor has multiple graphics cores 580A -N, which each have a set of first sub-kernels 550A -N and a set of second kernels 560A Have -N. Each sub kernel in the set of first sub kernels 550A -N has at least a first set of execution units 552A -N and media / texture scanners 554A -N up. Each sub kernel in the second sub kernel set 560A -N has at least a second set of execution units 562A -N and samplers 564A -N up. According to one embodiment, the respective lower cores divide 550A -N, 560A -N a set of shared resources 570A -N. In one embodiment, the shared resources include shared cache and pixel operation logic. Other shared resources may also be included in the various embodiments of the graphics processor.

12 zeigt eine Thread-Ausführungslogik 600 mit einem Feld von Verarbeitungselementen, die gemäß einer Ausführungsform einer Graphikverarbeitungsmaschine verwendet wird. Gemäß einer Ausführungsform weist die Thread-Ausführungslogik 600 einen Thread-Abfertiger 604, einen Befehlscache 606, ein skalierbares Ausführungseinheitsfeld mit mehreren Ausführungseinheiten 608A–N, einen Abtaster 610, einen Datencache 612 und einen Datenport 614 auf. Gemäß einer Ausführungsform sind die enthaltenen Komponenten über ein Verbindungsnetz verbunden, welches die jeweiligen Komponenten verknüpft. Die Thread-Ausführungslogik 600 weist eine oder mehrere Verbindungen zum Speicher in der Art des Systemspeichers oder eines Cachespeichers über einen oder mehrere vom Befehlscache 606, vom Datenport 614, vom Abtaster 610 und vom Ausführungseinheitsfeld 608A–N auf. Gemäß einer Ausführungsform ist jede Ausführungseinheit (beispielsweise 608A) ein individueller Vektorprozessor, der in der Lage ist, mehrere gleichzeitige Threads auszuführen und mehrere Datenelemente für jeden Thread parallel zu verarbeiten. Das Ausführungseinheitsfeld 608A–N weist eine beliebige Anzahl individueller Ausführungseinheiten auf. 12 shows a thread execution logic 600 with an array of processing elements used in accordance with one embodiment of a graphics processing engine. According to one embodiment, the thread execution logic 600 a thread handler 604 , an instruction cache 606 , a scalable execution unit field with multiple execution units 608A -N, a scanner 610 , a data cache 612 and a data port 614 on. According to one embodiment, the contained components are connected via a connection network which links the respective components. The thread execution logic 600 has one or more connections to the memory, such as the system memory or a cache, over one or more of the instruction cache 606 , from the data port 614 , from the scanner 610 and the execution unit field 608A -N up. According to one embodiment, each execution unit (for example 608A an individual vector processor capable of executing multiple concurrent threads and processing multiple data elements for each thread in parallel. The execution unit field 608A -N has any number of individual execution units.

Gemäß einer Ausführungsform wird das Ausführungseinheitsfeld 608A–N in erster Linie für das Ausführen von ”Shader”-Programmen verwendet. Gemäß einer Ausführungsform führen die Ausführungseinheiten im Feld 608A–N einen Befehlssatz aus, der eine native Unterstützung für viele Standard-3D-Graphik-Shaderbefehle aufweist, so dass Shaderprogramme von Graphikbibliotheken (beispielsweise Direct 3D und OpenGL) mit einer minimalen Übersetzung ausgeführt werden. Die Ausführungseinheiten unterstützen eine Vertex- und Geometrieverarbeitung (beispielsweise Vertexprogramme, Geometrieprogramme, Vertexshader), eine Pixelverarbeitung (beispielsweise Pixelshader, Fragmentshader) und eine Verarbeitung für allgemeine Zwecke (beispielsweise Rechen- und Medienshader).According to one embodiment, the execution unit field becomes 608A -N used primarily for executing "shader" programs. According to one embodiment, the execution units lead in the field 608A -N a command set that has native support for many standard 3D graphics shader commands so that shader programs of graphics libraries (such as Direct 3D and OpenGL) are executed with a minimum translation. The execution units support vertex and geometry processing (e.g., vertices, geometry programs, vertex shaders), pixel processing (e.g., pixel shaders, fragment shaders), and general purpose processing (e.g., arithmetic and media shaders).

Jede Ausführungseinheit im Ausführungseinheitsfeld 608A–N arbeitet an Feldern von Datenelementen. Die Anzahl der Datenelemente ist die ”Ausführungsgröße” oder die Anzahl der Kanäle für den Befehl. Ein Ausführungskanal ist eine logische Ausführungseinheit für den Datenelementzugriff, die Maskierung und die Ablaufsteuerung innerhalb Befehlen. Die Anzahl der Kanäle kann von der Anzahl der physikalischen ALU oder FPU für einen bestimmten Graphikprozessor unabhängig sein. Die Ausführungseinheiten 608A–N unterstützen ganzzahlige und Gleitkommadatentypen.Each execution unit in the execution unit field 608A -N works on fields of data elements. The number of data items is the "run size" or the number of channels for the command. An execution channel is a logical execution unit for data element access, masking, and flow control within instructions. The number of channels may be independent of the number of physical ALU or FPU for a particular graphics processor. The execution units 608A -N support integer and floating-point data types.

Der Ausführungseinheitsbefehlssatz schließt Einzelner-Befehl-mehrere-Daten-(SIMD)-Befehle ein. Die verschiedenen Datenelemente können als ein gepackter Datentyp in einem Register gespeichert werden, und die Ausführungseinheit verarbeitet die verschiedenen Elemente auf der Grundlage der Datengröße der Elemente. Wenn beispielsweise ein 256 Bit breiter Vektor verarbeitet wird, werden die 256 Bits des Vektors in einem Register gespeichert und bearbeitet die Ausführungseinheit den Vektor als vier getrennte 64-Bit-gepackte Datenelemente (Vier-Wort-(QW)-Größen-Datenelemente), acht getrennte 32-Bit-gepackte Datenelemente (Doppel-Wort-(DW)-Größen-Datenelemente), sechzehn getrennte 16-Bit-gepackte Datenelemente (Wort-(W)-Größen-Datenelemente) oder zweiunddreißig getrennte 8-Bit-Datenelemente (Byte-(B)-Größen-Datenelemente). Es sind jedoch auch andere Vektorbreiten und Registergrößen möglich.The execution unit instruction set includes single instruction multiple data (SIMD) instructions. The various data elements can be stored as a packed data type in a register, and the execution unit processes the various elements based on the data size of the elements. For example, when processing a 256 bit wide vector, the 256 bits of the vector are stored in a register and the execution unit processes the vector as four separate 64-bit packed data elements (four word (QW) size data elements), eight separated 32-bit packed data elements (double word (DW) size data elements), sixteen 16-bit separate packed data elements (word (W) size data elements) or thirty-two separate 8-bit data elements (bytes - (B) -Sizes data elements). However, other vector widths and register sizes are possible.

Ein oder mehrere interne Befehlscaches (beispielsweise 606) sind in die Thread-Ausführungslogik 600 aufgenommen, um Thread-Befehle für die Ausführungseinheiten im Cache zu speichern. Gemäß einer Ausführungsform sind ein oder mehrere Datencaches (beispielsweise 612) aufgenommen, um Thread-Daten während der Thread-Ausführung im Cache zu speichern. Ein Abtaster 610 ist aufgenommen, um eine Texturabtastung für 3D-Operationen und eine Medienabtastung für Medienoperationen bereitzustellen. Gemäß einer Ausführungsform weist der Abtaster 610 eine spezialisierte Textur- oder Medienabtastfunktionalität für das Verarbeiten von Textur- oder Mediendaten während des Abtastprozesses auf, bevor die abgetasteten Daten einer Ausführungseinheit bereitgestellt werden.One or more internal instruction caches (for example 606 ) are in the thread execution logic 600 included to cache thread instructions for the execution units. According to one embodiment, one or more data caches (for example 612 ) to cache thread data during thread execution. A scanner 610 is included to provide texture sampling for 3D operations and media sampling for media operations. According to one embodiment, the scanner 610 specialized texture or media scanning functionality for processing texture or media data during the scanning process before providing the sampled data to an execution unit.

Während der Ausführung senden die Graphik- und Medienpipelines Thread-Einleitungsanforderungen über die Thread-Hervorbringungs- und Abfertigungslogik zur Thread-Ausführungslogik 600. Die Thread-Ausführungslogik 600 weist einen lokalen Thread-Abfertiger 604 auf, welcher Thread-Einleitungsanforderungen von den Graphik- und Medienpipelines beurteilt und die angeforderten Threads auf einer oder mehreren Ausführungseinheiten 608A–N instanziiert. Beispielsweise fertigt die Geometriepipeline (beispielsweise 536 aus 10) Vertexverarbeitungs-, Tesselation- oder Geometrieverarbeitungsthreads für die Thread-Ausführungslogik 600 ab. Der Thread-Abfertiger 604 kann auch Laufzeit-Thread-Hervorbringungsanforderungen von den ausführenden Shaderprogrammen verarbeiten.During execution, the graphics and media pipelines send thread initiation requests via the thread origination and dispatch logic to the thread execution logic 600 , The thread execution logic 600 has a local thread handler 604 which assesses thread initiation requests from the graphics and media pipelines and the requested threads on one or more execution units 608A -N instantiated. For example, the geometry pipeline (for example 536 out 10 ) Vertex processing, tessellation, or geometry processing threads for thread execution logic 600 from. The thread handler 604 can also handle runtime thread origination requests from the executing shader programs.

Sobald eine Gruppe geometrischer Objekte verarbeitet und zu Pixeldaten rasterisiert wurde, wird der Pixelshader 602 aufgerufen, um weiter Ausgangsinformationen zu berechnen und zu bewirken, dass die Ergebnisse in Ausgabeflächen geschrieben werden (beispielsweise Farbpuffer, Tiefenpuffer, Stencil-Puffer usw.). Gemäß einer Ausführungsform berechnet der Pixelshader 602 die Werte der verschiedenen Vertexattribute, die über das rasterisierte Objekt zu interpolieren sind. Der Pixelshader 602 führt dann ein API-zugeführtes Pixelshaderprogramm aus. Zur Ausführung des Pixelshaderprogramms übergibt der Pixelshader 602 Threads über den Thread-Abfertiger 604 an eine Ausführungseinheit (beispielsweise 608A). Der Pixelshader 602 verwendet die Texturabtastlogik im Abtaster 610, um auf Texturdaten in Texturkarten, die im Speicher gespeichert sind, zuzugreifen. Arithmetische Operationen an den Texturdaten und den eingegebenen Geometriedaten berechnen Pixelfarbdaten für jedes geometrische Fragment oder verwerfen ein oder mehrere Pixel, so dass sie nicht weiterverarbeitet werden.Once a group of geometric objects has been processed and rasterized to pixel data, the pixel shader becomes 602 to further calculate output information and cause the results to be written to output surfaces (eg, color buffers, depth buffers, stencil buffers, etc.). In one embodiment, the pixel shader computes 602 the values of the various vertex attributes to be interpolated over the rasterized object. The pixelshader 602 then executes an API supplied pixel shader program. The pixel shader passes to execute the pixel shader program 602 Threads through the thread handler 604 to an execution unit (for example 608A ). The pixelshader 602 uses the texture sampling logic in the scanner 610 to access texture data in texture maps stored in memory. Arithmetic operations on the texture data and the input geometry data compute pixel color data for each geometric fragment or discard one or more pixels so that they are not further processed.

Gemäß einer Ausführungsform stellt der Datenport 614 einen Speicherzugriffsmechanismus für die Thread-Ausführungslogik 600 bereit, um verarbeitete Daten zur Verarbeitung auf einer Graphikprozessorausgabepipeline an den Speicher auszugeben. Gemäß einer Ausführungsform weist der Datenport 614 einen oder mehrere Cachespeicher (beispielsweise den Datencache 612) auf oder ist damit gekoppelt, um Daten für den Speicherzugriff über den Datenport im Cache zu speichern.According to one embodiment, the data port 614 a memory access mechanism for the thread execution logic 600 ready to output processed data to the memory for processing on a graphics processor output pipeline. According to one embodiment, the data port 614 one or more caches (for example, the data cache 612 ) or is coupled to cache data for memory access over the data port.

13 ist ein Blockdiagramm, welches das Befehlsformat der Graphikprozessorausführungseinheit gemäß einer Ausführungsform zeigt. Der Zugriff auf den zuvor beschriebenen Festfunktionsbeschleuniger kann auf einen hier beschriebenen Befehl (Sendenachricht) abgebildet werden. Gemäß einer Ausführungsform unterstützen die Graphikprozessorausführungseinheiten einen Befehlssatz mit Befehlen in mehreren Formaten. Die in durchgezogenen Linien dargestellten Kästchen zeigen die Komponenten, die im Allgemeinen in einem Ausführungseinheitsbefehl enthalten sind, während die gestrichelten Linien Komponenten aufweisen, die optional sind oder die nur in einem Untersatz der Befehle enthalten sind. Das beschriebene und erläuterte Befehlsformat sind in der Hinsicht Makrobefehle, dass sie der Ausführungseinheit zugeführte Befehle sind, was im Gegensatz zu Mikrooperationen steht, die sich aus einer Befehlsdecodierung ergeben, sobald der Befehl verarbeitet wurde. 13 Fig. 10 is a block diagram showing the instruction format of the graphics processor execution unit according to an embodiment. Access to the fixed-speed accelerator described above can be mapped to a command (send message) described here. In one embodiment, the graphics processor execution units support a set of instructions with instructions in multiple formats. The boxes shown in solid lines show the components that are generally included in an execution unit instruction, while the dashed lines have components that are optional or that are only included in a subset of the instructions. The instruction format described and discussed are macro instructions in that they are instructions supplied to the execution unit, unlike micro-operations resulting from instruction decoding once the instruction has been processed.

Gemäß einer Ausführungsform unterstützen die Graphikprozessorausführungseinheiten Befehle in einem 128-Bit-Format 710 nativ. Ein kompaktiertes 64-Bit-Befehlsformat 730 ist für einige Befehle auf der Grundlage des ausgewählten Befehls, von Befehlsoptionen und der Anzahl der Operanden verfügbar. Das native 128-Bit-Format 710 stellt einen Zugang zu allen Befehlsoptionen bereit, während einige Optionen und Operationen im 64-Bit-Format 730 beschränkt sind. Die nativen Befehle, die im 64-Bit-Format 730 verfügbar sind, variieren gemäß der Ausführungsform. Gemäß einer Ausführungsform wird der Befehl teilweise unter Verwendung eines Satzes von Indexwerten in einem Indexfeld 713 kompaktiert. Die Ausführungseinheitshardware bezieht sich auf der Grundlage der Indexwerte auf einen Satz von Kompaktierungstabellen und verwendet die Kompaktierungstabellenausgaben zum Rekonstruieren eines nativen Befehls im 128-Bit-Format 710.In one embodiment, the graphics processor execution units support instructions in a 128-bit format 710 natively. A compacted 64-bit command format 730 is available for some commands based on the selected command, command options, and the number of operands. The native 128-bit format 710 provides access to all command options, while some options and operations are in 64-bit format 730 are limited. The native commands are in 64-bit format 730 are available vary according to the embodiment. In one embodiment, the command is partially performed using a set of index values in an index field 713 compacted. The execution unit hardware refers to a set of compaction tables based on the index values and uses the compaction table outputs to reconstruct a native 128-bit format instruction 710 ,

Für jedes Format definiert ein Befehlsoperationscode 712 die Operation, welche die Ausführungseinheit ausführen soll. Die Ausführungseinheiten führen jeden Befehl parallel über die mehreren Datenelemente jedes Operanden aus. Beispielsweise führt die Ausführungseinheit ansprechend auf einen Addierbefehl eine gleichzeitige Addieroperation über jeden Farbkanal, der ein Texturelement oder Bildelement repräsentiert, aus. Standardmäßig führt die Ausführungseinheit jeden Befehl über alle Datenkanäle der Operanden aus. Ein Befehlssteuerfeld 712 ermöglicht die Steuerung bestimmter Ausführungsoptionen in der Art der Kanalauswahl (beispielsweise Prädikation) und der Datenkanalreihenfolge (beispielsweise Vermischung). Für 128-Bit-Befehle 710 begrenzt ein Ausführungsgrößenfeld 716 die Anzahl der Datenkanäle, die parallel ausgeführt werden. Das Ausführungsgrößenfeld 716 steht für eine Verwendung im kompakten 64-Bit-Befehlsformat 730 nicht zur Verfügung.For each format defines a command operation code 712 the operation that the execution unit should perform. The execution units execute each instruction in parallel across the multiple data elements of each operand. For example, in response to an add command, the execution unit performs a concurrent add operation over each color channel representing a texture element or pixel. By default, the execution unit executes each command over all data channels of the operands. A command panel 712 allows the control of certain execution options in the type of channel selection (e.g., predication) and the data channel order (e.g., blending). For 128-bit commands 710 limits an execution size field 716 the number of data channels that are executed in parallel. The execution size field 716 is intended for use in the compact 64-bit instruction format 730 not available.

Einige Ausführungseinheitsbefehle haben bis zu drei Operanden, einschließlich zweier Quelloperanden src0 720, src1 722 und ein Ziel 718. Gemäß einer Ausführungsform unterstützen die Ausführungseinheiten Doppelzielbefehle, worin eines der Ziele impliziert ist. Datenmanipulationsbefehle können einen dritten Quelloperanden (beispielsweise SRC2 724) aufweisen, wobei der Befehlsoperationscode JJ12 die Anzahl der Quelloperanden bestimmt. Der letzte Quelloperand eines Befehls kann ein mit dem Befehl übergebener unmittelbarer (beispielsweise hart codierter) Wert sein.Some execution unit instructions have up to three operands, including two source operands src0 720 , src1 722 and a goal 718 , In one embodiment, the execution units support double target instructions, wherein one of the targets is implied. Data manipulation instructions may include a third source operand (eg, SRC2 724 ), wherein the instruction operation code JJ12 determines the number of source operands. The last source operand of a command may be an immediate (eg, hard-coded) value passed with the command.

Gemäß einer Ausführungsform werden Befehle auf der Grundlage von Operationscodebitfeldern gruppiert, um die Operationscodedecodierung 740 zu vereinfachen. Für einen 8-Bit-Operationscode ermöglichen es die Bits 4, 5 und 6, dass die Ausführungseinheit den Typ des Operationscodes bestimmt. Die dargestellte genaue Operationscodegruppierung ist beispielhaft. Gemäß einer Ausführungsform weist eine Verschiebungs- und Logikoperationscodegruppe 742 Datenverschiebungs- und Logikbefehle auf (beispielsweise mov, cmp). Die Verschiebungs- und Logikgruppe 742 teilt sich die fünf höchstwertigen Bits (MSB), wobei Bewegungsbefehle in Form von 0000xxxxb (beispielsweise 0x0x) vorliegen und Logikbefehle in Form von 0001xxxxb (beispielsweise 0x01) vorliegen. Eine Ablaufsteuerungsbefehlsgruppe 744 (beispielsweise call, jmp) weist Befehle in Form von 0010xxxxb auf (beispielsweise 0x20). Eine vermischte Befehlsgruppe 746 weist eine Befehlsmischung unter Einschluss von Synchronisationsbefehlen (beispielsweise Warten, Senden) in der Form von 0011xxxxb (beispielsweise 0x30) auf. Eine parallele mathematische Befehlsgruppe 748 weist komponentenweise arithmetische Befehle (beispielsweise add, mul) in Form von 0100xxxxb (beispielsweise 0x40) auf. Die parallele mathematische Gruppe 748 führt die arithmetischen Operationen über Datenkanäle parallel aus. Die Vektormathematikgruppe 750 weist arithmetische Befehle (beispielsweise dp4) in Form von 0101xxxxb (beispielsweise 0x50) auf. Die Vektormathematikgruppe führt arithmetische Berechnungen in der Art von Skalarproduktberechnungen an Vektoroperanden aus.According to one embodiment, instructions based on opcode bit fields are grouped around opcode decoding 740 to simplify. For an 8-bit opcode, bits 4, 5, and 6 allow the execution unit to determine the type of opcode. The illustrated accurate opcode grouping is exemplary. According to one embodiment, a shift and logic operation code group 742 Data movement and logic instructions (for example, mov, cmp). The shift and logic group 742 splits the five most significant bits (MSB), where There are motion commands in the form of 0000xxxxb (for example 0x0x) and logic commands in the form of 0001xxxxb (for example 0x01) are present. A flow control command group 744 (for example, call, jmp) has commands in the form of 0010xxxxb (for example, 0x20). A mixed command group 746 has a command mixture including synchronization commands (eg, wait, send) in the form of 0011xxxxb (for example, 0x30). A parallel mathematical command group 748 has component-wise arithmetic commands (for example, add, mul) in the form of 0100xxxxb (for example, 0x40). The parallel mathematical group 748 performs the arithmetic operations in parallel via data channels. The vector mathematics group 750 has arithmetic commands (for example, dp4) in the form of 0101xxxxb (for example, 0x50). The vector mathematics group performs arithmetic calculations in the manner of dot product calculations on vector operands.

14 zeigt eine als Beispiel dienende Graphiksoftwarearchitektur für ein Datenverarbeitungssystem gemäß einer Ausführungsform. Die Softwarearchitektur weist eine 3D-Graphikanwendung 1010, ein Betriebssystem 1020 und wenigstens einen Prozessor 1030 auf. Der Prozessor 1030 weist einen Graphikprozessor 1032 und einen oder mehrere Prozessorkerne 1034 für allgemeine Zwecke auf. Die Graphikanwendung 1010 und das Betriebssystem 1020 werden jeweils im Systemspeicher 1050 des Datenverarbeitungssystems ausgeführt. 14 FIG. 10 illustrates an example graphics software architecture for a data processing system according to an embodiment. FIG. The software architecture has a 3D graphics application 1010 , an operating system 1020 and at least one processor 1030 on. The processor 1030 has a graphics processor 1032 and one or more processor cores 1034 for general purposes. The graphics application 1010 and the operating system 1020 are each in system memory 1050 of the data processing system.

Gemäß einer Ausführungsform enthält die 3D-Graphikanwendung 1010 ein oder mehrere Shaderprogramme, welche Shaderbefehle 1012 aufweisen. Die Shadersprachbefehle können in einer Shadersprache hoher Ebene in der Art der High Level Shader Language (HLSL) oder der OpenGL Shader Language (GLSL) vorliegen. Die Anwendung weist auch ausführbare Befehle 1014 in einer Maschinensprache auf, die für die Ausführung durch den Prozessorkern 1034 für allgemeine Zwecke geeignet ist. Die Anwendung weist auch durch Vertexdaten definierte Graphikobjekte 1016 auf.According to one embodiment, the 3D graphics application includes 1010 one or more shader programs, which shader commands 1012 exhibit. The shader commands can be in a high-level shader language such as High Level Shader Language (HLSL) or OpenGL Shader Language (GLSL). The application also has executable commands 1014 in a machine language necessary for execution by the processor core 1034 is suitable for general purposes. The application also has graphic objects defined by vertex data 1016 on.

Das Betriebssystem 1020 kann ein Microsoft® Windows®-Betriebssystem von Microsoft Corporation, ein proprietäres UNIX-artiges Betriebssystem oder ein Open-Source-UNIX-artiges Betriebssystem unter Verwendung einer Variante des Linux-Kerns sein. Wenn die Direct3D-API verwendet wird, verwendet das Betriebssystem 1020 einen Frontendshaderkompilierer 1024 zum Kompilieren jeglicher Shaderbefehle 1012 in HLSL in eine Shadersprache niedrigerer Ebene. Die Kompilierung kann eine Echtzeitkompilerung sein, oder die Anwendung kann eine geteilte Vorkompilierung ausführen. Gemäß einer Ausführungsform werden Shader hoher Ebene während der Kompilierung der 3D-Graphikanwendung 1010 in Shader niedriger Ebene kompiliert.The operating system 1020 can be a Microsoft ® Windows ® operating system from Microsoft Corporation, a proprietary UNIX-like operating system or an open source UNIX-like operating system using a variant of the Linux kernel. If the Direct3D API is used, the operating system uses it 1020 a frontend shader compiler 1024 to compile any shader commands 1012 in HLSL in a lower level shader language. The compilation may be a real-time compilation, or the application may perform a split precompile. According to one embodiment, high level shaders are generated during compilation of the 3D graphics application 1010 Compiled in lower level shader.

Der Benutzermodusgraphiktreiber 1026 kann einen Backendshaderkompilierer 1027 zum Umwandeln der Shaderbefehle 1012 in eine hardwarespezifische Darstellung enthalten. Der Shaderkompilierer verschmilzt Grob- und Pixelratenphasen in ein monolithisches Programm und fügt ”Glühcode” darum herum hinzu, wie in Zusammenhang mit der früheren monolithischen Programmbeschreibung beschrieben wurde. Wenn die OpenGL-API verwendet wird, werden Shaderbefehle 1012 in der Sprache hoher Ebene GLSL zur Kompilierung an einen Benutzermodusgraphiktreiber 1026 übergeben. Der Benutzermodusgraphiktreiber verwendet Betriebssystemkernmodusfunktionen 1028 zur Kommunikation mit einem Kernmodusgraphiktreiber 1029. Der Kernmodusgraphiktreiber 1029 kommuniziert mit dem Graphikprozessor 1032, um Anweisungen und Befehle abzufertigen.The user-mode graphics driver 1026 can be a backend shader compiler 1027 to convert the shader commands 1012 contained in a hardware-specific representation. The shader compiler merges coarse and pixel rate phases into a monolithic program and adds "annealing code" around it, as described in connection with the earlier monolithic program description. When the OpenGL API is used, shader commands become 1012 in the high-level language GLSL for compilation to a user-mode graphics driver 1026 to hand over. The user-mode graphics driver uses kernel-mode operating functions 1028 for communication with a core mode graphics driver 1029 , The core mode graphics driver 1029 communicates with the graphics processor 1032 to handle instructions and commands.

In dem Maße, dass hier verschiedene Operationen oder Funktionen beschrieben werden, können sie als Hardwareschaltungen, Softwarecode, Befehle, Konfigurationen und/oder Daten beschrieben oder definiert werden. Der Inhalt kann in Hardwarelogik oder als direkt ausführbare Software (”Objekt”- oder ”ausführbare” Form), Quellcode, Shadercode hoher Ebene, der für die Ausführung auf einer Graphikmaschine vorgesehen ist, oder Assemblysprachencode niedriger Ebene in einem Befehlssatz für einen spezifischen Prozessor oder Graphikkern verwirklicht werden. Der Softwareinhalt der hier beschrienbenen Ausführungsformen kann durch einen Herstellungsgegenstand mit dem darauf gespeicherten Inhalt oder durch ein Verfahren zum Betreiben einer Kommunikationsschnittstelle, um Daten über die Kommunikationsschnittstelle zu senden, bereitgestellt werden.To the extent that various operations or functions are described herein, they may be described or defined as hardware circuits, software code, commands, configurations, and / or data. The content may be in hardware logic or as directly executable software ("object" or "executable" form), source code, high level shader code intended for execution on a graphics engine, or low level assembly language code in a instruction set for a specific processor or Graphics core can be realized. The software content of the embodiments herein may be provided by an article of manufacture having the content stored thereon or by a method of operating a communications interface to send data over the communications interface.

Ein nicht flüchtiges maschinenlesbares Speichermedium kann eine Maschine veranlassen, die beschriebenen Funktionen oder Operationen auszuführen, und es weist einen Mechanismus auf, der Informationen in einer für eine Maschine (beispielsweise einer Rechenvorrichtung, einem elektronischen System usw.) zugänglichen Form speichert, wie beschreibbare/nicht beschreibbare Medien (beispielsweise Nurlesespeicher (ROM), Direktzugriffsspeicher (RAM), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speichervorrichtungen usw.). Eine Kommunikationsschnittstelle weist einen Mechanismus auf, der sich mit einem fest verdrahteten, drahtlosen, optischen usw. Medium verbindet, um mit einer anderen Vorrichtung zu kommunizieren, wie eine Speicherbusschnittstelle, eine Prozessorbusschnittstelle, eine Internetverbindung, eine Plattensteuereinrichtung usw. Die Kommunikationsschnittstelle ist dafür ausgelegt, durch Bereitstellen von Konfigurationsparametern oder Senden von Signalen die Kommunikationsschnittstelle zu präparieren, um ein den Softwareinhalt beschreibendes Datensignal bereitzustellen. Auf die Kommunikationsschnittstelle kann durch einen oder mehrere Befehle oder Signale, die zur Kommunikationsschnittstelle gesendet werden, zugegriffen werden.A non-transitory machine-readable storage medium may cause a machine to perform the described functions or operations, and has a mechanism that stores information in a form accessible to a machine (eg, a computing device, an electronic system, etc.), such as writable / non-writable recordable media (e.g., read-only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.). A communication interface has a mechanism that connects to a hard-wired, wireless, optical, etc. medium to communicate with another device such as a memory bus interface, processor bus interface, internet connection, disk controller, etc. The communication interface is configured to prepare the communication interface by providing configuration parameters or transmitting signals to provide a data signal describing the software content. The communication interface may be accessed by one or more commands or signals sent to the communication interface.

Die folgenden Klauseln und/oder Beispiele betreffen weitere Ausführungsformen:
Eine als Beispiel dienende Ausführungsform kann ein Verfahren sein, bei dem eine Grob-zu-Pixel-Abbildung für eine Pixelgruppe definiert wird, ein Grobpixelshading ausgeführt wird und ein Pixelshading in einem Hardwareprozessor für die Gruppe unter Verwendung der Grob-zu-Pixel-Abbildung ausgeführt wird. Bei dem Verfahren kann auch bestimmt werden, welche Pixel in der Gruppe beleuchtet sind. Bei dem Verfahren kann auch derselbe Kern für das Grob- und Pixelshading verwendet werden. Bei dem Verfahren kann auch ein Einzelner-Befehl-mehrere-Daten-Shader verwendet werden. Bei dem Verfahren können auch dieselben Bahnen sowohl für das Grob- als auch für das Pixelshading verwendet werden. Bei dem Verfahren kann auch ein Pixelshading für die Gruppe ausgeführt werden, nachdem ein Grobshading für die Gruppe ausgeführt wurde. Bei dem Verfahren kann auch ein Befehl zum Schalten der Programmausführung von einer Grobrate zu einer Pixelrate im selben Kernprogramm, das auf einer Einzelner-Befehl-mehrere-Daten-Maschine läuft, verwendet werden. Das Verfahren kann auch das Grobshading mehrerer Vierecke zur Zeit und das anschließende nacheinander erfolgende Pixelshading von jedem der Vierecke aufweisen.
The following clauses and / or examples relate to further embodiments:
An example embodiment may be a method in which a coarse-to-pixel mapping is defined for a pixel group, coarse pixel shading is performed, and pixel shading is performed in a hardware processor for the group using the coarse-to-pixel mapping becomes. The method may also determine which pixels in the group are illuminated. The same core can also be used for coarse and pixel shading in the method. The method may also use a single-instruction-multiple-data-shader. In the method, the same paths can also be used for both coarse and pixel shading. The method may also perform pixel shading for the group after coarse shading has been performed on the group. The method may also use an instruction to switch program execution from a rough rate to a pixel rate in the same core program running on a single instruction multiple data engine. The method may also include coarse shading of multiple squares at a time and then successively pixel shading each of the squares.

Eine andere als Beispiel dienende Ausführungsform kann ein Verfahren sein, bei dem Grob- und Pixelshadings mit Phasen in ein monolithisches Einzelner-Befehl-mehrere-Daten-Programm abgebildet werden, Pixelorte im Schwerpunktsraum bestimmt werden und eine Pixelgruppe unterdrückt wird, falls alle Pixel in der Gruppe unbeleuchtet sind. Bei dem Verfahren können eine Grob-zu-Pixel-Abbildung, eine Pixelbeleuchtungsmaske, eine Pixelgruppe und Schwerpunkte in einem Festfunktionsbeschleuniger kompiliert werden. Bei dem Verfahren können Pixelratenphasen als schleifenförmiger Durchgang über Pixelgruppen, welche durch den Festfunktionsbeschleuniger bestimmt wurden, implementiert werden. Bei dem Verfahren kann eine Ausführungsmaske in jeder Schleife festgelegt werden, kann eine Grob-zu-Pixel-Abbildung für das Vermischen von Zwischenstufendaten zwischen Grob-zu-Pixelratenphasen verwendet werden und können Schwerpunkte verwendet werden, um Pro-Pixel-Attribute in jedem Schleifendurchgang zu interpolieren.Another exemplary embodiment may be a method in which coarse and pixel shading with phases are mapped into a monolithic single-instruction-multiple-data program, pixel locations in centroid space are determined, and a pixel group is suppressed if all the pixels in the Group are unlighted. In the method, a coarse-to-pixel map, a pixel lighting map, a pixel cluster, and centroids can be compiled in a solid-state accelerator. In the method, pixel rate phases may be implemented as a looped pass across pixel groups determined by the fixed function accelerator. In the method, an execution mask may be set in each loop, a coarse-to-pixel mapping may be used for blending interstitial data between coarse-to-pixel rate phases, and centroids may be used to assign per-pixel attributes in each loop pass interpolate.

Gemäß einer anderen als Beispiel dienenden Ausführungsform sind ein oder mehrere nicht flüchtige computerlesbare Medien vorgesehen, welche Befehle speichern, die von einem Prozessor ausgeführt werden, um eine Sequenz auszuführen, wobei eine Grob-zu-Pixel-Abbildung für eine Pixelgruppe definiert wird, ein Grobpixelshading ausgeführt wird und ein Pixelshading in einem Hardwareprozessor für die Gruppe unter Verwendung der Grob-zu-Pixel-Abbildung ausgeführt wird. Die Medien können die Sequenz aufweisen, wobei bestimmt wird, welche Pixel in der Gruppe beleuchtet sind. Die Medien können die Sequenz aufweisen, wobei derselbe Kern für das Grob- und das Pixelshading verwendet wird. Die Medien können die Sequenz aufweisen, wobei ein Einzelner-Befehl-mehrere-Daten-Shader verwendet wird. Die Medien können die Sequenz aufweisen, wobei dieselben Bahnen für das Grob- und das Pixelshading verwendet werden. Die Medien können die Sequenz aufweisen, wobei ein Pixelshading für die Gruppe nach der Ausführung des Grobshadings für die Gruppe ausgeführt wird. Die Medien können die Sequenz aufweisen, wobei ein Befehl zum Schalten der Programmausführung von der Grobrate zur Pixelrate im selben Kernprogramm, welches eine Einzelner-Befehl-mehrere-Daten-Maschine ausführt, verwendet wird. Die Medien können die Sequenz aufweisen, wobei mehrere Vierecke zur Zeit grob geshadet werden und dann ein aufeinander folgendes Pixelshading von jedem der Vierecke ausgeführt wird.In another exemplary embodiment, one or more non-transitory computer readable media is provided which stores instructions executed by a processor to execute a sequence defining a coarse-to-pixel mapping for a pixel group, coarse pixel shading and pixel shading is performed in a hardware processor for the group using the coarse-to-pixel mapping. The media may comprise the sequence, determining which pixels in the group are illuminated. The media may have the sequence using the same core for coarse and pixel shading. The media may comprise the sequence using a single-instruction-multiple-data-shader. The media may have the sequence using the same coarse and pixel shading paths. The media may comprise the sequence, with pixel shading for the group being performed after the coarse-casting of the group. The media may comprise the sequence wherein a command to switch program execution from the rough rate to the pixel rate is used in the same core program executing a single command multiple data engine. The media may comprise the sequence, with multiple rectangles currently being roughly shed and then consecutive pixel shading being performed on each of the quadrangles.

Eine weitere als Beispiel dienende Ausführungsform kann eine Vorrichtung sein, welche einen Hardwareprozessor, um eine Grob-zu-Pixel-Abbildung für eine Pixelgruppe zu definieren, ein Grobpixelshading auszuführen und ein Pixelshading in einem Hardwareprozessor für die Gruppe unter Verwendung der Grob-zu-Pixel-Abbildung auszuführen, und einen mit dem Prozessor gekoppelten Speicher umfasst. Die Vorrichtung kann den Prozessor aufweisen, um zu bestimmen, welche Pixel in der Gruppe beleuchtet sind. Die Vorrichtung kann den Prozessor aufweisen, um denselben Kern für das Grob- und das Pixelshading zu verwenden. Die Vorrichtung kann den Prozessor aufweisen, um einen Einzelner-Befehl-mehrere-Daten-Shader zu verwenden. Die Vorrichtung kann den Prozessor aufweisen, um dieselben Bahnen sowohl für das Grob- als auch für das Pixelshading zu verwenden. Die Vorrichtung kann den Prozessor aufweisen, um ein Pixelshading für die Gruppe auszuführen, nachdem ein Grobshading für die Gruppe ausgeführt wurde. Die Vorrichtung kann den Prozessor aufweisen, um einen Befehl zum Schalten der Programmausführung von der Grobrate zur Pixelrate im selben Kernprogramm, das eine Einzelner-Befehl-mehrere-Daten-Maschine ausführt, zu verwenden. Die Vorrichtung kann den Prozessor aufweisen, um mehrere Vierecke zu einer Zeit grob zu shaden und dann ein Pixelshading von jedem der Vierecke nacheinander auszuführen. Die Vorrichtung kann einen Speichersteuerungs-Hub aufweisen. Die Vorrichtung kann einen Drahtlostransceiver aufweisen.Another example embodiment may be an apparatus that performs a hard-disk processor to define a coarse-to-pixel mapping for a pixel group, coarse pixel shading, and pixel shading in a group hardware processor using the coarse-to-pixel Map and includes a memory coupled to the processor. The Apparatus may include the processor to determine which pixels in the group are illuminated. The device may include the processor to use the same core for coarse and pixel shading. The device may include the processor to use a single-instruction-multiple-data shader. The device may include the processor to use the same paths for both coarse and pixel shading. The device may include the processor to perform pixel shading on the group after coarse shading has been performed on the group. The apparatus may include the processor to use an instruction to switch program execution from the coarse rate to the pixel rate in the same core program executing a single instruction multiple data engine. The apparatus may include the processor for roughly shaving a plurality of quadrangles at a time and then performing pixel shading of each of the quadrangles sequentially. The device may include a memory control hub. The device may comprise a wireless transceiver.

Verschiedene Komponenten, die hier beschrieben werden, können ein Mittel zum Ausführen der beschriebenen Operationen oder Funktionen sein. Jede hier beschriebene Komponente weist Software, Hardware oder eine Kombination von diesen auf. Die Komponenten können als Softwaremodule, Hardwaremodule, Hardware für einen speziellen Zweck (beispielsweise anwendungsspezifische Hardware, anwendungsspezifische integrierte Schaltungen (ASIC), digitale Signalprozessoren (DSP) usw.), eingebettete Steuereinrichtungen, festverdrahtete Schaltungen usw. implementiert sein. Abgesehen von dem, was hier beschrieben wurde, können an den offenbarten Ausführungsformen und Implementationen der Erfindung verschiedene Modifikationen vorgenommen werden, ohne von ihrem Schutzumfang abzuweichen. Daher sollten die hier gegebenen Erläuterungen und Beispiele als erläuternd und nicht in einschränkendem Sinne ausgelegt werden. Der Schutzumfang der Erfindung sollte ausschließlich anhand der folgenden Ansprüche bemessen werden.Various components described herein may be a means for performing the described operations or functions. Each component described here has software, hardware or a combination of these. The components may be implemented as software modules, hardware modules, special purpose hardware (eg, application specific hardware, application specific integrated circuits (ASIC), digital signal processors (DSP), etc.), embedded controllers, hardwired circuits, and so on. Apart from what has been described herein, various modifications can be made to the disclosed embodiments and implementations of the invention without departing from its scope. Therefore, the explanations and examples given herein should be interpreted as illustrative and not in a limiting sense. The scope of the invention should be determined solely by reference to the following claims.

Die hier beschriebenen Graphikverarbeitungstechniken können in verschiedenen Hardwarearchitekturen implementiert werden. Beispielsweise kann eine Graphikfunktionalität in einen Chipsatz integriert werden. Alternativ kann ein diskreter Graphikprozessor verwendet werden. Gemäß einer anderen Ausführungsform können die Graphikfunktionen durch einen Prozessor für allgemeine Zwecke, einschließlich eines Mehrkernprozessors, implementiert werden.The graphics processing techniques described herein may be implemented in various hardware architectures. For example, graphics functionality can be integrated into a chipset. Alternatively, a discrete graphics processor may be used. In another embodiment, the graphics functions may be implemented by a general purpose processor, including a multi-core processor.

In dieser Patentschrift gemachte Bezüge auf ”eine einzige Ausführungsform” oder ”eine Ausführungsform” bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, die in Zusammenhang mit der Ausführungsform beschrieben wird, in wenigstens einer Implementation enthalten ist, die von der vorliegenden Offenbarung eingeschlossen wird. Demgemäß beziehen sich Instanzen des Begriffs ”eine einzige Ausführungsform” oder ”gemäß einer Ausführungsform” nicht notwendigerweise auf dieselbe Ausführungsform. Ferner können die bestimmten Merkmale, Strukturen oder Eigenschaften in anderen geeigneten Formen als der erläuterten speziellen Ausführungsform verwirklicht werden, und all diese Formen können von den Ansprüchen der vorliegenden Anmeldung abgedeckt werden.References made to "a single embodiment" or "an embodiment" in this specification mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one implementation that is well-defined This disclosure is included. Accordingly, instances of the term "a single embodiment" or "according to one embodiment" do not necessarily refer to the same embodiment. Further, the particular features, structures, or properties may be embodied in other suitable forms than the particular embodiment discussed, and all such forms may be covered by the claims of the present application.

Wenngleich eine beschränkte Anzahl von Ausführungsformen beschrieben wurde, werden Fachleuten zahlreiche Modifikationen und Variationen davon einfallen. Es ist vorgesehen, dass die anliegenden Ansprüche all diese Modifikationen und Variationen abdecken, die in den wahren Gedanken und den Schutzumfang dieser Offenbarung fallen.Although a limited number of embodiments have been described, many modifications and variations will occur to those skilled in the art. It is intended by the appended claims to cover all such modifications and variations that fall within the true spirit and scope of this disclosure.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte Nicht-PatentliteraturCited non-patent literature

  • ”Lossless Compression of Variable Precision Floating-Point Buffers on GPUs,” Symposium on Interactive 3D Graphics and Games (2012), S. 47–54 [0071] "Lossless Compression of Variable Precision Floating-Point Buffers on GPUs," Symposium on Interactive 3D Graphics and Games (2012), pp. 47-54 [0071]

Claims (25)

Verfahren, welches folgende Schritte umfasst: Definieren einer Grob-zu-Pixel-Abbildung für eine Pixelgruppe, Ausführen eines Grobpixelshadings und Ausführen eines Pixelshadings in einem Hardwareprozessor für die Gruppe unter Verwendung der Grob-zu-Pixel-Abbildung.Method comprising the following steps: Defining a coarse-to-pixel mapping for a pixel group, Performing a coarse pixelhadings and Performing pixel shading in a hardware processor for the group using the coarse-to-pixel mapping. Verfahren nach Anspruch 1, wobei bestimmt wird, welche Pixel in der Gruppe beleuchtet sind.The method of claim 1, wherein it is determined which pixels in the group are illuminated. Verfahren nach Anspruch 1, wobei derselbe Kern für das Grob- und das Pixelshading verwendet wird.The method of claim 1, wherein the same core is used for coarse and pixel shading. Verfahren nach Anspruch 3, wobei ein Einzelner-Befehl-mehrere-Daten-Shader verwendet wird.The method of claim 3, wherein a single command multiple data shader is used. Verfahren nach Anspruch 4, wobei dieselben Bahnen sowohl für das Grob- als auch für das Pixelshading verwendet werden.The method of claim 4, wherein the same traces are used for both coarse and pixel shading. Verfahren nach Anspruch 1, wobei ein Pixelshading für die Gruppe nach dem Ausführen eines Grobshadings für die Gruppe ausgeführt wird.The method of claim 1, wherein a pixel shading for the group is performed after performing coarse harming to the group. Verfahren nach Anspruch 1, wobei ein Befehl zum Schalten der Programmausführung von der Grobrate zur Pixelrate im selben Kernprogramm, welches eine Einzelner-Befehl-mehrere-Daten-Maschine ausführt, verwendet wird.The method of claim 1, wherein an instruction to switch program execution from the rough rate to the pixel rate is used in the same core program executing a single instruction multiple data engine. Verfahren nach Anspruch 1, wobei ein Grobshading mehrerer Vierecke zu einer Zeit ausgeführt wird und dann ein Pixelshading von jedem der Vierecke nacheinander ausgeführt wird.The method of claim 1, wherein coarse shading of a plurality of quadrangles is performed at a time, and then pixel shading of each of the quadrangles is successively performed. Verfahren, welches folgende Schritte umfasst: Abbilden eines Grob- und Pixelshadings mit Phasen in ein monolithisches Einzelner-Befehl-mehrere-Daten-Programm, Bestimmen von Pixelorten im Schwerpunktsraum und Unterdrücken einer Pixelgruppe, falls alle Pixel in der Gruppe unbeleuchtet sind.Method comprising the following steps: Mapping coarse and pixel shading with phases into a monolithic single-instruction-multiple-data program, Determine pixel locations in center of gravity and Suppressing a pixel group if all the pixels in the group are unlit. Verfahren nach Anspruch 9, wobei eine Grob-zu-Pixel-Abbildung, eine Pixelbeleuchtungsmaske, eine Pixelgruppe und Schwerpunkte in einem Festfunktionsbeschleuniger kompiliert werden.The method of claim 9, wherein a coarse-to-pixel mapping, a pixel illumination mask, a pixel group, and centroids are compiled in a solid-state accelerator. Verfahren nach Anspruch 10, wobei Pixelratenphasen als eine Schleife über durch den Festfunktionsbeschleuniger bestimmte Pixelgruppen implementiert werden.The method of claim 10, wherein pixel rate phases are implemented as a loop over pixel groups determined by the fixed function accelerator. Verfahren nach Anspruch 11, wobei eine Ausführungsmaske in jeder Schleife festgelegt wird, eine Grob-zu-Pixel-Abbildung zum Vermischen von Zwischenstufendaten zwischen Grob-zu-Pixelratenphasen verwendet wird und Schwerpunkte verwendet werden, um Pro-Pixel-Attribute in jedem Schleifendurchgang zu interpolieren.The method of claim 11, wherein an execution mask is set in each loop, a coarse-to-pixel map is used to blend interstep data between coarse-to-pixel rate phases, and centroids are used to interpolate per-pixel attributes in each loop pass , Ein oder mehrere nicht flüchtige computerlesbare Medien, welche Befehle speichern, die von einem Prozessor ausgeführt werden, um eine Sequenz auszuführen, welche folgende Schritte umfasst: Definieren einer Grob-zu-Pixel-Abbildung für eine Pixelgruppe, Ausführen eines Grobpixelshadings und Ausführen eines Pixelshadings in einem Hardwareprozessor für die Gruppe unter Verwendung der Grob-zu-Pixel-Abbildung.One or more non-transitory computer-readable media storing instructions executed by a processor to execute a sequence comprising the steps of: Defining a coarse-to-pixel mapping for a pixel group, Performing a coarse pixelhadings and Performing pixel shading in a hardware processor for the group using the coarse-to-pixel mapping. Medien nach Anspruch 13, wobei beider Sequenz bestimmt wird, welche Pixel in der Gruppe beleuchtet sind.The media of claim 13, wherein the sequence determines which pixels in the group are illuminated. Medien nach Anspruch 13, wobei bei der Sequenz derselbe Kern für das Grob- und das Pixelshading verwendet wird.The media of claim 13, wherein the sequence uses the same core for coarse and pixel shading. Medien nach Anspruch 15, wobei bei der Sequenz ein Einzelner-Befehl-mehrere-Daten-Shader verwendet wird.The media of claim 15, wherein the sequence uses a single-instruction-multiple-data-shader. Medien nach Anspruch 16, wobei bei der Sequenz dieselben Bahnen sowohl für das Grob- als auch das Pixelshading verwendet werden. The media of claim 16, wherein the sequence uses the same paths for both coarse and pixel shading. Medien nach Anspruch 13, wobei bei der Sequenz ein Pixelshading für die Gruppe ausgeführt wird, nachdem ein Grobshading für die Gruppe ausgeführt wurde.The media of claim 13, wherein the sequence performs pixel shading on the group after coarse shading has been performed on the group. Medien nach Anspruch 13, wobei bei der Sequenz ein Befehl zum Schalten der Programmausführung von einer Grobrate zu einer Pixelrate im selben Kernprogramm, das eine Einzelner-Befehl-mehrere-Daten-Maschine ausführt, verwendet wird.The media of claim 13, wherein the sequence uses a command to switch program execution from a rough rate to a pixel rate in the same core program executing a single command multiple data engine. Medien nach Anspruch 13, wobei die Sequenz ein Grobshading mehrerer Vierecke zu einer Zeit und ein anschließendes Pixelshading von jedem der Vierecke nacheinander aufweist.The media of claim 13, wherein the sequence comprises coarse shading of a plurality of squares at a time and subsequent pixel shading of each of the squares in succession. Vorrichtung, welche Folgendes umfasst: einen Hardwareprozessor zum Definieren einer Grob-zu-Pixel-Abbildung für eine Pixelgruppe, zum Ausführen eines Grobpixelshadings und zum Ausführen eines Pixelshadings in einem Hardwareprozessor für die Gruppe unter Verwendung der Grob-zu-Pixel-Abbildung und einen Speicher, der mit dem Prozessor gekoppelt ist.Apparatus comprising: a hardware processor for defining a coarse-to-pixel mapping for a pixel group, performing a coarse pixeling, and performing pixel shading on a hardware processor for the group using the coarse-to-pixel mapping and a memory coupled to the processor. Vorrichtung nach Anspruch 21, wobei der Prozessor bestimmt, welche Pixel in der Gruppe beleuchtet sind.The apparatus of claim 21, wherein the processor determines which pixels in the group are illuminated. Vorrichtung nach Anspruch 21, wobei der Prozessor denselben Kern für das Grob- und das Pixelshading verwendet.The apparatus of claim 21, wherein the processor uses the same core for coarse and pixel shading. Vorrichtung nach Anspruch 23, wobei der Prozessor einen Einzelner-Befehlmehrere-Daten-Shader verwendet.The apparatus of claim 23, wherein the processor uses a single command of multiple data shaders. Vorrichtung nach Anspruch 24, wobei der Prozessor dieselben Bahnen sowohl für das Grob- als auch für das Pixelshading verwendet.The apparatus of claim 24, wherein the processor uses the same paths for both coarse and pixel shading.
DE102015002581.3A 2014-04-03 2015-02-27 Mapping a multi-rate harm to monolithic programs Pending DE102015002581A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461974602P 2014-04-03 2014-04-03
US61/974,602 2014-04-03
US14/492,471 2014-09-22
US14/492,471 US9905046B2 (en) 2014-04-03 2014-09-22 Mapping multi-rate shading to monolithic programs

Publications (1)

Publication Number Publication Date
DE102015002581A1 true DE102015002581A1 (en) 2015-10-08

Family

ID=54146495

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015002581.3A Pending DE102015002581A1 (en) 2014-04-03 2015-02-27 Mapping a multi-rate harm to monolithic programs

Country Status (2)

Country Link
CN (1) CN110246210B (en)
DE (1) DE102015002581A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111048156A (en) * 2019-11-21 2020-04-21 中国航空工业集团公司西安航空计算技术研究所 Large-scale dyeing array performance detection and evaluation method

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9811237B2 (en) * 1999-04-06 2017-11-07 Iii Holdings 2, Llc Visual navigation of virtual environments through logical processes
KR100532456B1 (en) * 2003-07-30 2005-11-30 삼성전자주식회사 Memory controller and semiconductor having the same
US8325184B2 (en) * 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
US8605086B2 (en) * 2008-07-03 2013-12-10 Nvidia Corporation Hybrid multisample/supersample antialiasing
US8266542B2 (en) * 2010-06-17 2012-09-11 Hewlett-Packard Development Company, L.P. Rendering and sorting book search results as three dimensional icons
US20130063460A1 (en) * 2011-09-08 2013-03-14 Microsoft Corporation Visual shader designer

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Lossless Compression of Variable Precision Floating-Point Buffers on GPUs," Symposium on Interactive 3D Graphics and Games (2012), S. 47-54

Also Published As

Publication number Publication date
CN110246210B (en) 2024-04-16
CN110246210A (en) 2019-09-17

Similar Documents

Publication Publication Date Title
KR101653157B1 (en) Mapping multi-rate shading to monolithic programs
EP3286738B1 (en) Apparatus and method for non-uniform frame buffer rasterization
US10242493B2 (en) Method and apparatus for filtered coarse pixel shading
DE102019120661A1 (en) Video refinement mechanism
DE102019117469A1 (en) Video processing mechanism
DE102019119085A1 (en) POINT-BASED RENDERING AND PROJECTION NOISE REMOVAL
EP3221850B1 (en) Apparatus and method for efficient frame-to-frame coherency exploitation for sort-last architectures
DE112017003932T5 (en) Mechanism for accelerating graphics workloads in a multi-core computing architecture
DE102019117218A1 (en) Reduced rendering of a video with six degrees of freedom
DE112014002477T5 (en) Apparatus and method for efficient graphics processing in a virtual execution environment
CN107004280A (en) Method and apparatus for efficient texture compression
US9412195B2 (en) Constant buffer size multi-sampled anti-aliasing depth compression
DE102019115130A1 (en) Device and method for conservative morphological anti-aliasing with multiple scanning
DE112017004077T5 (en) DEVICE AND METHOD FOR OPTIMIZED TILE-BASED RENDERING
DE112017003838T5 (en) THREAD PRIORITY MECHANISM
US10410081B2 (en) Method and apparatus for a high throughput rasterizer
DE102019133561A1 (en) System and method for detecting changes in rendered scenes using remote-hosted graphics applications
DE112017004550T5 (en) ON MINIMUM / MAXIMUM AND BITWEISER AND / OR BASED GROOVED TEMPLATE TEST
US10198850B2 (en) Method and apparatus for filtering compressed textures
DE102019127349A1 (en) POINT CLOUD CODE STANDARD CONFORMITY DEFINITION IN COMPUTER ENVIRONMENTS
DE102015002581A1 (en) Mapping a multi-rate harm to monolithic programs
DE102020107430A1 (en) Dynamically enabling tile generation on 3D workloads

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication