IP Library Granted Patent US 11,287,973
Granted Patent B2
US 11,287,973 · App. 16/552,859 · Granted Mar 29, 2022

Polymorphic storage devices

Inventor: Yang Seok Ki (Palo Alto, CA)
G06F3/0604G06F3/065G06F3/0647G06F3/0655G06F3/0679G06N20/00
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,287,973
App. No.
16/552,859
Granted
Mar 29, 2022
Kind
B2
Abstract

A storage device includes an application container containing one or more applications, each of which running in one or more namespaces; a polymorphic storage device (PSD) kernel implemented within the storage device and configured to provide a host-side interface to a host computer and receive a plurality of packets including data, messages, and commands from the host computer via the host-side interface, and route the plurality of packets to an application in the application container based on a namespace associated with the plurality of packets; and a non-volatile memory. The PSD kernel is further configured to provide a key-value interface and a block interface to the non-volatile memory based on the namespace associated with the plurality of packets. The non-volatile memory stores a plurality of block data that is accessible via the block interface, and stores a plurality of key-value data that is accessible via the key-value interface.

Claims (36)

1. A storage device comprising:

an application container containing a first application that runs in a namespace;

a kernel implemented within the storage device and configured to provide a host-side interface to a host computer and receive a packet including at least one of data, messages, and commands from the host computer via the host-side interface; and

a non-volatile memory comprising a first data block storing key-value data that is accessible by a key-value interface and a second data block storing block data that is accessible by a block interface,

wherein the kernel determines that the packet is associated with the namespace and that the namespace is assigned for the key-value interface or the block interface, and

wherein the kernel routes the packet to a second application that runs in the namespace, and accesses the first data block of the non-volatile memory via the key-value interface or accesses the second data block of the non-volatile memory via the block interface based on the namespace associated with the packet.

2. The storage device of claim 1 , further comprising one or more hardware that is reconfigurable according to a control command received from the host computer, wherein the reconfigurable hardware includes one or more processors, the non-volatile memory, and a dynamic random access memory (DRAM).

3. The storage device of claim 1 , wherein at least one of the first application and the second application runs in two or more namespaces.

4. The storage device of claim 1 , wherein the first application is a NoSQL application.

5. The storage device of claim 1 , wherein the storage device is capable of performing at least one of a tagging feature, a compression feature, a database feature, a pattern matching feature, a machine learning feature, and a conversion feature.

6. The storage device of claim 1 , wherein the kernel routes the packet to at least one active application of the first application and the second application and returns an error message in a case where both of the first application and the second application are idle.

7. The storage device of claim 1 , wherein the host-side interface is an emulated host-side interface configured to provide a high-level interface between the host computer and the storage device, wherein the kernel is configured to convert one or more high-level protocols to one or more low-level protocols and route the one or more low-level protocols to the first application, wherein the high-level protocol is one of HyperText Transfer Protocol (HTTP), HTTP-5, Representational State Transfer (REST), Simple Object Access Protocol (SOAP), Remote Procedure Call (RPC), gPRC, Thrift, Memcached, and Redis.

8. The storage device of claim 1 , wherein one or more vendor commands are provided via the host-side interface.

9. The storage device of claim 8 , wherein the one or more vendor commands include a create command, a start command, a stop command, a pause command, and a resume command.

10. The storage device of claim 8 , wherein the one or more vendor commands include a migration command or a duplication command for migrating or duplicating the first application running on the storage device to another storage device via a control interface.

11. The storage device of claim 10 , wherein the first application is migrated or duplicated in a centralized manner or a decentralized manner.

12. A storage system comprising:

a host computer;

a storage device; and

a storage device interface for providing an interface between the host computer and the storage device,

wherein the storage device comprises:

an application container containing a first application that runs in a namespace;

a kernel configured to provide a host-side interface to the host computer and receive a packet including at least one of data, messages, and commands from the host computer via the host-side interface; and

a non-volatile memory comprising a first data block storing key-value data that is accessible by a key-value interface and a second data block storing block data that is accessible by a block interface,

wherein the kernel determines that the namespace is associated with the packet, routes the packet to a second application that runs in the namespace, and accesses the first data block of the non-volatile memory via the key-value interface or accesses the second data block of the non-volatile memory via the block interface based on the namespace associated with the packet.

13. The storage system of claim 12 , further comprising one or more hardware that is reconfigurable according to a control command received from the host computer, wherein the reconfigurable hardware of the storage device includes one or more processors, the non-volatile memory, and a DRAM.

14. The storage system of claim 12 , wherein at least one of the first application and the second application runs in two or more namespaces.

15. The storage device of claim 12 , wherein the first application is a NoSQL application.

16. The storage device of claim 12 , wherein the kernel routes the packet to at least one active application of the first application and the second application and returns an error message in a case where both of the first application and the second application are idle.

17. A method comprising:

storing a first application in an application container of a storage device that includes a non-volatile memory, wherein the first application runs in a namespace, and the non-volatile memory includes a first data block storing key-value data that is accessible by a key-value interface and a second data block storing block data that is accessible by a block interface;

receiving a packet including at least one of data, messages, and commands from a host computer via a host-side interface;

running a kernel implemented on the storage device to determine that the namespace is associated with the packet, route the packet to a second application that runs in the namespace, and access the first data block of the non-volatile memory via the key-value interface or access the second data block of the non-volatile memory via the block interface based on the namespace associated with the packet.

18. The method of claim 17 , further comprising reconfiguring the one or more hardware according to a command received from the host computer via the storage device interface, where the one or more reconfigurable hardware includes one or more processors, the non-volatile memory, and a dynamic random access memory (DRAM).

19. The method of claim 17 , at least one of the first application and the second application runs in two or more namespaces.

20. The method of claim 17 , wherein the first application is a NoSQL application.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2020
From: KI, YANG SEOK
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 052258/0417 →
Continuity (3)
Continuation In Part 15133085 · Apr 19, 2016
Provisional Application 62290295 · Feb 2, 2016
Related Publication 20190384492A1 · Dec 19, 2019