DE102022122793A1 - RADIATION INTERFACE TEST WITH QUANTIZATION AND INTERVAL REPRESENTATIONS - Google Patents

RADIATION INTERFACE TEST WITH QUANTIZATION AND INTERVAL REPRESENTATIONS Download PDF

Info

Publication number
DE102022122793A1
DE102022122793A1 DE102022122793.6A DE102022122793A DE102022122793A1 DE 102022122793 A1 DE102022122793 A1 DE 102022122793A1 DE 102022122793 A DE102022122793 A DE 102022122793A DE 102022122793 A1 DE102022122793 A1 DE 102022122793A1
Authority
DE
Germany
Prior art keywords
representation
interval
ray
primitive
precision
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.)
Granted
Application number
DE102022122793.6A
Other languages
German (de)
Inventor
Christopher A. Burns
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.)
Apple Inc
Original Assignee
Apple Inc
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 US17/456,483 external-priority patent/US11734871B2/en
Priority claimed from US17/456,503 external-priority patent/US11830124B2/en
Application filed by Apple Inc filed Critical Apple Inc
Publication of DE102022122793A1 publication Critical patent/DE102022122793A1/en
Granted 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/005General purpose rendering architectures
    • 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/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Analysing Materials By The Use Of Radiation (AREA)

Abstract

Es werden Techniken für primitive Schnittstellentests für die Strahlenverfolgung in Grafikprozessoren offenbart. In einigen Ausführungsformen schließt ein Grafikprozessor eine Strahlenschnittstellenschaltlogik ein, die so konfiguriert ist, dass sie einen Schnittstellentest durchführt, der Folgendes einschließt: Quantisieren einer ersten Darstellung des Primitivs, um eine Intervalldarstellung des Primitivs mit reduzierter Genauigkeit zu erzeugen, Quantisieren einer ersten Darstellung des Strahls, um eine Intervalldarstellung des Strahls mit reduzierter Genauigkeit zu erzeugen, und Bestimmen, unter Verwendung von Intervallarithmetik, eines anfänglichen Schnittstellenergebnisses auf der Grundlage von Koordinaten der Intervalldarstellung des Primitivs und Koordinaten der Intervalldarstellung des Strahls. Das anfängliche Schnittstellenergebnis kann ein konservatives Ergebnis sein, sodass ein durch das anfängliche Schnittstellenergebnis angezeigter Fehlschlag garantiert kein Treffer für die erste Darstellung des Primitivs und die erste Darstellung des Strahls ist. Die offenbarten Techniken können die Leistung verbessern, den Stromverbrauch senken oder beides im Vergleich zu herkömmlichen Techniken.Techniques for primitive interface tests for ray tracing in graphics processors are disclosed. In some embodiments, a graphics processor includes ray interface circuitry configured to perform an interface test that includes: quantizing a first representation of the primitive to generate a reduced-precision interval representation of the primitive, quantizing a first representation of the ray, to generate an interval representation of the ray with reduced precision, and determining, using interval arithmetic, an initial intersection result based on coordinates of the interval representation of the primitive and coordinates of the interval representation of the ray. The initial intersection result may be a conservative result, such that a miss indicated by the initial intersection result is guaranteed to be a no-hit for the first representation of the primitive and the first representation of the ray. The disclosed techniques may improve performance, reduce power consumption, or both compared to conventional techniques.

Description

HINTERGRUNDBACKGROUND

Technisches Gebiettechnical field

Diese Offenbarung bezieht sich im Allgemeinen auf Grafikprozessoren und im Besonderen auf primitive Schnittstellentests für die Strahlenverfolgung.This disclosure relates generally to graphics processors and more particularly to primitive interface tests for ray tracing.

Beschreibung des Stands der TechnikDescription of the prior art

In der Computergrafik ist die Strahlenverfolgung eine Renderingtechnik zur Erzeugung eines Bildes, bei der der Weg des Lichts in Form von Pixeln in einer Bildebene verfolgt wird und die Auswirkungen der Begegnungen mit virtuellen Objekten simuliert werden. Die Strahlenverfolgung kann die Auflösung der Sichtbarkeit in drei Dimensionen zwischen zwei beliebigen Punkten in der Szene ermöglichen, was auch die Ursache für den größten Teil des Rechenaufwands ist. Ein üblicher Strahlenverfolger tastet den Weg des Lichts durch die Szene in der umgekehrten Richtung der Lichtausbreitung ab, d. h. von der Kamera ausgehend und in die Szene hinein, anstatt von den Lichtquellen ausgehend (dies wird manchmal als „Rückwärtsstrahlenverfolgung“ bezeichnet). Das Ausgehen von der Kamera hat den Vorteil, dass nur Strahlen verfolgt werden, die für die Kamera sichtbar sind. Dieses System kann einen Rasterizer modellieren, bei dem Strahlen einfach an der ersten Oberfläche anhalten und einen Shader (analog zu einem Fragment-Shader) aufrufen, um eine Farbe zu berechnen. Häufiger werden auch sekundäre Auswirkungen modelliert, d. h. der Austausch von Licht zwischen Szenenelementen, wie beispielsweise diffuse Interreflexion und Transmission. Shader, die die Reflexionseigenschaften von Oberflächen auswerten, können weitere Schnittpunktabfragen durchführen (z. B. neue Strahlen erzeugen), um die von anderen Oberflächen eingehende Beleuchtung zu erfassen. Dieser rekursive Prozess hat viele Formulierungen, wird aber im Allgemeinen als Pfadverfolgung bezeichnet.In computer graphics, ray tracing is a rendering technique used to create an image by tracing the path of light in the form of pixels in an image plane and simulating the effects of encounters with virtual objects. Ray tracing can enable visibility resolution in three dimensions between any two points in the scene, which is also the source of most of the computational effort. A common ray tracer scans the light's path through the scene in the reverse direction of light propagation, i. H. emanating from the camera and into the scene, rather than from the light sources (sometimes referred to as "backward ray tracing"). Going out from the camera has the advantage of only tracing rays that are visible to the camera. This system can model a rasterizer where rays simply stop at the first surface and call a shader (analogous to a fragment shader) to compute a color. Secondary impacts are more commonly modelled, i. H. the exchange of light between scene elements, such as diffuse interreflection and transmission. Shaders that evaluate the reflectance properties of surfaces can perform additional intersection queries (e.g. create new rays) to capture the lighting coming from other surfaces. This recursive process has many phrasings, but is commonly referred to as path tracing.

Grafikprozessoren, die Strahlenverfolgung implementieren, bieten üblicherweise realistischere Szenen und Beleuchtungseffekte als herkömmliche Rasterisierungssysteme. Die Strahlenverfolgung ist jedoch üblicherweise sehr rechenintensiv. Verbesserungen der Strahlenverfolgungstechniken können den Realismus von Grafikszenen erhöhen, die Leistung steigern (z. B. die Verfolgung von mehr Strahlen pro Bild, die Verfolgung in komplexeren Szenen oder beides), den Stromverbrauch senken (was bei batteriebetriebenen Vorrichtungen besonders wichtig sein kann) usw.Graphics processors that implement ray tracing typically provide more realistic scenes and lighting effects than traditional rasterization systems. However, ray tracing is usually very computationally intensive. Improvements in ray tracing techniques can increase the realism of graphics scenes, improve performance (e.g. tracing more rays per frame, tracing in more complex scenes, or both), reduce power consumption (which can be especially important in battery-powered devices), etc.

Die Abfrage von Strahlenschnittpunkten kann von Shadern, von spezieller Hardware oder von einer Kombination aus beidem durchgeführt werden. Verschiedene Arten von Schnittpunktabfragen können unterschiedliche Arten von Informationen bereitstellen. Eine Abfrage „nächster Treffer“ kann zum Beispiel die nächstgelegene geschnittene Geometrie entlang eines Strahls und innerhalb des parametrischen Intervalls, in dem der Strahl gültig ist, lokalisieren (dies ist wahrscheinlich die häufigste Art der Abfrage). Eine Abfrage „beliebiger Treffer“ kann angeben, ob es entlang des Strahls und innerhalb des parametrischen Intervalls eine geschnittene Geometrie gibt. Diese Art der Abfrage kann zum Beispiel für Schattenstrahlen verwendet werden, um zu bestimmen, ob ein Punkt in der Szene für das Licht sichtbar ist oder verdeckt wird. Sobald die geschnittene Geometrie bestimmt wurde, kann diese Geometrie auf der Grundlage der Schnittpunkte schattiert werden, was wiederum weitere Strahlen für Schnittstellentests erzeugen kann, z. B. von reflektierenden Oberflächen.The interrogation of ray intersections can be performed by shaders, by dedicated hardware, or by a combination of both. Different types of intersection queries can provide different types of information. For example, a "nearest hit" query can locate the closest intersected geometry along a ray and within the parametric interval that the ray is valid (this is probably the most common type of query). An "any hit" query can indicate whether there is intersected geometry along the ray and within the parametric interval. This type of query can be used for shadow rays, for example, to determine whether a point in the scene is visible to the light or is obscured. Once the intersected geometry has been determined, this geometry can be shaded based on the intersection points, which in turn can generate further rays for interface testing, e.g. B. from reflective surfaces.

Bewegungsunschärfe ist ein Phänomen, das auftritt, wenn sich das aufgenommene Bild während der Aufnahme einer einzelnen Belichtung verändert. So kann zum Beispiel ein Foto eines fahrenden Güterzuges mit einer ausreichend langen Belichtungszeit den Zug unscharf zeigen, während sich nicht bewegende Objekte nicht unscharf sind. Im Kontext der Computergrafik kann ein Grafikprozessor den Effekt der Bewegungsunschärfe für ein Bild der Grafikdaten simulieren. In diesem Kontext kann ein animiertes Grafikprimitiv (z. B. ein Dreieck) mit mehreren verschiedenen Positionen während eines offenen Verschlussintervalls einer virtuellen Kamera (hierin auch als Bewegungsunschärfeintervall bezeichnet) modelliert werden und somit Pixelwerte an den mehreren Positionen im Bild beeinflussen, um einen Unschärfeeffekt zu verursachen.Motion blur is a phenomenon that occurs when the captured image changes during the capture of a single exposure. For example, a photograph of a moving freight train with a sufficiently long exposure time can show the train out of focus while not blurring out non-moving objects. In the context of computer graphics, a graphics processor can simulate the effect of motion blur on an image of the graphics data. In this context, an animated graphics primitive (e.g., a triangle) can be modeled with multiple different positions during a virtual camera's open shutter interval (also referred to herein as a motion blur interval), thus affecting pixel values at the multiple positions in the image to create a blurring effect cause.

Jedem Strahl wird üblicherweise ein genauer Zeitstempel zugeordnet, z. B. innerhalb eines Bewegungsunschärfeintervalls. Wenn sowohl die Strahlenverfolgung als auch die Bewegungsunschärfe implementiert werden, kann das Testen auf Strahlen-/Primitivschnittpunkte kostspielig in Bezug auf Prozessorressourcen und Stromverbrauch sein.Each ray is usually assigned an accurate time stamp, e.g. B. within a motion blur interval. When both ray tracing and motion blur are implemented, testing for ray/primitive intersections can be costly in terms of processor resources and power consumption.

Figurenlistecharacter list

  • 1A ist ein Diagramm, das einen Überblick über beispielhafte Grafikverarbeitungsoperationen veranschaulicht, gemäß einigen Ausführungsformen. 1A 12 is a diagram illustrating an overview of example graphics processing operations, according to some embodiments.
  • 1B ist ein Blockdiagramm, das eine beispielhafte Grafikeinheit veranschaulicht, gemäß einigen Ausführungsformen. 1B 10 is a block diagram illustrating an example graphics unit, according to some embodiments.
  • 2A ist ein Blockdiagramm, das ein Beispiel für eine Testschaltlogik mit geringer Genauigkeit veranschaulicht, gemäß einigen Ausführungsformen. 2A 14 is a block diagram illustrating example low-precision test circuitry, according to some embodiments.
  • 2B ist ein Blockdiagramm, das ein Beispiel für eine Schnittstellentesttechnik veranschaulicht, gemäß einigen Ausführungsformen. 2 B 12 is a block diagram illustrating an example interface testing technique, according to some embodiments.
  • 3 ist ein Diagramm, das beispielhafte Intervalldarstellungen für verschiedene Werte veranschaulicht, die in einem anfänglichen Schnittstellentest verwendet werden, gemäß einigen Ausführungsformen. 3 14 is a diagram illustrating example interval plots for various values used in an initial interface test, according to some embodiments.
  • 4 ist ein Diagramm, das eine beispielhafte Interpolationsschaltlogik veranschaulicht, die so konfiguriert ist, dass sie eine Intervalldarstellung eines interpolierten Primitivs in einem Bewegungsunschärfeintervall erzeugt, gemäß einigen Ausführungsformen. 4 12 is a diagram illustrating example interpolation circuitry configured to generate an interval representation of an interpolated primitive in a motion blur interval, according to some embodiments.
  • 5 ist ein Blockdiagramm, das eine beispielhafte Scherfaktorschaltlogik veranschaulicht, die zur Erzeugung von Scherfaktorintervallen konfiguriert ist, gemäß einigen Ausführungsformen. 5 12 is a block diagram illustrating example shear factor circuitry configured to generate shear factor intervals, in accordance with some embodiments.
  • 6 ist ein Diagramm zur Veranschaulichung einer beispielhaften Schaltlogik, die so konfiguriert ist, dass sie Eckpunkte unter Verwendung von Scherfaktorintervallen übersetzt und schert, gemäß einigen Ausführungsformen. 6 14 is a diagram illustrating example switching logic configured to translate and shear vertices using shear factor intervals, in accordance with some embodiments.
  • 7 ist ein Diagramm, das eine beispielhafte Schaltlogik veranschaulicht, die so konfiguriert ist, dass sie ein anfängliches Schnittstellentestergebnis erzeugt, gemäß einigen Ausführungsformen. 7 12 is a diagram illustrating example circuitry configured to generate an initial interface test result, in accordance with some embodiments.
  • 8 ist ein Diagramm, das eine beispielhafte Schaltlogik zur Erzeugung eines modifizierten Intervallprodukts veranschaulicht, gemäß einigen Ausführungsformen. 8th 12 is a diagram illustrating example circuitry for generating a modified interval product, in accordance with some embodiments.
  • 9 ist ein Diagramm, das ein Beispiel für eine Verarbeitungsschaltlogik für Dreieckspaare und sequentielle Paare veranschaulicht, gemäß einigen Ausführungsformen. 9 12 is a diagram illustrating example processing circuitry for triangle pairs and sequential pairs, according to some embodiments.
  • 10 ist ein Diagramm, das ein Beispiel für die Grenzen einer quantisierten primitiven Darstellung und einer Region für einen eindeutigen Treffer veranschaulicht, gemäß einigen Ausführungsformen. 10 12 is a diagram illustrating an example of the boundaries of a quantized primitive representation and a unique hit region, according to some embodiments.
  • 11 ist ein Diagramm, das eine beispielhafte Testschaltlogik veranschaulicht, die so konfiguriert ist, dass sie einen Treffer oder eine nicht eindeutige Ausgabe erzeugt, gemäß einigen Ausführungsformen. 11 12 is a diagram illustrating example test circuitry configured to produce a hit or an ambiguous output, according to some embodiments.
  • 12 ist ein Diagramm, das eine beispielhafte Schaltlogik veranschaulicht, die so konfiguriert ist, dass sie ein anfängliches Schnittstellentestergebnis erzeugt, gemäß einigen Ausführungsformen. 12 12 is a diagram illustrating example circuitry configured to generate an initial interface test result, in accordance with some embodiments.
  • 13 ist ein Diagramm, das beispielhafte primitive Testsequenzen in verschiedenen Reihenfolgen, einschließlich einer Mitte-Außen-Reihenfolge veranschaulicht, gemäß einigen Ausführungsformen. 13 12 is a diagram illustrating example test primitive sequences in various orders, including a center-outer order, according to some embodiments.
  • 14 ist ein Flussdiagramm, das ein beispielhaftes Verfahren veranschaulicht, gemäß einigen Ausführungsformen. 14 10 is a flow chart illustrating an example method, according to some embodiments.
  • 15 ist ein Flussdiagramm, das ein weiteres beispielhaftes Verfahren veranschaulicht, gemäß einigen Ausführungsformen. 15 12 is a flow chart illustrating another example method, according to some embodiments.
  • 16 ist ein Blockdiagramm, das eine beispielhafte Rechenvorrichtung veranschaulicht, gemäß einigen Ausführungsformen. 16 10 is a block diagram illustrating an example computing device, according to some embodiments.
  • 17 ist ein Diagramm, das beispielhafte Anwendungen offenbarter Systeme und Vorrichtungen veranschaulicht, gemäß einigen Ausführungsformen. 17 12 is a diagram illustrating example applications of disclosed systems and devices, according to some embodiments.
  • 18 ist ein Blockdiagramm, das ein beispielhaftes computerlesbares Medium veranschaulicht, das Schaltungsdesigninformationen speichert, gemäß einigen Ausführung sformen. 18 12 is a block diagram illustrating an example computer-readable medium storing circuit design information, according to some embodiments.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

In offenbarten Ausführungsformen wird zunächst ein Hardwaredreieckstest mit geringerer Genauigkeit als Filter durchgeführt, und ein Dreieckstest mit höherer Genauigkeit wird durchgeführt, wenn der Test mit geringerer Genauigkeit einen potenziellen Treffer ergibt. Dieser Test mit geringer Genauigkeit kann konservativ sein (z. B. kann er zu falschen Treffern führen, sollte aber nicht zu falschen Fehlschlägen führen). US-Pat. Anm.
Nr. 17/136,542 , die am 29. Dezember 2020 eingereicht wurde und den Titel „Primitive Testing for Ray Intersection at Multiple Precisions“ trägt, wird durch Bezugnahme hierin in vollem Umfang aufgenommen. In der Anmeldung '542 werden beispielhafte Techniken mit Tests bei unterschiedlichen Genauigkeiten beschrieben und wie potenzielle Fehler aufgrund der Quantisierung der Eingaben während des gesamten Tests mit reduzierter Genauigkeit verfolgt werden können, um sicherzustellen, dass die Ergebnisse konservativ sind.
In disclosed embodiments, a lower precision hardware triangle test is performed first than filter, and a higher precision triangle test is performed when the test with less accuracy results in a potential hit. This low-precision test can be conservative (e.g., it can result in false hits, but should not result in false misses). US Pat. note
No. 17/136,542 , filed December 29, 2020, entitled Primitive Testing for Ray Intersection at Multiple Precisions, is incorporated herein by reference in its entirety. The '542 application describes example techniques with testing at different precisions and how potential errors due to quantization of the inputs can be tracked with reduced precision throughout the test to ensure that the results are conservative.

Die vorliegende Offenbarung verwendet Intervallarithmetik, um potenzielle Quantisierungsfehler für einen primitiven Hardwaretest, der die Quantisierung von einem oder mehreren Eingaben verwendet, zu verfolgen und zu begrenzen. In einigen Ausführungsformen können die offenbarten Techniken vorteilhaft engere Fehlergrenzen als die Ausführungsfonnen der Anmeldung '542 bieten. Ferner können die offenbarten Techniken bei einigen Implementierungen einen geringeren Schaltungsbereich für die Durchführung primitiver Tests mit einer bestimmten Genauigkeit verwenden.The present disclosure uses interval arithmetic to track and limit potential quantization errors for a primitive hardware test that uses quantization of one or more inputs. In some embodiments, the disclosed techniques may advantageously provide tighter error bounds than the embodiments of the '542 application. Furthermore, in some implementations, the disclosed techniques may use less circuit area for performing primitive tests with a certain accuracy.

Ferner erzeugen die unten im Detail beschriebenen offenbarten Ausführungsformen ein interpoliertes räumliches Koordinatenintervall, um ein sich bewegendes Dreieck für einen konservativen Schnittstellentest für eine bestimmte Strahlzeit in einem Bewegungsunschärfeintervall darzustellen. Ferner bieten die offenbarten Techniken effiziente Kodierungs- und Verarbeitungstechniken für sich bewegende und sich nicht bewegende Dreieckspaare.Furthermore, the disclosed embodiments described in detail below generate an interpolated spatial coordinate interval to represent a moving triangle for a conservative interface test for a given beam time in a motion blur interval. Furthermore, the disclosed techniques provide efficient encoding and processing techniques for moving and non-moving triangle pairs.

Ferner können die offenbarten Techniken definitive Trefferergebnisse bereitstellen, indem sie einen Schnittstellentest mit geringerer Genauigkeit verwenden, ohne einen Schnittstellentest mit der ursprünglichen Genauigkeit durchzuführen (z. B. für Strahlen mit „beliebigen Treffer“).Further, the disclosed techniques may provide definitive hit results using a lower accuracy interface test without performing an original accuracy interface test (e.g., for "any hit" rays).

Schließlich können die für eine Beschleunigungsdatenstruktur offenbarten Reihenfolgetechniken für die Traversierung (z. B. „Mitte-Außen“-Reihenfolge anstelle von vorne nach hinten oder hinten nach vorne) die Leistung verbessern, den Stromverbrauch senken oder beides für die Traversierung bestimmter Arten von Strahlen.Finally, the traversal ordering techniques disclosed for an acceleration data structure (e.g., "center-outer" ordering rather than front-to-back or back-to-front) may improve performance, reduce power consumption, or both for traversing certain types of beams.

Überblick über GrafikverarbeitungGraphics processing overview

Unter Bezugnahme auf 1A ist ein Flussdiagramm gezeigt, das einen beispielhaften Verarbeitungsfluss 100 zum Verarbeiten von Grafikdaten veranschaulicht. In einigen Ausführungsformen kann die Transformations- und Beleuchtungsprozedur 110 die Verarbeitung von Beleuchtungsinformationen für Eckpunkte, die von einer Anwendung auf der Grundlage von definierten Lichtquellenstandorten, Reflexionsgrad usw. empfangen werden, das Zusammensetzen der Eckpunkte zu Polygonen (z. B. Dreiecken) und das Transformieren der Polygone in die richtige Größe und Orientierung auf der Grundlage der Position in einem dreidimensionalen Raum, beinhalten. Die Abschneideprozedur 115 kann das Verwerfen von Polygonen oder Eckpunkten beinhalten, die außerhalb eines sichtbaren Bereichs liegen. Die Rasterisierungsprozedur 120 kann die Definition von Fragmenten innerhalb jedes Polygons und die Zuweisung von anfänglichen Farbwerten für jedes Fragment beinhalten, z. B. basierend auf den Texturkoordinaten der Eckpunkte des Polygons. Fragmente können Attribute für Pixel angeben, die sie überlappen, aber die tatsächlichen Pixelattribute können auf der Grundlage der Kombination mehrerer Fragmente (z. B. in einem Bildpuffer), des Ignorierens eines oder mehrerer Fragmente (z. B. wenn sie von anderen Objekten verdeckt werden) oder beidem bestimmt werden. Die Schattierungsprozedur 130 kann die Änderung von Pixelkomponenten auf der Grundlage von Beleuchtung, Schatten, Bump-Mapping, Transluzenz usw. beinhalten. Die schattierten Pixel können in einem Bildpuffer 135 zusammengefasst werden. Moderne GPUs schließen in der Regel programmierbare Shader ein, die eine Anpassung von Schattierungs- und anderen Verarbeitungsschritten durch Anwendungsentwickler ermöglichen. Somit können in verschiedenen Ausführungsformen die beispielhaften Elemente von 1A in verschiedenen Reihenfolgen durchgeführt, parallel durchgeführt oder weggelassen werden. Es können auch zusätzliche Verarbeitungsprozeduren durchgeführt werden.With reference to 1A 1 is a flowchart illustrating an example processing flow 100 for processing graphics data. In some embodiments, the transformation and lighting procedure 110 may include processing lighting information for vertices received from an application based on defined light source locations, reflectance, etc., assembling the vertices into polygons (e.g., triangles), and transforming of polygons to the correct size and orientation based on position in three-dimensional space. The clipping procedure 115 may include discarding polygons or vertices that fall outside of a visible area. The rasterization procedure 120 may involve defining fragments within each polygon and assigning initial color values for each fragment, e.g. B. based on the texture coordinates of the vertices of the polygon. Fragments can specify attributes for pixels that they overlap, but the actual pixel attributes can be based on combining multiple fragments (e.g. in a framebuffer), ignoring one or more fragments (e.g. if they are obscured by other objects be determined) or both. The shading procedure 130 may involve changing pixel components based on lighting, shadows, bump mapping, translucency, and so on. The shaded pixels can be collected in a frame buffer 135 . Modern GPUs typically include programmable shaders that allow application developers to customize shading and other processing steps. Thus, in various embodiments, the exemplary elements of FIG 1A performed in different orders, performed in parallel, or omitted. Additional processing procedures can also be performed.

Unter Bezugnahme nun auf 1B ist ein vereinfachtes Blockdiagramm, das eine Grafikeinheit 150 veranschaulicht, gemäß einigen Ausführungsformen gezeigt. In der veranschaulichten Ausführungsform schließt die Grafikeinheit 150 einen programmierbaren Shader 160, eine Eckpunkt-Pipe 185, eine Fragment-Pipe 175, eine Texturverarbeitungseinheit (TPU) 165, eine Bildschreibeinheit 170 und eine Speicherschnittstelle 180 ein. In einigen Ausführungsformen ist die Grafikeinheit 150 konfiguriert, um sowohl Eckpunkt- als auch Fragmentdaten unter Verwendung des programmierbaren Shaders 160 zu verarbeiten, der konfiguriert sein kann, um Grafikdaten parallel unter Verwendung mehrerer Ausführungs-Pipelines oder -Instanzen zu verarbeiten.Referring now to 1B 1 is a simplified block diagram illustrating a graphics unit 150, in accordance with some embodiments. In the illustrated embodiment, the graphics unit 150 includes a programmable shader 160, a vertex pipe 185, a fragment pipe 175, a texture processing unit (TPU) 165, an image writing unit 170, and a memory interface 180. In some embodiments, the graphics engine 150 is configured to process both vertex and fragment data using the programmable shader 160 that configures to process graphics data in parallel using multiple execution pipelines or instances.

Die Eckpunkt-Pipe 185 kann in der veranschaulichten Ausführungsform verschiedene Hardware mit fester Funktion einschließen, die konfiguriert ist, um Eckpunktdaten zu verarbeiten. Die Eckpunkt-Pipe 185 kann konfiguriert sein, um mit dem programmierbaren Shader 160 zu kommunizieren, um die Eckpunktverarbeitung zu koordinieren. In der veranschaulichten Ausführungsform ist die Eckpunkt-Pipe 185 konfiguriert, um verarbeitete Daten zur weiteren Verarbeitung an die Fragment-Pipe 175 oder den programmierbaren Shader 160 zu senden.Vertex pipe 185 in the illustrated embodiment may include various fixed-function hardware configured to process vertex data. Vertex pipe 185 may be configured to communicate with programmable shader 160 to coordinate vertex processing. In the illustrated embodiment, vertex pipe 185 is configured to send processed data to fragment pipe 175 or programmable shader 160 for further processing.

Die Fragment-Pipe 175 kann in der veranschaulichten Ausführungsform verschiedene Hardware mit fester Funktion einschließen, die konfiguriert ist, um Pixeldaten zu verarbeiten. Die Fragment-Pipe 175 kann konfiguriert sein, um mit dem programmierbaren Shader 160 zu kommunizieren, um eine Fragmentverarbeitung zu koordinieren. Die Fragment-Pipe 175 kann konfiguriert sein, um eine Rasterisierung an Polygonen von der Eckpunkt-Pipe 185 oder dem programmierbaren Shader 160 durchzuführen, um Fragmentdaten zu erzeugen. Die Eckpunkt-Pipe 185 und die Fragment-Pipe 175 können mit der Speicherschnittstelle 180 gekoppelt sein (Kopplung nicht gezeigt), um auf Grafikdaten zuzugreifen.The fragment pipe 175 in the illustrated embodiment may include various fixed function hardware configured to process pixel data. Fragment pipe 175 may be configured to communicate with programmable shader 160 to coordinate fragment processing. Fragment pipe 175 may be configured to perform rasterization on polygons from vertex pipe 185 or programmable shader 160 to generate fragment data. Vertex pipe 185 and fragment pipe 175 may be coupled to memory interface 180 (coupling not shown) to access graphics data.

