IP Library › Granted Patent US 11,182,089
Granted Patent B2
US 11,182,089 · App. 16/459,393 · Granted Nov 23, 2021

Adapting memory block pool sizes using hybrid controllers

Inventors: Roman Alexander Pletka (Uster, CH); Radu Ioan Stoica (Zurich, CH); Sasa Tomic (Kilchberg, CH); Nikolaos Papandreou (Thalwil, CH); Nikolas Ioannou (Zurich, CH); Aaron Daniel Fry (Richmond, TX); Timothy Fisher (Cypress, TX); Charalampos Pozidis (Thalwil, CH); Andrew D. Walls (San Jose, CA)
Assignee: International Business Machines.Corporation
G06F3/064G06F3/061G06F3/0643G06F3/0647G06F3/0688G06F12/0246
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,182,089
App. No.
16/459,393
Granted
Nov 23, 2021
Kind
B2
Abstract

A computer-implemented method, according to one embodiment, includes: determining whether a number of blocks included in a first ready-to-use (RTU) queue is in a first range of the first RTU queue. In response to determining that the number of blocks included in the first RTU queue is in the first range, a determination is made as to whether a number of blocks included in a second RTU queue is in a second range of the second RTU queue. Moreover, in response to determining that the number of blocks included in the second RTU queue is not in the second range, valid data is relocated from one of the blocks in a first pool which corresponds to the first RTU queue. The block in the first pool is erased, and transferred from the first pool to the second RTU queue which corresponds to a second pool.

Claims (83)

1. A computer-implemented method for adapting block pool sizes in a storage system, comprising:

determining whether a number of blocks included in a first ready-to-use (RTU) queue is in a first range of the first RTU queue;

in response to determining that the number of blocks included in the first RTU queue is in the first range of the first RTU queue, determining whether a number of blocks included in a second RTU queue is in a second range of the second RTU queue;

in response to determining that the number of blocks included in the second RTU queue is not in the second range of the second RTU queue, relocating valid data from one of the blocks in a first pool which corresponds to the first RTU queue;

erasing the block in the first pool; and

transferring the block from the first pool to the second RTU queue which corresponds to a second pool,

wherein the blocks in the first pool are configured in single-level cell (SLC) mode,

wherein the blocks in the second pool are configured in multi-bit-per-cell mode.

2. The computer-implemented method of claim 1 , wherein transferring the block from the first pool to the second RTU queue which corresponds to the second pool includes:

reconfiguring the block from SLC mode to multi-bit-per-cell mode; and

marking the reconfigured block for recalibration of a read threshold voltage shift value thereof.

3. The computer-implemented method of claim 1 , comprising:

determining whether a current input/output (I/O) workload experienced by the storage system is in a third range; and

transferring the block from the first pool to the second RTU queue which corresponds to the second pool in response to determining that the current I/O workload experienced by the storage system is not in the third range.

4. The computer-implemented method of claim 1 , wherein the blocks in the second pool that are configured in multi-bit-per-cell mode are configured in quad-level cell (QLC) mode.

5. The computer-implemented method of claim 1 , comprising:

in response to determining that the number of blocks included in the first RTU queue is not in the first range, selecting one of the blocks in the first pool;

relocating valid data from the selected block;

erasing the selected block; and

placing the selected block in the first RTU queue corresponding to the first pool.

6. The computer-implemented method of claim 5 , wherein placing the selected block in the first RTU queue corresponding to the first pool includes:

marking the selected block for recalibration of a read threshold voltage shift value thereof.

7. The computer-implemented method of claim 1 , comprising:

determining whether a number of blocks included in the second RTU queue is in a first range of the second RTU queue;

in response to determining that the number of blocks included in the second RTU queue is in the first range of the second RTU queue, determining whether a number of blocks included in the first RTU queue is in a second range of the first RTU queue;

in response to determining that the number of blocks included in the first RTU queue is not in the second range of the first RTU queue, relocating valid data from one of the blocks in the second pool;

erasing the block in the second pool; and

transferring the block from the second pool to the first RTU queue which corresponds to the first pool.

8. The computer-implemented method of claim 7 , wherein transferring the block from the second pool to the first RTU queue which corresponds to the first pool includes:

reconfiguring the block from multi-bit-per-cell mode to SLC mode; and

marking the reconfigured block for recalibration of a threshold voltage shift value thereof.

9. A computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions readable and/or executable by a processor to cause the processor to:

determine, by the processor, whether a number of blocks included in a first ready-to-use (RTU) queue is in a first range of the first RTU queue, wherein the first RTU queue corresponds to a first pool;

in response to determining that the number of blocks included in the first RTU queue is in the first range of the first RTU queue, determine, by the processor, whether a number of blocks included in a second RTU queue is in a second range of the second RTU queue, wherein the second RTU queue corresponds to a second pool;

in response to determining that the number of blocks included in the second RTU queue is not in the second range of the second RTU queue, relocate, by the processor, valid data from one of the blocks in the first pool which corresponds to the first RTU queue;

erase, by the processor, the block in the first pool; and

transfer, by the processor, the block from the first pool to the second RTU queue which corresponds to the second pool,

wherein the blocks in the first pool are configured in single-level cell (SLC) mode,

