IP Library › Granted Patent US 12,174,759
Granted Patent B2
US 12,174,759 · App. 17/240,492 · Granted Dec 24, 2024

Interpolation acceleration in a processor memory interface

Inventors: Bryan Hornung (Plano, TX); Tony M. Brewer (Plano, TX); Douglas Vanesko (Dallas, TX); Patrick Estep (Rowlett, TX)
Assignee: Micron Technology, Inc.
G06F13/1668G01S7/41G01S13/9021G01S13/933G06F9/3001G06F9/3887G06N20/00
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,174,759
App. No.
17/240,492
Granted
Dec 24, 2024
Kind
B2
Abstract

Linear interpolation is performed within a memory system. The memory system receives a floating-point point index into an integer-indexed memory array. The memory system accesses the two values of the two adjacent integer indices, performs the linear interpolation, and provides the resulting interpolated value. In many system architectures, the critical limitation on system performance is the data transfer rate between memory and processing elements. Accordingly, reducing the amount of data transferred improves overall system performance and reduces power consumption.

Claims (102)

1. A system comprising:

a memory array; and

a memory controller coupled to the memory array and configured to perform operations comprising:

receiving, via a bus, a command comprising a floating-point index into an integer-indexed array of values stored in the memory array, the floating-point index having a value between a first integer index of the array of values and a second integer index of the array of values;

determining, based on the floating-point index, a first address of a first value of the array of values and a second address of a second value of the array of values, the first address corresponding to the first integer index, the second address corresponding to the second integer index;

accessing, from the memory array, the first value from the first address and the second value from the second address;

determining, based on the floating-point index, a first weight for the first value and a second weight for the second value;

determining, based on the first weight, the first value, the second weight, and the second value, an interpolated value; and

providing, in response to the command, the interpolated value.

2. The system of claim 1 , further comprising:

circuits to control a vehicle; and

one or more processing elements configured to perform operations comprising:

using the interpolated value to generate an image from synthetic aperture radar (SAR) pulse data;

providing the image to a trained machine learning model; and

using a result from the trained machine learning model to generate inputs to the circuits to control the vehicle.

3. The system of claim 2 , wherein:

the one or more processing elements are further configured to cause interpolated values for generation of the image to be determined by multiple memory controllers connected in a hybrid threading fabric.

4. The system of claim 1 , wherein:

the bus is part of a network on chip (NOC); and

the command is received from a host processor.

5. The system of claim 1 , wherein the providing of the interpolated value comprises providing the interpolated value via a network on chip (NOC) hub edge to a hybrid threading processor (HTP).

6. The system of claim 1 , wherein the memory controller is a memory controller chiplet of a computer near memory (CNM) system.

7. The system of claim 1 , wherein:

the system further comprises a cache memory; and

the operations further comprise:

receiving, prior to the receiving of the command, a second command that indicates an address of a beginning of the array of values and a number of values in the array of values; and

in response to the second command, storing the address and the number of values in the cache memory.

8. The system of claim 1 , wherein:

the received command is a single instruction/multiple data (SIMD) command that comprises multiple floating-point indices into multiple arrays of values stored in the memory array, the multiple floating-point indices comprising the floating-point index.

9. The system of claim 8 , wherein:

the SIMD command is pipelined such that at least one of the multiple floating-point indices is processed each clock cycle.

10. The system of claim 1 , wherein the operations further comprise:

performing bounds-checking on the floating-point index.

11. The system of claim 1 , wherein:

the floating-point index is a real number stored using a first number of bits; and

the provided interpolated value is a complex number comprising a real portion stored using a second number of bits and an imaginary portion stored using the second number of bits, the second number of bits being half the first number of bits.

12. The system of claim 11 , wherein:

the first number of bits is 64 bits; and

the second number of bits is 32 bits.

13. The system of claim 1 , wherein the determining of the interpolated value comprises:

determining a first product of the first value with the first weight;

determining a second product of the second value with the second weight; and

determining the interpolated value as a sum of the first product and the second product.

14. A non-transitory machine-readable medium that stores instructions that, when executed by a system, cause the system to perform operations comprising:

receiving, via a bus, a command comprising a floating-point index into an integer-indexed array of values stored in a memory array, the floating-point index having a value between a first integer index of the array of values and a second integer index of the array of values;

determining, based on the floating-point index, a first address of a first value of the array of values and a second address of a second value of the array of values, the first address corresponding to the first integer index, the second address corresponding to the second integer index;

accessing, from the memory array, the first value from the first address and the second value from the second address;

determining, based on the floating-point index, a first weight for the first value and a second weight for the second value;

determining, based on the first weight, the first value, the second weight, and the second value, an interpolated value; and

providing, in response to the command, the interpolated value.

15. The non-transitory machine-readable medium of claim 14 , wherein the operations are for a memory controller chiplet of a computer near memory (CNM) system.