Der programmierbare Shader 160 ist in der veranschaulichten Ausführungsform konfiguriert, um Eckpunktdaten von der Eckpunkt-Pipe 185 und Fragmentdaten von der Fragment-Pipe 175 und der TPU 165 zu empfangen. Der programmierbare Shader 160 kann konfiguriert sein, um Eckpunktverarbeitungsaufgaben an Eckpunktdaten durchzuführen, die verschiedene Transformationen und Einstellungen von Eckpunktdaten einschließen können. Der programmierbare Shader 160 in der veranschaulichten Ausführungsform ist außerdem konfiguriert, um Fragmentverarbeitungsaufgaben an Pixeldaten, wie zum Beispiel Texturierung und Schattierung, durchzuführen. Der programmierbare Shader 160 kann mehrere Sätze mehrerer Ausführungspipelines zur parallelen Datenverarbeitung einschließen.Programmable shader 160 is configured in the illustrated embodiment to receive vertex data from vertex pipe 185 and fragment data from fragment pipe 175 and TPU 165 . The programmable shader 160 may be configured to perform vertex processing tasks on vertex data, which may include various transformations and adjustments of vertex data. The programmable shader 160 in the illustrated embodiment is also configured to perform fragment processing tasks on pixel data, such as texturing and shading. The programmable shader 160 may include multiple sets of multiple execution pipelines for processing data in parallel.

In einigen Ausführungsformen schließt der programmierbare Shader Pipelines ein, die so konfiguriert sind, dass sie eine oder mehrere verschiedene SIMD-Gruppen parallel ausführen. Jede Pipeline kann verschiedene Stufen einschließen, die so konfiguriert sind, dass sie in einem bestimmten Taktzyklus Operationen wie Abrufen, Decodieren, Ausgeben, Ausführen usw. durchführen. Das Konzept einer Prozessor-„Pipeline“ ist allgemein bekannt und bezieht sich auf das Konzept der Aufteilung der „Arbeit“, die ein Prozessor an Befehlen ausführt, in mehrere Stufen. In einigen Ausführungsformen können Befehlsdecodierung, Abfertigung, Ausführung (d. h. Leistung) und Rückzug Beispiele für verschiedene Pipelinestufen sein. Es sind viele verschiedene Pipeline-Architekturen mit unterschiedlichen Reihenfolgen der Elemente/Abschnitte möglich. Verschiedene Pipeline-Stufen führen während eines oder mehrerer Prozessor-Taktzyklen solche Schritte an einem Befehl aus und leiten den Befehl oder die mit dem Befehl verbundenen Operationen dann zur weiteren Verarbeitung an andere Stufen weiter.In some embodiments, the programmable shader includes pipelines configured to execute one or more different SIMD groups in parallel. Each pipeline can include various stages that are configured to perform operations such as fetch, decode, issue, execute, etc. in a given clock cycle. The concept of a processor "pipeline" is well known and refers to the concept of dividing the "work" that a processor performs on instructions into multiple stages. In some embodiments, instruction decode, dispatch, execution (i.e., power), and retire may be examples of different pipeline stages. Many different pipeline architectures with different ordering of elements/sections are possible. Various pipeline stages perform such steps on an instruction during one or more processor clock cycles and then forward the instruction or operations associated with the instruction to other stages for further processing.

Der Begriff „SIMD-Gruppe“ ist in seiner allgemein verständlichen Bedeutung zu verstehen, die eine Reihe von Threads einschließt, bei denen die Verarbeitungshardware denselben Befehl parallel verarbeitet und dabei unterschiedliche Eingabedaten für die verschiedenen Threads verwendet. Verschiedene Arten von Computerprozessoren können Sätze von Pipelines einschließen, die für die Ausführung von SIMD-Befehlen konfiguriert sind. Zum Beispiel schließen Grafikprozessoren oft programmierbare Shader-Kerne ein, die konfiguriert sind, um Befehle für einen Satz von bezogenen Threads in einer SIMD-Weise auszuführen. Andere Beispiele für Namen, die für eine SIMD-Gruppe verwendet werden können, schließen Folgendes ein: eine Wellenfront, eine Clique oder ein Warp. Eine SIMD-Gruppe kann Teil einer größeren Thread-Gruppe sein, die je nach den parallelen Verarbeitungsmöglichkeiten eines Computers in mehrere SIMD-Gruppen unterteilt werden kann. In einigen Ausführungsformen wird jeder Thread einer Hardware-Pipeline zugewiesen, die Operanden für diesen Thread abruft und die spezifizierten Operationen parallel zu anderen Pipelines für den Satz von Threads durchführt. Es ist zu beachten, dass Prozessoren eine große Anzahl von Pipelines haben können, sodass mehrere separate SIMD-Gruppen auch parallel ausgeführt werden können. In einigen Ausführungsformen verfügt jeder Thread über einen privaten Operandenspeicher, z. B. in einer Registerdatei. Somit kann ein Lesen eines bestimmten Registers aus der Registerdatei die Version des Registers für jeden Thread in einer SIMD-Gruppe bereitstellen.The term "SIMD group" should be understood in its generic sense, which includes a set of threads in which the processing hardware processes the same instruction in parallel using different input data for the different threads. Various types of computer processors may include sets of pipelines configured to execute SIMD instructions. For example, graphics processors often include programmable shader cores that are configured to execute instructions for a set of related threads in a SIMD manner. Other examples of names that can be used for a SIMD group include: a wavefront, a clique, or a warp. A SIMD group can be part of a larger thread group, which can be divided into multiple SIMD groups depending on a computer's parallel processing capabilities. In some embodiments, each thread is assigned a hardware pipeline that fetches operands for that thread and performs the specified operations in parallel with other pipelines for the set of threads. It should be noted that processors can have a large number of pipelines, so several separate SIMD groups can also be executed in parallel. In some embodiments, each thread has private operand storage, e.g. B. in a register file. Thus, reading a particular register from the register file can provide the version of the register for each thread in a SIMD group.

In einigen Ausführungsformen sind mehrere programmierbare Shader-Einheiten 160 in einer GPU eingeschlossen. In diesen Ausführungsformen kann die globale Steuerschaltlogik den verschiedenen Unterabschnitten der GPU Arbeit zuweisen, die wiederum den Shader-Kernen Arbeit zuweisen kann, die von Shader-Pipelines verarbeitet wird.In some embodiments, multiple programmable shader units 160 are included in a GPU. In these embodiments, the global control circuitry can assign work to the various subsections of the GPU, which in turn can assign work to the shader cores to be processed by shader pipelines.

Die TPU 165 in der veranschaulichten Ausführungsform ist konfiguriert, um Fragmentverarbeitungsaufgaben von dem programmierbaren Shader 160 zu planen. In einigen Ausführungsformen ist die TPU 165 konfiguriert, um Texturdaten vorabzurufen und anfängliche Farben den Fragmenten zur weiteren Verarbeitung durch den programmierbaren Shader 160 zuzuweisen (z. B. über die Speicherschnittstelle 180). Die TPU 165 kann konfiguriert sein, um Fragmentkomponenten zum Beispiel in normalisierten Ganzzahlformaten oder Gleitkommaformaten bereitzustellen. In einigen Ausführungsformen ist die TPU 165 konfiguriert, um Fragmente in Gruppen von vier (einer „Fragment-Vierergruppe“) in einem 2x2-Format zur Verarbeitung durch eine Gruppe von vier Ausführungs-Pipelines in dem programmierbaren Shader 160 bereitzustellen.The TPU 165 in the illustrated embodiment is configured to schedule fragment processing tasks from the programmable shader 160 . In some embodiments, TPU 165 is configured to prefetch texture data and assign initial colors to fragments for further processing by programmable shader 160 (e.g., via memory interface 180). The TPU 165 may be configured to provide fragment components in normalized integer formats or floating point formats, for example. In some embodiments, the TPU 165 is configured to provide fragments in groups of four (a “fragment quad”) in a 2x2 format for processing by a group of four execution pipelines in the programmable shader 160 .

Die Bildschreibeinheit (Image Write Unit, IWU) 170 ist in einigen Ausführungsformen konfiguriert, um verarbeitete Kacheln eines Bildes zu speichern, und kann Operationen an einem gerenderten Bild durchführen, bevor es zur Anzeige oder an einen Speicher zur Speicherung übertragen wird. In einigen Ausführungsformen ist die Grafikeinheit 150 konfiguriert, um ein kachelbasiertes verzögertes Rendering (Tile-Based Deferred Rendering - TBDR) durchzuführen. Beim kachelbasierten Rendering können unterschiedliche Abschnitte des Bildschirmraums (z. B. Quadrate oder Rechtecke von Pixeln) separat verarbeitet werden. Die Speicherschnittstelle 180 kann in verschiedenen Ausführungsformen Kommunikationen mit einer oder mehreren von verschiedenen Speicherhierarchien erleichtern.The Image Write Unit (IWU) 170 is configured in some embodiments to store processed tiles of an image and may perform operations on a rendered image before it is transferred for display or to memory for storage. In some embodiments, graphics engine 150 is configured to perform tile-based deferred rendering (TBDR). With tile-based rendering, different sections of screen space (e.g., squares or rectangles of pixels) can be processed separately. The memory interface 180, in various embodiments, may facilitate communications with one or more of various memory hierarchies.

Im veranschaulichten Beispiel schließt die Grafikeinheit 150 den Strahlenschnittbeschleuniger (Ray Intersection Accelerator, RIA) 190 ein, der Hardware für die Durchführung verschiedener Strahlenschnittoperationen einschließen kann, wie nachstehend im Detail beschrieben.In the illustrated example, graphics engine 150 includes ray intersection accelerator (RIA) 190, which may include hardware for performing various ray intersection operations, as described in detail below.

Übersicht über den intervallbasierten SchnittstellentestOverview of the interval-based interface test

2A ist ein Blockdiagramm zur Veranschaulichung einer beispielhaften Quantisierungsschaltlogik und einer Schaltlogik für Schnittstellentests mit geringer Genauigkeit, gemäß einigen Ausführungsformen. In der veranschaulichten Ausführungsform schließt ein Grafikprozessor eine Testschaltlogik 220 ein. 2A 12 is a block diagram illustrating example quantization circuitry and circuitry for low precision interface tests, according to some embodiments. In the illustrated embodiment, a graphics processor includes test circuitry 220 .

In einigen Ausführungsformen ist die Quantisierungsschaltlogik so konfiguriert, dass sie Strahlendaten quantisiert und Intervalldarstellungen der quantisierten Werte erzeugt. In verschiedenen Ausführungsformen werden die Ober- und Untergrenzen der erzeugten Intervalle zwar mit einer geringeren Genauigkeit dargestellt als die Eingabedarstellung, aber das Intervall deckt den anfänglichen Wert garantiert mit der Eingabegenauigkeit ab. Es ist zu beachten, dass die primitiven Daten auch in einem quantisierten Intervallformat gespeichert werden können (z. B. in einer Beschleunigungsdatenstruktur).In some embodiments, the quantization circuitry is configured to quantize ray data and generate interval representations of the quantized values. In various embodiments, the upper and lower bounds of the generated intervals are represented with less precision than the input representation, but the interval is guaranteed to cover the initial value with the input precision. Note that the primitive data can also be stored in a quantized interval format (e.g. in an acceleration data structure).

Die auf Intervallarithmetik basierende Testschaltlogik 220 mit geringer Genauigkeit ist in der veranschaulichten Ausführungsform so konfiguriert, dass sie durch die Durchführung von Intervallarithmetik an den Intervalldarstellungen ein konservatives Schnittergebnis erzeugt. Das konservative Schnittergebnis kann garantieren, dass ein von der Schaltlogik 220 signalisierter Fehlschlag nicht zu einem Treffer bei einem Schnittstellentest mit höherer Genauigkeit führt (z. B. bei Werten mit der Eingabegenauigkeit vor der Quantisierung). Ein positives Ausgangsignal der Schaltlogik 220 zeigt in diesen Ausführungsformen einen potenziellen Treffer an.The low precision interval arithmetic based test circuitry 220 is configured in the illustrated embodiment to produce a conservative intersection result by performing interval arithmetic on the interval representations. The conservative cut result can guarantee that a failure signaled by the circuitry 220 will not result in a hit on an interface test with higher precision (e.g. on values with the input precision before quantization). A positive output of switching logic 220 indicates a potential hit in these embodiments.

In verschiedenen Ausführungsformen kann die Durchführung von anfänglichen Schnittstellentests mit geringerer Genauigkeit vorteilhafterweise die Leistung verbessern, den Stromverbrauch senken oder beides im Vergleich zu herkömmlichen Techniken. Insbesondere können Fehlschläge oder definitive Treffer, die durch den anfänglichen Test erzeugt werden, die Notwendigkeit vermeiden, einen Test mit höherer Genauigkeit für einen bestimmten Strahl und ein bestimmtes Primitiv durchzuführen. Daher kann sowohl die Verbesserung der Genauigkeit des Tests (z. B. durch Verschärfung der Fehlergrenzen) als auch die Verbesserung der Leistung oder des Stromverbrauchs des anfänglichen Tests selbst technische Vorteile haben.In various embodiments, performing initial interface tests with less accuracy may advantageously improve performance, reduce power consumption, or both compared to traditional techniques. In particular, failures or definite hits generated by the initial test can avoid the need to perform a higher accuracy test for a particular ray and primitive. Therefore, both improving the accuracy of the test (e.g. by tightening the error limits) and improving the performance or power consumption of the initial test itself can have technical benefits.

2B ist ein Flussdiagramm, das ein allgemeines Beispiel für eine Schnittstellentesttechnik veranschaulicht, gemäß einigen Ausführungsformen. In der veranschaulichten Ausführungsform konvertiert das Element 210 die Strahlrichtung in eine Gleitkommaintervalldarstellung mit niedrigerer Genauigkeit. Element 230 bestimmt die Scherfaktoren auf der Grundlage einer Quantisierungsrahmentransformation (die für die Quantisierung von Eckpunkten verwendet wird, wie weiter unten im Detail erläutert), und Element 244 wandelt die Scherfaktoren in eine Festpunktintervalldarstellung um. 2 B 12 is a flow chart illustrating a high-level example of an interface testing technique, according to some embodiments. In the illustrated embodiment, element 210 converts the ray direction to a lower precision floating point interval representation. Element 230 determines the shear factors based on a quantization frame transform (used for quantization of vertices, as discussed in detail below), and element 244 converts the shear factors into a fixed point interval representation.

Element 242 erzeugt eine Festkommaintervalldarstellung für den Strahlursprung, die ebenfalls auf der Quantisierungsrahmentransformation basiert. Element 246 erzeugt eine Festpunktintervalldarstellung der Strahlzeit. Für die Verarbeitung der Bewegungsunschärfe interpoliert das Element 250 die quantisierten Eckpunkte des Dreiecks zeitlich auf der Grundlage der Strahlzeit (dieses Element kann weggelassen werden oder die quantisierten Eckpunkte des Dreiecks direkt weitergeben, wenn keine Bewegungsunschärfeoperationen durchgeführt werden). Element 260 transformiert die Eckpunkte entsprechend den Scherfaktoren und dem Strahlursprung, und Element 270 wertet die Kantengleichungen aus, um zu bestimmen, ob es sich um einen Fehlschlag oder einen potenziellen Treffer handelt. Verschiedene Elemente aus 2B werden im Folgenden näher erläutert. Die spezifischen Operationen in 2B sind zur Veranschaulichung eingeschlossen und sollen den Schutzumfang der vorliegenden Offenbarung nicht einschränken. In einigen Ausführungsformen können die beschriebenen Operationen jedoch vorteilhaft enge Intervalle bei angemessener Schaltungsfläche und Stromverbrauch bereitstellen.Element 242 generates a fixed point interval representation for the ray origin, also based on the quantization frame transform. Element 246 creates a fixed point interval representation of the beamtime. For motion blur processing, element 250 temporally interpolates the quantized vertices of the triangle based on the ray time (this element can be omitted or pass the quantized vertices of the triangle directly if no motion blur operations are performed). Element 260 transforms the vertices according to the shear factors and ray origin, and element 270 evaluates the edge equations to determine whether it is a miss or a potential hit. Different items from 2 B are explained in more detail below. The specific operations in 2 B are included for illustration and are not intended to limit the scope of the present disclosure. However, in some embodiments, the described operations may advantageously provide tight intervals with reasonable circuit area and power consumption.

Beispiel für quantisierte Intervalldarstellungen von SchnittstellentestwertenExample of quantized interval plots of interface test values

3 ist ein Diagramm, das beispielhafte Intervalldarstellungen für verschiedene Werte veranschaulicht, die in einem anfänglichen Schnittstellentest verwendet werden, gemäß einigen Ausführungsformen. Im veranschaulichten Beispiel werden Intervalle für Eckpunktpositionen, Strahlursprung, -richtung und -zeit, Scherfaktoren und interpolierte Eckpunkte des Dreiecks erzeugt. Es ist zu beachten, dass diese spezifischen Intervallwerte zur Veranschaulichung erörtert werden, aber nicht dazu dienen, den Schutzumfang der vorliegenden Offenbarung zu begrenzen. In anderen Ausführungsformen kann jeder der verschiedenen Werte, die bei der Bestimmung eines anfänglichen Schnittstellenergebnisses verwendet werden, durch Intervalle dargestellt werden. 3 14 is a diagram illustrating example interval plots for various values used in an initial interface test, according to some embodiments. In the illustrated example, intervals are generated for vertex positions, ray origin, direction and time, shear factors, and interpolated vertices of the triangle. Note that these specific interval values are discussed for illustrative purposes, but are not intended to limit the scope of the present disclosure. In other embodiments, each of the various values used in determining an initial interface result may be represented by intervals.

In der veranschaulichten Ausführungsform werden für jede quantisierte Eckpunktposition (z. B. für jeden der drei Eckpunkte eines Dreiecks) drei entsprechende Intervalle für die X-Dimension, die Y-Dimension und die Z-Dimension bestimmt. Ähnliche Intervalle werden für den Strahlursprung und die Strahlrichtung bestimmt. In einigen Ausführungsformen, die Bewegungsunschärfe unterstützen, wird auch eine obere und untere Grenze für die Strahlzeit festgelegt.In the illustrated embodiment, for each quantized vertex position (e.g., for each of the three vertices of a triangle), three corresponding intervals are determined for the X dimension, the Y dimension, and the Z dimension. Similar intervals are determined for the ray origin and the ray direction. In some embodiments that support motion blur, an upper and lower bound for the beam time is also set.

In einigen Ausführungsformen, bei denen die Scherung als Teil des Strahlendreieck-Schnittstellentests verwendet wird, werden obere und untere Grenzen für zwei Scherungsfaktoren in den nicht-dominanten Koordinatenrichtungen für den Strahl bestimmt.In some embodiments where shear is used as part of the ray triangle interface test, upper and lower bounds are determined for two shear factors in the non-dominant coordinate directions for the ray.

In einigen Ausführungsformen, die Bewegungsunschärfe unterstützen, bestimmt der Grafikprozessor für jeden Eckpunkt X-, Y- und Z-Intervalle für ein interpoliertes Dreieck, das der Strahlzeit innerhalb eines Bewegungsunschärfeintervalls entspricht. 4 wird im Folgenden ausführlich erörtert und stellt beispielhafte Techniken zur Erzeugung einer Intervalldarstellung eines interpolierten Dreiecks bereit. Im Allgemeinen werden detailliertere Techniken zur Bestimmung verschiedener spezifischer Intervalle weiter unten ausführlich erörtert.In some embodiments that support motion blur, the graphics processor determines, for each vertex, X, Y, and Z intervals for an interpolated triangle that corresponds to the beam time within a motion blur interval. 4 is discussed in detail below and provides exemplary techniques for generating an interval representation of an interpolated triangle. In general, more detailed techniques for determining various specific intervals are discussed in detail below.

Wie im Folgenden näher erläutert, können die Datenstrukturen Dreiecke, bewegliche Dreiecke, Dreieckspaare, bewegliche Dreieckspaare oder eine Kombination davon darstellen. In einigen Ausführungsformen wird ein Dreieck mit drei Eckpunkten, ein bewegliches Dreieck mit sechs Eckpunkten, ein Dreieckspaar mit vier Eckpunkten und ein bewegliches Dreieckspaar mit acht Eckpunkten dargestellt.As explained in more detail below, the data structures may represent triangles, moving triangles, triangle pairs, moving triangle pairs, or a combination thereof. In some embodiments, a triangle with three vertices, a moving triangle with six vertices, a triangle pair with four vertices, and a moving triangle pair with eight vertices are presented.

In einigen Ausführungsformen werden quantisierte Dreieckskoordinaten als vorzeichenlose Ganzzahlwerte mit begrenzter Festkommagenauigkeit gespeichert und gegen Null gerundet. Diese Koordinaten können einem lokalen Koordinatensystem entsprechen, das in einer Beschleunigungsdatenstruktur ADS gespeichert ist, z. B. wie in der Anmeldung '542 beschrieben. Quantisierte Werte können N-Bitwerte sein. In einigen Ausführungsformen verwendet jeder Koordinatenwert eine Anzahl von Bits, die das Packen in ein Feld einer bestimmten Größe erleichtert. Beispielsweise können 7-Bit-Werte pro quantisiertem Koordinatenintervallwert für ein einzelnes Dreieck in zwei 64-Bit-Felder gepackt werden (x oben/unten, y oben/unten und z oben unten 7-Bit-Werte für jeden Eckpunkt bei drei Eckpunkten = 126 Bit). In anderen Ausführungsformen können Festkommacodierungen mit verschiedenen geeigneten Anzahlen von Bits verwendet werden. In einigen Ausführungsformen werden Werte ohne Vorzeichen in einen neuen Koordinatenrahmen übersetzt, in dem die Werte zu ganzen Zahlen mit Vorzeichen werden. Es ist zu beachten, dass in manchen Situationen nur eine Grenze eines Intervalls gespeichert werden kann und die andere Grenze impliziert sein kann. Dies kann den Speicherbedarf für bestimmte Teile des Prozessors verringern.In some embodiments, quantized triangle coordinates are stored as unsigned integer values with limited fixed-point precision and are rounded toward zero. These coordinates may correspond to a local coordinate system stored in an acceleration data structure ADS, e.g. e.g., as described in the '542 application. Quantized values can be N-bit values. In some embodiments, each coordinate value uses a number of bits that facilitate packing into an array of a particular size. For example, 7-bit values per quantized coordinate interval value for a single triangle can be packed into two 64-bit fields (x top/bottom, y top/bottom, and z top/bottom 7-bit values for each vertex given three vertices = 126 Bit). In other embodiments, fixed-point encodings with various suitable numbers of bits can be used. In some embodiments, unsigned values are translated into a new coordinate frame in which the values become signed integers. Note that in some situations only one boundary of an interval may be stored and the other boundary may be implied. This can reduce memory requirements for certain parts of the processor.

In diesem Zusammenhang ist, wenn p ein quantisierter Wert für eine Dreieckskoordinate ist, das Intervall, das diese Koordinate im lokalen quantisierten Koordinatenraum darstellt, p = [p, p + δp], wobei δp in einigen Ausführungsformen eine Einheit der kleinsten Genauigkeit (ULP) im quantisierten Format darstellt. Der ursprüngliche Koordinatenwert vor der Quantisierung liegt garantiert in diesem Intervall. Für eine N-Bit-Festkommadarstellung ist δ p = 1 2 N .

Figure DE102022122793A1_0001
Im Allgemeinen beziehen sich die hierin erwähnten Mengen auf Intervalle.In this context, if p is a quantized value for a triangular coordinate, the interval that represents that coordinate in local quantized coordinate space is, p = [p, p + δp], where δp represents a unit of least precision (ULP) in quantized format in some embodiments. The original coordinate value before quantization is guaranteed to be within this interval. For an N-bit fixed-point representation, δ p = 1 2 N .
Figure DE102022122793A1_0001
In general, the quantities mentioned herein refer to intervals.

Daher kann ein gegebenes, nicht bewegliches Dreieck mit neun Werten kodiert werden (drei Eckpunkte mit drei Koordinatenuntergrenzen für jeden Eckpunkt, wobei die obere Grenze implizit um einen ULP größer ist als die untere Grenze).Therefore, a given non-moving triangle can be encoded with nine values (three vertices with three coordinate lower bounds for each vertex, where the upper bound is implicitly greater than the lower bound by one ULP).

In einigen Ausführungsformen werden bewegliche Dreiecke als zwei (oder mehr) Koordinatensätze gespeichert, z. B. eine Position p(0) zum Zeitpunkt t = 0 und eine Position p(1) zum Zeitpunkt t = 1. Dies kann einen Intervall von linearer Bewegung im normierten Zeitintervall [0,1] definieren. Es ist zu beachten, dass mehrere lineare Bewegungen in Teilintervallen auch zur Codierung nicht-linearer Bewegungen über ein größeres Bewegungsunschärfeintervall verwendet werden können. In diesem Fall kann ein bewegliches Dreieck mehr als zwei Koordinatensätze einschließen. Eine bewegliche Dreieckskoordinate zum Zeitpunkt t kann durch das Intervall p(t) = [p(t), p(t) + δp] dargestellt werden.In some embodiments, moving triangles are stored as two (or more) sets of coordinates, e.g. B. a position p(0) at time t=0 and a position p(1) at time t=1. This can define an interval of linear motion in the normalized time interval [0,1]. Note that multiple linear motions in subintervals can also be used to encode non-linear motions over a larger motion blur interval. In this case, a moving triangle can enclose more than two sets of coordinates. A moving triangular coordinate at time t can be divided by the interval p (t) = [p(t), p(t) + δp] can be represented.

In einigen Ausführungsformen wird die Strahlzeit als Teil des Schnittstellentests mit geringer Genauigkeit auf ein Intervall mit geringerer Genauigkeit t = [t, t + δt] quantisiert, wobei t mit M Bits Teilintervallauflösung codiert wird (z. B. implizite Einstellung von 1,0 bei 2M). M kann, muss aber nicht mit der Anzahl der Bits N übereinstimmen, die zur Darstellung der räumlichen Koordinaten des Dreiecks (oder der Anzahl der Bits zur Darstellung der räumlichen Koordinaten des Strahls) verwendet werden. Wie bei anderen quantisierten Intervallen wird der ursprüngliche hochpräzise Wert garantiert innerhalb des Intervalls mit geringerer Genauigkeit gefunden. In einigen Ausführungsformen ist die Zeit eine vierte Koordinatenachse, die von anderen Koordinaten wie x, y und z unabhängig ist.In some embodiments, the beam time is scaled to a lower accuracy interval as part of the low accuracy interface test t = [t, t + δt] quantized, where t is encoded with M bits of sub-interval resolution (e.g. implicit setting of 1.0 at 2M ). M may or may not match the number of bits N used to represent the spatial coordinates of the triangle (or the number of bits used to represent the spatial coordinates of the ray). As with other quantized intervals, the original high-precision value is guaranteed to be found within the lower-precision interval. In some embodiments, time is a fourth coordinate axis that is independent of other coordinates such as x, y, and z.

Beispiel für intervallbasierte BewegungsunschärfeverarbeitungInterval-based motion blur processing example

In einigen Ausführungsformen ist die Intervallinterpolationsschaltlogik so konfiguriert, dass sie konservative räumliche Intervalle für bewegliche Dreieckskoordinaten über das quantisierte zeitliche Intervall t eines Strahls rekonstruiert. 4 ist ein Blockdiagramm, das ein Beispiel für eine Interpolationsschaltlogik veranschaulicht, die so konfiguriert ist, dass sie eine Intervalldarstellung eines interpolierten Primitivs innerhalb eines Bewegungsunschärfeintervalls erzeugt, gemäß einigen Ausführungsformen. Die Schaltlogik 410 kann die vorstehend unter Bezugnahme auf das Element 250 in 2B beschriebenen Operationen ausführen.In some embodiments, the interval interpolation circuitry is configured to calculate conservative spatial intervals for moving triangular coordinates over the quantized temporal interval t of a ray reconstructed. 4 12 is a block diagram illustrating an example of interpolation circuitry configured to generate an interval representation of an interpolated primitive within a motion blur interval, according to some embodiments. Switching logic 410 may be as described above with reference to element 250 in FIG 2 B perform the operations described.

In der veranschaulichten Ausführungsform ist die Interpolationsschaltlogik 410 so konfiguriert, dass sie eine Intervalldarstellung einer Strahlzeit und eine Intervalldarstellung eines beweglichen Dreiecks (z. B. x-, y- und z-Intervalle für jeden der sechs Eckpunkte) empfängt und eine Intervalldarstellung eines interpolierten Dreiecks (z. B. x-, y- und z-Intervalle für jeden der drei Eckpunkte) erzeugt.In the illustrated embodiment, the interpolation circuitry 410 is configured to receive a beam time interval representation and a moving triangle interval representation (e.g., x, y, and z intervals for each of the six vertices) and an interpolated triangle interval representation (e.g. x, y and z intervals for each of the three vertices).

