IP Library Granted Patent US 12,547,541
Granted Patent B2
US 12,547,541 · App. 17/475,984 · Granted Feb 10, 2026

Host managed hotness data utilized for cache evictions and/or insertions

Inventors: Shankar Natarajan (Folsom, CA); Chace Clark (Hilsboro, TX); Francis Corrado (Redwood City, CA); Shivashekar Muralishankar (Folsom, CA); Suresh Nagarajan (Folsom, CA)
Assignee: SK Hynix NAND Product Solutions Corp.
G06F12/0802G06F3/0604G06F3/0655G06F3/0679G06F2212/60
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,547,541
App. No.
17/475,984
Granted
Feb 10, 2026
Kind
B2
Abstract

Systems, apparatuses, and methods provide for a memory controller to manage cache evictions and/or insertions in a data server environment based at least in part on host managed hotness data. For example, a memory controller includes logic to receive a plurality of read and write requests from a host, where the plurality of read and write requests include an associated hotness data. A valid unit count of operational memory cells is maintained on a block-by-block basis for a plurality of memory blocks. A hotness index count is also maintained based at least in part on the hotness data on a block-by-block basis for the plurality of memory blocks. One or more memory blocks of the plurality of memory blocks are selected for eviction from a single level cell region to an x-level cell region based at least in part on the valid unit count and the hotness index count.

Claims (58)

1 . A semiconductor apparatus comprising:

one or more substrates; and

logic coupled to the one or more substrates, wherein the logic is implemented at least partly in one or more of configurable or fixed-functionality hardware logic, the logic to:

receive, via a memory controller of a memory device, a plurality of read and write requests from a host, wherein the plurality of read and write requests include an associated hotness data,

maintain, via the memory controller, a valid unit count, wherein the valid unit count comprises a count of valid operational memory cells on a block-by-block basis for a plurality of memory blocks,

maintain, via the memory controller, a hotness index count based at least in part on the hotness data, wherein the hotness index count is maintained on a block-by-block basis for the plurality of memory blocks,

determine, via the memory controller, a weighted composite value based at least in part on a valid unit weight value applied to the valid unit count and a hotness weight value applied to the hotness index count, and

select, via the memory controller, one or more memory blocks of the plurality of memory blocks for eviction based at least in part on the valid unit count, the hotness index count, and the weighted composite value, wherein the eviction is from a single level cell region to an x-level cell region.

2 . The semiconductor apparatus of claim 1 , wherein the hotness data is based at least in part on a Last Recently Used list of repeat cache hits associated with the plurality of read and write requests and based at least in part on a type of data associated with the plurality of read and write requests.

3 . The semiconductor apparatus of claim 1 , wherein the logic is further to:

select, via the memory controller, at least one memory block of the plurality of memory blocks for insertion based at least in part on the hotness data, wherein the insertion is from the x-level cell region to the single level cell region.

4 . A semiconductor apparatus comprising:

one or more substrates; and

logic coupled to the one or more substrates, wherein the logic is implemented at least partly in one or more of configurable or fixed-functionality hardware logic, the logic to:

receive, via a memory controller of a memory device, a plurality of read and write requests from a host, wherein the plurality of read and write requests include an associated hotness data,

maintain, via the memory controller, a valid unit count, wherein the valid unit count comprises a count of valid operational memory cells on a block-by-block basis for a plurality of memory blocks,

maintain, via the memory controller, a hotness index count based at least in part on the hotness data, wherein the hotness index count is maintained on a block-by-block basis for the plurality of memory blocks,

determine, via the memory controller, a priority level from a plurality of priority levels for eviction based at least in part on the valid unit count and the hotness index count, wherein:

one or more memory blocks of the plurality of memory blocks where the valid unit count is beneath a validity threshold and the hotness index count is beneath a hotness threshold are given a highest priority level for eviction from the plurality of priority levels;