16. The non-transitory machine-readable medium of claim 14 , wherein the operations further comprise:

generating an image from synthetic aperture radar (SAR) pulse data, using the interpolated value;

providing the image to a trained machine learning model; and

using a result from the trained machine learning model to generate inputs to circuits to control a vehicle.

17. The non-transitory machine-readable medium of claim 14 , wherein the operations further comprise:

receiving, prior to the receiving of the command, a second command that indicates an address of a beginning of the array of values and a number of values in the array of values; and

in response to the second command, storing the address and the number of values in a cache memory.

18. The non-transitory machine-readable medium of claim 14 , wherein:

the received command is a single instruction/multiple data (SIMD) command that comprises multiple floating-point indices into multiple arrays of values stored in the memory array, the multiple floating-point indices comprising the floating-point index.

19. The non-transitory machine-readable medium of claim 18 , wherein:

the SIMD command is pipelined such that at least one of the multiple floating-point indices is processed each clock cycle.

20. The non-transitory machine-readable medium of claim 14 , wherein the operations further comprise:

performing bounds-checking on the floating-point index.

21. The non-transitory machine-readable medium of claim 14 , wherein:

the floating-point index is a real number stored using a first number of bits; and

the provided interpolated value is a complex number comprising a real portion stored using a second number of bits and an imaginary portion stored using the second number of bits, the second number of bits being half the first number of bits.

22. The non-transitory machine-readable medium of claim 21 , wherein:

the first number of bits is 64 bits; and

the second number of bits is 32 bits.

23. A method comprising:

receiving, via a bus, a command comprising a floating-point index into an integer-indexed array of values stored in a memory array, the floating-point index having a value between a first integer index of the array of values and a second integer index of the array of values;

determining, based on the floating-point index, a first address of a first value of the array of values and a second address of a second value of the array of values, the first address corresponding to the first integer index, the second address corresponding to the second integer index;

accessing, from the memory array, the first value from the first address and the second value from the second address;

determining, based on the floating-point index, a first weight for the first value and a second weight for the second value;

determining, based on the first weight, the first value, the second weight, and the second value, an interpolated value; and

providing, in response to the command, the interpolated value.

24. The method of claim 23 , further comprising:

using, by one or more processing elements, the interpolated value to generate an image from synthetic aperture radar (SAR) pulse data;

providing, by the one or more processing elements, the image to a trained machine learning model; and

using, by the one or more processing elements, a result from the trained machine learning model to generate inputs to circuits to control a vehicle.

25. The method of claim 24 , further comprising:

causing, by the one or more processing elements, interpolated values for generation of the image to be determined by multiple memory controllers connected in a hybrid threading fabric.

26. The method of claim 23 , wherein:

the bus is part of a network on chip (NOC); and

the command is received from a host processor.

27. The method of claim 23 , wherein the providing of the interpolated value comprises providing the interpolated value via a network on chip (NOC) hub edge to a hybrid threading processor (HTP).

28. The method of claim 23 , further comprising:

receiving, prior to the receiving of the command, a second command that indicates an address of a beginning of the array of values and a number of values in the array of values; and

in response to the second command, storing the address and the number of values in a cache memory.

29. The method of claim 23 , wherein:

the received command is a single instruction/multiple data (SIMD) command that comprises multiple floating-point indices into multiple arrays of values stored in the memory array, the multiple floating-point indices comprising the floating-point index.

30. The method of claim 29 , wherein:

the SIMD command is pipelined such that at least one of the multiple floating-point indices is processed each clock cycle.

31. The method of claim 23 , further comprising:

performing bounds-checking on the floating-point index.

32. The method of claim 23 , wherein:

the floating-point index is a real number stored using a first number of bits; and

the provided interpolated value is a complex number comprising a real portion stored using a second number of bits and an imaginary portion stored using the second number of bits, the second number of bits being half the first number of bits.

33. The method of claim 32 , wherein:

the first number of bits is 64 bits; and

the second number of bits is 32 bits.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE MISSING APPLICATION & FILING DATE IN THE EXECUTED ASSIGNMENT PREVIOUSLY RECORDED ON REEL 056485 FRAME 0537. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 23, 2021
From: HORNUNG, BRYAN; BREWER, TONY M.; VANESKO, DOUGLAS; ESTEP, PATRICK
To: MICRON TECHNOLOGY, INC.
Reel/Frame 057591/0613 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 9, 2021
From: HORNUNG, BRYAN; BREWER, TONY M.; VANESKO, DOUGLAS; ESTEP, PATRICK
To: MICRON TECHNOLOGY, INC.
Reel/Frame 056485/0537 →
Continuity (2)
Provisional Application 63168085 · Mar 30, 2021
Related Publication 20220318162A1 · Oct 6, 2022