Als ein Beispiel kann die Schaltlogik 410 das interpolierte räumliche Koordinatenintervall wie folgt bestimmen: p ( t ¯ ) ¯ = p ( 0 ) ¯ ( 1,0 t ¯ ) + p ( 0 ) ¯ t ¯

Figure DE102022122793A1_0002
As an example, the circuitry 410 may determine the interpolated spatial coordinate interval as follows: p ( t ¯ ) ¯ = p ( 0 ) ¯ ( 1.0 t ¯ ) + p ( 0 ) ¯ t ¯
Figure DE102022122793A1_0002

Unter Verwendung der Notation p0 =p(0) und p1 = p(1) kann die Schaltlogik 410 ein interpoliertes Positionskoordinatenintervall p ( t ¯ ) ¯

Figure DE102022122793A1_0003
bestimmen, das garantiert das quantisierte Zeitintervall [t, t + δt] für jedes t ∈ [0,1 - δt] abdeckt: p ( t ¯ ) ¯ = [ z , z + 2 δ p ]
Figure DE102022122793A1_0004
wobei z = p 0 ( 1 t δ t ) + p 1 t
Figure DE102022122793A1_0005
Using the notation p 0 =p(0) and p 1 =p(1), switching logic 410 can calculate an interpolated position coordinate interval p ( t ¯ ) ¯
Figure DE102022122793A1_0003
determine that is guaranteed to cover the quantized time interval [t, t + δt] for any t ∈ [0,1 - δt]: p ( t ¯ ) ¯ = [ e.g , e.g + 2 δ p ]
Figure DE102022122793A1_0004
whereby e.g = p 0 ( 1 t δ t ) + p 1 t
Figure DE102022122793A1_0005

Diese Gleichung kann in verschiedenen Ausführungsformen eine gute Anpassung mit angemessener Leistung und Schaltungsfläche bereitstellen. Ferner wurde bestimmt, dass das durch diese Gleichung bereitgestellte Intervall konservativ ist.This equation can provide a good fit with reasonable performance and circuit area in various embodiments. Furthermore, it has been determined that the interval provided by this equation is conservative.

In einigen Ausführungsformen ist die Schaltlogik 410 so konfiguriert, dass sie das Intervall p ( t ¯ ) ¯

Figure DE102022122793A1_0006
gemäß dieser Gleichung bestimmt. Es ist zu beachten, dass in anderen Ausführungsformen andere Gleichungen durch die Computerschaltlogik implementiert werden können, um konservative interpolierte Dreiecksintervalle zu bestimmen; die offenbarten Gleichungen sind zur Veranschaulichung eingeschlossen, sollen aber den Schutzumfang der vorliegenden Offenbarung nicht einschränken.In some embodiments, the switching logic 410 is configured to determine the interval p ( t ¯ ) ¯
Figure DE102022122793A1_0006
determined according to this equation. Note that in other embodiments, other equations may be implemented by the computer circuitry to determine conservative interpolated triangle intervals; the disclosed equations are included for illustration but are not intended to limit the scope of the present disclosure.

In verschiedenen Ausführungsformen kann das interpolierte Dreiecksintervall unter Verwendung eines anfänglichen Schnittstellentests mit geringer Genauigkeit getestet werden, mindestens in Betriebsmodi mit Bewegungsunschärfe. Daher können verschiedene primitive Eingaben, die im Folgenden erörtert werden, für ein herkömmliches Dreieck oder für ein interpoliertes Dreieck gelten, z. B. je nachdem, ob Bewegungsunschärfe verwendet wird. Während ferner verschiedenen hierin erörterten Techniken die Intervallarithmetik verwenden; können offenbarte interpolierte Dreieckstechniken für Bewegungsunschärfe auch mit anderen quantisierten Darstellungen und Techniken verwendet werden, z. B. mit den Techniken der Anmeldung '542.In various embodiments, the interpolated triangle interval may be tested using an initial interface test with low accuracy, at least in motion blur modes of operation. Therefore, various primitive inputs discussed below can apply to a conventional triangle or to an interpolated triangle, e.g. B. depending on whether motion blur is used. Also, while various techniques discussed herein use interval arithmetic; disclosed interpolated triangle techniques for motion blur can also be used with other quantized representations and techniques, e.g. B. with the techniques of the application '542.

Beispiel für die ScherfaktorbestimmungExample of shear factor determination

Wie in der Anmeldung '542 erörtert, können Schertechniken zur Durchführung eines Schnittstellentests verwendet werden. In der folgenden Diskussion werden die folgenden Namenskonventionen verwendet:

P
Strahlursprung, Gleitkommaobjektraum
p
Strahlursprung, Festkommaquantisierungsraum
D
Strahlrichtung, Gleitkommaobjektraum
vv
Dreiecks-Eckpunktkoordinaten, Festkommaquantisierungsraum
As discussed in the '542 application, shearing techniques can be used to perform an interface test. The following naming conventions are used in the following discussion:
P
Ray origin, floating point object space
p
Ray origin, fixed point quantization space
D
Ray direction, floating point object space
vv
Triangle vertex coordinates, fixed point quantization space

In einigen Ausführungsformen ist die Transformation in den gescherten 2D-Raum durch Folgendes gegeben: [ v x ' v y ' ] = [ 1 0 d x d z 0 0 1 d y d z 0 ] [ 1 0 0 p x 0 1 0 p y 0 0 1 p z 0 0 0 1 ] [ v x v y v z 1 ] = [ ( v x p x ) d x d z ( v z p z ) ( v y p y ) d y d z ( v z p z ) ]

Figure DE102022122793A1_0007
In some embodiments, the transformation to sheared 2D space is given by: [ v x ' v y ' ] = [ 1 0 i.e x i.e e.g 0 0 1 i.e y i.e e.g 0 ] [ 1 0 0 p x 0 1 0 p y 0 0 1 p e.g 0 0 0 1 ] [ v x v y v e.g 1 ] = [ ( v x p x ) i.e x i.e e.g ( v e.g p e.g ) ( v y p y ) i.e y i.e e.g ( v e.g p e.g ) ]
Figure DE102022122793A1_0007

Um diese Berechnungen mit Festkommaarithmetik durchführen zu können, kann die Vorrichtung die Strahlenmengen P und D aus dem Objektraum wie folgt in den Quantisierungsraum p und d umrechnen: p = p v , i N i S i = ( P i + v D i ) N i S i i { x , y , z }

Figure DE102022122793A1_0008
d i = D i S i i { x , y , z }
Figure DE102022122793A1_0009
In order to be able to perform these calculations with fixed-point arithmetic, the device can convert the ray quantities P and D from the object space into the quantization space p and d as follows: p = p v , i N i S i = ( P i + v D i ) N i S i i { x , y , e.g }
Figure DE102022122793A1_0008
i.e i = D i S i i { x , y , e.g }
Figure DE102022122793A1_0009

Vor dem weiteren Vorgehen kann die Vorrichtung feststellen, welche Achse der skalierten Strahlrichtung den größten Betrag hat, und die Achsennamen so drehen, dass sich die längste Achse an dritter Stelle („z“) befindet. Ferner kann die Vorrichtung, wenn diese Richtungskomponente negativ ist, die beiden anderen Achsen vertauschen, um die Händigkeit zu erhalten. Für die folgenden Diskussionen wird davon ausgegangen, dass diese Umbenennung auf alle kartesischen Größen angewandt wurde.Before proceeding further, the device can determine which axis of the scaled beam direction has the greatest magnitude and rotate the axis names so that the longest axis is in the third ("z") position. Furthermore, if this directional component is negative, the device can swap the other two axes to preserve handedness. For the following discussions it is assumed that this renaming has been applied to all Cartesian quantities.

Die Rücksubstitution in Gleichung 1 und die Vereinfachung ergeben: [ v x ' v y ' ] = [ ( v x p x ) d x d z ( v z p z ) ( v y p y ) d y d z ( v z p z ) ] = [ ( v x ( P x + t D x ) N x S x ) D x S z D z S x ( v z ( P z + t D z ) N z S z ) ( v y ( P y + t D y ) N y S y ) D y S z D z S y ( v z ( P z + t D z ) N z S z ) ]

Figure DE102022122793A1_0010
Back-substitution in Equation 1 and simplification gives: [ v x ' v y ' ] = [ ( v x p x ) i.e x i.e e.g ( v e.g p e.g ) ( v y p y ) i.e y i.e e.g ( v e.g p e.g ) ] = [ ( v x ( P x + t D x ) N x S x ) D x S e.g D e.g S x ( v e.g ( P e.g + t D e.g ) N e.g S e.g ) ( v y ( P y + t D y ) N y S y ) D y S e.g D e.g S y ( v e.g ( P e.g + t D e.g ) N e.g S e.g ) ]
Figure DE102022122793A1_0010

Im Kontext der offenbarten Intervalltechniken sind die verschiedenen in Gleichung 4 dargestellten Werte Intervalldarstellungen, wie vorstehend erläutert. Im 2D-Scherraum reduziert sich die Strahlenposition auf den Ursprung dieses Koordinatenrahmens, seine Richtung ist auf die z-Achse ausgerichtet, die die Vorrichtung gegen die drei gerichteten Kanten des 2D-Dreiecks, das durch die drei gescherten Koordinaten v' ∈ {A', B', C'} dargestellt wird, wie folgt prüfen kann: u = A x ' B y ' A y ' B x '

Figure DE102022122793A1_0011
v = B x ' C y ' B y ' C x '
Figure DE102022122793A1_0012
w = C x ' A y ' C y ' A x '
Figure DE102022122793A1_0013
In the context of the disclosed interval techniques, the various values represented in Equation 4 are interval representations, as explained above. In 2D shear space, the beam position reduces to the origin of this coordinate frame, its direction aligned with the z-axis which the device points towards the three directed edges of the 2D triangle defined by the three sheared coordinates v' ∈ {A', B', C'} can be checked as follows: and = A x ' B y ' A y ' B x '
Figure DE102022122793A1_0011
v = B x ' C y ' B y ' C x '
Figure DE102022122793A1_0012
w = C x ' A y ' C y ' A x '
Figure DE102022122793A1_0013

Wenn alle von u, v, w das gleiche Vorzeichen haben, dann deckt das Dreieck den Ursprung und der Strahl schneidet das Dreieck mit numerischer Genauigkeit.If all of u, v, w have the same sign, then the triangle covers the origin and the ray intersects the triangle with numerical precision.

5 ist ein Blockdiagramm, das eine beispielhafte Scherfaktorschaltlogik veranschaulicht, die zur Erzeugung von Scherfaktorintervallen konfiguriert ist, gemäß einigen Ausführungsformen. In der veranschaulichten Ausführungsform schließt die Scherfaktorschaltlogik (die in die Testschaltlogik 220 mit geringer Genauigkeit eingeschlossen sein kann) Abwärtskonvertierungsschaltungen 5 10A-5 10C, Subtraktionsschaltungen 520A-520B, Reziprokschaltungen 530, Intervallprodukt- und Skalenanpassungsschaltungen 540A-540B und Gleitkomma-zu-Festkomma-Intervallumwandlungsschaltungen 550A-550B ein. In einigen Ausführungsformen implementiert die Schaltlogik von 5 die Funktionalität des Elements 230 von 2B. 5 12 is a block diagram illustrating example shear factor circuitry configured to generate shear factor intervals, in accordance with some embodiments. In the illustrated embodiment, the shear factor circuitry (which may be included in the low precision test circuitry 220) includes down conversion circuits 5 10A-5 10C, subtraction circuits 520A-520B, reciprocal circuits 530, interval product and scale matching circuits 540A-540B, and floating point to fixed point interval conversion circuits 550A-550B a. In some embodiments, the circuitry implements FIG 5 the functionality of element 230 of 2 B .

Die Abwärtskonvertierungsschaltungen 510 sind in der veranschaulichten Ausführungsform so konfiguriert, dass sie die x-, y- und z-Richtungen (nach der Drehung, sodass die längste Achse die z-Richtung ist) in eine Gleitkommaintervalldarstellung mit reduzierter Genauigkeit umwandeln. In einigen Ausführungsformen rundet die Abwärtskonvertierung gegen negativ unendlich (RTNI), um die untere Intervallgrenze zu erzeugen, und rundet gegen positiv unendlich (RTPI), um die obere Intervallgrenze zu erzeugen.The down conversion circuitry 510 is configured in the illustrated embodiment to convert the x, y, and z directions (after rotation so that the longest axis is the z direction) to a reduced precision floating point interval representation. In some embodiments, the downconversion rounds towards negative infinity (RTNI) to generate the lower interval boundary and rounds towards positive infinity (RTPI) to generate the upper interval boundary.

Die Subtraktionsschaltungen 520 sind in der veranschaulichten Ausführungsform jeweils so konfiguriert, dass sie die x- und y-Skalenwerte vom z-Skalenwert subtrahieren, um Divisionsergebnisse ohne Vorzeichen für Sz/Sx und Sz/Sy in einer Ganzzahldarstellung ohne Vorzeichen zu erzeugen. In einigen Ausführungsformen sind die Skalenwerte Zweierpotenzen, sodass die Subtraktion der Exponenten einer Division entspricht. Diese Skalierungsfaktoren können auf der Grundlage des Quantisierungsrahmens für das Primitiv bestimmt werden. Im Allgemeinen kann ein Satz von quantisierten Werten einen „Quantisierungsrahmen“ gemeinsam haben, der die Parameter für die Werte definiert. In einigen Ausführungsformen werden die quantisierten Werte als Festkommaversatz relativ zu einem gemeinsamen Ursprung und Skalierungsfaktor dargestellt. Daher kann der Quantisierungsrahmen den Ursprung (z. B. in x-, y- und z-Koordinaten) und Skalierungsfaktoren (z. B. als Potenz von 2 Skalierungsfaktoren für jede der z-, y- und z-Dimensionen) angeben. Die hierin erörterten quantisierten primitiven Intervalle können mit Festkommakoordinaten dargestellt werden, die im Kontext des Quantisierungsrahmens interpretiert werden. Es ist zu beachten, dass die Ausgänge der Schaltungen 520 im veranschaulichten Beispiel keine Intervalle sind.The subtraction circuits 520 are each configured in the illustrated embodiment to subtract the x- and y-scale values from the z-scale value to produce unsigned division results for S z /S x and S z /S y in an unsigned integer representation . In some embodiments, the scale values are powers of two, such that subtracting the exponents is equivalent to dividing. These scale factors can be determined based on the quantization framework for the primitive. In general, a set of quantized values can share a "quantization frame" that defines the parameters for the values. In some embodiments, the quantized values are represented as fixed-point offsets relative to a common origin and scale factor. Therefore, the quantization frame can specify the origin (e.g., in x, y, and z coordinates) and scale factors (e.g., as a power of 2 scale factors for each of the z, y, and z dimensions). The quantized primitive intervals discussed herein can be represented with fixed-point coordinates that are interpreted in the context of the quantization framework. Note that the outputs of the circuits 520 are not intervals in the illustrated example.

Die Reziprokschaltung 530 ist in der veranschaulichten Ausführungsform so konfiguriert, dass sie einen Reziprokwert des abwärts konvertierten z-Richtungswerts erzeugt. The reciprocal circuit 530 is configured in the illustrated embodiment to generate a reciprocal of the down-converted z-direction value.

Intervallproduktschaltungen und Skalenanpassungsschaltungen 540 sind in der veranschaulichten Ausführungsform so konfiguriert, dass sie eineInterval product circuits and scale matching circuits 540 are configured in the illustrated embodiment to provide a

Intervallproduktoperation an ihren Eingängen durchführen, um Ausgänge in einem Gleitkommaintervallformat mit reduzierter Genauigkeit zu erzeugen. In einigen Ausführungsformen sind die Schaltungen 540 so konfiguriert, dass sie ihre Ausgänge auf den Bereich [-1, 1] begrenzen. In einigen Ausführungsformen wenden die Schaltungen 540 auch die Skalierung aus den Schaltungen 520 an, indem sie die Exponentenanpassung verwenden, um mit einer Zweierpotenz zu multiplizieren.perform interval product operations on their inputs to produce outputs in a reduced precision floating point interval format. In some embodiments, the circuits 540 are configured to limit their outputs to the range [-1, 1]. In some embodiments circuits 540 also apply the scaling from circuits 520 by using exponent adjustment to multiply by a power of two.

Die Schaltungen zur Umwandlung von Gleitkomma- in Festkommaintervalle 550 sind in der veranschaulichten Ausführungsform so konfiguriert, dass sie die Gleitkommaintervalldarstellungen mit reduzierter Genauigkeit in Festkommaintervalldarstellungen für die Scherfaktoren DxSz/DzSx und DySz/DzSy umwandeln (die in die Schaltlogik von 6 eingegeben werden, die weiter unten erläutert wird).The floating point to fixed point interval conversion circuits 550 are configured in the illustrated embodiment to convert the reduced precision floating point interval representations to fixed point interval representations for the shear factors D x S z /D z S x and D y S z /D z S y (which in the switching logic of 6 entered, which is explained below).

6 ist ein Diagramm zur Veranschaulichung einer beispielhaften Schaltlogik, die so konfiguriert ist, dass sie Eckpunkte unter Verwendung von Scherfaktorintervallen übersetzt und schert, gemäß einigen Ausführungsformen. In 6 können zum Beispiel die Operationen der vorstehenden Gleichung (4) unter Verwendung der Intervallarithmetik durchgeführt werden. In 6 können die vorstehend unter Bezugnahme auf das Element 260 in 2B beschriebenen Operationen ausgeführt werden. In der veranschaulichten Ausführungsform empfängt die Schaltlogik Eckpunkt- und Strahlpositionsdaten in Intervallform und ist so konfiguriert, dass sie Intervall-Subtraktions- und Multiplikationsoperationen durchführt, um übersetzte und gescherte Eckpunkte unter Verwendung der von der Schaltlogik von 5 erzeugten Scherfaktorintervalle zu erzeugen. In einigen Ausführungsformen ist jeder der Ausgänge von 6 ein Intervall, dessen untere Grenze mit einem Minuszeichen (z. B. ay-) und dessen obere Grenze mit einem Pluszeichen (z. B. ay+) in 7 dargestellt werden kann. 6 14 is a diagram illustrating example switching logic configured to translate and shear vertices using shear factor intervals, in accordance with some embodiments. In 6 For example, the operations of equation (4) above can be performed using interval arithmetic. In 6 the above with reference to element 260 in 2 B described operations are performed. In the illustrated embodiment, the circuitry receives vertex and ray position data in interval form and is configured to perform interval subtraction and multiplication operations to obtain translated and sheared vertices using the circuitry generated by the circuitry of FIG 5 generated shear factor intervals. In some embodiments, each of the outputs from 6 an interval whose lower bound with a minus sign (e.g. a y- ) and whose upper bound with a plus sign (e.g. a y+ ) in 7 can be displayed.

7 ist ein Blockdiagramm, das eine beispielhafte Schaltlogik veranschaulicht, die so konfiguriert ist, dass sie einen anfänglichen Schnittstellentest mit reduzierter Genauigkeit durchführt, gemäß einigen Ausführungsformen. In einigen Ausführungsformen implementiert die Schaltlogik von 7 die Funktionalität des Elements 270 von 2B. Zum Beispiel kann 7 Operationen durchführen, die den vorstehenden Gleichungen für u, v, w entsprechen, um auf der Grundlage der Ausgänge von 6 ein Schnittergebnis zu erzeugen. Es ist zu beachten, dass die Schaltlogik in 7 einige Unterschiede zu diesen Gleichungen aufweist. Erstens führt diese Schaltlogik einen Vergleich statt einer Subtraktion durch ( z . B .   A x ' B y ' < A y ' B x '  statt  A x ' B y ' A y ' B x ' ) ,

Figure DE102022122793A1_0014
da nur das Vorzeichen erforderlich ist. Zweitens führt die Schaltlogik in 7 doppelt so viele Multiplikationen durch, in der veranschaulichten Ausführungsform, um einen konservativen Test bereitzustellen (z. B. wird nur der „äußere“ Teil des Kantenintervalls berücksichtigt), aber die Schaltlogik weiß nicht, welcher Weg „außen“ ist, da sie die im oder gegen den Uhrzeigersinn liegende Seite des Dreiecks berücksichtigen kann. Schaltungen 710 sind so konfiguriert, dass sie ein modifiziertes Intervallprodukt erzeugen, und werden im Folgenden unter Bezugnahme auf 8 näher erläutert. 7 12 is a block diagram illustrating example circuitry configured to perform an initial reduced fidelity interface test, according to some embodiments. In some embodiments, the circuitry implements FIG 7 the functionality of the element 270 of 2 B . For example can 7 Perform operations corresponding to the above equations for u, v, w to, based on the outputs of 6 to produce a cutting result. It should be noted that the switching logic in 7 has some differences to these equations. First, this circuitry performs a comparison rather than a subtraction ( e.g . B . A x ' B y ' < A y ' B x ' instead of A x ' B y ' A y ' B x ' ) ,
Figure DE102022122793A1_0014
since only the sign is required. Second, the switching logic in 7 performs twice as many multiplications, in the illustrated embodiment, to provide a conservative test (e.g. only the "outside" part of the edge interval is considered), but the switching logic does not know which path is "outside" since it uses the in or counterclockwise side of the triangle. Circuits 710 are configured to generate a modified interval product and are described below with reference to FIG 8th explained in more detail.

Die in 7 veranschaulichte UND- und ODER-Logik stellt ein Ergebnis bereit, das anzeigt, ob der Test mit reduzierter Genauigkeit einen eindeutigen Fehlschlag ergibt. Wie gezeigt, können für die sechs zweiseitigen Kantentests 12 Multiplikatoren und 6 Komparatoren verwenden, alle in Festkommaform. Es ist zu beachten, dass verschiedene Schaltlogiken kombiniert oder zusammengelegt werden können, zum Beispiel können Addierer und Subtrahierer durch eine einzige Komponente implementiert werden, die beide Operationen parallel ausführt, und Multiplikatoren und Komparatoren können zusammengelegt werden, um eine einzige ab<=cd-Operation zu implementieren.In the 7 The AND and OR logic illustrated provides a result indicating whether the reduced accuracy test yields a clear failure. As shown, the six two-tailed edge tests can use 12 multipliers and 6 comparators, all in fixed-point form. Note that different circuitry can be combined or merged, for example adders and subtractors can be implemented by a single component performing both operations in parallel, and multipliers and comparators can be merged to form a single ab<=cd operation to implement.

Wie bereits erwähnt, kann der Prozessor einen Schnittstellentest mit höherer Genauigkeit durchführen (z. B. unter Verwendung der ursprünglichen Gleitkommadarstellung), wenn das Ergebnis nicht eindeutig ist (ein potenzieller Treffer).As mentioned earlier, the processor can perform a higher precision interface test (e.g. using the original floating point representation) when the result is ambiguous (a potential hit).

Beispiel für ein modifiziertes IntervallproduktExample of a modified interval product

Normalerweise benötigt ein vorzeichenbehaftetes Intervallprodukt vier Multiplikatoren, wie es wie folgt definiert ist:

  • [x1,x2] - [y1,y2] = [min(x1y1, x1, y2, x2, y1, x2y2), max(x1y1, x1y2, x2y1, x2y2))]. In einigen Ausführungsformen wird das Intervallprodukt mit zwei Multiplikatoren realisiert. Um das Vorzeichen der Intervallsummenprodukte vollständig aufzulösen, müssen wir das Vorzeichen der beiden Endpunkte jedes Intervallprodukts genau auflösen. Dies ist mit nur zwei Multiplikatoren pro Intervallprodukt möglich, es sei denn, die beiden Intervalleingänge des Intervallprodukts umfassen den Ursprung. In diesem Fall kann die Hardware eine Ausnahme auslösen, und der Schnittstellentest kann einen möglichen Treffer aufzeichnen. Empirische Daten zeigen, dass dieser Ausnahmefall bei üblichen Arbeitsbelastungen selten ist. Codeliste 1 implementiert ein modifiziertes vorzeichenbehaftetes Intervallprodukt unter Verwendung von nur zwei Hardware-Multiplikatoren.
 // Start von Codeliste 1: Modifiziertes vorzeichenbehaftetes
 Intervallprodukt
 template <typename T>
 struct Interval {
  T lower, upper;
  inline Interval (const T& 1, const T& u) : lower(1), upper(u) {}
  };
  // T wird als ganze Zahl mit Vorzeichen angenommen (int8_t, int16_t, int32_t, int64_t)
  // Ausnahme wird ausgelöst, wenn vier Multiplikatoren zur Auflösung benötigt werden
  // das Vorzeichen der beiden Endpunkte des Intervalls - in allen anderen Fällen sind die Vorzeichen
  // vollständig aufgelöst.
  template <typename T>
  Interval<T> intervalProduct (Interval<T> a, Interval<T> b, bool& exception) {
  uint8_t bit0_AB = a.upper >= 0;
  uint8_t bit1_AB = a.lower >= 0;
  uint8_t bit2_AB = b.upper >= 0;
  uint8_t bit3_AB = b.lower >= 0;
  uint8_t code_AB = (bit3_AB << 3) | (bit2_AB << 2) | (bit1_AB << 1)
      | bit0_AB;
  Interval<T> p = { 0, 0 };
  switch (code_AB) {
      case 0xf: p.upper = a.upper * b.upper; p.lower = a.lower *
             b.lower; break; 
      case 0xd: p.upper = a.upper * b.upper; p.lower = a.lower *
             b.upper; break;
      case 0xc: p.upper = a.upper * b.lower; p.lower = a.lower *
             b.upper; break;
      case 0x7: p.upper = a.upper * b.upper; p.lower = a.upper *
             b.lower; break;
      case 0x5:
         p.upper = std::numeric_limits<T>::max();
         p.lower = std::numeric_limits<T>::lowest();
         exception = true;
         break; // failure case - too close to call, need 4 multipliers
      case 0x4: p.upper = a.lower * b.lower; p.lower = a.lower *
             b.upper; break;
      case 0x3: p.upper = a.lower * b.upper; p.lower = a.upper *
             b.lower; break;
      case 0x1: p.upper = a.lower * b.lower; p.lower = a.upper *
             b.lower; break;
      case 0x0: p.upper = a.lower * b.lower; p.lower = a.upper *
             b.upper; break;
  }
  }return p;
 }
Typically, a signed interval product requires four multipliers, as defined as follows:
  • [x 1 ,x 2 ] - [y 1, y 2 ] = [min(x 1 y 1 , x 1 , y 2 , x 2 , y 1 , x 2 y 2 ), max(x 1 y 1 , x 1 y 2, x 2 y 1 , x 2 y 2 ))]. In some embodiments, the interval product is implemented with two multipliers. To fully resolve the sign of the interval sum products, we must accurately resolve the sign of the two endpoints of each interval product. This is possible with only two multipliers per interval product, unless the two interval inputs of the interval product include the origin. In this case, the hardware can throw an exception and the interface test can record a possible hit. Empirical data shows that this exceptional case is rare in normal workloads. Code List 1 implements a modified signed interval product using only two hardware multipliers.
 // Start of code list 1: Modified signed
 interval product
 template <typename T>
 struct Interval {
  T lower, upper;
  inline Interval (const T& 1, const T& u) : lower(1), upper(u) {}
  };
  // T is assumed to be a signed integer (int8_t, int16_t, int32_t, int64_t)
  // Exception thrown when four multipliers are needed to resolve
  // the sign of the two end points of the interval - in all other cases are the signs
  // fully resolved.
  template <typename T>Interval<T> intervalProduct (Interval<T> a, Interval<T> b, bool& exception) {
  uint8_t bit0_AB = a.upper >= 0;
  uint8_t bit1_AB = a.lower >= 0;
  uint8_t bit2_AB = b.upper >= 0;
  uint8_t bit3_AB = b.lower >= 0;
  uint8_t code_AB = (bit3_AB << 3) | (bit2_AB << 2) | (bit1_AB << 1)
      | bit0_AB;
  Interval<T> p = { 0, 0 };
  switch (code_AB) {
      case 0xf: p.upper = a.upper * b.upper; p.lower = a.lower *
             b.lower; break; 
      case 0xd: p.upper = a.upper * b.upper; p.lower = a.lower *
             b.upper; break;
      case 0xc: p.upper = a.upper * b.lower; p.lower = a.lower *
             b.upper; break;
      case 0x7: p.upper = a.upper * b.upper; p.lower = a.upper *
             b.lower; break;
      case 0x5:
         p.upper = std::numeric_limits<T>::max();
         p.lower = std::numeric_limits<T>::lowest();
         exception = true;
         break; // failure case - too close to call, need 4 multipliers
      case 0x4: p.upper = a.lower * b.lower; p.lower = a.lower *
             b.upper; break;
      case 0x3: p.upper = a.lower * b.upper; p.lower = a.upper *
             b.lower; break;
      case 0x1: p.upper = a.lower * b.lower; p.lower = a.upper *
             b.lower; break;
      case 0x0: p.upper = a.lower * b.lower; p.lower = a.upper *
             b.upper; break;
  }
  } return p;
 }

