IP Library › Granted Patent US 10,996,955
Granted Patent B2
US 10,996,955 · App. 16/451,330 · Granted May 4, 2021

Method for performing random read access to a block of data using parallel LUT read instruction in vector processors

Inventors: Jayasree Sankaranarayanan (Kerala, IN); Dipan Kumar Mandal (Bangalore, IN)
Assignee: Texas Instruments Incorporated
G06F9/383G06F9/3004G06F9/30036G06F9/30043
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,996,955
App. No.
16/451,330
Granted
May 4, 2021
Kind
B2
Abstract

This disclosure is directed to the problem of paralleling random read access within a reasonably sized block of data for a vector SIMD processor. The invention sets up plural parallel look up tables, moves data from main memory to each plural parallel look up table and then employs a look up table read instruction to simultaneously move data from each parallel look up table to a corresponding part a vector destination register. This enables data processing by vector single instruction multiple data (SIMD) operations. This vector destination register load can be repeated if the tables store more used data. New data can be loaded into the original tables if appropriate. A level one memory is preferably partitioned as part data cache and part directly addressable memory. The look up table memory is stored in the directly addressable memory.

Claims (57)

1. A method comprising:

identifying, by a processor configured to couple to a memory, a set of data accesses of data in the memory;

determining, by the processor, whether a first overhead of transferring the data from the memory to a cache as a look up table and accessing the data from the cache is less than a second overhead of accessing the data from the memory using a set of scalar loads; and

based on the first overhead being less than the second overhead:

setting up the look up table in the cache;

transferring the data associated with the set of data accesses to the look up table; and

accessing the data from the look up table.

2. The method of claim 1 , wherein the setting up of the look up table includes selecting an element size corresponding to a data size of the set of data accesses.

3. The method of claim 2 wherein the selecting of the element size includes selecting an element size greater than or equal to the data size of the set of data accesses.

4. The method of claim 1 further comprising, based on the first overhead being less than the second overhead, setting up a plurality of look up tables that includes the look up table.

5. The method of claim 1 , wherein the setting up of the look up table includes selecting a table size corresponding to a density of data elements.

6. The method of claim 5 , further comprising:

partitioning the cache into a directly addressable memory portion that contains the look up table.

7. The method of claim 1 , wherein the accessing of the data includes moving a first subset of the data from the look up table to a vector destination register, the method further comprising:

performing a first vector operation on the first subset of the data in the vector destination register;

after the performing of the first vector operation, determining whether to operate upon a second subset of the data stored in the look up table;

based on determining to operate upon the second subset of the data:

moving the second subset of the data from the look up table to the vector destination register; and

performing a second vector operation on the second subset of the data in the vector destination register.

8. The method of claim 1 further comprising:

receiving a table index from a vector source register;

recalling from the look up table, a data element corresponding to the table index; and

storing the recalled data element in a vector destination register at a location corresponding to a location of the table index in the vector source register.

9. The method of claim 8 , wherein:

the vector destination register includes sixteen data slots; and

upon selecting a number of tables equal to one, the step of storing the recalled data element in the vector destination register stores the recalled data element in a first data slot.

10. A device comprising:

a processor to couple to a memory, wherein the processor includes a cache and a vector destination register and is configured to:

receive a vector operation to perform on data in the memory; and

in response to the vector operation:

set up a look up table in the cache;

transfer a subset of the data from the memory to the look up table;

transfer the subset of the data from the look up table to the vector destination register; and

perform the vector operation on the subset of the data from the vector destination register.

11. The device of claim 10 , wherein:

the subset of the data is a first subset of the data;

the look up table is a first look up table; and

the processor is further configured to, in response to the vector operation:

set up a second look up table in the cache;

transfer a second subset of the data from the memory to the look up table;

transfer the second subset of the data from the look up table to the vector destination register; and

perform the vector operation on the second subset of the data from the vector destination register.

12. The device of claim 11 , wherein the processor is configured to transfer the first subset of the data and the second subset of the data from the look up table to the vector destination register in parallel.

13. The device of claim 10 , wherein the processor is further configured to, in response to the vector operation, set up a plurality of look up tables having a number based on a data width of the vector destination register.

14. The device of claim 10 , wherein:

the processor is further configured to, in response to the vector operation, determine an overhead associated with the set up of the look up table in the cache; and

the set up of the look up table, the transfer of the subset of the data from the memory to the look up table, and the transfer of the subset of the data from the look up table to the vector destination register are performed based on the overhead associated with the set up of the look up table in the cache.

15. The device of claim 10 , wherein:

the processor is further configured to, in response to the vector operation, determine an overhead associated with the transfer of the subset of the data from the memory to the look up table; and

the set up of the look up table, the transfer of the subset of the data from the memory to the look up table, and the transfer of the subset of the data from the look up table to the vector destination register are performed based on the overhead associated with the transfer of the subset of the data from the memory to the look up table.

16. The device of claim 10 , wherein:

the processor is further configured to, in response to the vector operation, determine an overhead associated with the transfer of the subset of the data from the look up table to the vector destination register; and

the set up of the look up table, the transfer of the subset of the data from the memory to the look up table, and the transfer of the subset of the data from the look up table to the vector destination register are performed based on the overhead associated with the transfer of the subset of the data from the look up table to the vector destination register.

17. The device of claim 10 , wherein the transfer of the subset of the data from the memory to the look up table is via direct memory access (DMA).

18. The device of claim 10 , wherein the cache includes a level one data cache.

19. The device of claim 10 , wherein a portion of the cache that includes the look up table is directly accessible.

20. The device of claim 10 , wherein the look up table has a table size based on a density of the data in the memory.

Priority Claims (1)
IN 5509/CHE/2014 · Nov 3, 2014 · national
Continuity (3)
Continuation 15991653 · May 29, 2018
Continuation 14920365 · Oct 22, 2015
Related Publication 20190377578A1 · Dec 12, 2019