IP Library Granted Patent US 12,541,908
Granted Patent B2
US 12,541,908 · App. 18/587,761 · Granted Feb 3, 2026

Apparatus and method for throttling a ray tracing pipeline

Inventors: Karthik Vaidyanathan (San Francisco, CA); Abhishek Appu (El Dorado Hills, CA); Vasanth Ranganathan (El Dorado Hills, CA); Joydeep Ray (Folsom, CA); Prasoonkumar Surti (Folsom, CA)
Assignee: Intel Corporation
G06T15/005G06T15/06
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 12,541,908
App. No.
18/587,761
Granted
Feb 3, 2026
Kind
B2
Abstract

Apparatus and method for stack throttling. For example, one embodiment of an apparatus comprises: execution circuitry comprising a plurality of functional units to execute a plurality of ray shaders and generate a plurality of primary rays and a corresponding plurality of ray messages; a first in first out (FIFO) buffer to queue the ray messages generated by the EUs; a cache to store one or more of the plurality of primary rays; a memory-backed stack to store a first subset of the plurality of ray messages in a corresponding plurality of entries; memory-backed stack management circuitry to either store a second subset of the plurality of ray messages to the memory-backed stack, or to temporarily store the one or more the second subset of the plurality of ray messages to a memory subsystem based, at least in part, on a number of entries currently occupied by ray messages in the memory-backed stack; and ray traversal circuitry to read a next ray message from the memory-backed stack, retrieve a next primary ray identified by the ray message from the cache or a memory subsystem, and perform traversal operations on the next primary ray.

Claims (42)

1 . An apparatus comprising:

a plurality of functional units to generate a plurality of rays and a plurality of ray messages corresponding to the plurality of rays, wherein a ray message corresponding to a ray within the plurality of rays includes a pointer to the ray and data which ray traversal circuitry uses to read and process the ray;

a buffer to queue the plurality of ray messages generated by the plurality of functional units;

a cache to store one or more of the plurality of rays;

a storage to store one or more ray messages of the plurality of ray messages in a corresponding plurality of entries, wherein a determination of storing a ray message to the storage is based on a number of entries currently occupied by ray messages in the storage; and

the ray traversal circuitry to read a next ray message from the storage, retrieve a next ray identified by the next ray message and perform traversal operations on the next ray;

wherein shader dispatch to the plurality of functional units is based on ray message occupancy in the buffer or the storage.

2 . The apparatus of claim 1 , wherein the ray traversal circuitry is to perform the traversal operations on rays that are obtained in alternative ray banks to be alternated based on a clock cycle.

3 . The apparatus of claim 2 , wherein the ray traversal circuitry is to track untraversed rays in each of the alternative ray banks.

4 . The apparatus of claim 1 , further comprising:

a ray compactor coupled to the plurality of functional units and to pack the plurality of ray messages within message slots to be sent to the buffer.

5 . The apparatus of claim 1 , wherein older ray messages in the storage are to be stored off to a memory subsystem based on occupancy of the storage.

6 . The apparatus of claim 1 , wherein the shader dispatch is throttled based on the ray message occupancy in the storage or the buffer being over one or more threshold values.

7 . The apparatus of claim 6 , wherein the one or more threshold values comprise a first maximum storage value indicating a maximum number of entries to be accessible to the plurality of functional units to execute a plurality of shaders.

8 . The apparatus of claim 6 , wherein the one or more threshold values further comprise a first minimum storage value indicating a minimum number of entries to be accessible to the plurality of functional units to execute a plurality of shaders.

9 . A method comprising:

generating, by a plurality of functional units, a plurality of rays and a plurality of ray messages corresponding to the plurality of rays, wherein a ray message corresponding to a ray within the plurality of rays includes a pointer to the ray and data which ray traversal circuitry uses to read and process the ray;

queuing to a buffer the plurality of ray messages generated by the plurality of functional units;

storing to a cache one or more of the plurality of rays;

storing to a storage one or more ray messages of the plurality of ray messages in a corresponding plurality of entries, wherein a determination of storing a ray message to the storage is based on a number of entries currently occupied by ray messages in the storage;

reading a next ray message from the storage;

retrieving a next ray identified by the next ray message; and

performing, by the ray traversal circuitry, traversal operations on the next ray, wherein shader dispatch to the plurality of functional units is based on ray message occupancy in one or more of the buffer and the storage.

10 . The method of claim 9 , wherein the traversal operations are performed on rays that are obtained in alternative ray banks to be alternated based on a clock cycle.

11 . The method of claim 9 , wherein the plurality of ray messages are packed within message slots to be sent to the buffer.