8 zeigt ein Beispiel der Schaltlogik 810, die so konfiguriert ist, dass sie das modifizierte vorzeichenbehaftete Intervallprodukt gemäß einigen Ausführungsformen implementiert. In einigen Ausführungsformen ist die Schaltlogik von 8 in die entsprechenden Elemente 710 von 7 eingeschlossen. In dieser Ausführungsform ist die Umleitungsschaltlogik 810 anhand der vier Vorzeichen der Eingänge so konfiguriert, dass sie Operanden an zwei Multiplikatoren weiterleitet, z. B. wie in Codeliste 1 dargestellt. Die Schaltlogik 810 ist in diesem Beispiel auch so konfiguriert, dass sie eine Ausnahmebedingung erkennt. 8th 8 shows an example of switching logic 810 configured to implement the modified signed interval product, in accordance with some embodiments. In some embodiments, the circuitry of 8th into the corresponding elements 710 of 7 locked in. In this embodiment, based on the four signs of the inputs, the bypass circuitry 810 is configured to pass operands to two multipliers, e.g. B. as shown in code list 1. Switching logic 810 is also configured in this example to recognize an exception condition.

Beispielhafte Codierungs- und Verarbeitungstechniken für DreieckspaareExemplary coding and processing techniques for triangle pairs

9 ist ein Diagramm, das ein Beispiel für eine Verarbeitungsschaltlogik für Dreieckspaare und sequentielle Paare veranschaulicht, gemäß einigen Ausführungsformen. Wie gezeigt, ist das Dreieckspaar 910 ein Satz von zwei Dreiecken, die zwei Eckpunkte gemeinsam haben (Eckpunkt 1 und Eckpunkt 2, im veranschaulichten Beispiel). Daher können die beiden Dreiecke durch vier Eckpunkte definiert werden. Da Dreieckspaare in verschiedenen Modellen üblich sind, ist der Prozessor in einigen Ausführungsformen so konfiguriert, dass er Dreiecke unter Verwendung einer Dreieckspaardatenstruktur mit vier Eckpunkten speichert, was den Speicherbedarf verringern kann. 9 12 is a diagram illustrating example processing circuitry for triangle pairs and sequential pairs, according to some embodiments. As shown is the triangle pair 910 a set of two triangles that have two vertices in common (vertex 1 and vertex 2, in the illustrated example). Therefore, the two triangles can be defined by four vertices. Because triangle pairs are common in various models, in some embodiments the processor is configured to store triangles using a four-vertex triangle pair data structure, which may reduce memory footprint.

In einigen Ausführungsformen schließt der Prozessor eine sequentielle Paarverarbeitungsschaltlogik 920 ein, die so konfiguriert ist, dass sie eine oder mehrere Operationen an einem Dreieckspaar sequentiell durchführt, z. B. die Verarbeitung eines Dreiecks in einem Paar vor der Verarbeitung des zweiten Dreiecks in einem Paar. Bei der Operation kann es sich zum Beispiel um ein anfängliches Schnittstellenergebnis handeln, aber auch andere Schaltlogiken können ähnliche sequentielle Techniken verwenden. Dies kann eine effiziente Verarbeitung in Implementierungen bereitstellen, in denen die gleiche Dreieckspaarstruktur für alle Dreiecke verwendet wird, aber einige Strukturen können Daten für nur ein einziges Dreieck enthalten. In diesen Ausführungsformen kann die sequentielle Paarverarbeitungsschaltlogik 920 die Operationen für das zweite Dreieck in einem Paar überspringen, wenn die Datenstruktur anzeigt, dass nur ein Dreieck codiert ist.In some embodiments, the processor includes sequential pair processing circuitry 920 configured to sequentially perform one or more operations on a triangle pair, e.g. B. Processing one triangle in a pair before processing the second triangle in a pair. The operation can be, for example, an initial interface result, but other circuitry can use similar sequential techniques. This can provide efficient processing in implementations where the same triangle pair structure is used for all triangles, but some structures may contain data for only a single triangle. In these embodiments, the sequential pair processing circuitry 920 may skip operations for the second triangle in a pair when the data structure indicates that only one triangle is encoded.

Beispiel für eine definitive Treffererkennung mit einem Schnittstellentest geringerer GenauigkeitExample of a definitive hit detection with a lower accuracy interface test

In einigen Ausführungsformen kann eine Schaltlogik für Schnittstellentests, die mit quantisierten Eingaben arbeitet, immer noch definitive Informationen darüber bereitstellen, ob eine dem Strahl entsprechende Linie ein Primitiv schneidet, was für bestimmte Arten von Strahlen nützlich sein kann. Daher kann, um auf das Beispiel von 7 zurückzukommen, eine modifizierte Vergleichsschaltlogik implementiert werden (zusätzlich zu oder anstelle der Schaltlogik von 7), um ein Ergebnis bereitzustellen, das entweder einen eindeutigen Treffer anzeigt oder anzeigt, dass es nicht eindeutig ist, ob ein Treffer vorliegt.In some embodiments, interface test circuitry operating with quantized inputs may still provide definitive information about whether a line corresponding to the ray intersects a primitive, which may be useful for certain types of rays. Therefore, to refer to the example of 7 Coming back, modified comparison circuitry can be implemented (in addition to or instead of the circuitry of 7 ) to provide a result that either indicates a definite match or indicates that it's not clear whether there is a match.

10 ist ein Diagramm, das beispielhafte Regionen veranschaulicht, die von einer quantisierten Darstellung eines zweidimensionalen dreieckigen Primitivs (z. B. nach dem Scheren) umschlossen werden. Im veranschaulichten Beispiel zeigen die Kanten 1010 die genauen Kanten, z. B. wenn sie entsprechend der ursprünglichen Genauigkeit dargestellt werden. Äußere Grenzen 1020 und innere Grenzen 1030 zeigen die Grenzen der quantisierten Darstellung an, z. B. unter Verwendung einer Intervalldarstellung. 10 Figure 12 is a diagram illustrating example regions bounded by a quantized representation of a two-dimensional triangular primitive (e.g., after shearing). In the illustrated example, the edges 1010 show the exact edges, e.g. B. if they are represented according to the original accuracy. Outer bounds 1020 and inner bounds 1030 indicate the bounds of the quantized representation, e.g. B. using an interval representation.

Wie gezeigt, ist ein Strahl, der in die Region außerhalb der Grenzen 1020 fällt, ein eindeutiger Fehlschlag, wie er z. B. von der Schaltlogik in 7 erkannt werden kann. Ein Strahl, der in die Region zwischen den Grenzen 1020 und 1030 fällt, ist nicht eindeutig (z. B. weil nicht bekannt ist, wo genau die Dreieckskanten in dieser Region liegen). Strahlen, die in diese Region fallen, erfordern möglicherweise einen Test mit höherer Genauigkeit.As shown, a ray falling within the out-of-bounds region 1020 is a definite miss, such as that found in FIG. B. from the switching logic in 7 can be recognized. A ray falling in the region between boundaries 1020 and 1030 is ambiguous (e.g. because it is not known exactly where the triangle edges lie in this region). Rays falling in this region may require a higher accuracy test.

Wie gezeigt, ist ein Strahl, der in die Region innerhalb der Grenzen 1030 fällt, ein eindeutiger Treffer für eine dem Strahl entsprechende Linie. Es ist zu beachten, dass ein mit diesem Test ermittelter Schnittpunkt möglicherweise nicht genau angibt, wo der Treffer aufgetreten ist, z. B. aufgrund der Quantisierung. Ferner kann der durch diesen Test ermittelte Schnittpunkt nur einen Treffer auf der dem Strahl entsprechenden Linie anzeigen, z. B. aufgrund der Quantisierung des Intervalls, in dem der Strahl gültig ist.As shown, a ray falling within the region within boundaries 1030 is a definite hit for a line corresponding to the ray. It should be noted that an intersection found using this test may not accurately indicate where the hit occurred, e.g. B. due to the quantization. Furthermore, the intersection determined by this test may only indicate a hit on the line corresponding to the ray, e.g. B. due to the quantization of the interval in which the ray is valid.

In einigen Ausführungsformen kann jedoch die Bestimmung eines definitiven Treffers in der Region innerhalb der Grenzen 1030 nützlich sein, selbst mit den oben genannten Einschränkungen.However, in some embodiments, determining a definitive match in the region within bounds 1030 may be useful, even with the limitations noted above.

11 ist ein Blockdiagramm, das ein Beispiel für eine Testschaltlogik mit geringer Genauigkeit 1120 veranschaulicht, die so konfiguriert ist, dass sie anzeigt, ob ein Treffer vorliegt oder ob es nicht eindeutig ist, ob es einen Treffer gibt. 12, auf die im Folgenden näher eingegangen wird, stellt ein detailliertes Beispiel für eine solche Schaltlogik bereit. Es ist zu beachten, dass die Schaltlogik 1120 auch einen Ausgang bereitstellen kann, der anzeigt, ob ein Fehlschlag vorliegt oder ob es nicht eindeutig ist, wenn ein Fehlschlag vorliegt, z. B. wenn die Schaltlogik von 7 und 12 kombiniert wird. 11 11 is a block diagram illustrating an example of low precision test circuitry 1120 configured to indicate whether there is a hit or whether it is ambiguous as to whether there is a hit. 12 , which will be discussed in more detail below, provides a detailed example of such switching logic. It should be noted that the switching logic 1120 may also provide an output indicating whether there is a failure or whether it is ambiguous when there is a failure, e.g. B. if the switching logic of 7 and 12 is combined.

In einigen Ausführungsformen kann der Prozessor einen Schnittstellentest mit höherer Genauigkeit in einigen Szenarien überspringen, in denen der Ausgang der Schaltlogik 1120 einen definitiven Treffer anzeigt. In einigen Ausführungsformen kann eine solche Strahlenabfrage unter den folgenden Bedingungen beendet werden: Der Strahl ist ein beliebiger Treffer-Strahl, das Dreieck ist undurchsichtig, und das aktive Strahlenintervall deckt mindestens ein Begrenzungsvolumen vollständig ab, das dieses Dreieck vollständig umschließt. Die Trübung des Dreiecks kann in einigen Ausführungsformen auf der Grundlage der Zuordnung eines Alphawertes zum Test bestimmt werden. Ob das aktive Strahlenintervall mindestens ein Begrenzungsvolumen, das das Dreieck vollständig umschließt, vollständig abdeckt, kann auf der Grundlage einer Traversierung des ADS (die eine Bestimmung der das Dreieck vollständig umschließenden Begrenzungsvolumina auf der Grundlage der Struktur des ADS ermöglicht) und einer Slab-Testschaltlogik ermittelt werden, die so konfiguriert ist, dass sie die Begrenzungsvolumina für die Traversierung testet.In some embodiments, the processor may skip a higher fidelity interface test in some scenarios where the output of circuitry 1120 indicates a definite hit. In some embodiments, such a ray interrogation may be terminated under the following conditions: the ray is any hit ray, the triangle is opaque, and the active ray interval completely covers at least one bounding volume that completely encloses that triangle. The opacity of the triangle may be determined based on assigning an alpha value to the test, in some embodiments. Whether the active beam interval has at least one bounding volume ment completely enclosing the triangle can be determined based on a traversal of the ADS (which allows determination of the bounding volumes completely enclosing the triangle based on the structure of the ADS) and slab test circuitry so configured that it tests the bounding volumes for the traversal.

Unter diesen Bedingungen kann der Prozessor einen Schnittstellen-Treffer im Strahlendreieck aufzeichnen, ohne einen Test mit höherer Genauigkeit durchzuführen. Dies kann bei der Verarbeitung von Strahlen mit beliebigen Treffern die Leistung verbessern, den Stromverbrauch reduzieren oder beides. Es ist zu beachten, dass die vorstehend erörterten Bedingungen nur zur Veranschaulichung eingeschlossen sind; in anderen Ausführungsformen kann nur ein Untersatz dieser Bedingungen geprüft werden, andere Bedingungen können auferlegt werden usw.Under these conditions, the processor can record an intersection hit in the beam triangle without performing a higher accuracy test. This can improve performance, reduce power consumption, or both when processing beams with any hit. It should be noted that the terms discussed above are included for illustrative purposes only; in other embodiments, only a subset of these conditions may be checked, other conditions may be imposed, and so on.

12 ist ein dem Diagramm von 7 ähnliches Schaltungsdiagramm, das die Testschaltlogik für den definitiven Treffer zeigt, gemäß einigen Ausführungsformen. In der veranschaulichten Ausführungsform ist die Schaltlogik 710 so konfiguriert, wie vorstehend unter Bezugnahme auf 7 und 8 beschrieben. Die Ausgänge werden jedoch unterschiedlich an die Komparatoren geleitet, um einen Treffer oder ein nicht eindeutiges Ergebnis bereitzustellen. In einigen Ausführungsformen werden die in 12 gezeigten Komparatoren, UND-Gatter und ODER-Gatter zusätzlich zu der in 7 gezeigten Schaltlogik eingeschlossen, sodass die quantisierte Schaltlogik für Schnittstellentests zwei boolesche Ergebnisse für einen bestimmten Test ausgibt. 12 is a map of 7 similar circuit diagram showing the test circuitry for the definite hit, according to some embodiments. In the illustrated embodiment, the switching logic 710 is configured as described above with reference to FIG 7 and 8th described. However, the outputs are routed differently to the comparators to provide a hit or ambiguous result. In some embodiments, the in 12 Comparators, AND gates and OR gates shown in addition to the in 7 circuitry shown, so the quantized interface test circuitry returns two Boolean results for a given test.

Die nachstehende Codeliste 2 stellt beispielhafte Operationen bereit, die von der Schaltlogik von 12 oder anderen ähnlichen Schaltlogiken implementiert werden können.

 // Start von Codeliste 2: Kantentests und Komparatoren
 // 12 Multiplikatoren für die 6 Intervallprodukte
 bool intervalProductExceptionFlag = false;
 Interval W_bx_ay = interval_product(bxInterval, ayInterval,
      intervalProductExceptionFlag); 
 Interval W_by_ax = interval product(byInterval, axInterval,
      intervalProductExceptionFlag);
 Interval U_cx_by = interval_product(cxInterval, byInterval,
      intervalProductExceptionFlag);
 Interval U_cy_bx = interval_product(cyInterval, bxInterval,
      intervalProductExceptionFlag);
 Interval V_ax_cy = interval_product(axInterval, cyInterval,
      intervalProductExceptionFlag);
 Interval V_ay_cx = interval_product(ayInterval, cxInterval,
      intervalProductExceptionFlag);
 // Innen-/Außen-Bestimmung
 // Handhaben von rück- und vorderseitigen Möglichkeiten
 // Bestimmung eines garantierten Fehlschlags (erfolgreiche
      Zurückweisung der Schnittstelle des Strahlendreiecks)
 const bool outerEdgeTestSignsFrontU = U_cy_bx.lower < U_cx_by.upper;
 const bool outerEdgeTestSignsFrontV = V_ay_cx.lower < V_ax_cy.upper;
 const bool outerEdgeTestSignsFrontW = W_by_ax.lower < W_bx_ay.upper;
 const bool outerEdgeTestSignsBackU = U_cx_by.lower < U_cy_bx.upper;
 const bool outerEdgeTestSignsBackV = V_ax_cy.lower < V_ay_cx.upper;
 const bool outerEdgeTestSignsBackW = W_bx_ay.lower < W_by_ax.upper;
 const bool insideOuterBackfacingTriangle = outerEdgeTestSignsBackU &&
      outerEdgeTestSignsBackV && outerEdgeTestSignsBackW;
 const bool insideOuterFrontfacingTriangle = outerEdgeTestSignsFrontU
      && outerEdgeTestSignsFrontV && outerEdgeTestSignsFrontW;
 const bool guaranteedRayMiss = !insideOuterBackfacingTriangle
      && !insideOuterFrontfacingTriangle;
 // Bestimmung eines garantierten Treffers (erfolgreiche Annahme der
      Schnittstelle des Strahlendreiecks)
 const bool innerEdgeTestSignsFrontU = U_cy_bx.upper <= U_cx_by.lower;
 const bool innerEdgeTestSignsFrontV = V_ay_cx.upper <= V_ax_cy.lower;
 const bool innerEdgeTestSignsFrontW = W_by_ax.upper <= W_bx_ay.lower;
 const bool innerEdgeTestSignsBackU = U_cx_by.upper <= U_cy_bx.lower; 

 const bool innerEdgeTestSignsBackV = V_ax_cy.upper <= V_ay_cx.lower;
 const bool innerEdgeTestSignsBackW = W_bx_ay.upper <= W_by_ax.lower;
 const bool insideInnerBackfacingTriangle = innerEdgeTestSignsBackU &&
      innerEdgeTestSignsBackV && innerEdgeTestSignsBackW;
 const bool insideInnerFrontfacingTriangle = innerEdgeTestSignsFrontU
      && innerEdgeTestSignsFrontV && innerEdgeTestSignsFrontW;
 const bool guaranteedLineHit = insideInnerBackfacingTriangle ||
      insideInnerFrontfacingTriangle;
 if (intervalProductExceptionFlag) return TRIANGLE_FILTER_INCONCLUSIVE;
 else if (guaranteedRayMiss) return
      TRIANGLE_FILTER_CONSERVATIVE_RAY_MISS;
 else if (guaranteedLineHit) return
      TRIANGLE_FILTER_CONSERVATIVE_LINE_HIT;
 else return TRIANGLE_FILTER_INCONCLUSIVE;
Code Listing 2 below provides example operations performed by the circuitry of 12 or other similar switching logic can be implemented.
 // Start of Code List 2: Edge Tests and Comparators
 // 12 multipliers for the 6 interval products
 bool intervalProductExceptionFlag = false;
 Interval W_bx_ay = interval_product(bxInterval, ayInterval,
      intervalProductExceptionFlag); 
 Interval W_by_ax = interval product(byInterval, axInterval,
      intervalProductExceptionFlag);
 Interval U_cx_by = interval_product(cxInterval, byInterval,
      intervalProductExceptionFlag);
 Interval U_cy_bx = interval_product(cyInterval, bxInterval,
      intervalProductExceptionFlag);
 Interval V_ax_cy = interval_product(axInterval, cyInterval,
      intervalProductExceptionFlag);
 Interval V_ay_cx = interval_product(ayInterval, cxInterval,
      intervalProductExceptionFlag);
 // interior/exterior determination
 // Handling back and front possibilities
 // Determine a guaranteed failure (successful
      rejection of the intersection of the triangle of rays)
 const bool outerEdgeTestSignsFrontU = U_cy_bx.lower <U_cx_by.upper;
 const bool outerEdgeTestSignsFrontV = V_ay_cx.lower <V_ax_cy.upper;
 const bool outerEdgeTestSignsFrontW = W_by_ax.lower <W_bx_ay.upper;
 const bool outerEdgeTestSignsBackU = U_cx_by.lower <U_cy_bx.upper;
 const bool outerEdgeTestSignsBackV = V_ax_cy.lower <V_ay_cx.upper;
 const bool outerEdgeTestSignsBackW = W_bx_ay.lower <W_by_ax.upper;
 const bool insideOuterBackfacingTriangle = outerEdgeTestSignsBackU &&
      outerEdgeTestSignsBackV &&outerEdgeTestSignsBackW;
 const bool insideOuterFrontfacingTriangle = outerEdgeTestSignsFrontU
      && outerEdgeTestSignsFrontV &&outerEdgeTestSignsFrontW;
 const bool guaranteedRayMiss = !insideOuterBackfacingTriangle
      &&!insideOuterFrontfacingTriangle;
 // Determine a guaranteed hit (successful acceptance of the
      intersection of the triangle of rays)
 const bool innerEdgeTestSignsFrontU = U_cy_bx.upper <= U_cx_by.lower;
 const bool innerEdgeTestSignsFrontV = V_ay_cx.upper <= V_ax_cy.lower;
const bool innerEdgeTestSignsFrontW = W_by_ax.upper <= W_bx_ay.lower;
 const bool innerEdgeTestSignsBackU = U_cx_by.upper <= U_cy_bx.lower; 

 const bool innerEdgeTestSignsBackV = V_ax_cy.upper <= V_ay_cx.lower;
 const bool innerEdgeTestSignsBackW = W_bx_ay.upper <= W_by_ax.lower;
 const bool insideInnerBackfacingTriangle = innerEdgeTestSignsBackU &&
      innerEdgeTestSignsBackV &&innerEdgeTestSignsBackW;
 const bool insideInnerFrontfacingTriangle = innerEdgeTestSignsFrontU
      && innerEdgeTestSignsFrontV &&innerEdgeTestSignsFrontW;
 const bool guaranteedLineHit = insideInnerBackfacingTriangle ||
      insideInnerFrontfacingTriangle;
 if (intervalProductExceptionFlag) return TRIANGLE_FILTER_INCONCLUSIVE;
 else if (guaranteedRayMiss) return
      TRIANGLE_FILTER_CONSERVATIVE_RAY_MISS;
 else if (guaranteedLineHit) return
      TRIANGLE_FILTER_CONSERVATIVE_LINE_HIT;
 else return TRIANGLE_FILTER_INCONCLUSIVE;

Beispiel für Traversierungstechniken zur potenziellen Reduzierung von SchnittstellentestsExample of traversal techniques to potentially reduce interface testing

Die Berechnung von Strahlenschnittstellen wird häufig durch Beschleunigungsdatenstrukturen (ADS) erleichtert. Zur effizienten Durchführung von Strahlenschnittstellenabfragen kann eine räumliche Datenstruktur die Anzahl der Strahlen-Oberflächen Schnittstellentests reduzieren und damit den Abfrageprozess beschleunigen. Eine gängige Klasse von ADS ist die Grenzvolumenhierarchie (Bounding Volume Hierarchy, BVH), bei der Oberflächenprimitive in eine Hierarchie geometrischer Proxy-Volumina (z. B. Boxen) eingeschlossen sind, die bei Tests auf Schnittstellen günstiger sind. Diese Volumina können als Begrenzungsregionen bezeichnet werden. Durch Traversieren der Datenstruktur und Durchführung von Proxy-Schnittstellentests entlang des Weges, lokalisiert der Grafikprozessor einen konservativen Satz von Kandidaten für Schnittstellenprimitive für einen bestimmten Strahl. Eine gängige Form von BVH verwendet achsenausgerichtete 3D-Begrenzungsboxen (AABB). Einmal konstruiert, kann ein AABB BVH für alle Strahlenabfragen verwendet werden und ist eine sichtpunktunabhängige Struktur. In einigen Ausführungsformen werden diese Strukturen einmal für jedes einzelne Netz in einer Szene im lokalen Objektraum oder Modellraum dieses Objekts konstruiert, und die Strahlen werden vom globalen Raum in den lokalen Raum transformiert, bevor sie das BVH traversieren. Dies kann die geometrische Instanzierung eines einzelnen Netzes mit vielen starren Transformationen und Materialeigenschaften ermöglichen (analog zur Instanzierung bei der Rasterisierung). Bei animierter Geometrie muss die Datenstruktur in der Regel neu aufgebaut werden (manchmal mit einer weniger kostspieligen Aktualisierungsoperation, die als „refit“ bezeichnet wird). Bei Anwendungen, die nicht in Echtzeit ablaufen und bei denen Millionen oder Milliarden von Strahlen gegen eine einzige Szene in einem einzigen Bild verfolgt werden, amortisieren sich die Kosten für die ADS-Konstruktion vollständig, sodass sie sozusagen „kostenlos“ sind. In einem Echtzeit-Kontext besteht jedoch in der Regel ein heikler Kompromiss zwischen Baukosten und Traversierungskosten, wobei effizientere Strukturen in der Regel teurer zu bauen sind.The calculation of ray intersections is often facilitated by acceleration data structures (ADS). To perform ray-interface queries efficiently, a spatial data structure can reduce the number of ray-surface interface tests, thereby speeding up the query process. A common class of ADS is the Bounding Volume Hierarchy (BVH), in which surface primitives are enclosed in a hierarchy of geometric proxy volumes (e.g., boxes) that are more convenient when testing for interfaces. These volumes can be referred to as confinement regions. By traversing the data structure and performing proxy interface tests along the way, the graphics processor locates a conservative set of candidate interface primitives for a given ray. A common form of BVH uses 3D axis-aligned bounding boxes (AABB). Once constructed, an AABB BVH can be used for all ray queries and is a viewpoint independent structure. In some embodiments, these structures are constructed once for each individual mesh in a scene in the local object space or model space of that object, and the rays are transformed from global space to local space before traversing the BVH. This can allow geometric instantiation of a single mesh with many rigid transformations and material properties (analogous to instantiation in rasterization). Animated geometry typically requires the data structure to be rebuilt (sometimes with a less expensive update operation called a "refit"). For non-real-time applications where millions or billions of rays are traced against a single scene in a single frame, the cost of ADS construction is fully amortized, making it "free" so to speak. However, in a real-time context, there is usually a delicate trade-off between construction costs and traversal costs, with more efficient structures typically being more expensive to build.

