US 11,733,931 B1
Software defined hybrid flash storage memory controller
Ta-Yu Wu, Fremont, CA (US); and Akshat Nanda, Fremont, CA (US)
Assigned to Meta Platforms, Inc., Menlo Park, CA (US)
Filed by Meta Platforms, Inc., Menlo Park, CA (US)
Filed on Jul. 13, 2020, as Appl. No. 16/927,507.
Int. Cl. G06F 3/06 (2006.01); G06F 12/0866 (2016.01); G06F 12/02 (2006.01)
CPC G06F 3/0679 (2013.01) [G06F 3/061 (2013.01); G06F 3/0659 (2013.01); G06F 12/0246 (2013.01); G06F 12/0866 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A method, comprising:
using a central processing unit of a host system to manage at least a portion of a data placement of a storage device by bypassing at least a block layer of an operating system of the host system to store data in a volatile random-access memory of the storage device different from a non-volatile flash storage memory of the storage device while allowing media endurance management of the storage device to be managed by a storage controller processing unit of the storage device, wherein the volatile random-access memory of the storage device is configured to both cache the data including application content data and store flash transition layer information; and
providing a command via the central processing unit of the host system to the storage device that causes the storage controller processing unit of the storage device to store from the data stored by the central processing unit of the host system in the volatile random-access memory of the storage device to the non-volatile flash storage memory of the storage device, wherein due to the command the application content data cached in the volatile random-access memory storing the flash transition layer information of the storage device is flushed to the non-volatile flash storage memory, the application content data is different from the flash transition layer information, the volatile random-access memory is an internal memory of the storage device that is a storage drive, and the volatile random-access memory of the storage drive is different from a host system memory of the host system.