12 . The method of claim 9 , wherein older ray messages in the storage are to be stored off to a memory subsystem based on occupancy of the storage.

13 . The method of claim 9 , wherein the shader dispatch is throttled based on the ray message occupancy in the storage or the buffer being over one or more threshold values.

14 . A non-transitory machine-readable medium having program code stored thereon which, when executed by a machine, causes the machine to perform:

generating, by a plurality of functional units, a plurality of rays and a plurality of ray messages corresponding to the plurality of rays, wherein a ray message corresponding to a ray within the plurality of rays includes a pointer to the ray and data which ray traversal circuitry uses to read and process the ray;

queuing to a buffer the plurality of ray messages generated by the plurality of functional units;

storing to a cache one or more of the plurality of rays;

storing to a storage one or more ray messages of the plurality of ray messages in a corresponding plurality of entries, wherein a determination of storing a ray message to the storage is based on a number of entries currently occupied by ray messages in the storage;

reading a next ray message from the storage;

retrieving a next ray identified by the next ray message; and

performing, by the ray traversal circuitry, traversal operations on the next ray,

wherein shader dispatch to the plurality of functional units is based on ray message occupancy in one or more of the buffer and the storage.

15 . The non-transitory machine-readable medium of claim 14 , wherein the traversal operations are performed by the ray traversal circuitry on rays that are obtained in alternative ray banks to be alternated based on a clock cycle.

16 . The non-transitory machine-readable medium of claim 15 , wherein the ray traversal circuitry is to track untraversed rays in each of the alternative ray banks.

17 . The non-transitory machine-readable medium of claim 14 , wherein the plurality of ray messages are packed within message slots to be sent to the buffer.

18 . The non-transitory machine-readable medium of claim 14 , wherein older ray messages in the storage are to be stored off to a memory subsystem based on occupancy of the storage.

19 . The non-transitory machine-readable medium of claim 14 , wherein the shader dispatch is throttled based on the ray message occupancy in the storage or the buffer being over one or more threshold values.

20 . The non-transitory machine-readable medium of claim 19 , wherein the one or more threshold values comprise a first maximum storage value indicating a maximum number of entries to be accessible to the plurality of functional units to execute a plurality of shaders.

Continuity (2)
Continuation 16820483 · Mar 16, 2020
Related Publication 20240282042A1 · Aug 22, 2024
References Cited (25)
US 20070018980A1 · Berteig · 2007 [cited by examiner]
US 20090049452A1 · Kriegel et al. · 2009 [cited by applicant]
US 20090262132A1 · Peterson et al. · 2009 [cited by applicant]
US 20140049539A1 · Lee et al. · 2014 [cited by applicant]
US 20150228109A1 · Zimmerman · 2015 [cited by examiner]
US 20160042560A1 · Chang · 2016 [cited by applicant]
US 20160260193A1 · Richards et al. · 2016 [cited by applicant]
US 20180286005A1 · Koker et al. · 2018 [cited by applicant]
US 20180293099A1 · Clohset et al. · 2018 [cited by applicant]
US 20200050550A1 · Muthler et al. · 2020 [cited by applicant]
US 20200327716A1 · Yoon · 2020 [cited by applicant]
US 20210279832A1 · Havlir et al. · 2021 [cited by applicant]
CN 109327403A · 2019 [cited by applicant]
JP 2011515766A · 2011 [cited by applicant]
JP 2014038623A · 2014 [cited by applicant]
WO 2009117691A2 · 2009 [cited by applicant]
WO 2018176435A1 · 2018 [cited by applicant]
Little, “Ray Tracing Large Distributed Datasets Using Ray Caches,” (Dec. 2011), pp. 40-41 (Year: 2011). [cited by examiner]
Notice of Allowance, TW App. No. 109144340, Oct. 25, 2024, 3 pages (1 page of English Translation and 2 pages of Original Document). [cited by applicant]
Decision to Grant, JP App. No. 2020-212140, Mar. 4, 2025, 5 pages (2 pages of English Translation and 3 pages of Original Document). [cited by applicant]
Laine, Samuli, “Restart Trail for Stackless BVH Traversal”, High Performance Graphics, 2010, 5 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 16/820,483, Jun. 6, 2023, 17 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 16/820,483, Oct. 12, 2023, 9 pages. [cited by applicant]
Official Letter with Search Report, TW App. No. 109144340, Jun. 11, 2024, 8 pages (1 page of English Translation of Search Report and 7 pages of Original Document). [cited by applicant]
Office Action, JP App. No. 2020-212140, Nov. 5, 2024, 5 pages (2 pages of English Translation and 3 pages of Original Document). [cited by applicant]