IP Library › Granted Patent US 12,333,284
Granted Patent B2
US 12,333,284 · App. 18/648,583 · Granted Jun 17, 2025

Nested loop control

Inventors: Kai Chirca (Dallas, TX); Timothy D. Anderson (University Park, TX); Todd T. Hahn (Sugar Land, TX); Alan L. Davis (Sugar Land, TX)
Assignee: Texas Instruments Incorporated
G06F8/433G06F5/06G06F9/30065
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,333,284
App. No.
18/648,583
Granted
Jun 17, 2025
Kind
B2
Abstract

A method for compiling and executing a nested loop includes initializing a nested loop controller with an outer loop count value and an inner loop count value. The nested loop controller includes a predicate FIFO. The method also includes coalescing the nested loop and, during execution of the coalesced nested loop, causing the nested loop controller to populate the predicate FIFO and executing a get predicate instruction having an offset value, where the get predicate returns a value from the predicate FIFO specified by the offset value. The method further includes predicating an outer loop instruction on the returned value from the predicate FIFO.

Claims (79)

1. A circuit device comprising:

a set of functional units configured to execute a set of instructions associated with a loop;

a memory device configured to store a set of predicate values associated with the loop; and

a selection circuit coupled to the memory device configured to provide a predicate value of the set of predicate values from the memory device, wherein the set of functional units is configured to determine whether to execute an instruction of the set of instructions based on the predicate value.

2. The circuit device of claim 1 , wherein:

the instruction is a first instruction; and

the selection circuit is configured to provide the predicate value based on a second instruction that specifies the predicate value from among the set of predicate values.

3. The circuit device of claim 2 , wherein:

the circuit device further comprises a register; and

the second instruction specifies to store the predicate value in the register.

4. The circuit device of claim 1 , wherein the memory device is a first-in-first-out (FIFO) memory device.

5. The circuit device of claim 1 , wherein the selection circuit includes a multiplexer coupled to the memory device and configured to select the predicate value from among the set of predicate values stored in the memory device.

6. The circuit device of claim 1 , wherein:

the predicate value is a first predicate value;

the circuit device further comprises a comparator coupled to the memory device and configured to push a second predicate value into the set of predicate values stored in the memory device; and

the second predicate value is based on whether an iteration of the loop has been completed.

7. The circuit device of claim 6 further comprising a loop counter coupled to the comparator, wherein the comparator is configured to determine whether the iteration of the loop has been completed based on the loop counter.

8. The circuit device of claim 1 , wherein:

the loop is a first loop;

the set of instructions is associated with a second loop;

the memory device is a first memory device;

the set of predicate values is a first set of predicate values;

the circuit device further comprises a second memory device configured to store a second set of predicate values associated with the second loop;

the predicate value is a first predicate value; and

the selection circuit is configured to provide a second predicate value of the second set of predicate values from the second memory device.

9. The circuit device of claim 8 , wherein:

the instruction is a first instruction; and

the selection circuit is configured to provide the first predicate value based on a second instruction that includes a field that specifies a loop from among the first loop and the second loop.

10. The circuit device of claim 8 , wherein:

the first loop is an inner loop; and

the second loop is an outer loop.

11. A circuit device comprising:

a memory configured to store a set of instructions that is associated with a loop;

a set of functional units coupled to the memory and configured to execute the set of instructions;

a loop counter associated with the loop;

a comparator coupled to the loop counter;

a memory device coupled to the comparator and configured to store a set of predicate values associated with the loop; and

a selection circuit coupled to the memory device configured to provide a predicate value of the set of predicate values from the memory device, wherein the set of functional units is configured to determine whether to execute an instruction of the set of instructions based on the predicate value.

12. The circuit device of claim 11 , wherein the selection circuit is configured to provide the predicate value based on a get predicate instruction that specifies the predicate value from among the set of predicate values.

13. The circuit device of claim 12 , wherein:

the circuit device further comprises a register; and

