IP Library Granted Patent US 11,954,358
Granted Patent B2
US 11,954,358 · App. 17/349,629 · Granted Apr 9, 2024

Cache management in a memory subsystem

Inventors: Chinnakrishnan Ballapuram (San Jose, CA); Akhila Gundu (San Jose, CA); Taeksang Song (San Jose, CA); Kimberly Judy Lobo (San Jose, CA); Saira S. Malik (Lafayette, IN)
Assignee: Micron Technology, Inc.
G06F3/0656G06F3/0604G06F3/0647G06F3/0659G06F3/0661G06F3/0688
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,954,358
App. No.
17/349,629
Granted
Apr 9, 2024
Kind
B2
Abstract

Methods, systems, and devices for cache management in a memory subsystem are described. An interface controller may include a first buffer and a second buffer. The interface controller may use the first and second buffers to facilitate operating a volatile memory as a cache for a non-volatile memory. During an access operation, the interface controller may use the buffer to transfer data between the volatile memory, non-volatile memory, and another device. In response to the access operation, the interface controller may use the second buffer to transfer second data from the volatile memory to the non-volatile memory.

Claims (83)

1. An apparatus, comprising:

a non-volatile memory;

a volatile memory comprising a plurality of banks; and

an interface controller coupled with the non-volatile memory and the volatile memory, the interface controller comprising, for each bank of the plurality of banks of the volatile memory, a respective first buffer of a plurality of first buffers of the interface controller and a respective second buffer of a plurality of second buffers of the interface controller, the respective first buffer and the respective second buffer both assigned to the each bank of the volatile memory, both configured for data transfers involving the each bank of the volatile memory, and both having a storage capacity that is equal to a page size of the volatile memory, the interface controller operable to:

receive a command from a host device to write first data to a memory address of the non-volatile memory, the memory address of the non-volatile memory associated with a set of memory cells in a bank of the plurality of banks of the volatile memory;

store the first data, based at least in part on the command, in the respective first buffer of the interface controller that is assigned to the bank of the volatile memory;

determine, after storing the first data in the respective first buffer of the interface controller that is assigned to the bank of the volatile memory, storage information for the set of memory cells in the bank of the volatile memory;

transfer, based at least in part on determining that the set of memory cells in the bank of the volatile memory stores second data, the second data from the set of memory cells in the bank of the volatile memory to the respective second buffer of the interface controller that is assigned to the bank of the volatile memory; and

transfer, after transferring the second data from the set of memory cells in the bank of the volatile memory to the respective second buffer of the interface controller that is assigned to the bank of the volatile memory, the first data from the respective first buffer of the interface controller that is assigned to the bank of the volatile memory to the set of memory cells in the bank of the volatile memory based at least in part on the determined storage information for the set of memory cells in the bank of the volatile memory.

2. The apparatus of claim 1 , wherein the interface controller is further operable to:

determine, based at least in part on the storage information, whether the set of memory cells stores the second data; and

transfer, based at least in part on determining that the set of memory cells stores the second data and transferring the second data to the respective second buffer, a subset of the second data from the respective second buffer to the non-volatile memory.

3. The apparatus of claim 2 , wherein the interface controller is further operable to:

determine whether the subset of the second data is different than corresponding data stored in the non-volatile memory; and

initiate a write operation to store the subset of the second data, from the respective second buffer of the interface controller that is assigned to the bank of the volatile memory, in the non-volatile memory based at least in part on determining that the subset of the second data is different than the corresponding data.

4. The apparatus of claim 2 , wherein the interface controller comprises an array that stores storage information for subsets of memory cells in the bank of the volatile memory, and wherein the interface controller is further operable to:

select a set of address bits included in the command; and

reference, based at least in part on the set of address bits, the array that stores storage information for subsets of memory cells in the bank of the volatile memory, wherein transferring the subset of the second data to the non-volatile memory is based at least in part on storage information for a subset of memory cells that stores the subset of the second data.

5. The apparatus of claim 1 , wherein the interface controller is further operable to:

determine, based at least in part on transferring the second data from the set of memory cells to the respective second buffer, that the set of memory cells is available to store the first data;

