IP Library Granted Patent US 11,372,804
Granted Patent B2
US 11,372,804 · App. 15/981,203 · Granted Jun 28, 2022

System and method of loading and replication of sub-vector values

Inventors: Eric Mahurin (Austin, TX); Erich Plondke (Austin, TX); David Hoyle (Austin, TX)
Assignee: Qualcomm Incorporated
G06F15/8076G06F9/30036G06F15/8092
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 11,372,804
App. No.
15/981,203
Granted
Jun 28, 2022
Kind
B2
Abstract

A processor includes a vector register configured to load data responsive to a special purpose load instruction. The processor also includes circuitry configured to replicate a selected sub-vector value from the vector register.

Claims (43)

1. A processor comprising:

a vector register configured to load data from a cache memory responsive to a special purpose load instruction; and

replication circuitry configured to, responsive to a vector instruction, independently of any vector register included within vector operation circuitry, and while retaining the data in the vector register, replicate a selected sub-vector value from the vector register and input multiple copies of the selected sub-vector value to the vector operation circuitry.

2. The processor of claim 1 , wherein the replication circuitry includes a multiplexor having an input coupled to the vector register and an output coupled to the vector operation circuitry, the multiplexor configured to select any sub-vector value from the vector register and to input the multiple copies of the selected sub-vector value to the vector operation circuitry independently of any vector register included within the vector operation circuitry.

3. The processor of claim 1 , wherein:

the cache memory comprises a higher-level cache and a separate lower-level cache; and

the special purpose load instruction is configured to cause loading of multiple scalar values in parallel from the higher-level cache into the vector register without transferring the multiple scalar values through the lower-level cache.

4. The processor of claim 1 , further comprising a second vector register, wherein the vector instruction corresponds to a vector multiply-accumulate instruction, and wherein the vector operation circuitry is configured to perform, responsive to the vector instruction, a vector multiply-accumulate operation using replicated sub-vector values and using sub-vector values in the second vector register.

5. The processor of claim 4 , further comprising a vector register file that includes the second vector register, and wherein the vector register is outside of the vector register file.

6. The processor of claim 4 , wherein the replication circuitry is further configured to replicate a second sub-vector value from the vector register in parallel with replicating the selected sub-vector value.

7. The processor of claim 6 , wherein the vector operation circuitry is configured to perform a second vector operation in parallel with performing the vector multiply-accumulate operation, the second vector operation using the second replicated sub-vector value.

8. The processor of claim 6 , wherein the replication circuitry is configured to apply an offset to a position in the vector register of the selected sub-vector value to select a position in the vector register of the second sub-vector value.

9. The processor of claim 8 , wherein the position of the selected sub-vector value is indicated by a loop parameter of a convolutional filter operation.

10. A method of operating a processor, the method comprising:

loading data from a cache memory into a vector register responsive to a special purpose load instruction; and

responsive to a vector instruction, independently of any vector register included within vector operation circuitry, and without altering the data in the vector register:

replicating a selected sub-vector value from the vector register; and

providing the replicated sub-vector values to the vector operation circuitry.

11. The method of claim 10 , further comprising accessing a scalar value from a scalar register, the scalar value indicating the selected sub-vector value.

12. The method of claim 10 , wherein:

the cache memory comprises a higher-level cache and a separate lower-level cache; and

the loading of the data into the vector register comprises loading multiple scalar values, in parallel, from the higher-level cache into the vector register without transferring the multiple scalar values through the lower-level cache.

13. The method of claim 10 , further comprising, responsive to the vector instruction:

performing a vector operation using the replicated sub-vector values and sub-vector values in a second vector register; and

storing results of the vector operation into a third vector register.

14. The method of claim 13 , further comprising replicating a second sub-vector value from the vector register in parallel with replicating the selected sub-vector value.

15. The method of claim 14 , further comprising performing a second vector operation in parallel with performing the vector operation, the second vector operation using the second replicated sub-vector value.

16. The method of claim 14 , further comprising applying an offset to a position in the vector register of the selected sub-vector value to select a position in the vector register of the second sub-vector value.

17. The method of claim 16 , wherein the position of the selected sub-vector value corresponds to a loop parameter of a convolutional filter operation.

18. An apparatus comprising:

means for performing a vector operation;

means for caching data, wherein the means for caching data comprises a higher-level means for caching data and a separate lower-level means for caching data;

means for storing data loaded from the means for caching data responsive to a special purpose load instruction, wherein the special purpose load instruction is configured to cause loading of multiple scalar values in parallel from the higher-level means for caching data into the means for storing data without transferring the multiple scalar values through the lower-level means for caching data; and

means for replicating a selected sub-vector value from the means for storing data and inputting multiple copies of the selected sub-vector value to the means for performing a vector operation responsive to a vector instruction, independently of any vector register included within the means for performing a vector operation, and while maintaining the data in the means for storing data.

19. The apparatus of claim 18 , further comprising second means for storing data, and wherein the means for performing a vector operation is configured to use the replicated sub-vector values and sub-vector values in the second means for storing data.

20. The apparatus of claim 18 , wherein the means for replicating and inputting is further configured to replicate a second sub-vector value from the means for storing data in parallel with replicating the selected sub-vector value.

21. A non-transitory computer-readable medium comprising instructions that, when executed by a processor, cause the processor to perform operations comprising:

loading data from a cache memory comprising a higher-level cache and a separate lower-level cache into a vector register responsive to a special purpose load instruction configured to cause loading of multiple scalar values in parallel from the higher-level cache into the vector register without transferring the multiple scalar values through the lower-level cache; and

responsive to a vector instruction, independently of any vector register included within vector operation circuitry, and while maintaining the data in the vector register, replicating a selected sub-vector value from the vector register and inputting multiple copies of the selected sub-vector value to the vector operation circuitry.

22. The non-transitory computer-readable medium of claim 21 , wherein the operations further comprise:

performing a vector operation using the replicated sub-vector values and using sub-vector values in a second vector register; and

storing results of the vector operation into a third vector register.

23. The non-transitory computer-readable medium of claim 21 , wherein a position of the selected sub-vector value in the vector register is indicated by a loop parameter of a convolutional filter operation.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2018
From: MAHURIN, ERIC; PLONDKE, ERICH; HOYLE, DAVID
To: QUALCOMM INCORPORATED
Reel/Frame 046424/0878 →
Continuity (1)
Related Publication 20190354508A1 · Nov 21, 2019