one or more memory blocks of the plurality of memory blocks where the valid unit count is above the validity threshold and the hotness index count is above the hotness threshold are given a lowest priority level for eviction from the plurality of priority levels;

one or more memory blocks of the plurality of memory blocks where the valid unit count is above the validity threshold and the hotness index count is below the hotness threshold are given an intermediate priority level for eviction from the plurality of priority levels, wherein the intermediate priority level falls between the highest priority level and the lowest priority level;

one or more memory blocks of the plurality of memory blocks where the valid unit count is below the validity threshold and the hotness index count is above the hotness threshold are given a penultimate priority level for eviction from the plurality of priority levels, wherein the penultimate priority level falls between the intermediate priority level and the lowest priority level; and

select, via the memory controller, one or more memory blocks of the plurality of memory blocks for eviction based at least in part on the valid unit count, the hotness index count, and the priority level, wherein the eviction is from a single level cell region to an x-level cell region.

5 . A storage device comprising:

a memory array including a single-level cell region and an x-level cell region; and

a memory controller coupled to the memory array, the memory controller to:

receive, via the memory controller, a plurality of read and write requests from a host, wherein the plurality of read and write requests include an associated hotness data,

maintain, via the memory controller, a valid unit count, wherein the valid unit count comprises a count of valid operational memory cells on a block-by-block basis for a plurality of memory blocks,

maintain, via the memory controller, a hotness index count based at least in part on the hotness data, wherein the hotness index count is maintained on a block-by-block basis for the plurality of memory blocks,

determine, via the memory controller, a weighted composite value based at least in part on a valid unit weight value applied to the valid unit count and a hotness weight value applied to the hotness index count, and

select, via the memory controller, one or more memory blocks of the plurality of memory blocks for eviction based at least in part on the valid unit count, the hotness index count, and the weighted composite value, wherein the eviction is from a single level cell region to an x-level cell region.

6 . The storage device of claim 5 , wherein the hotness data is based at least in part on a Last Recently Used list of repeat cache hits associated with the plurality of read and write requests and based at least in part on a type of data associated with the plurality of read and write requests.

7 . The storage device of claim 5 , wherein the logic is further to:

select, via the memory controller, at least one memory block of the plurality of memory blocks for insertion based at least in part on the hotness data, wherein the insertion is from the x-level cell region to the single level cell region.

8 . A storage device comprising:

a memory array including a single-level cell region and an x-level cell region; and

a memory controller coupled to the memory array, the memory controller to:

receive, via the memory controller, a plurality of read and write requests from a host, wherein the plurality of read and write requests include an associated hotness data,

maintain, via the memory controller, a valid unit count, wherein the valid unit count comprises a count of valid operational memory cells on a block-by-block basis for a plurality of memory blocks,

maintain, via the memory controller, a hotness index count based at least in part on the hotness data, wherein the hotness index count is maintained on a block-by-block basis for the plurality of memory blocks,

determine, via the memory controller, a priority level from a plurality of priority levels for eviction based at least in part on the valid unit count and the hotness index count, wherein:

one or more memory blocks of the plurality of memory blocks where the valid unit count is beneath a validity threshold and the hotness index count is beneath a hotness threshold are given a highest priority level for eviction from the plurality of priority levels;

one or more memory blocks of the plurality of memory blocks where the valid unit count is above the validity threshold and the hotness index count is above the hotness threshold are given a lowest priority level for eviction from the plurality of priority levels;

one or more memory blocks of the plurality of memory blocks where the valid unit count is above the validity threshold and the hotness index count is below the hotness threshold are given an intermediate priority level for eviction from the plurality of priority levels, wherein the intermediate priority level falls between the highest priority level and the lowest priority level;

one or more memory blocks of the plurality of memory blocks where the valid unit count is below the validity threshold and the hotness index count is above the hotness threshold are given a penultimate priority level for eviction from the plurality of priority levels, wherein the penultimate priority level falls between the intermediate priority level and the lowest priority level; and

