IP Library Granted Patent US 10,885,698
Granted Patent B2
US 10,885,698 · App. 16/101,232 · Granted Jan 5, 2021

Method for programmable timeouts of tree traversal mechanisms in hardware

Inventors: Greg Muthler (Austin, TX); Ronald Charles Babich, Jr. (Murrysville, PA); William Parsons Newhall, Jr. (Woodside, CA); Peter Nelson (San Francisco, CA); James Robertson (Austin, TX); John Burgess (Austin, TX)
Assignee: NVIDIA Corporation
G06T15/06G06F9/3877G06N5/046G06T1/20G06T1/60G06T17/005
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,885,698
App. No.
16/101,232
Granted
Jan 5, 2021
Kind
B2
Abstract

In a ray tracer, to prevent any long-running query from hanging the graphics processing unit, a traversal coprocessor provides a preemption mechanism that will allow rays to stop processing or time out early. The example non-limiting implementations described herein provide such a preemption mechanism, including a forward progress guarantee, and additional programmable timeout options that can be time or cycle based. Those programmable options provide a means for quality of service timing guarantees for applications such as virtual reality (VR) that have strict timing requirements.

Claims (26)

1. A ray tracing device comprising:

traversal hardware configured to receive, from a processor, a first query including first ray information and a second query including second ray information, in response to the first query, traverse an acceleration data structure to determine bounding volumes or geometric primitives that the first ray intersects and in response to the second query, traverse the acceleration data structure to determine bounding volumes and/or or geometric primitives that the second ray intersects; and

a programmable timeout circuit configured to:

(a) simultaneously monitor how much the traversal hardware is used to traverse the acceleration data structure for the first ray and how much the traversal hardware is used to traverse the acceleration data structure for the second ray,

(b) interrupt the traversal hardware in traversing the acceleration data structure for the first ray if an amount the traversal hardware is used in traversing the acceleration data structure for the first ray exceeds a first threshold value programmable for the first ray without interrupting the traversal hardware in traversing the acceleration data structure for the second ray, and

(c) interrupt the traversal hardware in traversing the acceleration data structure for the second ray if an amount the traversal hardware is used in traversing the acceleration data structure for the second ray exceeds a second threshold value programmable for the second ray without interrupting the traversal hardware in traversing the acceleration data structure for the first ray.

2. The ray tracing device of claim 1 wherein the programmable timeout circuit is work-based.

3. The ray tracing device of claim 1 wherein the programmable timeout circuit is cycle-based.

4. The ray tracing device of claim 1 wherein the programmable timeout circuit is time-based.

5. The ray tracing device of claim 1 wherein the programmable timeout circuit is epoch-based.

6. The ray tracing device of claim 1 wherein monitoring how much the traversal hardware is used comprises counting the number of certain traversal operations the hardware performs for the first or second ray.

7. The ray tracing device of claim 6 wherein the certain traversal operations comprise leaf node traversals.

8. The ray tracing device of claim 1 wherein the traversal hardware is configured to traverse the acceleration data structure to determine bounding volumes or geometric primitives that the first ray intersects at least partially in parallel with traversing the acceleration data structure to determine bounding volumes or geometric primitives that the second ray intersects.

9. A method implemented by a hardware-based traversal coprocessor coupled to a processor, the method comprising:

receiving from the processor a first query including first ray information and a second query including second ray information;

in response to receiving the first query, traversing an acceleration data structure to determine bounding volumes or geometric primitives that the first ray intersects;

in response to receiving the second query, traversing the acceleration data structure to determine bounding volumes or geometric primitives that second first ray intersects;

simultaneously monitoring how much the traversal coprocessor is used to traverse the acceleration data structure for the first ray and how much the traversal coprocessor is used to traverse the acceleration data structure for the second ray;

interrupting the traversal coprocessor in traversing the acceleration data structure for the first ray if an amount the traversal coprocessor is used in traversing the acceleration data structure for the first ray exceeds a first threshold value programmable for the first ray without interrupting the traversal hardware in traversing the acceleration data structure for the second ray; and

interrupting the traversal coprocessor in traversing the acceleration data structure for the second ray if an amount the traversal coprocessor is used in traversing the acceleration data structure for the second ray exceeds a second threshold value programmable for the second ray without interrupting the traversal hardware in traversing the acceleration data structure for the first ray.

10. The method of claim 9 wherein the amount the traversal coprocessor is used is work-based.

11. The method of claim 9 wherein the amount the traversal coprocessor is used is cycle-based.

12. The method of claim 9 wherein the amount the traversal coprocessor is used is time-based.

13. The method of claim 9 wherein the amount the traversal coprocessor is used is epoch-based.

14. The method of claim 9 wherein monitoring how much the traversal coprocessor is used comprises counting a number of certain traversal operations the coprocessor performs for the ray.

15. The method of claim 14 wherein the certain traversal operations comprise leaf node traversals.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 20, 2018
From: MUTHLER, GREG; BABICH, RONALD C.; NEWHALL, WILLIAM P.; NELSON, PETER; ROBERTSON, JIM; BURGESS, JOHN
To: NVIDIA CORPORATION
Reel/Frame 046928/0852 →
Continuity (1)
Related Publication 20200051318A1 · Feb 13, 2020
Cited By (100)
US 12,190,448 US 12,198,251 US 12,198,252 US 12,198,450 US 12,202,432 US 12,202,518 US 12,204,475 US 12,223,429 US 12,233,854 US 12,235,353 US 12,248,319 US 12,249,163 US 12,260,017 US 12,266,148 US 12,269,488 US 12,271,194 US 12,272,152 US 12,283,187 US 12,286,115 US 12,288,403 US 12,299,892 US 12,307,785 US 12,307,788 US 12,314,854 US 12,322,126 US 12,323,717 US 12,327,413 US 12,332,079 US 12,332,614 US 12,344,270 US 12,346,117 US 12,346,119 US 12,351,119 US 12,353,213 US 12,354,379 US 12,365,344 US 12,367,681 US 12,373,689 US 12,373,960 US 12,373,986 US 12,374,040 US 12,399,015 US 12,399,086 US 12,399,253 US 12,400,417 US 12,403,919 US 12,406,471 US 12,412,278 US 12,412,390 US 12,417,137 US 12,434,703 US 12,437,412 US 12,462,447 US 12,462,586 US 12,469,203 US 12,482,118 US 12,482,137 US 12,488,235 US 12,488,241 US 12,492,913 US 12,499,363 US 12,524,003 US 12,524,010 US 12,524,960 US 12,525,031 US 12,529,564 US 12,536,675 US 12,552,404 US 12,555,385 US 12,560,702 US 12,560,720 US 12,561,821 US 12,570,282 US 12,572,387 US 12,579,821 US 12,597,266 US 12,602,244 US 12,607,480 US 12,620,115 US 12,621,564 US 12,623,671 US 12,625,494 US 12,626,326 US 12,630,191 US 12,632,922 US 12,644,964 US 12,645,217 US 12,651,424 US 12,651,465 US 12,657,818 US 12,657,819 US 12,663,290 US 12,664,796 US 12,668,276 US 12,670,727 US 12,676,008 US 12,681,179 US 12,682,661 US 12,682,760 US 12,698,007