IP Library Granted Patent US 12,360,696
Granted Patent B2
US 12,360,696 · App. 16/903,329 · Granted Jul 15, 2025

Communication of data relocation information by storage device to host to improve system performance

Inventors: Bishwajit Dutta (Hillsboro, OR); Sanjeev N. Trika (Portland, OR)
Assignee: SK Hynix NAND Product Solutions Corp.
G06F3/0647G06F3/0619G06F3/064G06F3/0656G06F3/0659G06F3/0679
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,360,696
App. No.
16/903,329
Granted
Jul 15, 2025
Kind
B2
Abstract

An apparatus comprises a controller comprising an interface comprising circuitry to communicate with a host computing device; and a relocation manager comprising circuitry, the relocation manager to provide, for the host computing device, an identification of a plurality of data blocks to be relocated within a non-volatile memory; and relocate at least a subset of the plurality of data blocks in accordance with a directive provided by the host computing device in response to the identification of the plurality of data blocks to be relocated.

Claims (48)

1. An apparatus comprising:

a controller comprising:

an interface comprising circuitry to communicate with a host computing device; and

a relocation manager comprising circuitry, the relocation manager to:

receive, from the host computing device, a registration request;

in response to the received registration request, cause to register the host computing device to receive one or more event notifications indicating that at least one data block in a non-volatile memory is identified for relocation;

transmit, to the host computing device, an event notification indicating that at least one data block in the non-volatile memory has been identified for relocation;

receive, from the host computing device, a request for an identification of the at least one data block that has been identified for relocation;

transmit, to the host computing device, the identification of the at least one data block to be relocated within the non-volatile memory in response to the received request for the identification of the at least one data block;

receive, from the host computing device, a directive in response to the provided identification of the at least one data block to be relocated;

in response to the received directive, relocate at least a subset of the at least one data block in accordance with the directive; and

when a directive is not received within a timeout period in response to the provided identification of the at least one data block to be relocated, relocate each data block of the at least one data block without a directive from the host computing device to relocate each data block of the at least one data block.

2. The apparatus of claim 1 , wherein the directive provided by the host computing device includes an identification of a data block that does not need to be relocated.

3. The apparatus of claim 1 , wherein the directive provided by the host computing device includes an identification of a data block to be cached in a transfer buffer for retrieval by the host computing device when the data block is read from the non-volatile memory during relocation of the data block within the non-volatile memory.

4. The apparatus of claim 1 , wherein the directive provided by the host computing device includes an identification of a data block to be relocated within the non-volatile memory.

5. The apparatus of claim 1 , wherein the directive provided by the host computing device includes an identification of a data block that is to be transferred to the host computing device and relocated within the non-volatile memory.

6. The apparatus of claim 1 , wherein the relocation manager is to transmit the identification of the at least one data block in response to determining to perform a defragmentation operation on a portion of the non-volatile memory.

7. The apparatus of claim 1 , wherein the relocation manager is to transmit the identification of the at least one data block to be relocated after receiving the registration request from the host computing device.

8. The apparatus of claim 1 , wherein the registration request is a Non-Volatile Memory Express (NVMe) Asynchronous Event Request command.

9. The apparatus of claim 1 , further comprising the non-volatile memory.

10. The apparatus of claim 9 , further comprising the host computing device, wherein the host computing device comprises a central processing unit (CPU).

11. The apparatus of claim 10 , further comprising a battery communicatively coupled to a processor of the CPU, a display communicatively coupled to the processor, or a network interface communicatively coupled to the processor.

12. A method comprising:

receiving, by a storage device, a registration request from a host computing device;

in response to receiving the registration request from the host computing device, causing to register, by the storage device, the host computing device to receive one or more event notifications indicating that at least one data block is identified for relocation;

determining, by the storage device, to relocate at least one data block;

transmitting, by the storage device to the host computing device, an event notification indicating that at least one data block in a non-volatile memory has been identified for relocation;

receiving, by the storage device from the host computing device, a request for an identification of the at least one data block that has been identified for relocation;