read the first data from the respective first buffer; and

initiate a write operation to store the first data in the set of memory cells of the volatile memory.

6. The apparatus of claim 1 , wherein the interface controller comprises an array that stores storage information for the bank of the volatile memory, and wherein the interface controller is further operable to:

select a set of address bits included in the command; and

reference the array that stores storage information for the bank of the volatile memory based at least in part on the set of address bits, wherein the storage information is determined based at least in part on referencing the array.

7. The apparatus of claim 1 , wherein the interface controller is further operable to:

transfer the first data from the respective first buffer to the non-volatile memory based at least in part on the command from the host device; and

initiate a write operation to store the first data at the memory address.

8. The apparatus of claim 1 , wherein the host device comprises a system-on-a-chip or a processor.

9. An apparatus, comprising:

a non-volatile memory;

a volatile memory comprising a plurality of banks; and

an interface controller coupled with the non-volatile memory and the volatile memory, the interface controller comprising, for each bank of the plurality of banks of the volatile memory, a respective first buffer of a plurality of first buffers of the interface controller and a respective second buffer of a plurality of second buffers of the interface controller, the respective first buffer and the respective second buffer both assigned to the each bank of the volatile memory, both configured for data transfers involving the each bank of the volatile memory, and both having a storage capacity that is equal to a page size of the volatile memory, the interface controller operable to:

receive a command from a host device to read first data from a memory address of the non-volatile memory, the memory address of the non-volatile memory associated with a set of memory cells in a bank of the plurality of banks of the volatile memory;

determine storage information for the set of memory cells in the bank of the volatile memory;

transfer, based at least in part on the storage information for the set of memory cells, the first data from the non-volatile memory to the respective first buffer of the interface controller that is assigned to the bank of the volatile memory; and

transfer, based at least in part on the storage information and determining that the set of memory cells in the volatile memory stores second data, the second data from the set of memory cells in the bank of the volatile memory to the respective second buffer of the interface controller that is assigned to the bank of the volatile memory.

10. The apparatus of claim 9 , wherein the interface controller is further operable to:

transfer the first data from the respective first buffer to the host device; and

transfer the first data from the respective first buffer to the set of memory cells based at least in part on transferring the second data from the set of memory cells to the respective second buffer.

11. The apparatus of claim 9 , wherein the interface controller is further operable to:

determine, based at least in part on the storage information, whether the set of memory cells in the volatile memory stores the first data, wherein the first data is transferred to the respective first buffer from the non-volatile memory based at least in part on determining that the set of memory cells does not store the first data; and

transfer the first data from the respective first buffer to the host device.

12. The apparatus of claim 9 , wherein the interface controller is further operable to:

determine, based at least in part on the storage information, whether the set of memory cells in the volatile memory stores the second data, wherein the first data is transferred to the respective first buffer from the non-volatile memory based at least in part on determining that the set of memory cells stores the second data.

13. The apparatus of claim 12 , wherein the interface controller is further operable to:

transfer a subset of the second data from the respective second buffer of the interface controller that is assigned to the bank of the volatile memory to the non-volatile memory based at least in part on the subset of the second data being different than corresponding data stored in the non-volatile memory; and

transfer the first data from the respective first buffer of the interface controller that is assigned to the bank of the volatile memory to the set of memory cells in the volatile memory.

14. The apparatus of claim 9 , wherein the interface controller is further operable to:

select a set of address bits included in the command; and

reference an array that stores storage information for the bank of the volatile memory based at least in part on the set of address bits, wherein the storage information is determined based at least in part on referencing the array.

15. An apparatus, comprising:

a non-volatile memory;

a volatile memory comprising a plurality of banks; and

an interface controller comprising:

a plurality of first buffers each having a capacity that is equal to a pane size of the volatile memory, wherein each first buffer of the plurality of first buffers is coupled with a respective bank of the plurality of banks of the volatile memory, assigned to the respective bank, configured for data transfers involving the respective bank, and configured to store data indicated by access commands for the respective bank; and

a plurality of second buffers each having a capacity that is equal to the pane size of the volatile memory, wherein each second buffer in the plurality of second buffers is coupled with a respective bank of the plurality of banks of the volatile memory, assigned to the respective bank, configured for data transfers involving the respective bank, and configured to store data for transfer between the respective bank of the volatile memory and the non-volatile memory.