In einigen Ausführungsformen ist die Schnittstellenschaltlogik so konfiguriert, dass sie ein BVH ADS traversiert, das für seine Begrenzungsvolumina achsenausgerichtete 3D-Boxen verwendet. Das ADS kann einen maximalen Verzweigungsfaktor (z. B. 2, 4, 8, 16 usw.) und eine flexible benutzerdefinierte Nutzlast (z. B. den Inhalt der Blätter des Baums) haben, die keine Dreiecksgeometrie voraussetzt. In einigen Ausführungsformen wird eine Tiefe-Zuerst-Suche durchgeführt, z. B. wie in US-Pat. Anm. Nr. 17/103,317 , die am 24. November 2020 eingereicht wurde und hierin durch Bezugnahme in ihrer Gesamtheit aufgenommen wird.In some embodiments, the interface circuitry is configured to traverse a BVH ADS that uses axis-aligned 3D boxes for its bounding volumes. The ADS can have a maximum branching factor (e.g. 2, 4, 8, 16, etc.) and a flexible user-defined payload (e.g. the contents of the tree's leaves) that does not assume triangular geometry. In some embodiments, a depth-first search is performed, e.g. B. as in US Pat. note no. 17/103,317 , filed November 24, 2020, which is incorporated herein by reference in its entirety.

In einigen Ausführungsformen ist die RIA 190 so konfiguriert, dass sie für einen bestimmten Knoten eine modifizierte Reihenfolge der untergeordneten Knoten für bestimmte Arten von Tiefe-Zuerst-Traversierungen verwendet. In einigen Ausführungsformen werden die offenbarten Techniken auf Sekundärstrahlen angewandt. Sekundärstrahlen sind Strahlen, die von der Stelle ausgehen, an der sich ein erster (bereits verfolgter) Strahl mit einer Oberfläche schneidet. Viele Strahlen mit beliebigen Treffern sind Sekundärstrahlen aufgrund der Arten von Effekten, die üblicherweise mit Strahlen mit beliebigen Treffern erzielt werden (z. B. Schatten). Die Sekundärstrahlen haben daher ihren Ursprung in der Nähe der durchschnittenen Oberfläche und weisen von der Oberfläche weg (und schneiden daher diese bestimmte Oberfläche nicht).In some embodiments, the RIA 190 is configured to use, for a particular node, a modified child node order for particular types of depth-first traversals. In some embodiments, the disclosed techniques are applied to secondary beams. Secondary rays are rays that emanate from where a first (already traced) ray intersects a surface. Many random-hit beams are secondary because of the types of effects commonly achieved with random-hit beams (e.g. shadows). The secondary rays therefore originate near the intersected surface and point away from the surface (and therefore do not intersect that particular surface).

Aufgrund der Beschaffenheit von Sekundärstrahlen haben die Erfinder erkannt, dass die Traversierung von untergeordneten Knoten für sich schneidende Begrenzungsvolumina von vorne nach hinten oder von hinten nach vorne üblicherweise zu Schnittstellentests führen kann, die fehlschlagen. Bei von vorne nach hinten ist es zum Beispiel wahrscheinlich, dass der Strahl ein Begrenzungsvolumen für das Primitiv schneidet, das den Sekundärstrahl reflektiert (was einen Schnittstellentest auslöst), aber er wird dieses Primitiv nicht tatsächlich schneiden.Due to the nature of secondary rays, the inventors have recognized that front-to-back or back-to-front traversal of child nodes for intersecting bounding volumes can typically result in interface tests that fail. For example, in front-to-back, the ray is likely to intersect a bounding volume for the primitive that reflects the secondary ray (triggering an intersection test), but it will not actually intersect that primitive.

13 ist ein Diagramm, in dem eine Reihenfolge von vorne nach hinten mit einer Reihenfolge von der Mitte nach außen für sich kreuzende untergeordnete Knoten einer Beschleunigungsdatenstruktur verglichen wird, gemäß einigen Ausführungsformen. Im veranschaulichten Beispiel ist ein Sekundärstrahl eine Reflexion, die auf einem Schnittpunkt eines anderen Strahls (nicht dargestellt) mit dem Primitiv A beruht. Wie dargestellt, endet der Strahl an einer Lichtquelle (dies kann darauf zurückzuführen sein, dass bei der Strahlenverfolgung Strahlen üblicherweise rückwärts von der Kamera zur Lichtquelle verfolgt werden, um die Verarbeitung irrelevanter Strahlen zu vermeiden). Der Strahl ist ein Strahl mit beliebigen Treffern und schneidet in diesem Beispiel das Primitiv C. 13 12 is a diagram comparing a front-to-back order to a center-out order for crossing child nodes of an acceleration data structure, according to some embodiments. In the illustrated example, a secondary ray is a reflection resulting from an intersection of another ray (not shown) with the primitive A . As shown, the ray ends at a light source (this may be due to the fact that ray tracing typically traces rays backwards from the camera to the light source to avoid processing irrelevant rays). The ray is an arbitrary hit ray and intersects the primitive C in this example.

Bei Betrachtung einer Beispielsituation, bei der der Strahl die Begrenzungsvolumina der einzelnen veranschaulichten Primitive schneidet und die veranschaulichten Primitive allesamt untergeordnete Konten eines Knotens sind, der einem größeren Begrenzungsvolumen entspricht. In diesem Beispiel kann die Traversierungsschaltlogik verschiedene Reihenfolgen von untergeordneten Knoten verwenden, um bei einer Tiefe-Zuerst-Suche zuerst zu folgen.Considering an example situation where the ray intersects the bounding volumes of each illustrated primitive, and the illustrated primitives are all children of a node corresponding to a larger bounding volume. In this example, the traversal circuitry can use different orders of child nodes to follow first in a depth-first search.

Wie gezeigt, führen Schnittstellentests für die Primitive A und B zu Fehlschlägen, wenn eine Reihenfolge von vorne nach hinten verwendet wird, bei der die Begrenzungsvolumina, die sich näher am Strahlursprung befinden, zuerst traversiert werden, bevor schließlich ein Treffer für das Primitiv C erkannt wird und die Abfrage endet (da es sich um einen Strahl mit beliebigen Treffern handelt). Der Fehlschlag für Primitiv A ist nicht überraschend, da sich der Strahl, der den veranschaulichten Sekundärstrahl erzeugte, mit Primitiv A schneidet.As shown, interface tests for primitives A and B will fail if a front-to-back ordering is used, in which the bounding volumes closer to the ray origin are traversed first before finally detecting a hit for primitive C and the query ends (since it is an arbitrary hit ray). The failure for primitive A is not surprising since the ray that produced the illustrated secondary ray intersects with primitive A.

Die Mitte-Außen Reihenfolge stellt vorteilhafterweise eine schnellere Treffererkennung bereit, die zwei Schnittstellentests weniger erfordert als die von vorne nach hinten Reihenfolge in diesem Beispiel. Wie gezeigt, führt der Start in der Mitte des Strahls zu einem Treffer für das Primitiv C, und die Abfrage kann ohne Prüfung der Primitive D, A oder B beendet werden.Advantageously, the center-outer ordering provides faster hit detection that requires two fewer interface tests than the front-to-back ordering in this example. As shown, starting in the middle of the ray results in a hit for primitive C, and the query can complete without examining primitives D, A, or B.

In einigen Ausführungsformen können verschiedene Techniken eingesetzt werden, um einem oder mehreren mittleren Knoten eine bevorzugte Reihenfolge im Vergleich zu vorderen/ hinteren Knoten bereitzustellen. Als ein Beispiel wird ein baumartiges ADS mit einem Verzweigungsfaktor N betrachtet. Die Schnittstellenschaltlogik kann zunächst die untergeordneten Knoten sortieren, deren Begrenzungsvolumina in der Reihenfolge von vorne nach hinten durchschnitten wurden. Für M ≤ N geschnittene Unterordnungen (mit den Indizes 0 bis M-1) kann die Schnittstellenschaltlogik die Schnittpunkte über die folgenden Sequenzen neu ordnen, je nachdem, ob M ungerade oder gerade ist.In some embodiments, various techniques may be employed to provide one or more middle nodes with a preferred order compared to front/back nodes. As an example, consider a tree-like ADS with a branching factor N. The interface circuitry may first sort the child nodes whose bounding volumes have been intersected in front-to-back order. For M ≤ N intersected suborders (with indices 0 to M-1), the interface circuitry can reorder the intersections over the following sequences depending on whether M is odd or even.

Wenn M ungerade ist und die Division eine ganzzahlige Division bedeutet (z. B. 3/2=1), ist das folgende Beispiel eine neu geordnete Sequenz von untergeordneten Indizes: M/ 2

Figure DE102022122793A1_0015
M/ 2 + 1
Figure DE102022122793A1_0016
M/ 2 1
Figure DE102022122793A1_0017
M/ 2 + 2
Figure DE102022122793A1_0018
M/ 2 2
Figure DE102022122793A1_0019
M/ 2 + M/ 2 = M 1
Figure DE102022122793A1_0020
M/ 2 M/ 2 = 0
Figure DE102022122793A1_0021
If M is odd and the division means integer division (e.g. 3/2=1), the following example is a reordered sequence of subindexes: m/ 2
Figure DE102022122793A1_0015
m/ 2 + 1
Figure DE102022122793A1_0016
m/ 2 1
Figure DE102022122793A1_0017
m/ 2 + 2
Figure DE102022122793A1_0018
m/ 2 2
Figure DE102022122793A1_0019
... m/ 2 + m/ 2 = M 1
Figure DE102022122793A1_0020
m/ 2 m/ 2 = 0
Figure DE102022122793A1_0021

Wenn M geradzahlig ist, ist das folgende Beispiel eine neu geordnete Sequenz: M/ 2

Figure DE102022122793A1_0022
M/ 2 1
Figure DE102022122793A1_0023
M/ 2 + 1
Figure DE102022122793A1_0024
M/ 2 2
Figure DE102022122793A1_0025
M/ 2 + 2
Figure DE102022122793A1_0026
M/ 2 + ( M/ 2 1 ) = M 1
Figure DE102022122793A1_0027
M/ 2 M/ 2 = 0
Figure DE102022122793A1_0028
If M is even, the following example is a rearranged sequence: m/ 2
Figure DE102022122793A1_0022
m/ 2 1
Figure DE102022122793A1_0023
m/ 2 + 1
Figure DE102022122793A1_0024
m/ 2 2
Figure DE102022122793A1_0025
m/ 2 + 2 ...
Figure DE102022122793A1_0026
m/ 2 + ( m/ 2 1 ) = M 1
Figure DE102022122793A1_0027
m/ 2 m/ 2 = 0
Figure DE102022122793A1_0028

In einigen Hardwareimplementierungen kann die Schaltlogik für einen maximalen Verzweigungsfaktor N Umordnungssequenzen für jeden Wert von M von 1 bis N codieren, um schnell die Reihenfolge für eine Mitte-Außen Traversierung zu bestimmen. Als ein nicht einschränkendes Beispiel könnte, wenn N=8 ist, eine Tabelle die folgenden Sequenzen einschließen: F u ¨ r M = 1 : [ 0 ]

Figure DE102022122793A1_0029
F u ¨ r M = 2 : [ 1,0 ]
Figure DE102022122793A1_0030
F u ¨ r M = 3 : [ 1,2,0 ]
Figure DE102022122793A1_0031
F u ¨ r M = 4 : [ 2,1,3,0 ]
Figure DE102022122793A1_0032
F u ¨ r M = 5 : [ 2,3,1,4,0 ]
Figure DE102022122793A1_0033
F u ¨ r M = 6 : [ 3,2,4,1,5,0 ]
Figure DE102022122793A1_0034
F u ¨ r M = 7 : [ 3,4,2,5,1,6,0 ]
Figure DE102022122793A1_0035
F u ¨ r M = 8 : [ 4,3,5,2,6,1,7,0 ]
Figure DE102022122793A1_0036
In some hardware implementations, for a maximum branching factor, the circuitry can encode N reordering sequences for each value of M from 1 to N to quickly determine the order for a center-outside traversal. As a non-limiting example, when N=8, a table could include the following sequences: f and ¨ r M = 1 : [ 0 ]
Figure DE102022122793A1_0029
f and ¨ r M = 2 : [ 1.0 ]
Figure DE102022122793A1_0030
f and ¨ r M = 3 : [ 1,2,0 ]
Figure DE102022122793A1_0031
f and ¨ r M = 4 : [ 2.1.3.0 ]
Figure DE102022122793A1_0032
f and ¨ r M = 5 : [ 2,3,1,4,0 ]
Figure DE102022122793A1_0033
f and ¨ r M = 6 : [ 3,2,4,1,5,0 ]
Figure DE102022122793A1_0034
f and ¨ r M = 7 : [ 3,4,2,5,1,6,0 ]
Figure DE102022122793A1_0035
f and ¨ r M = 8th : [ 4,3,5,2,6,1,7,0 ]
Figure DE102022122793A1_0036

Es ist zu beachten, dass die hierin erörterten spezifischen Sequenzen zur Veranschaulichung eingeschlossen sind, aber nicht dazu dienen, den Schutzumfang der vorliegenden Offenbarung einzuschränken. In anderen Ausführungsformen können verschiedene Reihenfolgen implementiert werden, in denen ein oder mehrere innere untergeordnete Knoten gegenüber den vorderen/ hinteren Knoten priorisiert werden.It should be noted that the specific sequences discussed herein are included for purposes of illustration but are not intended to limit the scope of the present disclosure. In other embodiments, different orders may be implemented in which one or more inner child nodes are prioritized over the front/back nodes.

In Ausführungsformen, die binäre Bäume (N=2) verwenden, kann die Traversierungsschaltlogik bei der Suche nach untergeordneten Knoten auf verschiedenen Ebenen des Baums zwischen der Traversierungsreihenfolge „von hinten nach vorne“ und „von vorne nach hinten“ wechseln (z. B. Verwendung von „von vorne nach hinten“ für ungerade Tiefen im Baum und von „von hinten nach vorne“ für gerade Tiefen im Baum oder umgekehrt).In embodiments using binary trees (N=2), the traversal circuitry may switch between back-to-front and front-to-back traversal order when searching for child nodes at different levels of the tree (e.g., using from "front to back" for odd depths in the tree and from "back to front" for even depths in the tree, or vice versa).

Beispielhafte VerfahrenExemplary Procedures

14 ist ein Flussdiagramm, das ein beispielhaftes Verfahren zur Durchführung eines ersten Schnittstellentests veranschaulicht, gemäß einigen Ausführungsformen. Das in 14 gezeigte Verfahren kann unter anderem in Verbindung mit beliebigen der hierin offenbarten Computerschaltlogik, Systeme, Vorrichtungen, Elemente oder Komponenten verwendet werden. In verschiedenen Ausführungsformen können einige der gezeigten Verfahrenselemente gleichzeitig, in einer anderen Reihenfolge als gezeigt durchgeführt oder weggelassen werden. Zudem können zusätzliche Verfahrenselemente ebenfalls wie gewünscht durchgeführt werden. 14 12 is a flow chart illustrating an example method for performing a first interface test, according to some embodiments. This in 14 The method shown may be used in connection with any of the computer circuitry, systems, devices, elements, or components disclosed herein, among others. In various embodiments, some of the method elements shown may be performed simultaneously, in a different order than shown, or omitted. Additionally, additional process elements can also be performed as desired.

Bei 1410 quantisiert ein Grafikprozessor in der veranschaulichten Ausführungsform eine erste Darstellung eines Primitivs, um eine Intervalldarstellung des Primitivs mit reduzierter Genauigkeit zu erzeugen, wobei die Intervalldarstellung Intervallwerte einschließt, die garantiert entsprechende Werte abdecken, die durch die erste Darstellung des Primitivs spezifiziert sind. In einigen Ausführungsformen verwendet die Quantisierung der ersten Darstellung des Primitivs eine quantisierte Festkommadarstellung, die für eine untere Grenze des Intervalls auf Null gerundet ist, und für eine obere Grenze des Intervalls die untere Grenze plus eine Einheit der kleinsten Genauigkeit (ULP).At 1410, in the illustrated embodiment, a graphics processor quantizes a first representation of a primitive to generate a reduced-precision interval representation of the primitive, where the interval representation includes interval values guaranteed to cover corresponding values that are specified by the first representation of the primitive. In some embodiments, the quantization of the first representation of the primitive uses a quantized fixed-point representation rounded to zero for a lower bound of the interval and the lower bound plus a unit of least precision (ULP) for an upper bound of the interval.

Bei 1420 quantisiert der Grafikprozessor in der veranschaulichten Ausführungsform eine erste Darstellung eines Strahls, um eine Intervalldarstellung des Strahls mit reduzierter Genauigkeit zu erzeugen, wobei die Intervalldarstellung Intervallwerte einschließt, die garantiert entsprechende Werte abdecken, die durch die erste Darstellung des Strahls spezifiziert sind. In einigen Ausführungsformen schließt die Intervalldarstellung des Strahls mit reduzierter Genauigkeit eine quantisierte Strahlzeit ein, die als Intervall dargestellt ist. In einigen Ausführungsformen erzeugt die Schaltlogik auf der Grundlage erster und zweiter Positionen des Primitivs an verschiedenen Punkten innerhalb eines Bewegungsunschärfezeitintervalls die Intervalldarstellung des Primitivs mit reduzierter Genauigkeit, sodass die Intervalldarstellung des Primitivs mit reduzierter Genauigkeit alle möglichen Stellen des Primitivs während des Intervalls abdeckt, das die quantisierte Strahlzeit darstellt.At 1420, in the illustrated embodiment, the graphics processor quantizes a first representation of a ray to generate a reduced-precision interval representation of the ray, the interval representation including interval values guaranteed to cover corresponding values specified by the first representation of the ray. In some embodiments, the reduced-precision interval representation of the beam includes a quantized beam time represented as an interval. In some embodiments, the switching logic generates the reduced precision interval representation of the primitive based on first and second positions of the primitive at different points within a motion blur time interval, such that the reduced precision interval representation of the primitive covers all possible locations of the primitive during the interval that the quantized represents beam time.

Bei 1430 bestimmt der Grafikprozessor in der veranschaulichten Ausführungsform unter Verwendung von Intervallarithmetik ein anfängliches Schnittstellenergebnis auf der Grundlage von Koordinaten der Intervalldarstellung des Primitivs mit Koordinaten der Intervalldarstellung des Strahls, wobei ein durch das anfängliche Schnittstellenergebnis angezeigter Fehlschlag garantiert kein Treffer für die erste Darstellung des Primitivs und die erste Darstellung des Strahls ist.At 1430, in the illustrated embodiment, the graphics processor determines an initial intersection result using interval arithmetic based on coordinates of the interval representation of the primitive with coordinates of the interval representation of the ray, where a failure indicated by the initial intersection result guarantees no hit for the first representation of the primitive and is the first representation of the ray.

In einigen Ausführungsformen ist der Grafikprozessor so konfiguriert, dass er als Reaktion auf ein potenzielles anfängliches Schnittstellenergebnis einen Schnittstellentest unter Verwendung der ersten Darstellung des Primitivs und der ersten Darstellung des Strahls durchführt.In some embodiments, the graphics processor is configured to perform an interface test using the first representation of the primitive and the first representation of the ray in response to a potential initial interface result.

In einigen Ausführungsformen erzeugt die Scherfaktorschaltlogik Intervalldarstellungen von Scherfaktoren auf der Grundlage von Strahlrichtungs- und Skaleninformationen sowie gescherten Eckpunktintervallen auf der Grundlage der quantisierten Darstellung des Primitivs und der Intervalldarstellung der Scherfaktoren. In einigen Ausführungsformen basiert das anfängliche Schnittstellenergebnis auf den gescherten Eckpunktintervallen. In einigen Ausführungsformen ist die Scherfaktorschaltlogik so konfiguriert, dass sie Folgendes verwendet: eine erste Genauigkeit, um eine erste Koordinate für einen Ursprung des Strahls in einer Koordinatenrichtung darzustellen, die einen Schwellenwert (z. B. den größten) Beitrag zu einem Strahlrichtungsvektor bereitstellt (z. B. die in z-Richtung umbenannte Achse), und eine zweite, größere Genauigkeit, um Koordinaten für den Ursprung des Strahls in anderen Richtungen darzustellen.In some embodiments, the shear factor switching logic generates interval representations of shear factors based on ray direction and scale information and sheared vertex intervals based on the quantized representation of the primitive and the interval representation of the shear factors. In some embodiments, the initial intersection result is based on the sheared vertex intervals. In some embodiments, the shear factor switching logic is configured to use: a first precision to represent a first coordinate for an origin of the ray in a coordinate direction that provides a threshold (e.g., the largest) contribution to a ray direction vector (e.g., e.g. the axis renamed z-direction), and a second, greater precision, to represent coordinates for the origin of the ray in other directions.

In einigen Ausführungsformen ist die erste Darstellung des Primitivs eine Darstellung eines Dreieckspaares, das höchstens vier Eckpunkte für zwei dreieckige Primitive in dem Dreieckspaar einschließt, wobei der Grafikprozessor eine Schaltlogik einschließt, die so konfiguriert ist, dass sie Dreiecke eines gegebenen Dreieckspaares sequentiell verarbeitet.In some embodiments, the first representation of the primitive is a representation of a triangle pair that includes at most four vertices for two triangular primitives in the triangle pair, where the graphics processor includes circuitry configured to process triangles of a given triangle pair sequentially.

15 ist ein Flussdiagramm, das ein beispielhaftes Verfahren zur Durchführung eines ersten Schnittstellentests veranschaulicht, gemäß einigen Ausführungsformen. Das in 15 gezeigte Verfahren kann unter anderem in Verbindung mit beliebigen der hierin offenbarten Computerschaltlogik, Systeme, Vorrichtungen, Elemente oder Komponenten verwendet werden. In verschiedenen Ausführungsformen können einige der gezeigten Verfahrenselemente gleichzeitig, in einer anderen Reihenfolge als gezeigt durchgeführt oder weggelassen werden. Zudem können zusätzliche Verfahrenselemente ebenfalls wie gewünscht durchgeführt werden. 15 12 is a flow chart illustrating an example method for performing a first interface test, according to some embodiments. This in 15 The method shown may be used in connection with any of the computer circuitry, systems, devices, elements, or components disclosed herein, among others. In various embodiments, some of the method elements shown may be performed simultaneously, in a different order than shown, or omitted. Additionally, additional process elements can also be performed as desired.

Bei 1510 führt ein Grafikprozessor in der veranschaulichten Ausführungsform Schnittstellentests durch, wobei die Schnittstellentests auf Darstellungen mit reduzierter Genauigkeit von Strahlen, die durch Quantisierung der anfänglichen Darstellungen der Strahlen erzeugt wurden, und auf Darstellungen mit reduzierter Genauigkeit von Primitiven, die durch Quantisierung der anfänglichen Darstellungen der Primitiven erzeugt wurden, arbeiten. In der veranschaulichten Ausführungsform erzeugen die Schnittstellentests ein erstes Ergebnis für einen ersten Strahl und ein erstes Primitiv, wobei das erste Ergebnis anzeigt, dass der erste Strahl das erste Primitiv schneidet, und zwar entsprechend ihrer ursprünglichen Darstellungen. In einigen Ausführungsformen können die Schnittstellentests auch ein zweites Ergebnis für einen zweiten Strahl und das erste Primitiv erzeugen, wobei das zweite Ergebnis anzeigt, dass es nicht eindeutig ist, ob der zweite Strahl das erste Primitiv schneidet. Der Grafikprozessor kann einen Schnittstellentest für den zweiten Strahl unter Verwendung der anfänglichen Darstellung des zweiten Strahls und des ersten Primitivs durchführen. Die Schnittstellentests können auf der Grundlage der Traversierung einer Beschleunigungsdatenstruktur durchgeführt werden, die hierarchisch geordnete Begrenzungsvolumina für zumindest einen Abschnitt einer Grafikszene einschließt.At 1510, a graphics processor in the illustrated embodiment performs interface tests, the interface tests on reduced-precision representations of rays generated by quantization of the initial representations of the rays and on reduced-precision representations of primitives generated by quantization of the initial representations of the Primitives were generated work. In the illustrated embodiment, the interface tests produce a first result for a first ray and a first primitive, the first result indicating that the first ray intersects the first primitive according to their original representations. In some embodiments, the interface tests may also produce a second result for a second ray and the first primitive, where the second result indicates that it is not clear whether the second ray intersects the first primitive. The graphics processor may perform an interface test for the second ray using the initial representation of the second ray and the first primitive. The interface tests may be performed based on the traversal of an acceleration data structure that includes hierarchically ordered bounding volumes for at least a portion of a graphics scene.

Bei 1520, in der veranschaulichten Ausführungsform, zeichnet der Grafikprozessor einen Schnitt mit dem ersten Primitiv für den ersten Strahl basierend auf dem ersten Ergebnis auf, ohne einen Schnittstellentest für den ersten Strahl unter Verwendung der anfänglichen Darstellung des ersten Strahls und des ersten Primitivs durchzuführen. In der veranschaulichten Ausführungsform wird der Schnittpunkt auf der Grundlage von Folgendem aufgezeichnet: des ersten Ergebnisses, einer Bestimmung, dass das erste Primitiv undurchsichtig ist, und einer Bestimmung, dass es mindestens ein Begrenzungsvolumen in der Beschleunigungsdatenstruktur gibt, das die Gesamtheit des ersten Primitivs umschließt und für das die Gesamtheit des eingeschlossenen Abschnitts des ersten Strahls aktiv ist.At 1520, in the illustrated embodiment, the graphics processor records an intersection with the first primitive for the first ray based on the first result without performing an interface test for the first ray using the initial representation of the first ray and the first primitive. In the illustrated embodiment, the intersection is recorded based on the following: the first result, a determination that the first primitive is opaque, and a determination that there is at least one bounding volume in the acceleration data structure that encloses the entirety of the first primitive and for which the entirety of the included portion of the first ray is active.

In einigen Ausführungsformen ist der Grafikprozessor so konfiguriert, dass er den Schnittpunkt für den ersten Strahl auf der Grundlage einer Abfrage eines Strahls mit beliebigem Treffer für den ersten Strahl aufzeichnet (und möglicherweise keine definitiven Schnittstellenergebnisse auf der Grundlage von Tests mit reduzierter Genauigkeit für andere Abfragetypen aufzeichnet).In some embodiments, the graphics processor is configured to record the intersection for the first ray based on a query of a ray with any hit for the first ray (and may not record definitive intersection results based on reduced accuracy tests for other query types ).

In einigen Ausführungsformen ist die Testschaltlogik ferner so konfiguriert, dass sie ein Ergebnis für den ersten Strahl und das erste Primitiv ausgibt, das anzeigt, dass entweder: der erste Strahl das erste Primitiv verfehlt hat, entsprechend ihrer anfänglichen Darstellungen, oder dass es nicht eindeutig ist, ob der erste Strahl das erste Primitiv verfehlt. Der Prozessor kann zum Beispiel den Komparator und die Schaltlogik von 7 und 12 einschließen. Für den ersten Strahl und das erste Primitiv in dem oben beschriebenen Beispiel zeigt diese Ausgabe an, dass es nicht eindeutig ist, ob der erste Strahl das erste Primitiv verfehlt, da die andere Ausgabe einen definitiven Treffer anzeigt. In some embodiments, the test circuitry is further configured to output a result for the first ray and the first primitive that indicates either: the first ray missed the first primitive, according to their initial representations, or that it is ambiguous whether the first ray misses the first primitive. For example, the processor may include the comparator and circuitry of 7 and 12 lock in. For the first ray and first primitive in the example described above, this output indicates that it is not clear whether the first ray misses the first primitive, since the other output indicates a definite hit.

In einigen Ausführungsformen verwendet der Prozessor eine Mitte-Außen Traversierung für mindestens einige Arten von Strahlen. In einigen Ausführungsformen ist der Prozessor so konfiguriert, dass er die Schnittstellentests auf der Grundlage einer Traversierung (z. B. durch eine Traversierungsschaltlogik) einer Beschleunigungsdatenstruktur durchführt, die Knoten einschließt, die hierarchisch angeordneten Begrenzungsvolumina entsprechen. Insbesondere kann der Prozessor eine Tiefe-Zuerst-Suche in der Beschleunigungsdatenstruktur durchführen und für einen Satz von untergeordneten Knoten eines ersten Knotens in der Beschleunigungsdatenstruktur einen nächsten Knoten für die Tiefe-Zuerst-Suche gemäß einer Reihenfolge von geschnittenen Begrenzungsregionen für den Satz von untergeordneten Knoten auswählen, wobei die Reihenfolge mit einem Begrenzungsvolumen beginnt, das näher an einem Mittelpunkt eines getesteten Strahls liegt als ein oder mehrere vordere Begrenzungsvolumina und ein oder mehrere hintere Begrenzungsvolumina.In some embodiments, the processor uses center-outside traversal for at least some types of rays. In some embodiments, the processor is configured to perform the interface tests based on a traversal (e.g., through traversal circuitry) of an acceleration data structure that includes nodes corresponding to hierarchically arranged bounding volumes. In particular, the processor may perform a depth-first search in the acceleration data structure and, for a set of child nodes of a first node in the acceleration data structure, select a next node for the depth-first search according to an order of intersected bounding regions for the set of child nodes , where the order begins with a bounding volume that is closer to a center of a tested ray than one or more front bounding volumes and one or more back bounding volumes.

In einigen Ausführungsformen bestimmt der Prozessor vor der Bestimmung der Reihenfolge die Anzahl der Knoten in dem Satz von untergeordneten Knoten, wobei der Satz von untergeordneten Knoten den Knoten entspricht, die jeweils von dem zu prüfenden Strahl geschnitten werden. So kann der Prozessor zum Beispiel auf eine Nachschlagetabelle zugreifen, um die Reihenfolge zu bestimmen, sobald die Anzahl der sich schneidenden untergeordneten Knoten ermittelt wurde. In einigen Ausführungsformen ist der getestete Strahl ein Strahl mit beliebigen Treffern, und die Traversierung des getesteten Strahls endet als Reaktion auf die Erkennung eines Schnittpunkts. In einigen Ausführungsformen wechselt die Reihenfolge relativ zu einem Anfangsknoten für nachfolgende Knoten in der Reihenfolge zwischen Knoten in einer vorderen Richtung und Knoten in einer hinteren Richtung. Wie hierin verwendet, ist ein Knoten, der näher an der „Vorderseite“ eines Strahls liegt, näher am Ende des Strahls und ein Knoten, der näher an der „Rückseite“ eines Strahls liegt, näher am Ursprung des Strahls. Die vorstehend unter Bezugnahme auf 13 erörterten beispielhaften Reihenfolgen sind Beispiele für den Wechsel zwischen Knoten in einer vorderen Richtung und Knoten in einer hinteren Richtung, ausgehend von einem mittleren Knoten.In some embodiments, prior to determining the order, the processor determines the number of nodes in the set of sub-nodes, where the set of sub-nodes corresponds to the nodes each intersected by the ray under test. For example, once the number of intersecting child nodes has been determined, the processor may access a look-up table to determine the order. In some embodiments, the ray under test is an arbitrary hit ray, and traversal of the ray under test stops in response to detecting an intersection. In some embodiments, the order relative to a starting node for subsequent nodes alternates in order between nodes in a front direction and nodes in a back direction. As used herein, a node that is closer to the "front" of a ray is closer to the end of the ray and a node that is closer to the "back" of a ray is closer to the origin of the ray. The above with reference to 13 The example orders discussed are examples of switching between nodes in a front direction and nodes in a back direction, starting from a middle node.

Beispielhafte VorrichtungExemplary device

Unter Bezugnahme nun auf 16 ist ein Blockdiagramm gezeigt, das eine beispielhafte Ausführungsform einer Vorrichtung 1600 veranschaulicht. In einigen Ausführungsformen können Elemente der Vorrichtung 1600 innerhalb eines System-ona-Chip eingeschlossen sein. In einigen Ausführungsformen kann die Vorrichtung 1600 in einer mobilen Vorrichtung eingeschlossen sein, die batteriebetrieben sein kann. Daher kann der Stromverbrauch durch die Vorrichtung 1600 eine wichtige Designüberlegung sein. In der veranschaulichten Ausführungsform schließt die Vorrichtung 1600 ein Fabric 1610, einen Rechenkomplex 1620, eine Eingabe/Ausgabe-Brücke (E/A-Brücke) 1650, eine Cache-/Speichersteuerung 1645, die Grafikeinheit 1675 und eine Anzeigeeinheit 1665 ein. In einigen Ausführungsformen kann die Vorrichtung 1600 andere Komponenten (nicht gezeigt) zusätzlich zu den oder anstelle der veranschaulichten Komponenten einschließen, wie Videoprozessorcodierer und -decodierer, Bildverarbeitungs- oder -erkennungselemente, Computer-Vision-Elemente usw.Referring now to 16 A block diagram illustrating an example embodiment of an apparatus 1600 is shown. In some embodiments, elements of device 1600 may be encapsulated within a system-on-chip. In some embodiments, device 1600 may be encapsulated in a mobile device, which may be battery powered. Therefore, power consumption by device 1600 can be an important design consideration. In the illustrated embodiment, the device 1600 includes a fabric 1610, a computing complex 1620, an input/output bridge (I/O bridge) 1650, a cache/memory controller 1645, the graphics unit 1675 and a display unit 1665. In some embodiments, device 1600 may include other components (not shown) in addition to or in place of the components illustrated, such as video processor encoders and decoders, image processing or recognition elements, computer vision elements, etc.

Das Fabric 1610 kann verschiedene Verschaltungen, Busse, MUX, Steuerungen usw. einschließen und kann konfiguriert sein, um die Kommunikation zwischen verschiedenen Elementen der Vorrichtung 1600 zu unterstützen. In einigen Ausführungsformen können Abschnitte des Fabrics 1610 konfiguriert sein, um verschiedene unterschiedliche Kommunikationsprotokolle zu implementieren. In anderen Ausführungsformen kann das Fabric 1610 ein einziges Kommunikationsprotokoll implementierten und mit dem Fabric 1610 gekoppelte Elemente können von dem einzigen Kommunikationsprotokoll auf andere Kommunikationsprotokolle konvertieren.The fabric 1610 may include various interconnects, buses, MUX, controllers, etc. and may be configured to support communication between various elements of the device 1600. In some embodiments, portions of fabric 1610 may be configured to implement various different communication protocols. In other embodiments, fabric 1610 may implement a single communication protocol and elements coupled to fabric 1610 may convert from the single communication protocol to other communication protocols.

In der veranschaulichten Ausführungsform schließt der Rechenkomplex 1620 eine Busschnittstelleneinheit (BIU) 1625, einen Cache 1630 und Kerne 1635 und 1640 ein. In verschiedenen Ausführungsformen kann der Rechenkomplex 1620 verschiedene Anzahlen von Prozessoren, Prozessorkernen und/oder Caches einschließen. Zum Beispiel kann der Rechenkomplex 1620 1, 2 oder 4 Prozessorkerne oder eine beliebige andere geeignete Anzahl einschließen. In einer Ausführungsform ist der Cache 1630 ein Satz-assoziativer L2-Cache. In einigen Ausführungsformen können die Kerne 1635 und 1640 interne Anweisungs- und/oder Daten-Caches einschließen. In einigen Ausführungsformen kann eine Kohärenzeinheit (nicht gezeigt) in dem Fabric 1610, dem Cache 1630 oder an anderer Stelle in der Vorrichtung 1600 konfiguriert sein, um die Kohärenz zwischen verschiedenen Caches der Vorrichtung 1600 beizubehalten. BIU 1625 kann konfiguriert sein, um die Kommunikation zwischen dem Rechenkomplex 1620 und anderen Elementen der Vorrichtung 1600 zu verwalten. In the illustrated embodiment, the computational complex 1620 includes a bus interface unit (BIU) 1625, a cache 1630, and cores 1635 and 1640. FIG. In various embodiments, the computing complex 1620 may include various numbers of processors, processor cores, and/or caches. For example, the computing complex 1620 may include 1, 2, or 4 processor cores, or any other suitable number. In one embodiment, cache 1630 is a set-associative L2 cache. In some embodiments, cores 1635 and 1640 may include internal instruction and/or data caches. In some embodiments, a coherency unit (not shown) may be configured in fabric 1610, cache 1630, or elsewhere in device 1600 to maintain coherency between different caches of device 1600. BIU 1625 may be configured to manage communications between computing complex 1620 and other elements of device 1600.

Prozessorkerne, wie die Kerne 1635 und 1640, können konfiguriert sein, um Anweisungen einer bestimmten Anweisungssatzarchitektur (ISA) auszuführen, die Betriebssystemanweisungen und Benutzeranwendungsanweisungen einschließen kann.Processor cores, such as cores 1635 and 1640, may be configured to execute instructions of a particular instruction set architecture (ISA), which may include operating system instructions and user application instructions.

Die Cache-/Speichersteuerung 1645 kann konfiguriert sein, um die Übertragung von Daten zwischen dem Fabric 1610 und einem oder mehreren Caches und/oder Speichern zu verwalten. Zum Beispiel kann die Cache-/Speichersteuerung 1645 mit einem L3-Cache gekoppelt sein, der wiederum mit einem Systemspeicher gekoppelt sein kann. In anderen Ausführungsformen kann die Cache-/Speichersteuerung 1645 direkt mit einem Speicher gekoppelt sein. In einigen Ausführungsformen kann die Cache-/Speichersteuerung 1645 einen oder mehrere interne Caches einschließen.Cache/storage controller 1645 may be configured to manage the transfer of data between fabric 1610 and one or more caches and/or storage. For example, cache/memory controller 1645 may be coupled to an L3 cache, which in turn may be coupled to system memory. In other embodiments, cache/memory controller 1645 may be coupled directly to memory. In some embodiments, cache/memory controller 1645 may include one or more internal caches.

Wie hierin verwendet, kann der Begriff „gekoppelt mit“ eine oder mehrere Verbindungen zwischen Elementen angeben, und eine Kopplung kann dazwischenliegende Elemente einschließen. Zum Beispiel kann in 16 die Grafikeinheit 1675 als „gekoppelt mit“ einem Speicher über den Fabric 1610 und die Cache-/Speichersteuerung 1645 beschrieben werden. Dagegen ist in der veranschaulichten Ausführungsform von 16 die Grafikeinheit 1675 mit dem Fabric 1610 „direkt gekoppelt“, weil keine dazwischenliegenden Elemente vorhanden sind. Die Grafikeinheit 1675 kann einen oder mehrere Prozessoren z. B. eine oder mehrere Grafikverarbeitungseinheiten (GPUs) einschließen. Die Grafikeinheit 1675 kann grafikorientierte Anweisungen, wie zum Beispiel OPENGL®-, Metal- oder DIRECT3D®-Anweisungen, empfangen. Die Grafikeinheit 1675 kann spezialisierte GPU-Anweisungen ausführen oder andere Operationen basierend auf den empfangenen grafik orientierten Anweisungen durchführen. Die Grafikeinheit 1675 kann im Allgemeinen so konfiguriert sein, dass sie große Datenblöcke parallel verarbeitet und Bilder in einem Bildpuffer für die Ausgabe auf einer Anzeige erstellt, die in der Vorrichtung enthalten sein kann oder eine separate Vorrichtung sein kann. Die Grafikeinheit 1675 kann Transformations-, Beleuchtungs-, Dreieck- und Rendering-Engines in einer oder mehreren Grafikverarbeitungs-Pipelines einschließen. Die Grafikeinheit 1675 kann Pixelinformationen für Anzeigebilder ausgeben. Die Grafikeinheit 1675 kann in verschiedenen Ausführungsformen eine programmierbare Shader-Schaltlogik einschließen, die hochparallele Ausführungskerne einschließt, die für die Ausführung von Grafikprogrammen konfiguriert sind, die Pixel-, Eckpunkt- und Berechnungsaufgaben einschließen können (die sich auf die Grafik beziehen können oder auch nicht).As used herein, the term "coupled to" can indicate one or more connections between elements, and a coupling can include intervening elements. For example, in 16 the graphics unit 1675 can be described as "coupled to" memory via the fabric 1610 and the cache/memory controller 1645. In contrast, in the illustrated embodiment of FIG 16 the graphics unit 1675 is "directly coupled" to the fabric 1610 because there are no intervening elements. Graphics unit 1675 may include one or more processors, e.g. B. include one or more graphics processing units (GPUs). Graphics engine 1675 may receive graphics-oriented instructions such as OPENGL®, METAL, or DIRECT3D® instructions. Graphics unit 1675 may execute specialized GPU instructions or perform other operations based on the received graphics-oriented instructions. The graphics engine 1675 may generally be configured to process large blocks of data in parallel and construct images in a frame buffer for output to a display, which may be included in the device or a separate device. Graphics engine 1675 may include transform, lighting, triangle, and rendering engines in one or more graphics processing pipelines. The graphics engine 1675 can output pixel information for display images. Graphics engine 1675, in various embodiments, may include programmable shader circuitry including highly parallel execution cores configured to execute graphics programs that may include pixel, vertex, and computational tasks (which may or may not be graphics related). .

In einigen Ausführungsformen schließt die Grafikeinheit 1175 eine Schaltlogik 220 ein, die im Vergleich zu herkömmlichen GPUs den Stromverbrauch senken, die Leistung erhöhen oder beides.In some embodiments, graphics engine 1175 includes switching logic 220 that reduces power consumption, increases performance, or both, compared to conventional GPUs.

Die Anzeigeeinheit 1665 kann konfiguriert sein, um Daten aus einem Bildpuffer zu lesen und einen Strom von Pixelwerten zur Anzeige bereitzustellen. In einigen Ausführungsformen kann die Anzeigeeinheit 1665 als eine Anzeige-Pipeline konfiguriert sein. Außerdem kann die Anzeigeeinheit 1665 konfiguriert sein, um mehrere Rahmen zum Erzeugen eines Ausgaberahmens zu mischen. Ferner kann die Anzeigeeinheit 1665 eine oder mehrere Schnittstellen (z. B. MIPI® oder embedded Display Port (eDP)) zum Koppeln an eine Benutzeranzeige (z. B. einen Touchscreen oder eine externe Anzeige) einschließen.The display unit 1665 may be configured to read data from a frame buffer and provide a stream of pixel values for display. In some embodiments, display unit 1665 may be configured as a display pipeline. In addition, the display unit 1665 may be configured to merge multiple frames to generate an output frame. Further, the display unit 1665 may include one or more interfaces (e.g., MIPI® or embedded Display Port (eDP)) for coupling to a user display (e.g., a touch screen or an external display).

Die E/A-Brücke 1650 kann verschiedene Elemente einschließen, die konfiguriert sind, um Folgendes zu implementieren: zum Beispiel Universal Serial Bus-Kommunikationen (USB-Kommunikationen), Sicherheits-, Audio- und leistungsarme Dauereinschaltfunktionalität. Die E/A-Brücke 1650 kann auch Schnittstellen, wie zum Beispiel Pulsweitenmodulation (PBM), General-Purpose Input/Output (GPIO), Serial Peripheral Interface (SPI) und Inter-Integrated Circuit (I2C), einschließen. Verschiedene Arten von Peripheriegeräten und Vorrichtungen können mit der Vorrichtung 1600 über die E/A-Brücke 1650 gekoppelt sein.The I/O bridge 1650 may include various elements configured to implement: for example, Universal Serial Bus (USB) communications, security, audio, and low-power always-on functionality. The I/O bridge 1650 may also include interfaces such as pulse width modulation (PBM), general purpose input/output (GPIO), serial peripheral interface (SPI), and inter-integrated circuit (I2C). Various types of peripherals and devices may be coupled to device 1600 via I/O bridge 1650 .

In einigen Ausführungsformen schließt die Vorrichtung 1600 eine (nicht explizit gezeigte) Schaltlogik der Netzwerkschnittstelle ein, die mit dem Fabric 1610 oder der E/A-Brücke 1650 verbunden sein kann. Die Schaltlogik der Netzwerkschnittstelle kann so konfiguriert sein, dass sie über verschiedene Netzwerke kommuniziert, die drahtgebunden, drahtlos oder beides sein können. Die Schaltlogik der Netzwerkschnittstelle kann beispielsweise so konfiguriert sein, dass sie über ein drahtgebundenes lokales Netzwerk, ein drahtloses lokales Netzwerk (z. B. über WiFi) oder ein Weitverkehrsnetz (z. B. das Internet oder ein virtuelles privates Netzwerk) kommuniziert. In einigen Ausführungsformen ist die Schaltlogik der Netzwerkschnittstelle so konfiguriert, dass sie über ein oder mehrere zellulare Netzwerke kommuniziert, die eine oder mehrere Funkzugangstechnologien verwenden. In einigen Ausführungsformen ist die Schaltlogik der Netzwerkschnittstelle so konfiguriert, dass sie über die Kommunikation von Vorrichtung zu Vorrichtung (z. B. Bluetooth oder WiFi Direct) usw. kommuniziert. In verschiedenen Ausführungsformen kann die Schaltlogik der Netzwerkschnittstelle der Vorrichtung 1600 Konnektivität zu verschiedenen Arten von anderen Vorrichtungen und Netzwerken bieten.In some embodiments, device 1600 includes network interface circuitry (not explicitly shown) that may be coupled to fabric 1610 or I/O bridge 1650 . Network interface circuitry may be configured to communicate over various networks, which may be wired, wireless, or both. For example, the network interface circuitry may be configured to communicate over a wired local area network, a wireless local area network (e.g., via WiFi), or a wide area network (e.g., the Internet or a virtual private network). In some embodiments, network interface circuitry is configured to communicate over one or more cellular networks using one or more radio access technologies. In some embodiments, the circuitry of the network interface is configured to communicate via device-to-device communications (e.g., Bluetooth or WiFi Direct), and so on. In various embodiments, network interface circuitry of device 1600 may provide connectivity to various types of other devices and networks.

AnwendungsbeispieleApplication examples

Unter Bezugnahme nun auf 17 können verschiedene Arten von Systemen alle vorstehend beschriebenen Schaltungen, Vorrichtungen oder Systeme einschließen. Das System oder die Vorrichtung 1700, das/die eine oder mehrere der hierin beschriebenen Techniken enthalten oder anderweitig nutzen kann, kann in einem breiten Spektrum von Bereichen eingesetzt werden. Beispielsweise kann das System oder die Vorrichtung 1700 als Teil der Hardware von Systemen wie einem Desktop-Computer 1710, einem Laptop 1720, einem Tablet-Computer 1730, einem Handy oder Mobiltelefon 1740 oder einem Fernseher 1750 (oder einer mit einem Fernseher verbundenen Set-Top-Box) verwendet werden.Referring now to 17 various types of systems may include any of the circuits, devices, or systems described above. The system or device 1700, which may incorporate or otherwise utilize one or more of the techniques described herein, may be used in a wide range of areas. For example, the system or device 1700 may be part of the hardware of systems such as a desktop computer 1710, a laptop computer 1720, a tablet computer 1730, a cellular or mobile phone 1740, or a television 1750 (or a set-top connected to a television box) can be used.

In ähnlicher Art und Weise können die offenbarten Elemente in einer tragbaren Vorrichtung 1760, wie beispielsweise einer Smartwatch oder einer Vorrichtung zur Überwachung der Gesundheit, verwendet werden. Smartwatches können in vielen Ausführungsformen eine Vielzahl verschiedener Funktionen erfüllen, zum Beispiel den Zugriff auf E-Mails, Mobilfunkdienste, Kalender, Gesundheitsüberwachung usw. Eine tragbare Vorrichtung kann auch so konzipiert sein, dass sie ausschließlich Gesundheitsüberwachungsfunktionen ausführt, wie beispielsweise die Überwachung der Lebenszeichen eines Benutzers, die Durchführung epidemiologischer Funktionen wie die Ermittlung von Kontaktpersonen, die Bereitstellung von Kommunikation mit einem medizinischen Notdienst usw. Es sind auch andere Arten von Vorrichtungen denkbar, einschließlich Vorrichtungen, die am Hals getragen werden, Vorrichtungen, die in den menschlichen Körper implantiert werden können, Brillen oder Helme, die computergenerierte Realitätserfahrungen bieten, wie beispielsweise solche, die auf erweiterter und/oder virtueller Realität basieren usw.Similarly, the disclosed elements may be used in a wearable device 1760, such as a smart watch or a health monitoring device. Smartwatches, in many embodiments, can perform a variety of different functions, such as accessing email, cellular service, calendar, health monitoring, etc. A wearable device can also be designed to perform solely health monitoring functions, such as monitoring a user's vital signs , performing epidemiological functions such as contact tracing, providing communications with an emergency medical service, etc. Other types of devices are also conceivable, including devices worn on the neck, devices that can be implanted in the human body, Goggles or helmets that provide computer generated reality experiences, such as those based on augmented and/or virtual reality, etc.

Das System oder die Vorrichtung 1700 kann auch in verschiedenen anderen Zusammenhängen verwendet werden. Beispielsweise kann das System oder die Vorrichtung 1700 im Zusammenhang mit einem Server-Computersystem verwendet werden, wie beispielsweise einem dedizierten Server oder auf gemeinsam genutzter Hardware, die einen Cloud-basierten Dienst 1770 implementiert. Darüber hinaus kann das System oder die Vorrichtung 1700 in einem breiten Spektrum von speziellen alltäglichen Vorrichtungen implementiert werden, einschließlich der im Haushalt üblichen Vorrichtungen 1780 wie Kühlschränke, Thermostate, Sicherheitskameras usw. Die Vernetzung solcher Vorrichtungen wird oft als das „Internet der Dinge“ (IoT) bezeichnet. Die Elemente können auch bei verschiedenen Verkehrsträgern eingesetzt werden. Das System oder die Vorrichtung 1700 könnte zum Beispiel in den Steuersystemen, Leitsystemen, Unterhaltungssystemen usw. der verschiedenen Fahrzeugtypen 1790 eingesetzt werden.The system or device 1700 can also be used in various other contexts. For example, the system or device 1700 can be used in conjunction with a server computing system, such as a dedicated server or on shared hardware that implements a cloud-based service 1770 . In addition, the system or device 1700 can be implemented in a wide range of specific everyday devices, including common household devices 1780 such as refrigerators, thermostats, security cameras, etc. The interconnection of such devices is often referred to as the "Internet of Things" (IoT ) designated. The elements can also be used in different modes of transport. The system or device 1700 could be used in the control systems, guidance systems, entertainment systems, etc. of the various vehicle types 1790, for example.

Die in 17 veranschaulichten Anwendungen sind lediglich beispielhaft und sollen die möglichen künftigen Anwendungen der offenbarten Systeme oder Vorrichtungen nicht einschränken. Andere Anwendungsbeispiele schließen ohne Einschränkung Folgendes ein: tragbare Spielvorrichtungen, Musikabspielgeräte, Datenspeichervorrichtungen, unbemannte Luftfahrzeuge usw.In the 17 The applications illustrated are exemplary only and are not intended to limit the possible future applications of the disclosed systems or devices. Other examples of use include, without limitation, the following: portable gaming devices, music players, data storage devices, unmanned aerial vehicles, etc.

Beispielhaftes computerlesbares MediumExemplary Computer-Readable Medium

In der vorliegenden Offenbarung wurden oben verschiedene beispielhafte Schaltungen ausführlich beschrieben. Es ist beabsichtigt, dass die vorliegende Offenbarung nicht nur Ausführungsformen abdeckt, die eine derartige Schaltlogik einschließen, sondern auch ein computerlesbares Speichermedium, das Designinformationen einschließt, die eine derartige Schaltlogik spezifizieren. Dementsprechend soll die vorliegende Offenbarung Ansprüche unterstützen, die nicht nur eine Einrichtung abdecken, die die offenbarten Schaltlogiken einschließt, sondern auch ein Speichermedium, das die Schaltlogik in einem Format spezifiziert, das von einem Produktionssystem erkannt wird, das zur Herstellung von Hardware konfiguriert ist (z. B. eine integrierte Schaltung), die die offenbarte Schaltlogik einschließt. Ansprüche auf ein derartiges Speichermedium sollen zum Beispiel eine Entität abdecken, die ein Schaltungsdesign erzeugt, jedoch das Design nicht selbst produziert.Various example circuits have been described in detail above in the present disclosure. The present disclosure is intended to cover not only embodiments that include such circuitry, but also a computer-readable storage medium that includes design information that specifies such circuitry. Accordingly, the present disclosure is intended to support claims covering not only an apparatus including the disclosed circuitry, but also a storage medium specifying the circuitry in a format recognized by a production system configured to manufacture hardware (e.g., (e.g. an integrated circuit) incorporating the disclosed circuitry. Claims to such a storage medium are intended to cover, for example, an entity that creates a circuit design but does not produce the design itself.

18 ist ein Blockdiagramm, das ein beispielhaftes nicht-transitorisches computerlesbares Speichermedium, das Schaltungsdesigninformationen speichert, gemäß einigen Ausführungsformen veranschaulicht. In der veranschaulichten Ausführungsform ist das Halbleiterproduktionssystem 1820 konfiguriert, um die auf dem nicht-transitorischen computerlesbaren Medium 1810 gespeicherten Designinformationen 1815 zu verarbeiten und die integrierte Schaltung 1830 basierend auf den Designinformationen 1815 zu produzieren. 18 12 is a block diagram illustrating an example non-transitory computer-readable storage medium storing circuit design information, according to some embodiments. In the illustrated embodiment, the semiconductor production system 1820 is configured to process the design information 1815 stored on the non-transitory computer-readable medium 1810 and to produce the integrated circuit 1830 based on the design information 1815 .

Das nicht-transitorische computerlesbare Speichermedium 1810 kann einen beliebigen von verschiedenen geeigneten Typen von Speichervorrichtungen oder Speicherungsvorrichtungen umfassen. Bei dem nicht-transitorischen computerlesbaren Speichermedium 1810 kann es sich um ein Installationsmedium, z. B. eine CD-ROM, Disketten oder eine Bandvorrichtung; einen Computersystemspeicher oder Direktzugriffsspeicher, wie DRAM, DDR-RAM, SRAM, EDO-RAM, Rambus-RAM usw.; einen nichtflüchtigen Speicher, wie einen Flash-Speicher, Magnetmedien, z. B. eine Festplatte oder einen optischen Speicher; Register oder andere ähnliche Typen von Speicherelementen usw. handeln. Das nicht-transitorische computerlesbare Speichermedium 1810 kann auch andere Typen von nicht-transitorischem Speicher oder Kombinationen davon einschließen. Das nicht-transitorische computerlesbare Speichermedium 1810 kann zwei oder mehr Speichermedien einschließen, die sich an unterschiedlichen Orten befinden können, z. B. in unterschiedlichen Computersystemen, die über ein Netzwerk verbunden sind.The non-transitory computer-readable storage medium 1810 may include any of various suitable types of memory devices or storage devices. The non-transitory computer-readable storage medium 1810 can be an installation medium, e.g. a CD-ROM, floppy disk or tape device; a computer system memory or random access memory such as DRAM, DDR-RAM, SRAM, EDO-RAM, Rambus-RAM, etc.; non-volatile memory such as flash memory, magnetic media, e.g. B. a hard drive or optical storage; Act registers or other similar types of storage elements etc. The non-transitory computer-readable storage medium 1810 may also include other types of non-transitory memory or combinations thereof. The non-transitory computer-readable storage medium 1810 may include two or more storage media that may be in different locations, e.g. B. in different computer systems that are connected via a network.

Die Designinformationen 1815 können unter Verwendung von beliebigen von verschiedenen geeigneten Computersprachen vorgegeben werden, einschließlich Hardwarebeschreibungssprachen, wie, ohne Einschränkung: VHDL, Verilog, SystemC, SystemVerilog, RHDL, M, MyHDL usw. Die Designinformationen 1815 können durch das Halbleiterproduktionssystem 1820 verwendbar sein, um zumindest einen Abschnitt der integrierten Schaltung 1830 zu produzieren. Das Format der Designinformationen 1815 kann durch mindestens ein Halbleiterproduktionssystem 1820 erkannt werden. In einigen Ausführungsformen können die Designinformationen 1815 auch eine oder mehrere Zellbibliotheken einschließen, die die Synthese, das Layout oder beides der integrierten Schaltung 1830 spezifizieren. In einigen Ausführungsformen sind die Designinformationen ganz oder teilweise in der Form einer Netzliste spezifiziert, die die Zellbibliothekelemente und deren Konnektivität spezifiziert. Die Designinformationen 1815 können, allein genommen, ausreichend Informationen zur Produktion einer entsprechenden integrierten Schaltung einschließen oder nicht. Zum Beispiel können die Designinformationen 1815 die zu produzierenden Schaltungselemente, jedoch nicht deren physisches Layout, vorgeben. In diesem Fall müssen die Designinformationen 1815 möglicherweise mit Layoutinformationen kombiniert werden, um die vorgegebene Schaltlogik tatsächlich zu produzieren.The design information 1815 can be specified using any of various suitable computer languages, including hardware description languages such as, without limitation: VHDL, Verilog, SystemC, SystemVerilog, RHDL, M, MyHDL, etc. The design information 1815 can be used by the semiconductor production system 1820 to to produce at least a portion of the integrated circuit 1830. The format of the design information 1815 can be recognized by at least one semiconductor production system 1820 . In some embodiments, the design information 1815 may also include one or more cell libraries that specify the integrated circuit 1830 synthesis, layout, or both. In some embodiments, the design information is specified in whole or in part in the form of a netlist specifying the cell library elements and their connectivity. The design information 1815, taken alone, may or may not include sufficient information to produce a corresponding integrated circuit. For example, the design information 1815 may specify the circuit elements to be produced, but not their physical layout. In this case, the design information 1815 may need to be combined with layout information to actually produce the given circuitry.

Die integrierte Schaltung 1830 kann in verschiedenen Ausführungsformen eine oder mehrere benutzerdefinierte Makrozellen, wie Speicher, Analog- oder Mischsignalschaltungen und dergleichen, einschließen. In solchen Fällen können die Designinformationen 1815 Informationen in Bezug auf enthaltene Makrozellen einschließen. Solche Informationen können, ohne darauf beschränkt zu sein, eine Schemaerfassungsdatenbank, Maskendesigndaten, Verhaltensmodelle und Netzlisten auf Vorrichtungs- oder Transistorebene einschließen. Wie hierin verwendet, können Maskendesigndaten gemäß dem Grafikdatensystem (GDSII) oder einem beliebigen anderen geeigneten Format formatiert werden.Integrated circuit 1830 may include one or more user-defined macrocells, such as memory, analog or mixed-signal circuitry, and the like, in various embodiments. In such cases, the design information 1815 may include information related to included macrocells. Such information may include, but is not limited to, a schematic capture database, mask design data, behavioral models, and device or transistor level netlists. As used herein, mask design data may be formatted according to the Graphics Data System (GDSII) or any other suitable format.

Das Halbleiterproduktionssystem 1820 kann ein beliebiges von verschiedenen geeigneten Elementen einschließen, die dazu konfiguriert sind, integrierte Schaltungen zu produzieren. Dies kann zum Beispiel Elemente zum Abscheiden von Halbleitermaterialien (z. B. auf einem Wafer, was eine Maskierung einschließen kann), Entfernen von Materialien, Ändern der Form von abgeschiedenen Materialien, Modifizieren von Materialien (z. B. durch Dotieren von Materialien oder Modifizieren dielektrischer Konstanten unter Verwendung von ultravioletter Bearbeitung) usw. einschließen. Das Halbleiterproduktionssystem 1820 kann auch konfiguriert sein, um verschiedene Tests von produzierten Schaltungen auf korrekten Betrieb durchzuführen.Semiconductor production system 1820 may include any of various suitable elements configured to produce integrated circuits. This may include, for example, features for depositing semiconductor materials (e.g., on a wafer, which may include masking), removing materials, changing the shape of deposited materials, modifying materials (e.g., by doping materials, or modifying dielectric constants using ultraviolet processing), etc. The semiconductor production system 1820 may also be configured to perform various tests of circuits produced for proper operation.

In verschiedenen Ausführungsformen ist die integrierte Schaltung 1830 konfiguriert, um gemäß einem durch die Designinformationen 1815 vorgegebenen Schaltungsdesign zu arbeiten, was die Durchführung einer beliebigen der hierin beschriebenen Funktionalität einschließen kann. Zum Beispiel kann die integrierte Schaltung 1830 beliebige von verschiedenen in 1B, 2, 4-9, 11, 12 und 16 gezeigten Elementen einschließen. Ferner kann die integrierte Schaltung 1830 konfiguriert sein, um verschiedene hierin beschriebene Funktionen in Verbindung mit anderen Komponenten durchzuführen. Ferner kann die hierin beschriebene Funktionalität durch mehrere verbundene integrierte Schaltungen durchgeführt werden.In various embodiments, integrated circuit 1830 is configured to operate according to a circuit design specified by design information 1815, which may include performing any of the functionality described herein. For example, the integrated circuit 1830 can be any of various in 1B , 2 , 4-9 , 11 , 12 and 16 include items shown. Furthermore, the integrated circuit 1830 may be configured to perform various functions described herein in conjunction with other components. Furthermore, the functionality described herein may be performed by multiple interconnected integrated circuits.

Wie hierin verwendet, impliziert ein Ausdruck der Form „Designinformationen, die ein Design einer Schaltung spezifizieren, die konfiguriert ist, um zu ...“ nicht, dass die betreffende Schaltung hergestellt werden muss, damit das Element erfüllt wird. Vielmehr gibt dieser Ausdruck an, dass die Designinformationen eine Schaltung beschreiben, die nach der Fertigung dazu konfiguriert wird, die angegebenen Aktionen auszuführen, oder die spezifizierten Komponenten einzuschließen.As used herein, a phrase of the form "design information specifying a design of a circuit configured to..." does not imply that the subject circuit must be manufactured in order for the item to be satisfied. Rather, this term indicates that the design information describes a circuit that, after manufacture, will be configured to perform the specified actions or to include the specified components.

Die vorliegende Offenbarung schließt Bezugnahmen auf „eine“ Ausführungsform oder Gruppen von „Ausführungsformen“ (z. B. „einige Ausführungsformen“ oder „verschiedene Ausführungsformen“) ein. Ausführungsformen sind verschiedene Implementierungen oder Instanzen der offenbarten Konzepte. Bezugnahmen auf „Ausführungsform“, „eine Ausführungsform“, „eine bestimmte Ausführungsform“ und dergleichen beziehen sich nicht notwendigerweise auf die gleiche Ausführungsform. Eine große Anzahl möglicher Ausführungsformen wird in Betracht gezogen, einschließlich der speziell offenbarten, sowie Modifikationen oder Alternativen, die in das Wesen oder den Schutzumfang der Offenbarung fallen.This disclosure includes references to "an" embodiment or groups of "embodiments" (e.g., "some embodiments" or "various embodiments"). Embodiments are various implementations or instances of the disclosed concepts. References to "embodiment", "an embodiment", "a particular embodiment" and the like are not necessarily all referring to the same embodiment. A wide variety of possible embodiments are contemplated, including those specifically disclosed, as well as modifications or alternatives which fall within the spirit or scope of the disclosure.

Diese Offenbarung kann potenzielle Vorteile erörtern, die sich aus den offenbarten Ausführungsformen ergeben können. Nicht alle Implementierungen dieser Ausführungsformen weisen notwendigerweise beliebige oder alle potenziellen Vorteile auf. Ob ein Vorteil für eine bestimmte Implementierung erreicht wird, hängt von vielen Faktoren ab, von denen einige außerhalb des Schutzumfangs dieser Offenbarung liegen. Tatsächlich gibt es eine Reihe von Gründen dafür, warum eine Implementierung, die innerhalb des Schutzumfangs der Ansprüche fällt, möglicherweise einige oder alle der offenbarten Vorteile nicht aufweist. Zum Beispiel könnte eine bestimmte Implementierung eine andere Schaltlogik außerhalb des Schutzumfangs der Offenbarung einschließen, die in Verbindung mit einer der offenbarten Ausführungsformen einen oder mehrere der offenbarten Vorteile aufhebt oder verringert. Des Weiteren könnte auch eine suboptimale Designausführung einer bestimmten Implementierung (z. B. Implementierungstechniken oder -werkzeuge) offenbarte Vorteile aufheben oder verringern. Selbst unter der Annahme einer qualifizierten Implementierung kann die Erreichung von Vorteilen weiterhin von anderen Faktoren, wie den Umgebungsumständen, in denen die Implementierung bereitgestellt wird, abhängen. Zum Beispiel können Eingaben, die einer bestimmten Implementierung bereitgestellt werden, verhindern, dass ein oder mehrere Probleme, die in dieser Offenbarung behandelt werden, bei einer bestimmten Gelegenheit auftreten, wodurch der Vorteil seiner Lösung möglicherweise nicht erreicht wird. Aufgrund des Vorhandenseins möglicher Faktoren außerhalb dieser Offenbarung ist es ausdrücklich beabsichtigt, dass alle hierin beschriebenen potenziellen Vorteile nicht als Anspruchseinschränkungen ausgelegt werden sollen, die erfüllt werden müssen, um eine Verletzung nachzuweisen. Vielmehr soll die Identifizierung solcher potenziellen Vorteile den Typ/die Typen von Verbesserung veranschaulichen, der/die für Designer verfügbar sind, die den Nutzen dieser Offenbarung haben. Dass solche Vorteile in einem erlaubenden Sinn beschrieben werden (z. B. unter der Angabe, dass ein bestimmter Vorteil „auftreten kann“), soll keinen Zweifel daran vermitteln, ob solche Vorteile tatsächlich erreicht werden können, sondern es soll stattdessen die technische Realität anerkannt werden, dass die Erreichung solcher Vorteile häufig von zusätzlichen Faktoren abhängt.This disclosure may discuss potential benefits that may result from the disclosed embodiments. Not all implementations of these embodiments necessarily exhibit any or all potential benefits. Whether a benefit is achieved for a particular implementation depends on many factors, some of which are outside the scope of this disclosure. In fact, there are a number of reasons why an implementation falling within the scope of the claims may not have some or all of the disclosed advantages. For example, a particular implementation could include other circuitry outside of the scope of the disclosure that eliminates or reduces one or more disclosed advantages in connection with any of the disclosed embodiments. Furthermore, sub-optimal design execution of a particular implementation (e.g., implementation techniques or tools) could also negate or reduce disclosed benefits. Even assuming a qualified implementation, achievement of benefits may still depend on other factors such as the environmental circumstances in which the implementation is deployed. For example, inputs provided to a particular implementation may prevent one or more problems addressed in this disclosure from occurring on a particular occasion, thereby possibly not obtaining the benefit of its solution. Due to the existence of possible factors outside of this disclosure, it is expressly intended that any potential benefits described herein should not be construed as limitations of claims that must be satisfied in order to establish infringement. Rather, the identification of such potential benefits is intended to illustrate the type(s) of improvement available to designers having the benefit of this disclosure. Describing such benefits in a permissive sense (e.g., stating that a particular benefit "may occur") is not intended to cast doubt as to whether such benefits can actually be achieved, but rather to acknowledge technical reality that the achievement of such benefits often depends on additional factors.

Sofern nicht anders angegeben, sind Ausführungsformen nicht einschränkend. Das heißt, dass die offenbarten Ausführungsformen den Schutzumfang von Ansprüchen, die basierend auf dieser Offenbarung formuliert werden, nicht einschränken sollen, selbst wenn nur ein einzelnes Beispiel in Bezug auf ein bestimmtes Merkmal beschrieben wird. Die offenbarten Ausführungsformen sollen veranschaulichend und nicht einschränkend sein, sofern in der Offenbarung keine gegenteiligen Aussagen vorhanden sind. Die Anmeldung soll es somit ermöglichen, dass Ansprüche offenbarte Ausführungsformen sowie die Alternativen, Modifikationen und Äquivalente, die für einen Fachmann, der den Nutzen dieser Offenbarung hat, offensichtlich sind, abdecken.Unless otherwise noted, embodiments are not limiting. That is, the disclosed embodiments are not intended to limit the scope of claims formulated based on this disclosure, even if only a single example is described with respect to a particular feature. The disclosed embodiments are intended to be illustrative, and not restrictive, unless otherwise stated in the disclosure. The This application is intended to allow claims to cover disclosed embodiments, as well as the alternatives, modifications, and equivalents apparent to those skilled in the art having the benefit of this disclosure.

Zum Beispiel können Merkmale in dieser Anmeldung auf jede geeignete Weise kombiniert werden. Dementsprechend können während der Weiterverfolgung dieser Anwendung (oder einer Anwendung, welche die Priorität dieser beansprucht) neue Ansprüche auf eine beliebige solche Kombination von Merkmalen formuliert werden. Insbesondere können unter Bezugnahme auf die beiliegenden Ansprüche Merkmale aus abhängigen Ansprüchen mit denen anderer abhängiger Ansprüche kombiniert werden, wo dies geeignet ist, einschließlich Ansprüchen, die von anderen unabhängigen Ansprüchen abhängen. In ähnlicher Weise können Merkmale aus jeweiligen unabhängigen Ansprüchen, wo dies geeignet ist, kombiniert werden.For example, features in this application can be combined in any suitable way. Accordingly, during the prosecution of this application (or an application claiming priority therefrom) new claims may be formulated to any such combination of features. In particular, with reference to the appended claims, features from dependent claims may be combined with those of other dependent claims where appropriate, including claims dependent on other independent claims. Similarly, features from respective independent claims may be combined where appropriate.

Während die beiliegenden abhängigen Ansprüche derart formuliert sein können, dass jeder von einem einzigen anderen Anspruch abhängt, werden entsprechend auch zusätzliche Abhängigkeiten in Betracht gezogen. Alle Kombinationen von Merkmalen im abhängigen, die mit dieser Offenbarung übereinstimmen, werden in Betracht gezogen und können in dieser oder einer anderen Anmeldung beansprucht werden. Zusammengefasst sind Kombinationen nicht auf diejenigen beschränkt, die in den beiliegenden Ansprüchen speziell aufgezählt sind.Accordingly, while the appended dependent claims may be drafted as each dependent on a single other claim, additional dependencies are also contemplated. All combinations of features in the dependent consistent with this disclosure are contemplated and may be claimed in this or another application. In summary, combinations are not limited to those specifically recited in the appended claims.

Wo dies geeignet ist, wird auch in Betracht gezogen, dass in einem Format oder einem gesetzlichen Typ formulierte Ansprüche (z. B. Einrichtung) entsprechende Ansprüche eines anderen Formats oder gesetzlichen Typs (z. B. Verfahren) unterstützen sollen.Where appropriate, it is also contemplated that claims formulated in one format or legal type (e.g., device) should support corresponding claims of another format or legal type (e.g., method).

Da diese Offenbarung ein rechtliches Dokument ist, können verschiedene Begriffe und Phrasen einer behördlichen und rechtlichen Auslegung unterliegen. Es wird hiermit bekannt gemacht, dass die folgenden Absätze sowie Definitionen, die in der gesamten Offenbarung bereitgestellt werden, beim Bestimmen, wie basierend auf dieser Offenbarung formulierte Ansprüche auszulegen sind, verwendet werden sollen.Because this disclosure is a legal document, various terms and phrases are subject to regulatory and legal interpretation. It is hereby acknowledged that the following paragraphs, as well as definitions provided throughout the disclosure, should be used in determining how claims formulated based on this disclosure are to be construed.

Bezugnahmen auf eine Singularform eines Elements (d. h. ein Substantiv oder eine Nominalphrase, vor dem/der ein „ein/e/r“ oder „der/die/das“ steht) sollen, sofern der Kontext nicht eindeutig etwas anderes vorschreibt, „ein/e/r oder mehrere“ bedeuten. Eine Bezugnahme auf „ein Element“ in einem Anspruch schließt somit ohne einen Begleitkontext keine zusätzlichen Instanzen des Elements aus. Eine „Vielzahl“ von Elementen bezieht sich auf einen Satz von zwei oder mehr der Elemente.References to a singular form of an element (i.e., a noun or noun phrase preceded by "a" or "the") should, unless the context clearly dictates otherwise, be "a/ e/r or several”. Thus, a reference to "an element" in a claim without an accompanying context does not exclude additional instances of the element. A "plurality" of items refers to a set of two or more of the items.

Das Wort „kann/können“ wird hierin in einem erlaubenden Sinn (d. h. das Potenzial aufweisend, in der Lage sein) und nicht in einem obligatorischen Sinn (d. h. muss/müssen) verwendet.The word "may" is used herein in a permissive sense (i.e., having the potential to be able) rather than in a mandatory sense (i.e., must).

Die Begriffe „umfassend“ und „einschließlich“ und Formen davon sind offen und bedeuten „einschließlich, ohne darauf beschränkt zu sein“.The terms "comprising" and "including" and forms thereof are open-ended and mean "including, but not limited to."

Wenn der Begriff „oder“ in dieser Offenbarung in Bezug auf eine Liste von Optionen verwendet wird, wird er im Allgemeinen derart verstanden, dass er in dem einschließenden Sinn verwendet wird, sofern nicht der Kontext etwas anderes vorsieht. Somit ist eine Angabe von „x oder y“ äquivalent zu „x oder y oder beide“ und deckt somit 1) x, aber nicht y, 2) y, aber nicht x, und 3) sowohl x als auch y ab. Andererseits macht eine Phrase, wie „entweder x oder y, aber nicht beide“ deutlich, dass „oder“ im exklusiven Sinn verwendet wird.When used in this disclosure in relation to a list of options, the term “or” is generally understood to be used in the inclusive sense unless the context dictates otherwise. Thus, specifying "x or y" is equivalent to "x or y or both" and thus covers 1) x but not y, 2) y but not x, and 3) both x and y. On the other hand, a phrase like "either x or y, but not both" makes it clear that "or" is used in the exclusive sense.

