Converting a stream of data using a lookaside buffer
AssigneeTexas Instruments Incorporated
InventorJoseph Raymond Michael Zbiciak
Life of this patent
Estimating the term…
Abstract
A stream of data is accessed from a memory system by an autonomous memory access engine, converted on the fly by the memory access engine, and then presented to a processor for data processing. A portion of a lookup table (LUT) containing converted data elements is preloaded into a lookaside buffer associated with the memory access engine. As the stream of data elements is fetched from the memory system each data element in the stream of data elements is replaced with a respective converted data element obtained from the LUT in the lookaside buffer according to a content of each data element to thereby form a stream of converted data elements. The stream of converted data elements is then propagated from the memory access engine to a data processor.
Claims20
A device comprising:
- a first memory configured to store a first data stream that includes a first set of data elements;
- a processor core configured to provide an instruction to read the first data stream;
- a memory controller coupled between the first memory and the processor core that includes:
- an address generator configured to generate a set of addresses associated with the first data stream;
- an interface coupled to the first memory to retrieve the first set of data elements from the first memory using the set of addresses;
- and
- a second memory configured to store a table, wherein the memory controller is configured to:
- determine a second set of data elements of a second data stream by:
- querying the table based on the first set of data elements by:
- determining a respective address for each data element of the first set of data elements;
- and
- querying the table based on the respective address to determine a respective data element of the second set of data elements;
- and
- provide the second set of data elements to the processor core.
A device comprising:
- a first memory configured to store a first data stream that includes a first set of data elements;
- a processor core configured to provide an instruction to read the first data stream;
- a memory controller coupled between the first memory and the processor core that includes:
- an address generator configured to generate a set of addresses associated with the first data stream;
- an interface coupled to the first memory to retrieve the first set of data elements from the first memory using the set of addresses;
- and
- a second memory configured to store a table, wherein the memory controller is configured to:
- determine a second set of data elements of a second data stream by querying the table based on the first set of data elements;
- and
- provide the second set of data elements to the processor core, wherein:
- the first set of data elements is compressed;
- and
- the second set of data elements is uncompressed.
A device comprising:
- a first memory configured to store a first data stream that includes a first set of data elements;
- a processor core configured to provide an instruction to read the first data stream;
- a memory controller coupled between the first memory and the processor core that includes:
- an address generator configured to generate a set of addresses associated with the first data stream;
- an interface coupled to the first memory to retrieve the first set of data elements from the first memory using the set of addresses;
- and
- a second memory configured to store a table, wherein the memory controller is configured to:
- use a direct memory access (DMA) channel to store the table in the second memory:
- determine a second set of data elements of a second data stream by querying the table based on the first set of data elements;
- and
- provide the second set of data elements to the processor core.
A device comprising:
- a first memory configured to store a first data stream that includes a first set of data elements;
- a processor core configured to provide an instruction to read the first data stream;
- a memory controller coupled between the first memory and the processor core that includes:
- an address generator configured to generate a set of addresses associated with the first data stream;
- an interface coupled to the first memory to retrieve the first set of data elements from the first memory using the set of addresses;
- and
- a second memory configured to store a table, wherein the memory controller is configured to:
- determine a second set of data elements of a second data stream by querying the table based on the first set of data elements;
- and
- provide the second set of data elements to the processor core;
- wherein:
- the second memory is configured to store a portion of the table at a time;
- the table includes a first portion and a second portion;
- and
- the memory controller is configured to, when the second memory stores the first portion and a query of the table misses in the first portion, cause the second portion to be stored in the second memory.
A device comprising:
- a first memory configured to store a first data stream that includes a first set of data elements, wherein the first memory is a cache memory;
- a processor core configured to provide an instruction to read the first data stream;
- a memory controller coupled between the first memory and the processor core that includes:
- an address generator configured to generate a set of addresses associated with the first data stream;
- an interface coupled to the first memory to retrieve the first set of data elements from the first memory using the set of addresses;
- and
- a second memory configured to store a table, wherein the memory controller is configured to:
- determine a second set of data elements of a second data stream by querying the table based on the first set of data elements;
- and
- provide the second set of data elements to the processor core.
A device comprising:
- a first memory configured to store a first data stream that includes a first set of data elements;
- a processor core configured to provide an instruction to read the first data stream;
- a memory controller coupled between the first memory and the processor core that includes:
- an address generator configured to generate a set of addresses associated with the first data stream;
- an interface coupled to the first memory to retrieve the first set of data elements from the first memory using the set of addresses;
- and
- a second memory configured to store a table, wherein the memory controller is configured to:
- determine a second set of data elements of a second data stream by querying the table based on the first set of data elements;
- and
- provide the second set of data elements to the processor core;
- wherein:
- the instruction to read the first data stream specifies a formatting operation;
- and
- the memory controller includes a formatting circuit coupled to the second memory and configured to apply the formatting operation to the second set of data elements prior to the second set of data elements being provided to the processor core.
A device comprising:
- a memory controller configured to couple to a processor core and a first memory, wherein:
- the memory controller is configured to receive an instruction to read a first set of data elements:
- the memory controller includes:
- an interface configured to retrieve the first set of data elements from the first memory;
- and
- a second memory configured to store a table;
- and
- the memory controller is further configured to:
- determine a second set of data elements by querying the table based on the first set of data elements;
- and
- provide the second set of data elements to the processor core, wherein:
- the first set of data elements is compressed;
- and
- the second set of data elements is uncompressed.
A method comprising:
- receiving an instruction to read a first set of data elements;
- retrieving the first set of data elements from a first memory:
- determining a second set of data elements by querying a table stored in a second memory based on the first set of data elements by:
- determining a respective address for each data element of the first set of data elements;
- and
- querying the table based on the respective address to determine a respective data element of the second set of data elements;
- and
- providing the second set of data elements to a processor core.
Dependencies are inferred from the claim text.