wherein the blocks in the second pool are configured in multi-bit-per-cell mode.

10. The computer program product of claim 9 , wherein transferring the block from the first pool to the second RTU queue which corresponds to the second pool includes:

reconfiguring the block from SLC mode to multi-bit-per-cell mode; and

marking the reconfigured block for recalibration of a threshold voltage shift value thereof.

11. The computer program product of claim 9 , the program instructions readable and/or executable by the processor to cause the processor to:

determine, by the processor, whether a current input/output (I/O) workload experienced by a storage system is in a third range; and

transfer, by the processor, the block from the first pool to the second RTU queue which corresponds to the second pool in response to determining that the current I/O workload experienced by the storage system is not in the third range.

12. The computer program product of claim 9 , wherein the blocks in the second pool that are configured in multi-bit-per-cell mode are configured in quad-level cell (QLC) mode.

13. The computer program product of claim 9 , the program instructions readable and/or executable by the processor to cause the processor to:

in response to determining that the number of blocks included in the first RTU queue is not in the first range of the first RTU queue, select, by the processor, one of the blocks in the first pool;

relocate, by the processor, valid data from the selected block;

erase, by the processor, the selected block; and

place, by the processor, the selected block in the first RTU queue corresponding to the first pool.

14. The computer program product of claim 13 , wherein placing the selected block in the first RTU queue corresponding to the first pool includes:

marking the reconfigured selected block for recalibration of a threshold voltage shift value thereof.

15. The computer program product of claim 9 , the program instructions readable and/or executable by the processor to cause the processor to:

determine, by the processor, whether a number of blocks included in the second RTU queue is in a first range of the second RTU queue;

in response to determining that the number of blocks included in the second RTU queue is in the first range of the second RTU queue, determine, by the processor, whether a number of blocks included in the first RTU queue is in a second range of the first RTU queue;

in response to determining that the number of blocks included in the first RTU queue is not in the second range of the first RTU queue, relocate, by the processor, valid data from one of the blocks in the second pool;

erase, by the processor, the block in the second pool; and

transfer, by the processor, the block from the second pool to the first RTU queue which corresponds to the first pool.

16. The computer program product of claim 15 , wherein transferring the block from the second pool to the first RTU queue which corresponds to the first pool includes:

reconfigure, by the processor, the block from multi-bit-per-cell mode to SLC mode; and

mark, by the processor, the reconfigured block for recalibration of a threshold voltage shift value thereof.

17. A system, comprising:

a plurality of non-volatile random access memory (NVRAM) blocks configured to store data; and

a processor and logic integrated with and/or executable by the processor, the logic being configured to:

determine, by the processor, whether a number of blocks included in a first ready-to-use (RTU) queue is in a first range of the first RTU queue, wherein the first RTU queue corresponds to a first pool;

in response to determining that the number of blocks included in the first RTU queue is in the first range of the first RTU queue, determine, by the processor, whether a number of blocks included in a second RTU queue is in a second range of the second RTU queue, wherein the second RTU queue corresponds to a second pool;

in response to determining that the number of blocks included in the second RTU queue is not in the second range of the second RTU queue, relocate, by the processor, valid data from one of the blocks in the first pool which corresponds to the first RTU queue;

erase, by the processor, the block in the first pool; and

transfer, by the processor, the block from the first pool to the second RTU queue which corresponds to the second pool by: reconfiguring the block from SLC mode to multi-bit-per-cell mode,

wherein the blocks in the first pool are configured in single-level cell (SLC) mode,

wherein the blocks in the second pool are configured in multi-bit-per-cell mode.

18. The system of claim 17 , wherein transferring the block from the first pool to the second RTU queue which corresponds to the second pool includes:

marking the reconfigured block for recalibration of a threshold voltage shift value for the reconfigured block.

19. The system of claim 17 , the logic being configured to:

determine, by the processor, whether a current input/output (I/O) workload experienced by a storage system is in a third range; and

transfer, by the processor, the block from the first pool to the second RTU queue which corresponds to the second pool in response to determining that the current I/O workload experienced by the storage system is not in the third range.

20. The system of claim 17 , the logic being configured to:

determine, by the processor, whether a number of blocks included in the second RTU queue is in a first range of the second RTU queue;

in response to determining that the number of blocks included in the second RTU queue is in the first range of the second RTU queue, determine, by the processor, whether a number of blocks included in the first RTU queue is in a second range of the first RTU queue;

in response to determining that the number of blocks included in the first RTU queue is not in the second range of the first RTU queue, relocate, by the processor, valid data from one of the blocks in the second pool;

erase, by the processor, the block in the second pool; and

transfer, by the processor, the block from the second pool to the first RTU queue which corresponds to the first pool.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2019
From: PLETKA, ROMAN ALEXANDER; STOICA, RADU IOAN; TOMIC, SASA; PAPANDREOU, NIKOLAOS; IOANNOU, NIKOLAS; FRY, AARON DANIEL; FISHER, TIMOTHY; POZIDIS, CHARALAMPOS; WALLS, ANDREW D.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 049855/0102 →
Continuity (1)
Related Publication 20210004158A1 · Jan 7, 2021
Cited By (1)
US 12,366,984