the get predicate instruction specifies to store the predicate value in the register.

14. The circuit device of claim 11 , wherein:

the memory device is a first-in-first-out buffer;

the memory device includes a set of outputs; and

the selection circuit includes a multiplexer coupled to the set of outputs of the memory device.

15. The circuit device of claim 11 , wherein:

the predicate value is a first predicate value;

the comparator is configured to push a second predicate value into the set of predicate values stored in the memory device; and

the second predicate value is based on whether an iteration of the loop has been completed.

16. The circuit device of claim 11 , wherein:

the loop is a first loop;

the set of instructions is associated with a second loop;

the memory device is a first memory device;

the set of predicate values is a first set of predicate values;

the circuit device further comprises a second memory device configured to store a second set of predicate values associated with the second loop;

the predicate value is a first predicate value; and

the selection circuit is configured to provide a second predicate value of the second set of predicate values from the second memory device.

17. A method comprising:

storing a set of predicate values in a memory device, wherein the set of predicate values are associated with a loop;

receiving a processor instruction associated with the loop;

selecting a predicate value from the set of predicate values; and

determining whether to perform the processor instruction based on the predicate value.

18. The method of claim 17 , wherein:

the processor instruction is a first processor instruction; and

the selecting of the predicate value is based on a second processor instruction that specifies the predicate value from among the set of predicate values.

19. The method of claim 18 , wherein:

the method further comprises storing the predicate value in a register; and

the second processor instruction specifies the register.

20. The method of claim 17 , wherein:

the loop is an inner loop;

the set of predicate values is a first set of predicate values;

the memory device is a first memory device; and

the method further comprises storing a second set of predicate values in a memory device, wherein the second set of predicate values are associated with an outer loop that includes the inner loop.

21. The method of claim 17 , wherein:

the loop is an outer loop that includes an inner loop;

the set of predicate values is a first set of predicate values;

the memory device is a first memory device; and

the method further comprises storing a second set of predicate values in a memory device, wherein the second set of predicate values are associated with the inner loop.

Continuity (4)
Continuation 17942239 · Sep 12, 2022
Continuation 16983429 · Aug 3, 2020
Continuation 16422845 · May 24, 2019
Related Publication 20240281231A1 · Aug 22, 2024
References Cited (22)
US 4156920A · Winograd · 1979 [cited by applicant]
US 5473557A · Harrison et al. · 1995 [cited by applicant]
US 5958048A · Babaian et al. · 1999 [cited by applicant]
US 6029002A · Afifi et al. · 2000 [cited by applicant]
US 6192515B1 · Doshi et al. · 2001 [cited by applicant]
US 6304960B1 · Yeh · 2001 [cited by examiner]
US 6820250B2 · Muthukumar et al. · 2004 [cited by applicant]
US 7945768B2 · Essick, IV et al. · 2011 [cited by applicant]
US 10339057B2 · Zbiciak · 2019 [cited by applicant]
US 10732945B1 · Chirca et al. · 2020 [cited by applicant]
US 20030120905A1 · Stotzer et al. · 2003 [cited by applicant]
US 20040015934A1 · Muthukumar et al. · 2004 [cited by applicant]
US 20050223380A1 · Chun et al. · 2005 [cited by applicant]
US 20080114975A1 · Yen · 2008 [cited by applicant]
US 20080141013A1 · Klima et al. · 2008 [cited by applicant]
US 20090217248A1 · Bently et al. · 2009 [cited by applicant]
US 20090327674A1 · Codrescu · 2009 [cited by examiner]
US 20140115302A1 · Higham et al. · 2014 [cited by applicant]
US 20160092230A1 · Chen et al. · 2016 [cited by applicant]
US 20180173528A1 · Zbiciak · 2018 [cited by applicant]
US 20180276275A1 · Dou et al. · 2018 [cited by applicant]
US 20180373509A1 · Zhang et al. · 2018 [cited by applicant]