Eine Angabe von „w, x, y oder z oder eine beliebige Kombination davon“ oder „mindestens eines von ... w, x, y und z“ soll alle Möglichkeiten abdecken, die ein einzelnes Element bis zur Gesamtanzahl von Elementen im Satz beinhalten. Bei dem Satz [w, x, y, z] decken diese Phrasen zum Beispiel jedes einzelne Element des Satzes (z. B. w, aber nicht x, y oder z), beliebige zwei Elemente (z. B. w und x, aber nicht y oder z), beliebige drei Elemente (z. B. w, x und y, aber nicht z) und alle vier Elemente ab. Die Phrase „mindestens eines von ... x, y und z“ bezieht sich somit auf mindestens ein Element des Satzes [w, x, y, z], wodurch alle möglichen Kombinationen in dieser Liste von Elementen abgedeckt werden. Diese Phrase darf nicht derart ausgelegt werden, dass es erforderlich ist, dass mindestens eine Instanz von w, mindestens eine Instanz von x, mindestens eine Instanz von y und mindestens eine Instanz von z vorhanden sind.A statement of "w, x, y, or z, or any combination thereof" or "at least one of ... w, x, y, and z" is intended to cover all possibilities involving a single element up to the total number of elements in the set . For example, given the sentence [w, x, y, z], these phrases cover any single element of the sentence (e.g. w but not x, y or z), any two elements (e.g. w and x, but not y or z), any three elements (e.g. w, x and y, but not z) and all four elements. The phrase "at least one of ... x, y, and z" thus refers to at least one element of the set [w, x, y, z], covering all possible combinations in that list of elements. This phrase should not be construed as requiring there to be at least one instance of w, at least one instance of x, at least one instance of y, and at least one instance of z.