transmitting, by the storage device to the host computing device, the identification of the at least one data block to be relocated within the non-volatile memory in response to receiving the request for the identification of the at least one data block;

receiving, by the storage device from the host computing device, a directive in response to the provided identification of the at least one data block to be relocated;

in response to receiving the directive, relocating, by the storage device, at least a subset of the at least one data block in accordance with the directive; and

when a directive is not received within a timeout period in response to the provided identification of the at least one data block to be relocated, relocating each data block of the at least one data block without a directive from the host computing device for relocating each data block of the at least one data block.

13. The method of claim 12 , wherein the directive provided by the host computing device includes an identification of a data block that does not need to be relocated.

14. The method of claim 12 , wherein the directive provided by the host computing device includes an identification of a data block to be cached in a transfer buffer for retrieval by the host computing device when the data block is read from the non-volatile memory during relocation of the data block.

15. The method of claim 12 , wherein the directive provided by the host computing device includes an identification of a data block to be relocated.

16. The method of claim 12 , wherein the directive provided by the host computing device includes an identification of a data block that is to be transferred to the host computing device and relocated.

17. One or more non-transitory computer-readable media with code stored thereon, wherein the code is executable to cause a machine to:

receive, from a host computing device, a registration request;

in response to the received registration request, cause to register the host computing device to receive one or more event notifications indicating that at least one data block on a storage device is identified for relocation;

transmit, to the host computing device, an event notification indicating that at least one data block on the storage device has been identified for relocation;

receive, from the host computing device, a request for an identification of the at least one data block that has been identified for relocation;

transmit, to the host computing device, the identification of the at least one data block to be relocated on the storage device in response to the received request for the identification of the at least one data block;

receive, from the host computing device, a directive in response to the provided identification of the at least one data block to be relocated;

in response to the received directive, relocate at least a subset of the at least one data block on the storage device in accordance with the directive; and

when a directive is not received within a timeout period in response to the provided identification of the at least one data block to be relocated, relocate each data block of the at least one data block without a directive from the host computing device to relocate each data block of the at least one data block.

18. The one or more non-transitory computer-readable media of claim 17 , wherein the directive provided by the host computing device includes an identification of a data block that does not need to be relocated.

19. The one or more non-transitory computer-readable media of claim 17 , wherein the directive provided by the host computing device includes an identification of a data block to be cached in a transfer buffer for retrieval by the host computing device when the data block is read from memory during relocation of the data block.

20. The one or more non-transitory computer-readable media of claim 17 , wherein the directive provided by the host computing device includes an identification of a data block to be relocated.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2023
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP.
Reel/Frame 062702/0048 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: DUTTA, BISHWAJIT; TRIKA, SANJEEV N.
To: INTEL CORPORATION
Reel/Frame 052956/0962 →
Continuity (1)
Related Publication 20200319815A1 · Oct 8, 2020
References Cited (13)
US 8819375B1 · Pruett · 2014 [cited by examiner]
US 10176212B1 · Prohofsky · 2019 [cited by examiner]
US 10552340B2 · Feehrer · 2020 [cited by examiner]
US 10852980B1 · Specht · 2020 [cited by examiner]
US 20080010395A1 · Mylly et al. · 2008 [cited by applicant]
US 20080155176A1 · Sinclair et al. · 2008 [cited by applicant]
US 20140215129A1 · Kuzmin · 2014 [cited by examiner]
US 20140359211A1 · Bisht · 2014 [cited by examiner]
US 20190095110A1 · Watt · 2019 [cited by applicant]
US 20190250845A1 · Kabra · 2019 [cited by examiner]
US 20200081648A1 · Bernat et al. · 2020 [cited by applicant]
EPO; Extended European Search Report issued in EP Patent Application No. 20216290.5, dated May 31, 2021; 10 pages. [cited by applicant]
“NVM Express Base Specification, NFM Express, Revision 1.4a,” NVM Express Inc, Mar. 9, 2020 (405 pages submitted in 4 parts). [cited by applicant]