16. The apparatus of claim 15 , further comprising:

a circuit coupled with a bus between the interface controller and a host device, the circuit configured to receive commands and addresses from the host device over the bus and configured to issue commands to one or more circuits that control access to the volatile memory and the non-volatile memory.

17. The apparatus of claim 15 , further comprising:

a first array configured to store storage information for sets of memory cells in the plurality of banks of the volatile memory; and

a second array coupled with the first array and configured to store update information for subsets of memory cells of the sets of memory cells.

18. The apparatus of claim 15 , wherein the interface controller further comprises:

a first circuit coupled with the non-volatile memory, the first circuit configured to issue commands to the non-volatile memory and transfer data between the non-volatile memory and the plurality of first buffers and the plurality of second buffers; and

a second circuit coupled with the volatile memory, the second circuit configured to issue commands to the volatile memory and transfer data between the volatile memory and the plurality of first buffers and plurality of second buffers.

19. The apparatus of claim 15 , wherein the interface controller, the plurality of first buffers, and the plurality of second buffers are on a first die, the volatile memory is on a second die, and the non-volatile memory is on a third die.

20. The apparatus of claim 15 , wherein the non-volatile memory, the volatile memory, and the interface controller are in a same package.

21. An apparatus, comprising:

a ferroelectric random access memory (FeRAM);

a dynamic random access memory (DRAM) comprising a plurality of banks; and

an interface controller coupled with the FeRAM and the DRAM, the interface controller comprising, for each bank of the plurality of banks of the DRAM, a respective first static random access memory (SRAM) buffer of a plurality of first SRAM buffers of the interface controller and a respective second SRAM buffer of a plurality of second SRAM buffers of the interface controller, the respective first SRAM buffer and the respective second SRAM buffer both assigned to the each bank of the DRAM, both configured for data transfers involving the each bank of the DRAM, and both having a storage capacity that is equal to a page size of the DRAM, the interface controller operable to:

receive a command from a system-on-a chip (SoC) to access a memory address of the FeRAM, the memory address of the FeRAM associated with a set of memory cells in a bank of the plurality of banks of the DRAM;

store first data associated with the command, based at least in part on the command, in the respective first SRAM buffer of the interface controller that is assigned to the bank of the DRAM;

transfer, based at least in part on determining that the set of memory cells in the bank of the DRAM stores second data, the second data from the set of memory cells in the bank of the DRAM to the respective second SRAM buffer of the interface controller that is assigned to the bank of the DRAM; and

transfer, based at least in part on the command and after transferring the second data from the bank of the DRAM to the respective second SRAM buffer and, the first data from the respective first SRAM buffer.

22. The apparatus of claim 21 , wherein the interface controller is further operable to:

transfer the second data from the respective second SRAM buffer to the FeRAM.

23. The apparatus of claim 22 , wherein the command comprises a read command for the first data, the interface controller further operable to:

determine whether the set of memory cells in the DRAM is storing the second data; and

transfer the first data from the FeRAM to the respective first SRAM buffer based at least in part on determining that the set of memory cells in the DRAM is storing the second data, wherein the first data is transferred from the respective first SRAM buffer to the set of memory cells in the DRAM.

24. The apparatus of claim 22 , wherein the command comprises a write command for the first data, the interface controller further operable to:

transfer the first data to the FeRAM for storage at the memory address; and

determine whether the set of memory cells in the DRAM is storing the second data, wherein the first data from the respective first SRAM buffer is transferred to the set of memory cells in the DRAM based at least in part on determining that the set of memory cells in the DRAM is storing the second data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2021
From: BALLAPURAM, CHINNAKRISHNAN; GUNDU, AKHILA; SONG, TAEKSANG; LOBO, KIMBERLY JUDY; MALIK, SAIRA S.
To: MICRON TECHNOLOGY, INC
Reel/Frame 056822/0376 →
Continuity (2)
Provisional Application 63042953 · Jun 23, 2020
Related Publication 20210397371A1 · Dec 23, 2021