Verschiedene „Kennzeichnungen“ können in dieser Offenbarung vor Substantiven oder Substantivphrasen stehen. Sofern nicht der Kontext etwas anderes vorsieht, beziehen sich verschiedene Kennzeichnungen, die für ein Merkmal (z. B. „erste Schaltung“, „zweite Schaltung“, „bestimmte Schaltung“, „gegebene Schaltung“ usw.) verwendet werden, auf verschiedene Instanzen des Merkmals. Zusätzlich implizieren die Kennzeichnungen „erste/r/s“, „zweite/r/s“ und „dritte/r/s“, wenn sie auf ein Merkmal angewendet werden, keinen Typ von Sortierung (z. B. räumlich, zeitlich, logisch usw.), sofern nicht anders angegeben.Various “labels” may precede nouns or noun phrases in this disclosure. Unless the context otherwise dictates, different labels used for a feature (e.g., "first circuit", "second circuit", "specific circuit", "given circuit", etc.) refer to different instances of the feature. In addition, the imply Labels "first", "second", and "third" when applied to a feature do not have any type of sorting (e.g. spatial, temporal, logical, etc.) , unless otherwise stated.

Die Phrase „basierend auf/auf der Grundlage von“ oder wird verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Begriff schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, eine Bestimmung kann ausschließlich auf angegebenen Faktoren basieren oder auf den angegebenen Faktoren sowie anderen, nicht angegebenen Faktoren basieren. Man betrachte die Phrase „A basierend auf B bestimmen“. Diese Phrase gibt an, dass B ein Faktor ist, der verwendet wird, um A zu bestimmen, oder der die Bestimmung von A beeinflusst. Diese Phrase schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor, wie C, basieren kann. Diese Phrase soll auch eine Ausführungsform abdecken, in der A ausschließlich basierend auf B bestimmt wird. Wie hierin verwendet, ist die Phrase „basierend auf/auf der Grundlage von“ gleichbedeutend mit der Phrase „basierend mindestens teilweise auf“.The phrase "based on" or is used to describe one or more factors affecting a determination. This term does not exclude the possibility that additional factors may affect the determination. That is, a determination may be based solely on specified factors or based on specified factors plus other factors not specified. Consider the phrase "determine A based on B." This phrase indicates that B is a factor used to determine A or that affects the determination of A. This phrase does not exclude that the determination of A can also be based on another factor, such as C. This phrase is also intended to cover an embodiment in which A is determined based solely on B. As used herein, the phrase "based on" is synonymous with the phrase "based at least in part on."

Die Phrasen „als Reaktion auf und „in Reaktion auf“ beschreiben einen oder mehrere Faktoren, die eine Wirkung auslösen. Diese Phrase schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Wirkung beeinflussen oder anderweitig auslösen können, entweder gemeinsam mit den angegebenen Faktoren oder unabhängig von den angegebenen Faktoren. Das heißt, eine Wirkung kann ausschließlich als Reaktion auf diese Faktoren erfolgen oder kann als Reaktion auf die angegebenen Faktoren sowie andere, nicht angegebene Faktoren erfolgen. Man betrachte die Phrase „A als Reaktion auf B durchführen“. Diese Phrase gibt an, dass B ein Faktor ist, der die Durchführung von A auslöst oder der ein bestimmtes Ergebnis für A auslöst. Diese Phrase schließt nicht aus, dass ein Durchführen von A auch als Reaktion auf einen anderen Faktor, wie C, erfolgen kann. Diese Phrase schließt auch nicht aus, dass ein Durchführen von A als Reaktion auf B und C gemeinsam erfolgen kann. Diese Phrase soll auch eine Ausführungsform abdecken, in der A ausschließlich als Reaktion auf B durchgeführt wird. Wie hierin verwendet, ist die Phrase „als Reaktion auf gleichbedeutend mit der Phrase „als Reaktion mindestens teilweise auf“. In ähnlicher Weise ist die Phrase „als Reaktion auf gleichbedeutend mit der Phrase „mindestens teilweise als Reaktion auf“.The phrases "in response to" and "in response to" describe one or more factors that trigger an effect. This phrase does not exclude the possibility that additional factors may affect or otherwise trigger the effect, either together with the factors listed or independent of the factors listed. That is, an effect may occur solely in response to those factors, or it may occur in response to the identified factors as well as other factors not identified. Consider the phrase "perform A in response to B." This phrase indicates that B is a factor that triggers A to be performed or that triggers a specific outcome for A. This phrase does not exclude that performing A can also be in response to another factor, such as C. This phrase also does not preclude performing A in response to B and C together. This phrase is also intended to cover an embodiment in which A is performed solely in response to B. As used herein, the phrase "in response to" is synonymous with the phrase "in response at least in part to." Similarly, the phrase "in response to" is synonymous with the phrase "in response, at least in part, to."

Innerhalb dieser Offenbarung können unterschiedliche Entitäten (die verschiedentlich als „Einheiten“, „Schaltungen“, andere Komponenten usw. bezeichnet werden können) als „konfiguriert“, um eine oder mehrere Aufgaben oder Operationen durchzuführen, beschrieben oder beansprucht werden. Diese Formulierung - [Entität], die konfiguriert ist, um [eine oder mehrere Aufgaben durchzuführen] - wird hierin verwendet, um sich auf eine Struktur (d. h. etwas Physisches) zu beziehen. Insbesondere wird diese Formulierung verwendet, um anzugeben, dass diese Struktur angeordnet ist, um die eine oder die mehreren Aufgaben während des Betriebs durchzuführen. Eine Struktur kann als „konfiguriert, um“ eine Aufgabe durchzuführen, bezeichnet werden, selbst wenn die Struktur aktuell nicht betrieben wird. Somit bezieht sich eine Entität, die als „konfiguriert, um“ eine Aufgabe durchzuführen, beschrieben oder angegeben wird, auf etwas Physisches, wie eine Vorrichtung, eine Schaltung, ein System mit einer Prozessoreinheit und einem Speicher, der Programmanweisungen speichert, die ausführbar sind, um die Aufgabe zu implementieren, usw. Diese Phrase wird hierin nicht verwendet, um auf etwas nicht Greifbares Bezug zu nehmen.Throughout this disclosure, different entities (which may variously be referred to as "units", "circuitry", other components, etc.) may be described or claimed as "configured" to perform one or more tasks or operations. This phrase - [entity] configured to [perform one or more tasks] - is used herein to refer to a structure (i.e., something physical). In particular, this phrase is used to indicate that this structure is arranged to perform the one or more tasks during operation. A structure may be referred to as "configured to" perform a task even if the structure is not currently operating. Thus, an entity described or indicated as "configured to perform" a task refers to something physical, such as a device, circuit, system having a processing unit and memory storing program instructions executable, to implement the task, etc. This phrase is not used herein to refer to something intangible.

In einigen Fällen können verschiedene Einheiten/Schaltungen/Komponenten hierin als Durchführen eines Satzes von Aufgaben oder Operationen beschrieben werden. Es versteht sich, dass diese Entitäten „konfiguriert sind, um“ diese Aufgaben/Operationen durchzuführen, selbst wenn dies nicht spezifisch angegeben ist.In some cases, various units/circuits/components may be described herein as performing a set of tasks or operations. It is understood that these entities are "configured to" perform these tasks/operations even if not specifically stated.

Der Begriff „konfiguriert, um“ soll nicht „konfigurierbar, um“ bedeuten. Eine unprogrammierte FPGA würde zum Beispiel nicht als „konfiguriert, um“ eine bestimmte Funktion durchzuführen, betrachtet werden. Diese unprogrammierte FPGA kann jedoch „konfigurierbar, um“ diese Funktion durchzuführen, sein. Nach geeigneter Programmierung kann die FPGA dann als „konfiguriert, um“ die bestimmte Funktion durchzuführen, bezeichnet werden.The term "configured to" is not intended to mean "configurable to". For example, an unprogrammed FPGA would not be considered "configured to" perform a specific function. However, this unprogrammed FPGA may be "configurable to" perform this function. After appropriate programming, the FPGA can then be said to be "configured to" perform the particular function.

Für Zwecke von US-Patentanmeldungen basierend auf dieser Offenbarung soll sich in einem Anspruch, dass eine Struktur „konfiguriert, um“ eine oder mehrere Aufgaben durchzuführen ist, ausdrücklich nicht auf die Anwendung von 35 U.S.C. § 112(f) für dieses Anspruchselement berufen werden. Wenn sich der Anmelder während des Erteilungsverfahrens einer US-Patentanmeldung basierend auf dieser Offenbarung auf die Anwendung von Abschnitt 112(f) berufen möchte, gibt er Anspruchselemente unter Verwendung des Konstrukts „Mittel zum“ [Durchführen einer Funktion] an.For purposes of U.S. patent applications based on this disclosure, a claim that a structure is "configured to" perform one or more tasks is expressly not intended to invoke the application of 35 U.S.C. § 112(f) for that claim element. During the prosecution of a US patent application based on this disclosure, when the applicant wishes to invoke the application of Section 112(f), he specifies claim elements using the construct "means for" [performing a function].

Verschiedene „Schaltungen“ können in dieser Offenbarung beschrieben werden. Diese Schaltungen oder „Schaltlogik“ bilden Hardware, die verschiedene Typen von Schaltungselementen, wie kombinatorische Logik, getaktete Speicherungsvorrichtungen (z. B. Flip-Flops, Register, Latches usw.), endliche Automaten, Speicher (z. B. Direktzugriffsspeicher, eingebetteten dynamischen Direktzugriffsspeicher), programmierbare logische Anordnungen und so weiter, einschließt. Schaltlogik kann individuell gestaltet oder aus Standardbibliotheken entnommen sein. In verschiedenen Implementierungen kann Schaltlogik, wie es geeignet ist, digitale Komponenten, analoge Komponenten oder eine Kombination von beiden einschließen. Bestimmte Typen von Schaltungen können allgemein als „Einheiten“ (z. B. eine Decodiereinheit, eine arithmetisch-logische Einheit (ALU), eine Funktionseinheit, eine Speicherverwaltungseinheit (MMU) usw.) bezeichnet werden. Solche Einheiten beziehen sich ebenfalls auf Schaltungen oder Schaltlogik.Various "circuits" may be described in this disclosure. These circuits or "circuit logic" form hardware that contains various types of circuit elements, such as combinatorial logic, clocked storage devices (e.g., flip-flops, registers, latches, etc.), finite state machines, memories (e.g., random access memory, embedded dynamic random access memory), programmable logic arrays, and so on. Switching logic can be designed individually or taken from standard libraries. In various implementations, circuitry may include digital components, analog components, or a combination of both, as appropriate. Certain types of circuits may be generically referred to as "units" (e.g., a decode unit, an arithmetic logic unit (ALU), a functional unit, a memory management unit (MMU), etc.). Such units also refer to circuits or switching logic.

Die offenbarten Schaltungen/Einheiten/Komponenten und andere Elemente, die in den Zeichnungen veranschaulicht und hierin beschrieben sind, schließen somit Hardwareelemente, wie die im vorstehenden Absatz beschriebenen, ein. In vielen Fällen kann die interne Anordnung von Hardwareelementen innerhalb einer bestimmten Schaltung durch Beschreiben der Funktion dieser Schaltung angegeben werden. Zum Beispiel kann eine bestimmte „Decodiereinheit“ als die Funktion des „Verarbeitens eines Opcodes einer Anweisung und Umleitens dieser Anweisung zu einer oder mehreren einer Vielzahl von Funktionseinheiten“ durchführend beschrieben werden, was bedeutet, dass die Decodiereinheit „konfiguriert ist, um“ diese Funktion durchzuführen. Diese Funktionsangabe ist für einen Fachmann auf dem Computergebiet ausreichend, um einen Satz möglicher Strukturen für die Schaltung näher zu bezeichnen.The disclosed circuits/units/components and other elements illustrated in the drawings and described herein thus include hardware elements such as those described in the preceding paragraph. In many cases, the internal arrangement of hardware elements within a particular circuit can be specified by describing the function of that circuit. For example, a particular "decode unit" may be described as performing the function of "processing an opcode of an instruction and redirecting that instruction to one or more of a plurality of functional units," meaning that the decode unit is "configured to" perform that function . This functional specification is sufficient for one skilled in the computer art to specify a set of possible structures for the circuit.

