DE102022122793A1 - RADIATION INTERFACE TEST WITH QUANTIZATION AND INTERVAL REPRESENTATIONS - Google Patents
RADIATION INTERFACE TEST WITH QUANTIZATION AND INTERVAL REPRESENTATIONS Download PDFInfo
- 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
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 90
- 238000013139 quantization Methods 0.000 title claims description 25
- 230000005855 radiation Effects 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 63
- 238000012545 processing Methods 0.000 claims description 40
- 238000013461 design Methods 0.000 claims description 36
- 230000033001 locomotion Effects 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 15
- 238000004519 manufacturing process Methods 0.000 claims description 12
- 239000004065 semiconductor Substances 0.000 claims description 7
- 238000007796 conventional method Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 32
- 230000015654 memory Effects 0.000 description 24
- 239000012634 fragment Substances 0.000 description 23
- 230000008901 benefit Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 13
- 230000001133 acceleration Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 10
- 239000004744 fabric Substances 0.000 description 10
- 238000007667 floating Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 8
- 230000001419 dependent effect Effects 0.000 description 6
- 239000000463 material Substances 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000003542 behavioural effect Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000036541 health Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000013101 initial test Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000010008 shearing Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- BUHVIAUBTBOHAG-FOYDDCNASA-N (2r,3r,4s,5r)-2-[6-[[2-(3,5-dimethoxyphenyl)-2-(2-methylphenyl)ethyl]amino]purin-9-yl]-5-(hydroxymethyl)oxolane-3,4-diol Chemical compound COC1=CC(OC)=CC(C(CNC=2C=3N=CN(C=3N=CN=2)[C@H]2[C@@H]([C@H](O)[C@@H](CO)O2)O)C=2C(=CC=CC=2)C)=C1 BUHVIAUBTBOHAG-FOYDDCNASA-N 0.000 description 1
- 241000473945 Theria <moth genus> Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 239000000700 radioactive tracer Substances 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision 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.
No.
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
Unter Bezugnahme nun auf
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.
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
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.
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
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
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,
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,
Übersicht über den intervallbasierten SchnittstellentestOverview of the interval-based interface test
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
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.
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
Beispiel für quantisierte Intervalldarstellungen von SchnittstellentestwertenExample of quantized interval plots of interface test values
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.
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,
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
In einigen Ausführungsformen wird die Strahlzeit als Teil des Schnittstellentests mit geringer Genauigkeit auf ein Intervall mit geringerer Genauigkeit
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
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
Als ein Beispiel kann die Schaltlogik 410 das interpolierte räumliche Koordinatenintervall wie folgt bestimmen:
Unter Verwendung der Notation p0 =p(0) und p1 = p(1) kann die Schaltlogik 410 ein interpoliertes Positionskoordinatenintervall
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
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
- 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:
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:
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:
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:
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.
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
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
Die in
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 (Typically, a signed interval product requires four multipliers, as defined as follows: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; }
- [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; }
Beispielhafte Codierungs- und Verarbeitungstechniken für DreieckspaareExemplary coding and processing techniques for triangle pairs
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
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
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
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
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
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.
Die nachstehende Codeliste 2 stellt beispielhafte Operationen bereit, die von der Schaltlogik von
// 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;
// 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.
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
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.
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
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:
Wenn M geradzahlig ist, ist das folgende Beispiel eine neu geordnete Sequenz:
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:
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
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.
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
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
Beispielhafte VorrichtungExemplary device
Unter Bezugnahme nun auf
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
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
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
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/
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
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
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
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,
AnwendungsbeispieleApplication examples
Unter Bezugnahme nun auf
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
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
Die in
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.
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
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
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.
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
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)
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)
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 |
-
2022
- 2022-09-05 GB GB2212912.6A patent/GB2612681B/en active Active
- 2022-09-05 GB GBGB2318608.3A patent/GB202318608D0/en active Pending
- 2022-09-08 DE DE102022122793.6A patent/DE102022122793A1/en active Granted
- 2022-09-14 CN CN202211113266.8A patent/CN115861518B/en active Active
- 2022-09-14 CN CN202311599104.4A patent/CN117593439A/en active Pending
- 2022-09-14 TW TW112136854A patent/TW202403671A/en unknown
- 2022-09-14 KR KR1020220115377A patent/KR20230043717A/en not_active Application Discontinuation
- 2022-09-14 TW TW111134755A patent/TWI822330B/en active
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 |