select, via the memory controller, one or more memory blocks of the plurality of memory blocks for eviction based at least in part on the valid unit count, the hotness index count, and the priority level, wherein the eviction is from a single level cell region to an x-level cell region.

9 . At least one non-transitory computer readable medium, comprising a set of instructions, which when executed by a computing device, cause the computing device to:

receive, via a memory controller of a memory device, a plurality of read and write requests from a host, wherein the plurality of read and write requests include an associated hotness data;

maintain, via the memory controller, a valid unit count, wherein the valid unit count comprises a count of valid operational memory cells on a block-by-block basis for a plurality of memory blocks;

maintain, via the memory controller, a hotness index count based at least in part on the hotness data, wherein the hotness index count is maintained on a block-by-block basis for the plurality of memory blocks;

determine, via the memory controller, a weighted composite value based at least in part on a valid unit weight value applied to the valid unit count and a hotness weight value applied to the hotness index count; and

select, via the memory controller, one or more memory blocks of the plurality of memory blocks for eviction based at least in part on the valid unit count, the hotness index count, and the weighted composite value, wherein the eviction is from a single level cell region to an x-level cell region.

10 . The at least one non-transitory computer readable medium of claim 9 , wherein the hotness data is based at least in part on a Last Recently Used list of repeat cache hits associated with the plurality of read and write requests and based at least in part on a type of data associated with the plurality of read and write requests.

11 . The at least one non-transitory computer readable medium of claim 9 , wherein the set of instructions, which when executed by the computing device, cause the computing device further to:

determine, via the memory controller, a priority level from a plurality of priority levels for eviction based at least in part on the valid unit count and the hotness index count, wherein the selection of the one or more memory blocks is based on the priority level.

12 . The at least one non-transitory computer readable medium of claim 11 , wherein those blocks of the one or more memory blocks where the valid unit count is beneath a validity threshold and the hotness index count is beneath a hotness threshold are given a highest priority level for eviction from the plurality of priority levels, and wherein those blocks of the one or more memory blocks where the valid unit count is above the validity threshold and the hotness index count is above the hotness threshold are given a lowest priority level for eviction from the plurality of priority levels.

13 . The at least one non-transitory computer readable medium of claim 9 , wherein the set of instructions, which when executed by the computing device, cause the computing device further to:

select, via the memory controller, at least one memory block of the plurality of memory blocks for insertion based at least in part on the hotness data, wherein the insertion is from the x-level cell region to the single level cell region.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2025
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP. (DBA SOLIDIGM)
Reel/Frame 072549/0289 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2022
From: NATARAJAN, SHANKAR; CLARK, CHACE; CORRADO, FRANCIS; MURALISHANKAR, SHIVASHEKAR; NAGARAJAN, SURESH
To: INTEL CORPORATION
Reel/Frame 059382/0444 →
Continuity (1)
Related Publication 20220004495A1 · Jan 6, 2022
References Cited (13)
US 20030200393A1 · Cornaby · 2003 [cited by examiner]
US 20090175077A1 · Takase · 2009 [cited by examiner]
US 20160070643A1 · Shen · 2016 [cited by examiner]
US 20180150225A1 · Chang · 2018 [cited by examiner]
US 20190187900A1 · Byun · 2019 [cited by examiner]
US 20190332298A1 · Madabhushi · 2019 [cited by examiner]
US 20200201549A1 · Malina · 2020 [cited by examiner]
US 20220035735A1 · Bhardwaj · 2022 [cited by examiner]
US 20220083258A1 · You · 2022 [cited by examiner]
US 20220091984A1 · Das · 2022 [cited by examiner]
US 20220197535A1 · Peh · 2022 [cited by examiner]
US 20220334768A1 · Patil · 2022 [cited by examiner]
US 20230140773A1 · Raju · 2023 [cited by examiner]