IP Library Granted Patent US 12,379,925
Granted Patent B2
US 12,379,925 · App. 18/614,947 · Granted Aug 5, 2025

Exposing valid byte lanes as vector predicates to CPU

Inventors: Joseph Zbiciak (San Jose, CA); Son H. Tran (Murphy, TX)
Assignee: Texas Instruments Incorporated
G06F9/30038G06F9/3004G06F9/30072G06F9/3013
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,379,925
App. No.
18/614,947
Granted
Aug 5, 2025
Kind
B2
Abstract

A streaming engine employed in a digital data processor specifies a fixed read only data stream. Once fetched data elements in the data stream are disposed in lanes in a stream head register in the fixed order. Some lanes may be invalid, for example when the number of remaining data elements are less than the number of lanes in the stream head register. The streaming engine automatically produces a valid data word stored in a stream valid register indicating lanes holding valid data. The data in the stream valid register may be automatically stored in a predicate register or otherwise made available. This data can be used to control vector SIMD operations or may be combined with other predicate register data.

Claims (68)

1. A device comprising:

a register file configured to store a first set of data values;

a predicate register file;

a set of functional units coupled to the register file and the predicate register file; and

a memory control circuit coupled to the set of functional units, the register file, and the predicate register file, wherein:

the set of functional units is configured to:

perform a first operation on the first set of data values;

based on the first operation, store a first predicate value in the predicate register file; and

request a second set of data values from the memory control circuit; and

the memory control circuit is configured to, based on the requesting by the set of functional units:

provide a third set of data values; and

cause a second predicate value to be stored in the predicate register file, wherein the second predicate value specifies whether the third set of data values includes a valid portion of the second set of data values.

2. The device of claim 1 , wherein:

the memory control circuit includes:

a head register configured to store the third set of data values; and

a valid register configured to store the second predicate value.

3. The device of claim 1 further comprising an instruction decoder coupled to the set of functional units and configured to:

receive a first instruction that specifies the first operation;

based on the first instruction, cause the set of functional units to perform the first operation on the first set of data values;

receive a second instruction that specifies a second operation; and

cause the set of functional units to determine whether to perform the second instruction based on at least one of: the first predicate value or the second predicate value.

4. The device of claim 1 , wherein:

the set of functional units includes a predicate functional unit configured to perform a third operation on at least one of: the first predicate value or the second predicate value.

5. The device of claim 1 further comprising a cache memory coupled to the memory control circuit and configured to store the second set of data values.

6. The device of claim 5 , wherein:

the set of functional units is configured to request the second set of data values by providing a request that specifies a size of the second set of data values; and

the second predicate value is based on the size of the second set of data values.

7. The device of claim 6 , wherein:

the third set of data values includes a subset that is not stored in the cache memory;

the request specifies whether the subset of the third set of data values is valid; and

the second predicate value is based on whether the subset of the third set of data values is valid.

8. The device of claim 7 , wherein the request specifies whether to generate the subset of the third set of data values by duplicating a portion of the second set of data values or by including a pre-determined value.

9. The device of claim 5 , wherein the cache memory is a level-two (L2) cache memory.

10. The device of claim 9 , wherein the memory control circuit is configured to retrieve the second set of data values from the L2 cache memory and to provide the second set of data values to the set of functional units via a datapath that does not include a level-one (L1) cache of a cache hierarchy.

11. The device of claim 1 , wherein:

the set of functional units includes a first functional unit; and

a size of the third set of data values is based on a number of lanes of the first functional unit.

12. A device comprising:

a processor that includes:

a register file configured to store a first set of data;

a predicate register file; and

a set of functional units coupled to the register file and the predicate register file and configured to:

perform a first operation on the first set of data;

based on the first operation, store a first predicate value in the predicate register file; and

request a second set of data;

a memory configured to store a first subset of the second set of data; and

a memory controller coupled between the processor and the memory that includes:

a head register; and

a valid register, wherein the memory controller is configured to:

retrieve the first subset of the second set of data from the memory;

produce a second subset of the second set of data;

provide the second set of data to the processor via the head register; and

cause, via the valid register, a second predicate value associated with the second subset of the second set of data to be stored in the predicate register file, wherein the second predicate value specifies whether the second subset of the second set of data is valid.

13. The device of claim 12 , wherein the processor includes an instruction decoder coupled to the set of functional units and configured to:

receive a first instruction that specifies the first operation;

based on the first instruction, cause the set of functional units to perform the first operation on the first set of data;

receive a second instruction that specifies a second operation; and

cause the set of functional units to determine whether to perform the second instruction based on at least one of: the first predicate value or the second predicate value.

14. The device of claim 12 , wherein:

the set of functional units includes a predicate functional unit configured to perform a third operation on at least one of: the first predicate value or the second predicate value.

15. The device of claim 12 , wherein the set of functional units is configured to request the second set of data by providing a request that specifies a size of the first subset of the second set of data.

16. The device of claim 15 , wherein:

the request specifies whether the second subset is valid; and

the second predicate value is based on whether the second subset is valid.

17. The device of claim 15 , wherein the request specifies whether to generate the second subset of the second set of data by duplicating a portion of the first subset or by including a pre-determined value.

18. The device of claim 12 , wherein the memory is a cache memory.

19. The device of claim 18 , wherein the cache memory is a level-two (L2) cache memory.

20. The device of claim 19 , wherein the memory controller is configured to retrieve the first subset of the second set of data from the L2 cache memory and to provide the second set of data to the set of functional units via a datapath that does not include a level-one (L1) cache of a cache hierarchy.

Continuity (3)
Continuation 17687780 · Mar 7, 2022
Continuation 15635449 · Jun 28, 2017
Related Publication 20240231827A1 · Jul 11, 2024
References Cited (6)
US 5809272A · Thusoo et al. · 1998 [cited by applicant]
US 11269638B2 · Zbiciak et al. · 2022 [cited by applicant]
US 11941399B2 · Zbiciak · 2024 [cited by examiner]
US 20140189296A1 · Ould-Ahmed-Vall et al. · 2014 [cited by applicant]
US 20150019840A1 · Anderson et al. · 2015 [cited by applicant]
US 20150154024A1 · Anderson et al. · 2015 [cited by applicant]