In verschiedenen Ausführungsformen, wie im vorstehenden Absatz erörtert, können Schaltungen, Einheiten und andere Elemente durch die Funktionen oder Operationen definieren, für deren Implementierung sie konfiguriert sind. Die Anordnung dieser Schaltungen/Einheiten/Komponenten in Bezug aufeinander und die Art und Weise, in der sie interagieren, bilden eine mikroarchitektonische Definition der Hardware, die letztendlich in einer integrierten Schaltung hergestellt oder in ein FPGA programmiert ist, um eine physische Implementierung der mikroarchitektonischen Definition zu bilden. Somit wird die Mikroarchitekturdefinition von einem Fachmann als Struktur erkannt, aus der viele physische Implementierungen abgeleitet werden können, die alle in die breitere Struktur fallen, die durch die Mikroarchitekturdefinition beschrieben wird. Das heißt, dass ein Fachmann, dem die gemäß dieser Offenbarung bereitgestellten Mikroarchitekturdefinition präsentiert wird, ohne unangemessenes Experimentieren und durch Anwendung durchschnittlicher Fähigkeiten die Struktur implementieren kann, indem er die Beschreibung der Schaltungen/Einheiten/Komponenten in einer Hardwarebeschreibungssprache (HDL), wie Verilog oder VHDL, codiert. Die HDL-Beschreibung wird häufig in einer Weise ausgedrückt, die als funktional erscheinen kann. Für einen Fachmann auf diesem Gebiet ist diese HDL-Beschreibung jedoch die Weise, die verwendet wird, um die Struktur einer Schaltung, Einheit oder Komponente auf die nächste Implementierungsdetailebene zu transformieren. Eine solche HDL-Beschreibung kann die Form von Verhaltenscode (der üblicherweise nicht synthetisierbar ist), Register-Transfer-Sprache-Code (RTL-Code) (der im Gegensatz zu Verhaltenscode üblicherweise synthetisierbar ist) oder Strukturcode (z. B. eine Netzliste, die Logikgatter und deren Konnektivität angibt) annehmen. Die HDL-Beschreibung kann anschließend gegenüber einer Bibliothek von Zellen synthetisiert werden, die für eine gegebene Technologie zur Herstellung integrierter Schaltungen gestaltet ist, und kann aus Gründen der Zeittaktung, Energie und anderen Gründen modifiziert werden, um zu einer endgültigen Designdatenbank zu führen, die an eine Gießerei übermittelt wird, um Masken zu erzeugen und letztendlich die integrierte Schaltung herzustellen. Manche Hardware-Schaltungen oder Abschnitte davon können auch in einem schematischen Editor benutzerspezifisch ausgestaltet und zusammen mit synthetisierter Schaltlogik in das Design der integrierten Schaltung eingegliedert werden. Die integrierten Schaltungen können Transistoren und andere Schaltungselemente (z. B. passive Elemente, wie Kondensatoren, Widerstände, Spulen usw.) einschließen und eine Verbindung zwischen den Transistoren und Schaltungselementen herstellen. Manche Ausführungsformen können mehrere integrierte Schaltungen implementieren, die miteinander gekoppelt sind, um die Hardware-Schaltungen zu implementieren, und/oder diskrete Elemente können in manchen Ausführungsformen verwendet werden. Alternativ kann das HDL-Design zu einer programmierbaren Logikanordnung, wie einer anwenderprogrammierbaren Gate-Anordnung (FPGA), synthetisiert werden und kann in der FPGA implementiert werden. Dieses Entkoppeln zwischen dem Design einer Gruppe von Schaltungen und der anschließenden Implementierung auf niedriger Ebene dieser Schaltungen führt üblicherweise zu dem Szenario, in dem der Schaltungs- oder Logikdesigner nie einen bestimmten Satz von Strukturen für die Implementierung auf niedriger Ebene angibt, der über eine Beschreibung dessen hinausgeht, wozu die Schaltung konfiguriert ist, da dieser Prozess auf einer anderen Stufe des Schaltungsimplementierungsprozesses durchgeführt wird.In various embodiments, as discussed in the preceding paragraph, circuits, devices, and other elements may be defined by the functions or operations that they are configured to implement. The arrangement of these circuits/units/components in relation to each other and the way in which they interact form a micro-architectural definition of the hardware that is ultimately fabricated in an integrated circuit or programmed into an FPGA to provide a physical implementation of the micro-architectural definition to build. Thus, the microarchitecture definition is recognized by one skilled in the art as a structure from which many physical implementations can be derived, all falling within the broader structure described by the microarchitecture definition. That is, a person skilled in the art, presented with the microarchitecture definition provided according to this disclosure, without undue experimentation and by using average skill, can implement the structure by describing the circuits/units/components in a hardware description language (HDL), such as Verilog or VHDL encoded. The HDL description is often expressed in a way that can appear functional. However, for one skilled in the art, this HDL description is the manner used to transform the structure of a circuit, device or component to the next level of implementation detail. Such an HDL description may take the form of behavioral code (which is typically non-synthesizable), Register Transfer Language (RTL) code (which, unlike behavioral code, is typically synthesizable), or structured code (e.g., a netlist, indicating the logic gates and their connectivity). The HDL description can then be synthesized against a library of cells designed for a given integrated circuit fabrication technology and modified for timing, power and other reasons to result in a final design database that conforms to sent to a foundry to create masks and ultimately fabricate the integrated circuit. Some hardware circuitry, or portions thereof, may also be customized in a schematic editor and incorporated into the integrated circuit design along with synthesized circuitry. The integrated circuits may include transistors and other circuit elements (e.g., passive elements such as capacitors, resistors, inductors, etc.) and provide a connection between the transistors and circuit elements. Some embodiments may implement multiple integrated circuits coupled together to implement the hardware circuitry and/or discrete elements may be used in some embodiments. Alternatively, the HDL design can be synthesized into a programmable logic device, such as a field programmable gate array (FPGA), and can be implemented in the FPGA. This decoupling between the design of a group of circuits and the subsequent low-level implementation of those circuits usually leads to the scenario where the circuit or logic designer never specifies a specific set of structures for the low-level implementation, over and above a description of it goes beyond what the circuit is configured to do, since this process is performed at a different stage of the circuit implementation process.

Die Tatsache, dass viele verschiedene Kombinationen auf niedriger Ebene von Schaltungselementen verwendet werden können, um die gleiche Spezifikation einer Schaltung zu implementieren, führt zu einer großen Anzahl von äquivalenten Strukturen für diese Schaltung. Wie angegeben, können diese Schaltungen auf niedriger Ebene gemäß Änderungen in der Herstellungstechnologie, der zur Herstellung der integrierten Schaltung ausgewählten Gießerei, der Bibliothek von Zellen, die für ein bestimmtes Projekt bereitgestellt wird, usw. variieren. In vielen Fällen können die durch verschiedene Designwerkzeuge oder -methodiken zur Herstellung dieser verschiedenen Implementierungen vorgenommenen Auswahlen beliebig sein.The fact that many different low-level combinations of circuit elements can be used to implement the same specification of a circuit results in a large number of equivalent structures for that circuit. As indicated, these low-level circuits may vary according to changes in manufacturing technology, the foundry selected to manufacture the integrated circuit, the library of cells provided for a particular project, and so on. In many cases, the choices made by various design tools or methodologies to produce these various implementations can be arbitrary.

Darüber hinaus ist es für eine einzelne Implementierung einer bestimmten Funktionsspezifikation einer Schaltung üblich, für eine gegebene Ausführungsform eine große Anzahl von Vorrichtungen (z. B. Millionen von Transistoren) einzuschließen. Entsprechend macht es das bloße Volumen dieser Informationen undurchführbar, eine vollständige Angabe der Struktur auf niedriger Ebene, die verwendet wird, um eine einzelne Ausführungsform zu implementieren, geschweige denn die enorme Anordnung äquivalenter möglicher Implementierungen bereitzustellen. Aus diesem Grund beschreibt die vorliegende Offenbarung eine Struktur von Schaltungen unter Verwendung der Funktionskurzschrift, die üblicherweise in der Industrie eingesetzt wird.Furthermore, it is common for a single implementation of a particular functional specification of a circuit to include a large number of devices (e.g., millions of transistors) for a given embodiment. Accordingly, the sheer volume of this information makes it impractical to provide a complete, low-level indication of the structure used to implement a single embodiment, let alone the vast array of equivalent possible implementations. For this reason, the present disclosure describes a structure of circuits using the functional shorthand commonly used in the industry.

ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN 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 documents cited by the applicant was 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 PatentliteraturPatent Literature Cited

  • US 17/136542 [0007]US 17/136542 [0007]
  • US 17/103317 [0079]US 17/103317 [0079]

Claims (15)

Einrichtung, umfassend: einen Grafikprozessor, der so konfiguriert ist, dass er bestimmt, ob ein Strahl ein Primitiv in einer Grafikszene schneidet, wobei der Grafikprozessor Folgendes einschließt: Strahlenschnittstellenschaltlogik, die zur Durchführung eines Schnittstellentests konfiguriert ist, der Folgendes einschließt: Quantisieren einer ersten Darstellung des Primitivs, um eine Intervalldarstellung des Primitivs mit reduzierter Genauigkeit zu erzeugen, wobei die Intervalldarstellung Intervallwerte einschließt, die garantiert entsprechende, durch die erste Darstellung des Primitivs spezifizierte Werte abdecken; Quantisieren einer ersten Darstellung des Strahls, um eine Intervalldarstellung des Strahls mit reduzierter Genauigkeit zu erzeugen, wobei die Intervalldarstellung Intervallwerte einschließt, die garantiert entsprechende Werte abdecken, die durch die erste Darstellung des Strahls spezifiziert sind; und Bestimmen, unter Verwendung von Intervallarithmetik, eines anfänglichen Schnittstellenergebnisses auf der Grundlage von Koordinaten der Intervalldarstellung des Primitivs und Koordinaten der Intervalldarstellung des Strahls, wobei ein durch das anfängliche Schnittstellenergebnis angezeigter Fehlschlag garantiert kein Treffer für die erste Darstellung des Primitivs und die erste Darstellung des Strahls ist.facility comprising: a graphics processor configured to determine whether a ray intersects a primitive in a graphics scene, the graphics processor including: Beam interface circuitry configured to perform an interface test that includes: quantizing a first representation of the primitive to produce a reduced-precision interval representation of the primitive, the interval representation including interval values guaranteed to cover corresponding values specified by the first representation of the primitive; quantizing a first representation of the ray to produce a reduced-precision interval representation of the ray, the interval representation including interval values guaranteed to cover corresponding values specified by the first representation of the ray; and Determine, using interval arithmetic, an initial intersection result based on coordinates of the interval representation of the primitive and coordinates of the interval representation of the ray, where a failure indicated by the initial intersection result is guaranteed no hit for the first representation of the primitive and the first representation of the ray . Einrichtung nach Anspruch 1, ferner umfassend eine Scherfaktorschaltlogik, die konfiguriert ist, zum: Erzeugen von Intervalldarstellungen von Scherfaktoren auf der Grundlage von Strahlrichtungs- und Skaleninformationen; und Erzeugen gescherter Eckpunktintervalle auf der Grundlage der quantisierten Darstellung des Primitivs und der Intervalldarstellung der Scherfaktoren; wobei das anfängliche Schnittstellenergebnis auf den gescherten Eckpunktintervallen basiert.setup after claim 1 , further comprising shear factor circuitry configured to: generate interval representations of shear factors based on beam direction and scale information; and generating sheared vertex intervals based on the quantized representation of the primitive and the interval representation of the shear factors; where the initial intersection result is based on the sheared vertex intervals. Einrichtung nach Anspruch 2, wobei die Scherfaktorschaltlogik konfiguriert ist, um Folgendes zu verwenden: eine erste Genauigkeit, um eine erste Koordinate für einen Ursprung des Strahls in einer Koordinatenrichtung darzustellen, die einen Schwellenbeitrag zu einem Strahlrichtungsvektor bereitstellt; und eine zweite, größere Genauigkeit, um Koordinaten für den Ursprung des Strahls in anderen Richtungen darzustellen.setup after claim 2 wherein the shear factor switching logic is configured to use: a first precision to represent a first coordinate for an origin of the ray in a coordinate direction that provides a threshold contribution to a ray direction vector; and a second, greater precision, to represent coordinates for the origin of the ray in other directions. Einrichtung nach Anspruch 1, wobei die Quantisierung der ersten Darstellung des Primitivs eine quantisierte Festkommadarstellung verwendet, die für eine untere Grenze des Intervalls auf Null gerundet ist und für eine obere Grenze des Intervalls die untere Grenze plus eine Einheit der geringsten Genauigkeit (ULP).setup after claim 1 , where the quantization of the first representation of the primitive uses a quantized fixed-point representation rounded to zero for a lower bound of the interval and the lower bound plus a unit of least precision (ULP) for an upper bound of the interval. Einrichtung nach Anspruch 1, wobei die erste Darstellung des Primitivs eine Darstellung eines Dreieckspaares ist, das höchstens vier Eckpunkte für zwei dreieckige Primitive in dem Dreieckspaar einschließt, wobei der Grafikprozessor eine Schaltlogik einschließt, die so konfiguriert ist, dass sie Dreiecke eines gegebenen Dreieckspaares sequentiell verarbeitet.setup after claim 1 , wherein the first representation of the primitive is a representation of a triangle pair including at most four vertices for two triangular primitives in the triangle pair, the graphics processor including circuitry configured to process triangles of a given triangle pair sequentially. Einrichtung nach Anspruch 1, wobei die Intervalldarstellung des Strahls mit reduzierter Genauigkeit eine quantisierte Strahlzeit einschließt, die als ein Intervall dargestellt wird.setup after claim 1 , where the interval representation of the reduced precision beam includes a quantized beam time represented as an interval. Einrichtung nach Anspruch 6, ferner umfassend: eine Schaltlogik, die so konfiguriert ist, dass sie auf der Grundlage einer ersten und einer zweiten Position des Primitivs an verschiedenen Punkten innerhalb eines Bewegungsunschärfeintervalls die Intervalldarstellung des Primitivs mit reduzierter Genauigkeit erzeugt, sodass die Intervalldarstellung des Primitivs mit reduzierter Genauigkeit alle möglichen Positionen des Primitivs während des Intervalls abdeckt, das die quantisierte Strahlzeit darstellt.setup after claim 6 , further comprising: circuitry configured to generate the reduced-precision interval representation of the primitive based on first and second positions of the primitive at different points within a motion blur interval, such that the reduced-precision interval representation of the primitive is all possible positions of the primitive during the interval representing the quantized beamtime. Einrichtung nach Anspruch 1, wobei der Grafikprozessor so konfiguriert ist, dass er als Reaktion auf einen möglichen des anfänglichen Schnittstellenergebnisses einen Schnittstellentest unter Verwendung der ersten Darstellung des Primitivs und der ersten Darstellung des Strahls durchführt.setup after claim 1 wherein the graphics processor is configured to perform an interface test using the first representation of the primitive and the first representation of the ray in response to a possible one of the initial interface result. Einrichtung nach Anspruch 1, wobei die Einrichtung eine Rechenvorrichtung ist, die ferner Folgendes einschließt: eine zentrale Verarbeitungseinheit; eine Anzeige; und Schaltlogik der Netzwerkschnittstelle.setup after claim 1 wherein the facility is a computing device, further including: a central processing unit; an ad; and network interface circuitry. Verfahren, umfassend: Quantisieren einer ersten Darstellung eines Primitivs durch einen Grafikprozessor, um eine Intervalldarstellung des Primitivs mit reduzierter Genauigkeit zu erzeugen, wobei die Intervalldarstellung Intervallwerte einschließt, die garantiert entsprechende Werte abdecken, die durch die erste Darstellung des Primitivs spezifiziert sind; Quantisieren einer ersten Darstellung eines Strahls durch den Grafikprozessor, um eine Intervalldarstellung des Strahls mit reduzierter Genauigkeit zu erzeugen, wobei die Intervalldarstellung Intervallwerte einschließt, die garantiert entsprechende Werte abdecken, die durch die erste Darstellung des Strahls spezifiziert sind; und Bestimmen, durch den Grafikprozessor unter Verwendung von Intervallarithmetik, eines anfänglichen Schnittstellenergebnisses auf der Grundlage von Koordinaten der Intervalldarstellung des Primitivs und Koordinaten der Intervalldarstellung des Strahls, wobei ein durch das anfängliche Schnittstellenergebnis angezeigter Fehlschlag garantiert kein Treffer für die erste Darstellung des Primitivs und die erste Darstellung des Strahls ist.Method comprising: quantizing, by a graphics processor, a first representation of a primitive to generate a reduced-precision interval representation of the primitive, the interval representation including interval values guaranteed to cover corresponding values specified by the first representation of the primitive; quantizing, by the graphics processor, a first representation of a ray to generate a reduced-precision interval representation of the ray, the interval representation including interval values guaranteed to cover corresponding values specified by the first representation of the ray; and Determining, by the graphics processor using interval arithmetic, an initial interface result based on coordinates of the interval representation of the primitive and coordinates of the interval representation of the ray, where a failure indicated by the initial interface result guarantees no hit for the first representation of the primitive and the first representation of the beam is. Verfahren nach Anspruch 10, ferner umfassend: Erzeugen von Intervalldarstellungen der Scherfaktoren durch den Grafikprozessor auf der Grundlage von Strahlrichtungs- und Skaleninformationen; und Erzeugen von gescherten Eckpunktintervallen durch den Grafikprozessor auf der Grundlage der quantisierten Darstellung des Primitivs und der Intervalldarstellung der Scherfaktoren; wobei das anfängliche Schnittstellenergebnis auf den gescherten Eckpunktintervallen basiert.procedure after claim 10 , further comprising: generating, by the graphics processor, interval representations of the shear factors based on beam direction and scale information; and generating, by the graphics processor, sheared vertex intervals based on the quantized representation of the primitive and the interval representation of the shear factors; where the initial intersection result is based on the sheared vertex intervals. Verfahren nach Anspruch 10, wobei die Quantisierung der ersten Darstellung des Primitivs eine quantisierte Festkommadarstellung verwendet, die für eine untere Grenze des Intervalls auf Null gerundet ist und für eine obere Grenze des Intervalls die untere Grenze plus eine Einheit der geringsten Genauigkeit (ULP).procedure after claim 10 , where the quantization of the first representation of the primitive uses a quantized fixed-point representation rounded to zero for a lower bound of the interval and the lower bound plus a unit of least precision (ULP) for an upper bound of the interval. Nicht-transitorisches computerlesbares Speichermedium mit darauf gespeicherten Designinformationen, die ein Design zumindest eines Abschnitts einer hardwareintegrierten Schaltung in einem Format angeben, das durch ein Halbleiterproduktionssystem erkannt wird, das konfiguriert ist, um die Designinformationen zum Produzieren der Schaltung gemäß dem Design zu verwenden, wobei die Designinformationen angeben, dass die Schaltung Folgendes einschließt: einen Grafikprozessor, der so konfiguriert ist, dass er bestimmt, ob ein Strahl ein Primitiv in einer Grafikszene schneidet, wobei der Grafikprozessor Folgendes einschließt: Strahlenschnittstellenschaltlogik, die zur Durchführung eines Schnittstellentests konfiguriert ist, der Folgendes einschließt: Quantisieren einer ersten Darstellung des Primitivs, um eine Intervalldarstellung des Primitivs mit reduzierter Genauigkeit zu erzeugen, wobei die Intervalldarstellung Intervallwerte einschließt, die garantiert entsprechende, durch die erste Darstellung des Primitivs spezifizierte Werte abdecken; Quantisieren einer ersten Darstellung des Strahls, um eine Intervalldarstellung des Strahls mit reduzierter Genauigkeit zu erzeugen, wobei die Intervalldarstellung Intervallwerte einschließt, die garantiert entsprechende Werte abdecken, die durch die erste Darstellung des Strahls spezifiziert sind; und Bestimmen, unter Verwendung von Intervallarithmetik, eines anfänglichen Schnittstellenergebnisses auf der Grundlage von Koordinaten der Intervalldarstellung des Primitivs und Koordinaten der Intervalldarstellung des Strahls, wobei ein durch das anfängliche Schnittstellenergebnis angezeigter Fehlschlag garantiert kein Treffer für die erste Darstellung des Primitivs und die erste Darstellung des Strahls ist.A non-transitory computer-readable storage medium having stored thereon design information specifying a design of at least a portion of a hardware integrated circuit in a format recognized by a semiconductor manufacturing system configured to use the design information to produce the circuit according to the design, wherein the Design information indicates that the circuit includes: a graphics processor configured to determine whether a ray intersects a primitive in a graphics scene, the graphics processor including: Beam interface circuitry configured to perform an interface test that includes: quantizing a first representation of the primitive to produce a reduced-precision interval representation of the primitive, the interval representation including interval values guaranteed to cover corresponding values specified by the first representation of the primitive; quantizing a first representation of the ray to produce a reduced-precision interval representation of the ray, the interval representation including interval values guaranteed to cover corresponding values specified by the first representation of the ray; and Determine, using interval arithmetic, an initial intersection result based on coordinates of the interval representation of the primitive and coordinates of the interval representation of the ray, where a failure indicated by the initial intersection result is guaranteed no hit for the first representation of the primitive and the first representation of the ray . Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 13, wobei die Designinformationen spezifizieren, dass die Schaltung ferner Folgendes einschließt: Scherfaktorschaltlogik, die konfiguriert ist, zum: Erzeugen von Intervalldarstellungen von Scherfaktoren auf der Grundlage von Strahlrichtungs- und Skaleninformationen; und Erzeugen gescherter Eckpunktintervalle auf der Grundlage der quantisierten Darstellung des Primitivs und der Intervalldarstellung der Scherfaktoren; wobei das anfängliche Schnittstellenergebnis auf den gescherten Eckpunktintervallen basiert.Non-transitory computer-readable storage medium Claim 13 wherein the design information specifies that the circuit further includes: shear factor circuitry configured to: generate interval representations of shear factors based on beam direction and scale information; and generating sheared vertex intervals based on the quantized representation of the primitive and the interval representation of the shear factors; where the initial intersection result is based on the sheared vertex intervals. Nicht-transitorisches computerlesbares Speichermedium nach Anspruch 14, wobei die Scherfaktorschaltlogik konfiguriert ist, Folgendes zu verwenden: eine erste Genauigkeit, um eine erste Koordinate für einen Ursprung des Strahls in einer Koordinatenrichtung darzustellen, die einen Schwellenbeitrag zu einem Strahlrichtungsvektor bereitstellt; und eine zweite, größere Genauigkeit, um Koordinaten für den Ursprung des Strahls in anderen Richtungen darzustellen.Non-transitory computer-readable storage medium Claim 14 wherein the shear factor switching logic is configured to use: a first precision to represent a first coordinate for an origin of the ray in a coordinate direction that provides a threshold contribution to a ray direction vector; and a second, greater precision, to represent coordinates for the origin of the ray in other directions.
DE102022122793.6A 2021-09-24 2022-09-08 RADIATION INTERFACE TEST WITH QUANTIZATION AND INTERVAL REPRESENTATIONS Granted DE102022122793A1 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US202163248143P 2021-09-24 2021-09-24
US63/248,143 2021-09-24
US17/456,483 2021-11-24
US17/456,483 US11734871B2 (en) 2021-09-24 2021-11-24 Ray intersection testing with quantization and interval representations
US17/456,503 US11830124B2 (en) 2021-09-24 2021-11-24 Quantized ray intersection testing with definitive hit detection
US17/456,503 2021-11-24

Publications (1)

Publication Number Publication Date
DE102022122793A1 true DE102022122793A1 (en) 2023-03-30

Family

ID=83933384

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022122793.6A Granted DE102022122793A1 (en) 2021-09-24 2022-09-08 RADIATION INTERFACE TEST WITH QUANTIZATION AND INTERVAL REPRESENTATIONS

Country Status (5)

Country Link
KR (1) KR20230043717A (en)
CN (2) CN115861518B (en)
DE (1) DE102022122793A1 (en)
GB (2) GB2612681B (en)
TW (2) TW202403671A (en)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1966766A1 (en) * 2005-12-29 2008-09-10 Intel Corporation Applications of interval arithmetic for reduction of number of computations in ray tracing problems
US8139060B2 (en) * 2006-11-28 2012-03-20 International Business Machines Corporation Ray tracing image processing system
KR20140023615A (en) * 2012-08-16 2014-02-27 삼성전자주식회사 Method and apparatus for graphic processing using parallel pipeline
US9805498B2 (en) * 2015-02-06 2017-10-31 Intel Corporation Method and apparatus for direct and interactive ray tracing of a subdivision surface
US10297068B2 (en) * 2017-06-06 2019-05-21 Adshir Ltd. Method for ray tracing augmented objects
US10290143B2 (en) * 2017-06-14 2019-05-14 Imagination Technologies Limited Compressed ray direction data in a ray tracing system
US10438397B2 (en) * 2017-09-15 2019-10-08 Imagination Technologies Limited Reduced acceleration structures for ray tracing systems
US10699465B1 (en) * 2018-12-28 2020-06-30 Intel Corporation Cluster of scalar engines to accelerate intersection in leaf node
US11321910B2 (en) * 2019-04-04 2022-05-03 Intel Corporation Apparatus and method for reduced precision bounding volume hierarchy construction
US10970914B1 (en) * 2019-11-15 2021-04-06 Imagination Technologies Limited Multiple precision level intersection testing in a ray tracing system
US11157238B2 (en) * 2019-11-15 2021-10-26 Intel Corporation Use of a single instruction set architecture (ISA) instruction for vector normalization
US11663777B2 (en) * 2020-03-15 2023-05-30 Intel Corporation Apparatus and method for motion blur with a dynamic quantization grid

Also Published As

Publication number Publication date
GB202212912D0 (en) 2022-10-19
CN117593439A (en) 2024-02-23
KR20230043717A (en) 2023-03-31
GB202318608D0 (en) 2024-01-17
TWI822330B (en) 2023-11-11
TW202403671A (en) 2024-01-16
CN115861518A (en) 2023-03-28
TW202314645A (en) 2023-04-01
CN115861518B (en) 2023-12-08
GB2612681B (en) 2024-01-31
GB2612681A (en) 2023-05-10

Similar Documents

Publication Publication Date Title
DE102021118059A1 (en) DEVICE AND METHOD FOR EFFICIENT GRAPHICS PROCESSING INCLUDING RAY TRACKING
DE102019117592A1 (en) VIDEO PROCESSING MECHANISM
DE102019103059A1 (en) Cut and stab-proof beam-triangle intersection
DE102020115026A1 (en) Systems and methods for the sound mapping of high dynamic range images for high quality deep learning based processing
DE102020129003A1 (en) APPARATUS AND METHOD FOR USING ALPHA VALUES TO IMPROVE BEAM TRACKING EFFICIENCY
DE112017001703T5 (en) Method and apparatus for more efficiently ray tracing instantiated geometry
DE102020108476A1 (en) Mechanism for performing nonlinear functions in a machine learning accelerator
DE102020132871A1 (en) IMPROVING HIERARCHICAL DEPTH BUFFER CULLING EFFICIENCY THROUGH MASK ACCUMULATION
DE102020130865A1 (en) INSTRUCTIONS AND LOGIC FOR VECTOR MULTIPLICATION ADDITION WITH ZERO SKIPPING
DE112017004077T5 (en) DEVICE AND METHOD FOR OPTIMIZED TILE-BASED RENDERING
DE102022124599A1 (en) DEVICE AND METHOD FOR TREE STRUCTURE DATA REDUCTION
DE102021121187A1 (en) EQUIPMENT AND PROCEDURES FOR EFFICIENT GRAPHICS PROCESSING INCLUDING RAY TRACKING
DE112017001845T5 (en) Beam traversing with reduced accuracy with reuse of layers
DE102020126177A1 (en) METHOD AND APPARATUS FOR PLANNING THREAD ORDER TO IMPROVE CACHE EFFICIENCY
DE112018003999T5 (en) Method and device for efficient processing of derived uniform values in a graphics processor
DE102021116364A1 (en) DEVICE AND METHOD FOR HIGH QUALITY RAY TRACKING DETAIL LEVEL TRANSITIONS
DE102021114013A1 (en) TECHNIQUES FOR EFFICIENT SCANNING OF AN IMAGE
DE102023124837A1 (en) Reducing false positive beam traversals in a bounding volume hierarchy
DE102020130845A1 (en) Method and device for viewport shifting of non-real-time 3D applications
DE102020132088A1 (en) CALCULATION OF EFFICIENT CROSS-CHANNEL OPERATIONS IN PARALLEL COMPUTING MACHINES WITH SYSTOLIC ARRAYS
DE102020126551A1 (en) PARALLEL DECOMPRESSION MECHANISM
DE102023124529A1 (en) REDUCING FALSE POSITIVE BEAM TRAVELS USING BEAM CUTTERS
DE112017003802T5 (en) USE OF A VIRTUAL VIRTUAL ADDRESS TABLE FOR MEMORY COMPRESSION
DE102022124603A1 (en) SETUP AND METHOD FOR RAY TRACING WITH SHADER-CALL GRAPH ANALYSIS
DE102022122793A1 (en) RADIATION INTERFACE TEST WITH QUANTIZATION AND INTERVAL REPRESENTATIONS

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 102022005153

Country of ref document: DE