Storage device and operation method thereof

By using KV commands in the storage device from the main management admin operation, the problems of complexity and low performance of admin operation commands in the prior art are solved, and simplified interfaces and performance improvements are achieved.

CN113126910BActive Publication Date: 2024-12-13SAMSUNG ELECTRONICS CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202110051502.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-01-15
Filing Date
2021-01-14
Publication Date
2024-12-13
Estimated Expiration
2041-01-14

AI Technical Summary

Technical Problem

When managing operations, existing storage devices need to define separate commands to support admin operations, resulting in complex interfaces, increasing costs and reducing performance.

Method used

By using the key-value (KV) command to control the storage device, using the KV manager to determine the internal key or user key, and perform corresponding operations, the interface between the host and the storage device is simplified and the autonomous management of admin operations is achieved. .

Benefits of technology

Simplifies the interface of storage devices, reduces costs and improves performance, allows input/output operations and admin operations to be performed through the same type of KV command, reducing dependency on individual commands.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113126910B_ABST
    Figure CN113126910B_ABST
Patent Text Reader

Abstract

An operating method of a storage device including a nonvolatile memory device, comprising: receiving a first key-value (KV) command including a first key from an external host device; in response to the first KV command, sending a first value corresponding to the first key from the nonvolatile memory device to the external host device as first user data; receiving a second KV command including a second key from the external host device; and in response to the second KV command, performing a first management operation based on a second value corresponding to the second key. The first KV command and the second KV command are KV commands of the same type.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims the priority of Korean Patent Application No. 10-2020-0005368 filed in the Korean Intellectual Property Office on January 15, 2020, the disclosure of which is incorporated herein by reference in its entirety. Technical Field

[0003] Embodiments of the present disclosure described herein relate to semiconductor memories, and more particularly, to memory devices and methods of operating the same. Background Art

[0004] Semiconductor memory devices are classified as volatile memory devices (e.g., static random access memory (SRAM) or dynamic random access memory (DRAM)) or nonvolatile memory devices (e.g., flash memory devices, phase change RAM (PRAM), magnetic RAM (MRAM), resistive RAM (RRAM), or ferroelectric RAM (FRAM)), where in volatile memory devices, stored data disappears when power is turned off, and in nonvolatile memory devices, stored data is retained even when power is turned off.

[0005] Flash-based solid-state drives (SSDs) are widely used as high-capacity storage media. Typically, the SSD communicates with the host through a given interface. In this case, the host can perform various management operations for obtaining various information from the SSD. In order to perform the management operations, the host can use various commands defined by a given interface. However, since various information is provided from the SSD, various commands need to be defined by a given interface, thereby complicating the configuration of the interface. Summary of the invention

[0006] Embodiments of the present disclosure provide a storage device having improved performance and reduced cost and an operating method thereof.

[0007] According to an exemplary embodiment, a method for operating a storage device including a nonvolatile memory device includes: receiving a first key-value (KV) command including a first key from an external host device; in response to the first KV command, sending a first value corresponding to the first key from the nonvolatile memory device to the external host device as first user data; receiving a second KV command including a second key from the external host device; and in response to the second KV command, performing a first management (abbreviated herein as "admin") operation based on a second value corresponding to the second key. The first KV command and the second KV command are KV commands of the same type.

[0008] According to an exemplary embodiment, a storage device includes: a nonvolatile storage device storing a user key-value pair including a first value corresponding to a user key; and a storage controller controlling the nonvolatile storage device. The storage controller includes a storage device storing an internal key-value pair including a second value corresponding to an internal key and a key index, the key index including information related to the positions of the user key, the internal key, and the first value and the second value. A key-value (KV) manager determines whether a key included in a first key-value (KV) command from an external host device is an internal key or a user key based on the key index in response to the first KV command; when the key is a user key, sends the first value to the external host device; and when the key is an internal key, performs a first admin operation corresponding to the second value.

[0009] According to an exemplary embodiment, an operating method of a storage device including a nonvolatile memory device includes: receiving a first key-value (KV) command including a first key from an external host device; determining whether the first key is an internal key or a user key; and when the first key is the user key, performing a first input / output operation on user data stored in the nonvolatile memory device, and when the first key is the internal key, performing a first admin operation for the storage device.

[0010] According to an exemplary embodiment, an operating method of a host configured to control a storage device includes: sending a first key-value (KV) command to the storage device; receiving information about an internal KV pair from the storage device, the internal KV pair including information related to at least one internal key and at least one value; based on the internal KV pair, sending a second KV command including a first internal key among the at least one internal key to the storage device; in response to the second KV command, receiving first device information from the storage device, the first device information corresponding to a first value corresponding to the first internal key among the at least one value; sending a third KV command including a first user key to the storage device; and in response to the third KV command, receiving first user data corresponding to the first user key from the storage device.

[0011] According to an exemplary embodiment, an operation method of a host configured to control a storage device includes: sending a first KV command including a first internal key corresponding to a first admin command to the storage device, and performing a first admin operation of the storage device based on the first KV command; sending a second KV command including a second internal key corresponding to a second admin command to the storage device, and performing a second admin operation of the storage device based on the second KV command; sending a third KV command including a first user key corresponding to first user data to the storage device, and reading the first user data from the storage device based on the third KV command; and sending a fourth KV command including a second user key corresponding to the second user data and a second value corresponding to the second user data to the storage device, and storing the second user data in the storage device based on the fourth KV command. At least two of the first to fourth KV commands are KV commands of the same type.

[0012] According to an exemplary embodiment, a method for operating a storage system including a host device and a storage device includes: sending a first key-value (KV) command including a first user key to the storage device at the host device; in response to the first KV command, sending a first value corresponding to the first user key to the host device at the storage device as first user data; sending a second KV command including a first internal key to the storage device at the host device; and in response to the second KV command, performing a first admin operation at the storage device, the first admin operation corresponding to a second value corresponding to the first internal key. The first KV command and the second KV command are KV commands of the same type. BRIEF DESCRIPTION OF THE DRAWINGS

[0013] The above and other objects and features of the present disclosure will become apparent by describing in detail exemplary embodiments of the present disclosure with reference to the attached drawings.

[0014] Figure 1 is a block diagram illustrating a storage system according to an embodiment of the present disclosure.

[0015] Figure 2 It shows Figure 1 A block diagram of a storage controller.

[0016] Figure 3A is a diagram used to describe the hierarchical structure of a block-based storage system.

[0017] Figure 3B Is used to describe Figure 3A A flow chart of the operation of a block-based storage system.

[0018] Figure 4A It shows Figure 1 Block diagram of the hierarchical structure of the storage system.

[0019] Figure 4B It shows Figure 1 and Figure 4A A flow chart of the operation of a storage system.

[0020] Figure 5 Is used to describe Figure 1 Diagram of key indexes, internal KV pairs, and user KV pairs.

[0021] Figure 6 It shows Figure 1 Flowchart of initial operation of a storage device.

[0022] Figure 7 Is used to describe Figure 6 A block diagram of the initial operation of the flowchart.

[0023] Figure 8 It shows Figure 1 A flowchart of the operation of a storage device.

[0024] 9A to 9E It is used to describe in detail Figure 8 An illustration of the operation of a flowchart.

[0025] Fig.10 It shows Figure 1 A flow chart of the operation of a storage system.

[0026] FIG. 11A to FIG. 11E Is used to describe Fig.10 An illustration of the operation of a flowchart.

[0027] Fig.12 It shows Figure 1 A flow chart of the operation of a storage system.

[0028] Fig.13 It shows Figure 1 A flowchart of the operation of a storage device.

[0029] Fig.14 It shows Figure 1 A flowchart of the operation of a storage device.

[0030] FIG. 15A to FIG. 15E Is used to describe Fig.14 An illustration of the operation of a flowchart.

[0031] Fig.16 is shown for storage Fig.15E Diagram of the internal data structure of log data.

[0032] Fig.17 It shows Figure 1A flowchart of the operation of a storage device.

[0033] Fig.18 is a block diagram illustrating a storage system according to an embodiment of the present disclosure.

[0034] Fig.19 is a block diagram illustrating a storage system according to an embodiment of the present disclosure.

[0035] Fig. 20 is a block diagram showing a data center to which a storage system according to an embodiment of the present disclosure is applied. DETAILED DESCRIPTION

[0036] The embodiments of the present disclosure may be described below in detail and clearly to such an extent that a person having ordinary skill in the art can easily realize the present disclosure.

[0037] Figure 1 is a block diagram showing a storage system according to an embodiment of the present disclosure. Figure 1 , the storage system 100 may include a host 110 and a storage device 120. The storage system 100 may include at least one of various information processing devices, such as a personal computer, a laptop computer, a server, a workstation, a smart phone, a tablet PC, and the like.

[0038] The host 110 may store data "DATA" in the storage device 120, or may read data "DATA" stored in the storage device 120. In an exemplary embodiment, the storage device 120 may be a key-value storage device. That is, the host 110 may control the storage device 120 based on a key-value pair.

[0039] For example, in a conventional block-based storage system, a host manages the storage space of a storage device by using a logical block address and controls the storage device based on the logical block address. That is, in a block-based storage system, a host controls the storage device based on a logical block address having a fixed length.

[0040] In contrast, the host 110 according to an embodiment of the present disclosure may control the storage device 120 by using a key-value command CMD_KV (hereinafter referred to as a "KV command"). The KV command CMD_KV may include information corresponding to a key or a value. In an exemplary embodiment, unlike a conventional logical block address, a key provided from the host 110 may have a variable size. In an exemplary embodiment, a key-value pair may be a data management structure supported by a database such as a NoSQL database, and the KV command may indicate a command type supported by a database such as a NoSQL database.

[0041] In an exemplary embodiment, the configuration of the KV command CMD_KV may be different from the commands defined by conventional interfaces (e.g., PCIe, NVMe, SATA, IDE, UFS, and eMMC). In an exemplary embodiment, the KV command CMD_KV may be the same or similar to the commands used in the application layer in the type (e.g., GET, PUT, DEL, and LIST). Below, the configuration and structure of the KV command CMD_KV will be described more fully with reference to the accompanying drawings.

[0042] In response to the KV command CMD_KV from the host 110, the storage device 120 may store data "DATA" or may output the stored data "DATA". For example, the storage device 120 may include a storage controller 121 and a nonvolatile memory device 122. The nonvolatile memory device 122 may include a user key-value (KV) pair KVPR-user. The user KV pair KVPR-user may indicate a data structure including user data or a storage space in which user data is stored. Figure 5 A more comprehensive description of the user KV pair KVPR-user.

[0043] In response to a KV command CMD_KV received from the host 110, the storage controller 121 may output data corresponding to a key included in the KV command CMD_KV from a user KV pair KVPR-user of the nonvolatile memory device 122, or may store a value included in the KV command CMD_KV in a user KV pair KVPR-user of the nonvolatile memory device 122.

[0044] For example, the storage controller 121 may include a key index IDX and a key-value (KV) manager 121a. The key index IDX may include information about the relationship between the key managed at the storage device 120 and the location where the information or data corresponding to the key is stored. Figure 5 The key index IDX is described in more detail.

[0045] The KV manager 121a may search for the location of data corresponding to the key of the KV command CMD_KV received from the host 110 based on the key index IDX. The KV manager 121a may read data from the found location and may send the read data "DATA". Alternatively, the KV manager 121a may allocate the location of data corresponding to the key of the KV command CMD_KV received from the host 110, and may store the value included in the KV command CMD_KV at the allocated location as user data. The KV manager 121a may update the key index IDX based on the allocated location and key.

[0046] As described above, the host 110 and the storage device 120 of the storage system 100 can operate based on key-value pairs. In an exemplary embodiment, the storage controller 121 of the storage device 120 may also include an internal KV pair KVPR-int. The internal KV pair KVPR-int may indicate a key-value pair automatically managed by the storage device 120. The internal KV pair KVPR-int may include information related to various operations supported by the storage device 120 or various management (abbreviated as "admin" in this document) operations. The host 110 can access the internal KV pair KVPR-int and can control various admin operations of the storage device 120.

[0047] For example, in a conventional NVMe-based storage system, the host reads the smart information of the storage device by using a Get Log Page command defined by the NVMe specification. In contrast, according to an embodiment of the present disclosure, the internal KV pair KVPR-int of the storage controller 121 may include information for getting the log page command (particularly, SMART / HEALTH information). In this case, the host 110 may obtain smart information from the storage device 120 by sending a KV command CMD_KV including a key (or, an internal key) corresponding to a Get Log Page command (e.g., a command for reading SMART / HEALTH) to the storage device 120. That is, conventional storage systems need to define separate commands associated with various admin operations of the storage device, respectively, to support admin operations. However, in the storage system 100 according to an embodiment of the present disclosure, in the absence of a separate command defined for admin operations, the host 110 may perform admin operations by accessing an internal KV pair KVPR-int managed internally or autonomously by the storage device 120.

[0048] As described above, according to the embodiments of the present disclosure, without defining separate commands for various admin operations, the host 110 can access the storage device 120 by using the KV command CMD_KV, or can perform admin operations on the storage device 120 by using the KV command CMD_KV. Therefore, the interface between the host 110 and the storage device 120 is simplified, thereby providing a storage system with improved performance and reduced cost.

[0049] Figure 2 It shows Figure 1 Block diagram of the storage controller. Figure 1 and Figure 2The storage controller 121 may include a KV manager 121a, a processor 121b, a storage device 121c, an internal control module 121d, a host interface circuit 121e, and a flash memory interface circuit 121f. Figure 1 The KV manager 121 a is described, and thus additional description will be omitted to avoid redundancy.

[0050] The processor 121b may control the overall operation of the memory controller 121. The memory device 121c may be used as a buffer memory, a cache memory, or a working memory of the memory controller 121. In an exemplary embodiment, the memory device 121c may include a volatile memory such as a static random access memory (SRAM) or a dynamic RAM (DRAM), or a nonvolatile memory such as a flash memory, a magnetic RAM (MRAM), a resistive RAM (RRAM), or a phase change RAM (PRAM).

[0051] In an exemplary embodiment, the key index IDX and the internal KV pair KVPR-int may be stored in the storage device 121c. An example is shown in which the key index IDX and the internal KV pair KVPR-int are stored in the storage device 121c inside the storage controller 121, but the present disclosure is not limited thereto. For example, the key index IDX and the internal KV pair KVPR-int may be stored in a buffer memory (not shown) (e.g., DRAM) outside the storage controller 121.

[0052] The internal control module 121d may be configured to control internal operations or admin operations of the storage controller 121. For example, the internal control module 121d may be configured to perform various admin operations (e.g., log information admin operations and feature information admin operations) on the storage device 120 or the storage controller 121 in response to a KV command CMD_KV including a specific key (e.g., an internal key) and provided from the host 110.

[0053] The storage controller 121 may be configured to communicate with the host 110 via a host interface circuit 121e. The host interface circuit 121e may be implemented based on a given interface protocol. In an exemplary embodiment, a given interface protocol may include at least one of various interface protocols, such as a peripheral component interconnect express (PCI-express) interface, a non-volatile memory express (NVMe) interface, a serial ATA (SATA) interface, a serial attached SCSI (SAS) interface, and a universal flash memory (UFS) interface, but the present disclosure is not limited thereto. In an exemplary embodiment, the host interface circuit 121e may be implemented based on a key-value (KV) interface. The KV interface may be an interface configured to support KV commands such as GET, PUT, DEL, or LIST.

[0054] The storage controller 121 may communicate with the nonvolatile memory device 122 through a flash memory interface circuit 121f. In an exemplary embodiment, the flash memory interface circuit 121f may be implemented based on a NAND interface, a Toggle interface, or an open NAND flash memory interface (ONFI). In an exemplary embodiment, the flash memory interface circuit 121f may include a flash memory controller (not shown) (FMC) configured to independently control a plurality of nonvolatile memories included in the nonvolatile memory device 122.

[0055] In an exemplary embodiment, when the flash memory interface circuit 121f is implemented based on a Toggle interface, the flash memory interface circuit 121f may be connected to the nonvolatile memory device 122 through a plurality of signal lines. The plurality of signal lines may include a chip enable signal / CE, a command latch enable signal CLE, an address latch enable signal ALE, a write enable signal / WE, a read enable signal / RE, a data signal DQx, and a data storage signal DQS.

[0056]

Table 1

[0057] / CE CLE ALE / WE / RE DQS QUR model L H L ↑ H X CMD Command Input L L H ↑ H X ADDR Address input L L L H H ↑↓ DATA_in Data Entry L L L H ↑↓ ↑↓ DATA_out Data Output

[0058] The states of the signal lines of each mode are shown in Table 1. Referring to Table 1, the nonvolatile memory device may be enabled in response to a chip enable signal / CE having a low level L. FIG.

[0059] During the command input mode, the memory controller 121 may control a plurality of signal lines so that the command latch enable signal CLE is high level H, the address latch enable signal ALE is low level L, the write enable signal / WE switches between high level H and low level L, the read enable signal is high level H, and the command is sent through the data signal DQx. During the command input mode, the nonvolatile memory device may determine the data signal DQx received from the memory controller 121 as a command CMD. In an exemplary embodiment, during the command input mode, the memory controller 121 may send the command CMD through the data signal DQx in synchronization with the rising edge of the write enable signal / WE, and the nonvolatile memory device may recognize or latch the command CMD in response to the rising edge of the write enable signal / WE.

[0060] During the address input mode, the memory controller 121 may control a plurality of signal lines so that the command latch enable signal CLE is a low level L, the address latch enable signal ALE is a high level H, the write enable signal / WE switches between a high level H and a low level L, the read enable signal is a high level H, and the address is sent through the data signal DQx. During the address input mode, the non-volatile memory device may determine the data signal DQx received from the memory controller 121 as the address ADDR. In an exemplary embodiment, during the address input mode, the memory controller 121 may send the address ADDR through the data signal DQx in synchronization with the rising edge of the write enable signal / WE, and the non-volatile memory device may recognize or latch the address ADDR in response to the rising edge of the write enable signal / WE. In an exemplary embodiment, the address ADDR may be sent during five cycles of the write enable signal / WE, but the inventive concept is not limited thereto.

[0061] During the data input mode, the memory controller 121 may control a plurality of signal lines so that the command latch enable signal CLE and the address latch enable signal ALE are both at a low level L, and the write enable signal / WE and the read enable signal are at a high level H, the data strobe signal switches between a high level H and a low level L, and the input data DATA_in is transmitted through the data signal DQx. During the data input mode, the nonvolatile memory device 122 may determine the data signal DQx received from the memory controller 121 as the input data DATA_in. In an exemplary embodiment, during the data input mode, the memory controller 121 may transmit the input data DATA_in through the data signal DQx in synchronization with the rising and falling edges of the data strobe signal DQS, and the nonvolatile memory device may recognize or latch the input data DATA_in in response to the rising and falling edges of the data strobe signal DQS.

[0062] During the data output mode, the memory controller 121 may control a plurality of signal lines so that both the command latch enable signal CLE and the address latch enable signal ALE are low level L, the write enable signal / WE is high level H, and the read enable signal switches between high level H and low level L. During the data output mode, the nonvolatile memory device 122 may control a plurality of signal lines so that the output data DATA_out is transmitted through the data signal DQx, and the data strobe signal DQS switches between high level H and low level L. The memory controller 121 may determine the data signal DQx received from the nonvolatile memory device 122 as the output data DATA_out. In an exemplary embodiment, during the data output mode, the nonvolatile memory device 122 may generate the data strobe signal DQS using the read enable signal / RE, and transmit the output data DATA_out through the data signal DQx in synchronization with the rising edge and the falling edge of the data strobe signal DQS. The storage controller 121 may identify or latch the output data DATA_out in response to the rising and falling edges of the data strobe signal DQS. In an exemplary embodiment, the plurality of signal lines may further include a communication line for reading a busy signal. The non-volatile memory device may send a read busy signal to the storage controller 121. In an exemplary embodiment, when the non-volatile memory device has a busy state (e.g., the non-volatile memory device 122 is performing a read operation, a programming operation, or an erase operation), the read busy signal may indicate a busy state. When the non-volatile memory device has a ready state (e.g., the non-volatile memory device does not perform an internal operation), the read busy signal may indicate a ready state. The storage controller may identify whether the non-volatile memory device 122 is in a busy state or a ready state in response to the ready and busy signals.

[0063] In an exemplary embodiment, the storage controller 121 may further include an error correction code (ECC) engine 121g and an advanced encryption standard (AES) engine 121h. The ECC engine 121g may perform an error detection operation or an error correction operation on data read from the nonvolatile memory device 122. For example, the ECC engine 121g may generate parity bits for write data to be stored in the nonvolatile memory device 122. The generated parity bits may be stored in the nonvolatile memory device 122 together with the write data. At a read operation of the write data stored in the nonvolatile memory device 122, the ECC engine 121g may detect or correct errors in the read data using the read data and the corresponding parity bits to output error-corrected data.

[0064] The AES engine 121h may perform at least one of an encryption operation and a decryption operation on data input to the memory controller 111. In an exemplary embodiment, at least one of the encryption operation and the decryption operation may be performed using a symmetric key algorithm.

[0065] In an exemplary embodiment, the KV manager 121a may be implemented in the form of software, hardware, or a combination thereof. In the case where the KV manager 121a is implemented in the form of software, the program or information associated with the KV manager 121a may be stored in the storage device 121c and may be driven or processed by the processor 121b. In the case where the KV manager 121a is implemented in the form of hardware, the KV manager 121a may be included in the host interface circuit 121e. However, the present disclosure is not limited thereto. For example, the KV manager 121a may be implemented in the form of a separate module or separate hardware.

[0066] Figure 3A is a diagram for describing the hierarchical structure of a block-based storage system. Figure 3A Reference numerals for components of Figure 3A , a host included in a block-based storage system includes an application layer, a file system, and a device driver. The storage device may include a flash translation layer (FTL) and a non-volatile memory. The application layer may indicate various applications that can be executed by the host. The file system is configured to organize various information generated by the application layer. For example, the file system may manage data generated or requested by the application layer based on a logical block address. The device driver may be configured to generate a request or command to be sent to the storage device or process a request or command received from the storage device based on the logical block address managed by the file system. Alternatively, the device driver may be configured to generate commands for various admin operations to be performed by the storage device in response to a request from the application layer. The flash translation layer may be configured to convert the logical block address of the command provided from the device driver into a physical address of the non-volatile storage device, and manage mapping information between the logical block address and the physical address.

[0067] Figure 3B Is used to describe Figure 3A A flowchart of the operation of a block-based storage system. Figure 3A and Figure 3B For a read operation, in operation S1, the host sends a first input / output (I / O) command to the storage device. The first input / output command includes information indicating that the command type is "read" and information about a logical block address. In operation S2, the storage device sends user data corresponding to the logical block address to the host in response to the first input / output command thus received.

[0068] Next, for a write operation, in operation S3, the host sends a second input / output command to the storage device. The second input / output command includes information indicating that the command type is "write", information about the logical block address, and user data to be written. In response to the second input / output command, the storage device may allocate a physical address corresponding to the logical block address, and may write user data in an area corresponding to the allocated physical address.

[0069] Then, for a specific admin operation (e.g., an admin operation for obtaining smart / health information), in operation S4, the host sends a "get log page" command to the storage device. In this case, the "get log page" command may include a log identifier "0x2h". The log identifier "0x2h" may be a log identifier corresponding to the smart / health information. In operation S5, the storage device may send the smart / health information to the host in response to the get log page command.

[0070] Thereafter, for a specific admin operation (e.g., an admin operation for setting volatile write cache enable), in operation S6, the host may send a set feature command to the storage device. In this case, the set feature command may include a feature identifier "0x6" and information about volatile write cache enable. The storage device may set a feature associated with volatile write cache enable in response to the set feature command.

[0071] As described above, in a conventional block-based storage system, the host manages storage devices or data based on logical block addresses, and the storage device converts the logical block addresses into physical addresses and manages the results of the conversion. In addition, in a conventional block-based storage system, the host performs various admin operations on the storage device by using predefined commands.

[0072] Figure 4A It shows Figure 1 A block diagram of the hierarchical structure of the storage system. Figure 1 and Figure 4A , the storage system 100 may include a host 110 and a storage device 120 .

[0073] The host 110 may include an application layer 111 and a device driver 112. The application layer 111 may include various application programs driven by the host 110.

[0074] The application layer 111 may issue an application command CMD_APP in the process of driving various application programs. The device driver 112 may convert the application command CMD_APP from the application layer 111 into a KV command CMD_KV. For example, the device driver 112 may convert the application command CMD_APP from the application layer 111 into a KV command CMD_KV in the form of GET, PUT, DEL, or LIST. The converted KV command CMD_KV may be sent to the storage device 120.

[0075] In an exemplary embodiment, when the application layer 111 operates based on a key-value pair, the application layer 111 may generate a KV command CMD_KV. In this case, the KV command CMD_KV from the application layer 111 may be sent to the storage device 120 directly or through a given interface protocol without separate conversion.

[0076] In an exemplary embodiment, the KV command CMD_KV may be one of GET, PUT, DEL, and LIST commands. The GET command may have a structure including a GET[Key] of a key, and may be used to read a value (e.g., data or information) corresponding to the key from the storage device 120. The PUT command may have a structure including a PUT[Key, Value] of a key and a value, and may be used to write or store a value corresponding to the key. The DEL command may have a structure including a DEL[Key] of a key, and may be used to delete a key-value pair or value (e.g., data or information) corresponding to the key from the storage device 120. The LIST command may have a structure including a LIST[Key1, Key2] of a key, and may be used to check values ​​(e.g., data or information) corresponding to keys Key1 and Key2 from the storage device 120. The types of the above-mentioned KV commands are exemplary, and the present disclosure is not limited thereto.

[0077] The storage device 120 may include a KV manager 121a and a non-volatile memory device 122. The KV manager 121a may search for information corresponding to a key included in the KV command CMD_KV received from the host 110 based on a key index IDX in response to the KV command CMD_KV. For example, in a case where information corresponding to a key included in the KV command CMD_KV exists in an internal KV pair KVPR-int, the KV manager 121a may read information corresponding to the key of the KV command CMD_KV from the internal KV pair KVPR-int and may perform an operation corresponding to the read information. Alternatively, in a case where information corresponding to a key included in the KV command CMD_KV exists in a user KV pair KVPR-user, the KV manager 121a may read data corresponding to the key of the KV command CMD_KV from a user KV pair KVPR-user of the non-volatile memory device 122, and may send the read data to the host 110.

[0078] Figure 4B It shows Figure 1 and Figure 4A A flowchart of the operation of the storage system. Hereinafter, for the convenience of description, the terms "internal key iK", "user key uK", etc. are used. The internal key iK may indicate a key corresponding to the information included in the internal KV pair KVPR-int, and the user key uK may indicate a key corresponding to the user data included in the user KV pair KVPR-user. Moreover, the terms "GET", "PUT", "DEL", "LIST", etc. are used below. The terms "GET", "PUT", "DEL", "LIST", etc. are terms used to identify the type of the KV command CMD_KV, and the KV commands according to the technical concept of the present disclosure are not limited thereto.

[0079] refer to Figure 1 , Figure 4A and Figure 4B , for a read operation, in operation S10, the host 110 may send a first KV command to the storage device 120. In this case, the first KV command may have a structure of GET[uK1]. The command type "GET" may be a command type for reading data or information from the storage device 120. That is, the KV command of GET[uK1] may be a command for reading user data corresponding to the first user key uK1.

[0080] In operation S11 , the storage device 120 may transmit user data corresponding to the first user key uK1 to the host 110 in response to GET[uK1] received from the host 110 .

[0081] Next, for a write operation, in operation S20, the host 110 may send a second KV command to the storage device 120. In this case, the second KV command may have a structure of PUT[uK2, V2]. The command type "PUT" may be a command type for storing data or information in the storage device 120. That is, the KV command of PUT[uK2, V2] may be a command for storing the second value V2 as user data corresponding to the second user key uK2. In response to the KV command of PUT[uK2, V2], the storage device 120 may store the second value V2 as user data corresponding to the second user key uK2 in the user KV pair KVPR-user of the non-volatile memory device 122. In an exemplary embodiment, after the storage operation is completed, the storage device 120 may update the key index IDX based on the location where the second value V2 is stored and the second user key uK2.

[0082] Next, for a specific admin operation (e.g., an admin operation for obtaining smart / health information), in operation S30, the host 110 may send a third KV command to the storage device 120. In this case, the third KV command may have a structure of GET[iK1]. The value corresponding to the first internal key iK1 may correspond to a command for an admin operation for obtaining smart / health information (e.g., getting a log page). The value corresponding to the first internal key iK1 may be stored in an internal KV pair KVPR-int.

[0083] That is, in order to perform a specific admin operation, without using a separately defined command, the host 110 can perform the specific admin operation by using a KV command of "GET" for reading user data and an internal key corresponding to the specific admin operation (ie, the first internal key iK1).

[0084] In operation S31, in response to GET[iK1], the storage device 120 may perform an operation corresponding to a specific admin operation, such as sending smart / health information. For example, the storage device 120 may check the information corresponding to the first internal key iK1 of GET[iK1] (i.e., a command corresponding to the admin operation for obtaining smart / health information) from the internal KV pair KVPR-int, and may perform an operation corresponding to the checked information, such as an operation for sending smart / health information.

[0085] Next, for another specific admin operation (e.g., an admin operation for setting volatile write cache enable), in operation S40, the host 110 may send a fourth KV command to the storage device 120. In this case, the fourth KV command may have a structure of PUT [iK2, V4]. The value corresponding to the second internal key iK2 may correspond to a command for an admin operation (e.g., setting a feature) for obtaining a volatile write cache enable feature. The value corresponding to the second internal key iK2 may be stored in the internal KV pair KVPR-int.

[0086] In response to PUT[iK2, V4], the storage device 120 may perform an admin operation corresponding to the second internal key iK2, ie, an operation of setting the volatile write cache enable feature to the second value V4.

[0087] As described above, the storage system 100 according to an embodiment of the present disclosure may perform an input / output operation and an admin operation on the storage device 120 based on the KV command CMD_KV.

[0088] For example, as referenced Figure 3A and Figure 3B As described, in a block-based storage system, commands for input / output operations and commands for admin operations must be defined independently or separately. In contrast, the storage system 100 according to an embodiment of the present disclosure can perform various operations by using an integrated KV command CMD_KV without separately defining commands for input / output operations and commands for admin operations. Therefore, the interface between the host 110 and the storage device 120 can be simplified. In addition, because the application layer 111 of the host 110 can directly control the storage device 120 or can control the storage device 120 only through minimal signal conversion (e.g., signal conversion through a physical port), the hierarchical structure of the host 110 can be simplified.

[0089] Figure 5 Is used to describe Figure 1 , an illustration of a key index, an internal KV pair, and a user KV pair. For ease of description, components that are not necessary for describing the key index IDX, the internal KV pair KVPR-int, and the user KV pair KVPR-user are omitted. Figure 5 Partial data structures of the key index IDX, the internal KV pair KVPR-int, and the user KV pair KVPR-user are shown, but the present disclosure is not limited thereto.

[0090] refer to Figure 1 and Figure 5, the key index IDX may include information about the key group identifier Key Group ID. The key group identifier Key Group ID may be used to classify the characteristics of the key. For example, the first internal key iK1 to the kth internal key iKk may be keys managed within the storage device 120. That is, the first internal key iK1 to the kth internal key iKk may be keys corresponding to admin operations associated with the storage device 120, and have nothing to do with user data. Alternatively, the values ​​corresponding to the first internal key iK1 to the kth internal key iKk may be stored in the internal KV pair KVPR-int. The key group identifier of the 0th group #0 may be assigned to the first internal key iK1 to the kth internal key iKk.

[0091] On the contrary, the first to m-th user keys uK1 to uKm may be keys corresponding to the user data UD1 to UD4 included in the user KV pair KVPR-user of the nonvolatile memory device 122. That is, the first to m-th user keys uK1 to uKm may be keys managed by the host 110 or keys corresponding to actual user data, respectively. Key group identifiers of the first group #1 to the m-th group #m may be assigned to the first to m-th user keys uK1 to uKm, respectively.

[0092] In an exemplary embodiment, the KV command CMD_KV received from the host 110 may include information related to the key group identifier and the key name. That is, the KV manager 121a of the storage controller 121 may determine whether the key corresponding to the key name included in the KV command CMD_KV is an internal key or a user key based on the key group identifier of the KV command CMD_KV received from the host 110. In other words, since the key group identifier is differently assigned to the plurality of keys iK1~iKk and uK1~uKm according to whether it is an internal key or a user key, it can be determined whether the key of the KV command received from the host 110 is an internal key or a user key. In addition, even if the key names of the internal key and the user key are repeated, the internal key and the user key can be distinguished from each other.

[0093] Below, for the convenience of description and simplified explanation, it is assumed that the term "key", "internal key" or "user key" or configuration includes information about the corresponding key group identifier. That is, the internal key may include information related to the key group identifier corresponding to the internal key and the key name of the internal key, and the user key may include information related to the key group identifier corresponding to the user key and the key name of the user key. However, the present disclosure is not limited to this. For example, when the key names of the internal key and the user key are managed as non-repetitive, the key group identifier can be omitted.

[0094] The key index IDX may include information related to the key name and position. For example, the key index IDX may include information related to the key name (e.g., iK1 to iKk and uK1 to uKm) and the positions iLCT1 to iLCTk and sLCT1 to sLCTm corresponding to the key name. That is, the first internal position iLCT1 may indicate the position where the value corresponding to the first internal key iK1 is stored, and the kth internal position iLCTk may indicate the position where the value corresponding to the kth internal key iKk is stored. The first storage position sLCT1 may indicate the position where the value corresponding to the first user key uK1 is stored, and the mth storage position sLCTm may indicate the position where the value corresponding to the mth user key uKm is stored.

[0095] In an exemplary embodiment, the first internal location iLCT1 to the kth internal location iLCTk may indicate a memory address or location associated with the memory device 121c, and the first storage location sLCT1 to the mth storage location sLCTm may indicate a memory address, physical address, or logical address associated with the nonvolatile memory device 122.

[0096] The internal KV pair KVPR-int may include values ​​corresponding to the first internal key iK1 to the kth internal key iKk, respectively. For example, the value corresponding to the first internal key iK1 may be information corresponding to the "get log page command that sets the identifier to error information". The value corresponding to the second internal key iK2 may be information corresponding to the "get log page command that sets the identifier to smart / health information". Similarly, the values ​​corresponding to the third internal key iK3 to the kth internal key iKk, respectively, may be messages corresponding to the following items: "The identifier is a get log page command for FW slot information", "The identifier is an arbitration get feature command", "The identifier is a power management get feature command", "The identifier is an LBA range type get feature command" and "The identifier is a volatile write cache set feature command". In an exemplary embodiment, the internal KV pair KVPR-int may be stored in a storage device 121c included in the storage controller 121, or in a buffer memory (not shown) (e.g., a DRAM buffer) that is set independently of the storage controller 121.

[0097] The KV manager 121a can perform various admin operations on the storage device 120 based on the information of the internal KV pair KVPR-int. For example, in the case of receiving the KV command CMD_KV of GET[iK2] from the host 110, the KV manager 121a can check the second internal location iLCT2 corresponding to the second internal key iK2 based on the key index IDX, and can detect the value stored in the second internal location iLCT2 from the internal KV pair KVPR-int (i.e., the get log page command whose identifier is the smart / health information). The KV manager 121a can perform a corresponding operation (i.e., an operation of outputting the smart / health information) in response to the detected value.

[0098] exist Figure 5 The example shown as the internal KV pair KVPR-int includes some admin commands, but the present disclosure is not limited to this. The internal KV pair KVPR-int may include admin commands for various admin operations as the value of the internal key, or information related to various field values ​​corresponding to the admin commands, such as abort command, asynchronous event request command, create I / O completion queue command, create I / O submission queue command, delete I / O completion queue command, delete I / O submission queue command, doorbell buffer configuration command, device self-test command, instruction receive command, instruction send command, firmware submission command, firmware image download command, get feature command, get log page command, identification command, keep active command, NVMe-MI receive command, NVMe-MI send command, namespace attachment command, namespace management command, set feature command, virtualization management command, format command, cleanup command, safe receive command, safe send command and get LBA status command.

[0099] The user KV pair KVPR-user may include values ​​corresponding to the first user key uK1 to the mth user key uKm, respectively. For example, the value corresponding to the first user key uK1 may be the first user data UD1, and the value corresponding to the second user key uK2 may be the second user data UD2. Similarly, the values ​​corresponding to the third user key uK3 to the mth user key uKm, respectively, may be the third user data UD3 to the mth user data UDm. The user KV pair KVPR-user may be stored in the nonvolatile memory device 122.

[0100] In the case of receiving a user key uK from the host 110, the KV manager 121a may determine a storage location for storing a value corresponding to the received user key uK based on the key index IDX, and may read the corresponding value from the user KV pair KVPR-user based on the determined storage location. Alternatively, in the case of receiving a user key uK and a value from the host 110, the KV manager 121a may store the value in the user KV pair KVPR-user of the non-volatile storage device 122, and may update the key index IDX based on the user key and the storage location for storing the value.

[0101] Figure 6 It shows Figure 1 Flowchart of initial operation of a storage device. Figure 7 Is used to describe Figure 6 For ease of description, components that are not necessary for describing the initial operation of the storage device 120 are omitted.

[0102] In the following, for the sake of convenience, detailed description of redundant components is omitted. In order to clearly describe the embodiments of the present disclosure, it is assumed that the KV manager 121a performs an operation of determining a key from the host 110 and an operation of accessing the internal KV pair KVPR-int, and the internal control module 121d performs an admin operation associated with the storage device 120, and the NVM control module 121f (i.e., Figure 2 The flash memory interface circuit of the non-volatile memory device 122 is used to perform control operations on the non-volatile memory device 122. However, the present disclosure is not limited thereto. For example, the operations according to the embodiments of the present disclosure may be performed by the KV manager 121a, or may be performed by any other component included in the storage controller 121 or the storage device 120.

[0103] refer to Figure 1 , Figure 6 and Figure 7 In operation S100, the storage device 120 may load the internal KV pair KVPR-int. For example, as described above, the internal KV pair KVPR-int may include information corresponding to various admin operations that may be performed by the storage device 120 or values ​​corresponding to internal keys. Figure 7 As shown in , the internal KV pair KVPR-int can be stored in the non-volatile memory device 122. Alternatively, the internal KV pair KVPR-int can be stored in a separate storage space in the form of firmware. In the initial operation or initialization operation of the storage device 120, the internal KV pair KVPR-int stored in the non-volatile memory device 122 can be loaded onto the storage device 121c of the storage controller 121.

[0104] exist Figure 6In operation S101, the storage device 120 may generate a key index IDX. Figure 5 As described, the key index IDX may include multiple keys and location information. The storage device 120 may generate the key index IDX based on the internal key corresponding to the value of the loaded internal KV pair KVPR-int and the location where the value is stored (ie, the location on the storage device 121c).

[0105] Alternatively, Figure 7 As shown in , the key index IDX may be stored in the nonvolatile memory device 122, and the key index IDX stored in the nonvolatile memory device 122 may be loaded onto the memory device 121c. In an exemplary embodiment, although not shown in the drawings, the key index IDX stored in the nonvolatile memory device 122 may include the location of the value of the user KV pair KVPR-user included in the nonvolatile memory device 122 and user key-related information. That is, the key index IDX stored in the nonvolatile memory device 122 may include information about previously stored user data.

[0106] Afterwards, in Figure 6 In operation S102, the storage device 120 may receive a KV command (eg, a LIST command) from the host 110. Figure 7 As shown, the host 110 may send the 0KV command CMD_KV0 to the storage device 120. The 0KV command CMD_KV0 may have a command structure of LIST[iK1, iKk]. The "LIST" command may be a command for finding a value between specific keys. That is, the host 110 may send a KV command of L[ST[iK1~iKk] to the storage device 120 to find the value corresponding to the internal key iK1~iKk.

[0107] exist Figure 6 In operation S_103, the storage device 120 may send information about the internal KV pair KVPR-int to the host 110 based on the key index IDX in response to a KV command (eg, a LIST command) from the host 110. Figure 7 As shown in , the KV manager 121a of the storage controller 121 can determine the internal position iLCT corresponding to the first internal key iK1 to the kth internal key iKk based on the key index IDX in response to the 0th KV command CMD_KV0, that is, LIST[iK1, iKk], and can detect the corresponding value from the internal KV pair KVPR-int based on the determined internal position. The internal control module 121d can send the detected value as the internal KV pair KVPR-int to the host 110 under the control of the KV manager 121a.

[0108] As described above, the storage device 120 according to an embodiment of the present disclosure may load a pre-stored or determined internal KV pair KVPR-int onto the storage device 121c in an initial operation. In this case, in order to check the admin operations supported by the storage device 120, the host 110 may check the internal KV pair KVPR-int by using the KV command CMD_KV (e.g., LIST command). Afterwards, the host 110 may control various admin operations of the storage device 120 based on the checked internal KV pair KVPR-int.

[0109] In an exemplary embodiment, when information about the internal KV pair KVPR-int is predetermined between the host 110 and the storage device 120 or is predefined by an interface protocol between the host 110 and the storage device 120, the operation of checking the internal KV pair KVPR-int may be omitted.

[0110] In an exemplary embodiment, reference Figure 6 and Figure 7 The described operations may be performed in an initialization operation of the memory system 100, may be periodically performed while the memory system 100 is driven, or may be randomly performed by a separate request.

[0111] Figure 8 It shows Figure 1 Flow chart of the operation of the storage device. In the following, for the convenience of description, the detailed description of the redundant components is omitted. Figure 1 and Figure 8 In operation S110, the storage device 120 may receive a KV command CMD_KV from the host 110. The structure of the KV command CMD_KV is described above, and thus additional description will be omitted to avoid redundancy.

[0112] In operation S120, the storage device 120 may determine whether a key included in the received KV command CMD_KV is an internal key. For example, the KV manager 121a of the storage controller 121 may determine whether a key of the KV command CMD_KV is an internal key based on the key index IDX.

[0113] When the key of the KV command CMD_KV is an internal key, in operation S130, the storage device 120 can determine the operation corresponding to the KV command CMD_KV based on the internal KV pair KVPR-int. For example, as described above, the internal KV pair KVPR-int may include values ​​corresponding to the internal keys respectively. The values ​​included in the internal KV pair KVPR-int may correspond to various admin operations of the storage device 120. Therefore, the storage device 120 can determine the operation corresponding to the KV command CMD_KV (e.g., admin operation) based on the value corresponding to the key (i.e., internal key) of the KV command CMD_KV. In operation S140, the storage device 120 can perform the determined operation.

[0114] When the key of the KV command CMD_KV is not an internal key (e.g., a user key), in operation S150, the storage device 120 may perform an operation corresponding to the KV command CMD_KV based on the user KV pair KVPR-user. For example, the storage device 120 may check the location where the value corresponding to the key (e.g., user key) of the KV command CMD_KV is stored based on the key index IDX, and may send user data from the user KV pair KVPR-user based on the checked location. Alternatively, the storage device 120 may store a value corresponding to the key (e.g., user key) of the KV command CMD_KV in the user KV pair KVPR-user, and may update the key index IDX based on the value storage location and key (e.g., user key) of the KV command CMD_KV.

[0115] 9A to 9E It is used to describe in detail Figure 8 . Hereinafter, for the convenience of description, a detailed description of redundant components is omitted. In addition, for the convenience of description, it is assumed that the first internal key iK1 corresponds to a get log page command for obtaining smart / health information and the second internal key iK2 corresponds to a set feature command for setting a volatile write cache (VWC) function.

[0116] refer to Figure 1 and 9A to 9E , the storage system 100 may include a host 110 and a storage device 120. The storage device 120 may include a storage controller 121 and a non-volatile storage device 122. The storage controller 121 may include a KV manager 121a, a storage device 121c, an internal control module 121d, and an NVM control module 121f. The storage device 121c may include a key index IDX and an internal KV pair KVPR-int. The non-volatile storage device 122 may include a user key-value (KV) pair KVPR-user.

[0117] First, refer to Fig.9A To describe the configuration for performing the first admin operation (eg, a get log page operation for obtaining smart / health information). Fig.9A As shown in , the host 110 may send a first KV command CMD_KV1 to the storage controller 121 for the purpose of performing a first admin operation. The first KV command CMD_KV1 may have a command structure or command format of GET[iK1].

[0118] The KV manager 121a of the storage controller 121 may check whether the first internal key iK1 of the first KV command CMD_KV1 is an internal key based on the key index IDX (e.g., based on the key group identifier). The KV manager 121a may check the first internal position iLCT1 corresponding to the first internal key iK1 based on the key index IDX, and may obtain the value corresponding to the first internal key iK1 from the internal KV pair KVPR-int based on the first internal position iLCT1 (i.e., get log page-smart / health). The KV manager 121a may control the internal control module 121d based on the obtained value (i.e., get log page-smart / health).

[0119] The internal control module 121d may perform a first admin operation corresponding to the obtained value (that is, obtain the intelligence / health of the log page c) under the control of the KV manager 121a. For example, as a result of the first admin operation, the internal control module 121d may send the first device information DI1 to the host 110. In an exemplary embodiment, the first device information DI1 may be intelligence / health information.

[0120] Next, refer to Fig. 9B 1 to describe a configuration for performing a second admin operation (eg, a set feature operation for setting a volatile write cache). Fig. 9B As shown in , the host 110 may send a second KV command CMD_KV2 to the storage controller 121 for the purpose of performing a second admin operation. The second KV command CMD_KV2 may have a command structure or command format of PUT [iK2, V1].

[0121] The KV manager 121a of the storage controller 121 may check whether the second internal key iK2 of the second KV command CMD_KV2 is an internal key based on the key index IDX (e.g., based on the key group identifier). The KV manager 121a may check the second internal position iLCT2 corresponding to the second internal key iK2 based on the key index IDX, and may obtain the value corresponding to the second internal key iK2 (i.e., "Set Feature - VWC") from the internal KV pair KVPR-int based on the second internal position iLCT2. The KV manager 121a may control the internal control module 121d based on the obtained value (i.e., Set Feature - VWC).

[0122] The internal control module 121d may perform a second admin operation corresponding to the obtained value (i.e., set feature-VWC) under the control of the KV manager 121a. For example, the internal control module 121d may update information related to the volatile write cache VWC (or, a register storing information about the feature FT) in the feature FT from the 0th value to the 1st value (V0→V1). In this case, the first value V1 may be a value included in the second KV command CMD_KV2.

[0123] Then, refer to Fig. 9C To describe the configuration of performing a read operation on the first user data UD1. Fig. 9C As shown in , the host 110 may send the third KV command CMD_KV3 to the storage controller 121 for the purpose of performing a read operation on the first user data UD1. The third KV command CMD_KV3 may have a command structure or command format of GET[uK1].

[0124] The KV manager 121a of the storage controller 121 may check that the first user key uK1 of the third KV command CMD_KV3 is a user key based on the key index IDX (e.g., based on the key group identifier). The KV manager 121a may check the first storage location sLCT1 corresponding to the first user key uK1 based on the key index IDX. The KV manager 121a may control the NVM control module 121f based on the first storage location sLCT1.

[0125] The NVM control module 121f can read a value corresponding to the first user key uK1 (ie, first user data UD1) from the user KV pair KVPR-user of the nonvolatile memory device 122 based on the first storage location sLCT1, and can send the read value (ie, first user data UD1) to the host 110.

[0126] Then, refer to Fig.9D To describe the configuration of performing a write operation on the second user data UD2. Fig.9DAs shown in , the host 110 may send the fourth KV command CMD_KV4 to the storage controller 121 for the purpose of performing a write operation on the second user data UD2. The fourth KV command CMD_KV4 may have a command structure or command format of PUT[uK2, V2].

[0127] The KV manager 121a of the storage controller 121 may check whether the second user key uK2 of the fourth KV command CMD_KV4 is a user key based on the key index IDX (e.g., based on the key group identifier). The KV manager 121a may determine or allocate a storage location (e.g., a second storage location sLCT2) where the second value V2 of the fourth KV command CMD_KV4 is to be stored based on the key index IDX. The KV manager 121a may control the NVM control module 121f based on the allocated storage location sLCT2.

[0128] Under the control of the KV manager 121a, the NVM control module 121f may store the second value V2 as the second user data UD2 in the area corresponding to the allocated storage location sLCT2 of the user KV pair KVPR-user of the nonvolatile memory device 122. In other words, the NVM control module 121f may store the second value V2 corresponding to the second user key uK2 in the user KV pair KVPR-user as the second user data UD2.

[0129] In an exemplary embodiment, after the write operation is completed or while performing the write operation, the KV manager 121a may update the key index IDX based on the allocated storage location sLCT2 and the second user key uK2. That is, the updated key index IDX may include information about the second user key uK2 and information about the allocated storage location sLCT2.

[0130] Then, refer to Fig.9E To describe the configuration of performing a deletion operation on the second user data UD2. Fig.9E As shown in FIG. 1 , the host 110 may send the fifth KV command CMD_KV5 to the storage controller 121 for the purpose of performing a delete operation on the second user data UD2. The fifth KV command CMD_KV5 may have a command structure or command format of DEL[uK2].

[0131] The KV manager 121a of the storage controller 121 may check whether the second user key uK2 of the fifth KV command CMD_KV5 is a user key based on the key index IDX (e.g., based on the key group identifier). The KV manager 121a may check the second storage location sLCT2 corresponding to the second user key uK2 based on the key index IDX. The KV manager 121a may control the NVM control module 121f based on the second storage location sLCT2.

[0132] Under the control of the KV manager 121a, the NVM control module 121f may delete the second user data UD2 corresponding to the second user key uK2 from the user KV pair KVPR-user. In an exemplary embodiment, the NVM control module 121f may physically delete the second user data UD2 under the control of the KV manager 121a. Alternatively, under the control of the KV manager 121a, the NVM control module 121f may logically erase the second user data UD2 (e.g., invalidate the second user data UD2), after which the NVM control module 121f may physically delete the second user data UD2 under certain conditions (e.g., garbage collection).

[0133] After the second user data UD2 is physically or logically deleted, the KV manager 121a may update the key index IDX. That is, the updated key index IDX may not include information related to the second user key uK2 corresponding to the second user data UD2. Alternatively, the updated key index IDX may include invalid information about the second user key uK2.

[0134] As described above, the storage system 100 according to the embodiment of the present disclosure can perform various input / output operations and various admin operations based on KV commands. Fig.9A and Fig. 9C As described above, the first admin operation and the read operation may be performed by using the same type of KV command (i.e., GET command). In this case, even if the KV commands used for the first admin operation and the read operation are of the same type, the first admin operation and the read operation may be performed by changing the key included in the KV command. Alternatively, as described in reference Fig. 9B and Fig.9D , the second admin operation and the write operation can be performed by using the same type of KV command (i.e., PUT command). In this case, even if the KV commands used for the second admin operation and the write operation are of the same type, the second admin operation and the write operation can be performed by changing the key included in the KV command. In other words, the KV command used for the read operation or the write operation can be used for any other admin operation.

[0135] In an exemplary embodiment, the KV commands being of the same type may mean that the values ​​of specific fields of the KV commands are the same. For example, the KV commands being of the same type may mean that the fields of the operation codes OpCode of the KV commands are the same. Alternatively, the KV commands being of the same type may mean that the headers of the KV commands are the same. However, the present disclosure is not limited thereto.

[0136] That is, according to an embodiment of the present disclosure, various operations of a storage device may be supported in a state where the number of command formats or command types defined between a host and a storage device is minimized.

[0137] Fig.10 It shows Figure 1 A flowchart of the operation of the storage system. Fig.10 A configuration is described in which the host 110 updates the internal KV pair KVPR-int and performs an admin operation based on the updated internal KV pair KVPR-int. In the following, for the convenience of description, a detailed description of redundant components is omitted.

[0138] refer to Figure 1 and Fig.10 , in operation S211, the host 110 may transmit a first KV command CMD_KV1 to the storage device 120. In this case, the first KV command CMD_KV1 may have a command structure or command format of PUT[iK1, V1].

[0139] In operation S212, the storage device 120 may set a field corresponding to the first internal key iK1 to a first value V1. For example, the storage device 120 may set or update a field of the internal KV pair KVPR-int corresponding to the first internal key iK1 to the first value V1.

[0140] In operation S213, the host 110 may transmit the second KV command CMD_KV2 to the storage device 120. The second KV command CMD_KV2 may have a command structure or command format of GET[iK1].

[0141] In operation S214, the storage device 120 may perform a first operation corresponding to the first internal key iK1 and the first value V1. For example, through operations S211 and S212, the field of the internal KV pair KVPR-int corresponding to the first internal key iK1 is set to the first value V1. That is, in the case of receiving the second KV command CMD_KV2 having the GET[iK1] structure through operation S213, the storage device 120 may perform an operation corresponding to the first internal key iK1 and the first value V1. FIG. 11A to FIG. 11E Operation S214 is described in more detail.

[0142] In operation S215, the storage device 120 may send the first device information DI1 as a result of the first operation to the host 110. For example, in the case where the information corresponding to the first internal key iK1 corresponds to the "get log page" command and the first value V1 corresponds to the smart / health information, the first device information DI1 may be the smart / health information. FIG. 11A to FIG. 11E Operation S215 is described in more detail.

[0143] Thereafter, the host 110 and the storage device 120 may perform operations S221 to S225. Operations S221 to S225 are similar to operations S211 to S215 except that the value is the second value V2 and the device information is the second device information DI2, and thus additional description will be omitted to avoid redundancy.

[0144] As described above, the host 110 can set the field corresponding to the specific internal key to the value corresponding to the specific admin operation by using the PUT type KV command, and then can use the GET type KV command including the specific internal key to perform the specific admin operation. That is, the internal KV pair KVPR-int can be updated by the host 110, and the host 110 can perform various admin operations based on the updated internal KV pair.

[0145] FIG. 11A to FIG. 11E Is used to describe Fig.10 For ease of description, detailed descriptions of redundant components are omitted. First, refer to Figure 1 and 11A , the key index IDX may include information about the internal keys iK1 to iK3 and information about the internal positions iLCT1 to iLCT3. The internal KV pairs KVPR-int may include values ​​associated with the internal keys iK1 to iK3. In this case, Figure 5 Different descriptions are given, and it is not necessary to define the Fig.11A At least one field (e.g., an identifier) ​​in each value in the internal KV pair KVPR-int. That is, the value corresponding to the first internal key iK1 may include information corresponding to the get log page command, but may not include information about the identifier. Similarly, the value corresponding to the second internal key iK2 may include information corresponding to the get feature command, but may not include information about the identifier; the value corresponding to the third internal key iK3 may include information corresponding to the set feature command, but may not include information about the identifier. However, Fig.11AThe key index IDX and the internal KV pair KVPR-int shown in are exemplary, and the present disclosure is not limited thereto. For example, the internal KV pair KVPR-int may also include various commands or command types supporting various different admin operations as values.

[0146] In an exemplary embodiment, as shown in FIG. Fig.10 As described, the host 110 may update the internal KV pair KVPR-int by setting a specific field (eg, identifier) ​​of the internal KV pair KVPR-int using a PUT type KV command. The host 110 may perform an admin operation based on the updated internal KV pair KVPR-int.

[0147] refer to Figure 1 and Figures 10 to 11E , the storage device 120 may include a storage controller 121 and a non-volatile memory device 122. The storage controller 121 may include a KV manager 121a, a storage device 121c, an internal control module 121d, and an NVM control module 121f. The storage device 121c may include a key index IDX and an internal KV pair KVPR-int. For ease of description, it is assumed that the internal KV pair KVPR-int includes information related to the get log page command and the get feature command as values ​​corresponding to the first internal key iK1 and the second internal key iK2.

[0148] Reference Fig. 11B and Fig. 11C To describe how to obtain intelligence / health information by using the first internal key iK1. Fig. 11B As shown in , the host 110 may send a first KV command CMD_KV1 to the storage controller 121. The first KV command CMD_KV1 may have a command structure or command format of PUT[iK1, V1].

[0149] The KV manager 121a may check whether the first internal key iK1 of the first KV command CMD_KV1 is an internal key based on the key index IDX. The KV manager 121a may check the first internal position iLCT1 storing the value corresponding to the first internal key iK1 based on the key index IDX. The KV manager 121a may set a specific field (e.g., an identifier) ​​to a first value V1 at the first internal position iLCT1. In this case, the first value V1 may indicate an identifier corresponding to smart / health information.

[0150] Afterwards, if Fig. 11CAs shown in , the host 110 may send a second KV command CMD_KV2 to the storage controller 121. The second KV command CMD_KV2 may have a command structure or command format of GET[iK1]. The KV manager 121a may control the internal control module 121d based on a value corresponding to the first internal key iK1 (e.g., get log page-smart / health) in response to the second KV command CMD_KV2, and the internal control module 121d may output the first device information DI1. In addition to additionally setting a specific field corresponding to the first internal key iK1, Fig. 11C Operation and Fig.9A The operations are similar, so additional description will be omitted to avoid repetition.

[0151] Next, we will refer to FIG. 11D to FIG. 11E Describe how to obtain FW slot information by using the first internal key iK1. Fig.11D As shown in , the host 110 may send the third KV command CMD_KV3 to the storage controller 121. The third KV command CMD_KV3 may have a command structure or command format of PUT[iK1, V2].

[0152] The KV manager 121a may check whether the first internal key iK1 of the third KV command CMD_KV3 is an internal key based on the key index IDX. The KV manager 121a may check the first internal position iLCT1 storing the value corresponding to the first internal key iK1 based on the key index IDX. The KV manager 121a may set a specific field (e.g., an identifier) ​​to a second value V2 at the first internal position iLCT1. In this case, the second value V2 may indicate an identifier corresponding to the FW slot information.

[0153] Afterwards, if Fig.11E As shown in , the host 110 may send a second KV command CMD_KV2 to the storage controller 121. The second KV command CMD_KV2 may have a command structure or command format of GET[iK1]. The KV manager 121a may control the internal control module 121d based on a value corresponding to the first internal key iK1 (e.g., get a log page-FW slot) in response to the second KV command CMD_KV2, and the internal control module 121d may output the second device information D12.

[0154] As described above, depending on the value previously set to a specific internal key, different admin operations can be performed by using the same KV command (e.g., GET[iK1]). That is, the host 110 can update the internal KV pair KVPR-int by using a PUT type KV command, and various admin operations can be performed by using the updated internal KV pair. Therefore, since it is not necessary to define a separate command for each of the various admin operations, the interface between the host 110 and the storage device 120 can be simplified. Therefore, a storage system with improved performance and reduced cost is provided.

[0155] Fig.12 It shows Figure 1 Flow chart of the operation of the storage system. For the convenience of description, the detailed description of the redundant components is omitted. Figure 1 and Fig.12 In operation S310, the host 110 may send a first KV command CMD_KV1 to the storage device 120. The first KV command CMD_KV1 may have a command structure or command format of PUT [iKn, V_n]. In this case, "iK_n" may indicate information about a new internal key, and "V_n" may indicate a value corresponding to the new internal key.

[0156] That is, in order to perform an admin operation of the storage device 120 that is not defined by the internal KV pair KVPR-int, the host 110 may send a first KV command CMD_KV1 including a new internal key iK_n and a corresponding value V_n to the storage device 120 .

[0157] In operation S320, in response to the first KV command CMD_KV1, the storage device 120 may update the internal KV pair KVPR-int and the key index IDX based on the new internal key iK_n and the corresponding value V_n. For example, the storage controller 121 may determine a new internal position iLCT_n associated with the new internal key iK_n, and may store the value V_n corresponding to the new internal position iLCT_n. The storage controller 121 may register or update the new internal position iLCT_n and the new internal key iK_n at the key index IDX.

[0158] In operation S330, the host 110 may transmit the second KV command CMD_KV2 to the storage device 120. The second KV command CMD_KV2 may have a command structure or command format of GET[iK_n].

[0159] In operation S340, in response to the second KV command CMD_KV2, the storage device 120 may perform an operation corresponding to the new internal key iK_n and the corresponding value V_n. In operation S350, the storage device 120 may send device information DI_n to the host 110 as a result of operation S340. Operations S340 and S350 are similar to the above description except that the internal key iK_n and the value V_n are newly defined by the host 110, so additional description will be omitted to avoid redundancy.

[0160] Fig.13 It shows Figure 1 A flowchart of the operation of the storage device. Figure 1 and Fig.13 In operation S410, the storage device 120 may download a firmware file. For example, the storage device 120 may download a firmware file provided from a manufacturer through a network connected to the host 110. Alternatively, the storage device 120 may download the firmware file through a separate communication channel.

[0161] In operation S420, the storage device 120 may perform a firmware update based on the firmware file to update the internal KV pair KVPR-int. For example, as described above, the internal KV pair KVPR-int may be managed within the storage device 120 and may be given information. That is, the internal KV pair KVPR-int may be provided in the form of firmware. In the case where a new admin function is added to the storage device 120, the internal KV pair KVPR-int may be updated through a firmware update provided by the manufacturer.

[0162] In an exemplary embodiment, the current communication channel supporting a specific interface protocol may not meet the new interface protocol to which the new function is added. On the contrary, according to the above-mentioned embodiment of the present disclosure, even if a new function between the host 110 and the storage device 120 is newly added, the newly added function can be supported by performing a firmware update on the internal KV pair KVPR-int. Therefore, a storage system with reduced cost is provided.

[0163] Fig.14 It shows Figure 1 A flowchart of the operation of the storage device. Fig.14 The configuration for managing the operation log by using the key-value pair on the storage device 120 is described. In order to simplify the description, the detailed description of the redundant components is omitted.

[0164] refer to Figure 1 and Fig.14In operation S510, the storage device 120 may receive an input / output command from the host 110. In an exemplary embodiment, the input / output command may be a KV command CMD_KV associated with the user key uK. That is, the input / output command may have a data structure or command format of GET[uK], PUT[uK,V], DEL[uK], etc.

[0165] In operation S520, the storage device 120 may perform an operation corresponding to the input / output command. For example, in the case where the input / output command is a KV command of GET[uK], the storage device 120 may send user data corresponding to the user key uK to the host 110. Alternatively, in the case where the input / output command is a KV command of PUT[uK,V], the storage device 120 may store the value "V" in the user KV pair KVPR-user of the non-volatile storage device 122, and may update the key index IDX. Alternatively, in the case where the input / output command is a KV command of DEL[uK], the storage device 120 may delete or remove the value or user data corresponding to the user key uK from the user KV pair KVPR-user.

[0166] In operation S530, the storage device 120 may write an operation log entry into a log buffer. For example, the operation log entry may indicate information or rough information related to the operation performed in operation S520. The storage device 120 may write an operation log entry corresponding to the performed operation into a log buffer that is a part of the storage device 121c (see Figure 2 ) or in a separate log buffer.

[0167] In operation S540, the storage device 120 may determine whether the log buffer is full. For example, the storage device 120 may determine whether the pre-allocated log buffer is completely filled with operation log entries. In an exemplary embodiment, the storage device 120 may determine whether the total size of the operation log written in the log buffer is a reference value or larger.

[0168] When the log buffer is not completely filled with operation log entries (ie, when there is free space in the log buffer), the storage device 120 continues to perform operation S510.

[0169] When the log buffer is completely filled with operation log entries (ie, when there is no free space in the log buffer), in operation S550, the storage device 120 may generate log data LD based on the log entries stored in the log buffer. For example, the log data LD may be a combination of multiple log entries stored in the log buffer.

[0170] In operation S560, the storage device 120 may store the generated log data LD in the nonvolatile memory device 122. In an exemplary embodiment, the log data LD may be stored in an operation log KV pair KVPR-op (refer to Fig.15E In an exemplary embodiment, after the log data LD is stored in the nonvolatile memory device 122, the log buffer may be reset or released.

[0171] In operation S570, the storage device 120 may update the key index IDX based on the stored log data LD. For example, the storage device 120 may assign an operation log key ok to the log data LD, and may update the key index IDX based on the assigned operation log key ok and the storage location where the log data is stored.

[0172] That is, as described above, the storage device 120 according to an embodiment of the present disclosure can manage an operation log associated with an operation performed internally by using a KV pair without a separate explicit command or request from the host 110. In an exemplary embodiment, information about an operation log key can be provided to the host 110 by a LIST-type KV command from the host 110. The host 110 can read the log data LD from the storage device 120 by using a KV command (e.g., a GET[oK]-type KV command) based on the information about the operation log key.

[0173] FIG. 15A to FIG. 15E Is used to describe Fig.14 Detailed description of redundant components is omitted for ease of description. Fig.14 The flowchart uses KV to manage the operation log in a way that is not necessary. However, the present disclosure is not limited to this. For example, reference FIG. 15A to FIG. 15E The storage system 100 described above may be configured to perform the Figures 1 to 13 The described operation method (admin operation using internal keys).

[0174] refer to Figure 1 , Fig.14 and FIG. 15A to FIG. 15E, the storage system 100 may include a host 110 and a storage device 120. The storage device 120 may include a storage controller 121 and a non-volatile memory device 122. The storage controller 121 may include a KV manager 121a, a storage device 121c, and an NVM control module 121f. The storage device 121c may include a key index IDX and a log buffer LB. The non-volatile memory device 122 may include a user key-value (KV) pair KVPR-user. In an exemplary embodiment, the log buffer LB may indicate a portion of the space of the storage device 121c that is allocated as a write operation log. In an exemplary embodiment, the log buffer LB may be implemented with a separate memory.

[0175] like Fig.15A As shown in , the host 110 may send a first KV command CMD_KV1 having a structure of PUT [uK1, V1] to the storage controller 121. The KV manager 121a may control the NVM control module 121f based on the first KV command CMD_KV1. The NVM control module 121f may store a first value V1 corresponding to the first user key uK1 in the user KV pair KVPR-user as the first user data UD1. The KV manager 121a may update the key index IDX based on the first storage location sLCT1 storing the first value V1 corresponding to the first user key uK1.

[0176] The NVM control module 121f may write information {PUT.uK1} related to an operation corresponding to the first KV command CMD_KV1 (ie, an operation of storing the first value V1 corresponding to the first user key uK1) into the log buffer LB.

[0177] Next, if Fig. 15B As shown in , the host 110 may send a second KV command CMD_KV2 having a structure of PUT[uK2, V2] to the storage controller 121. As described above, the NVM control module 121f may store a second value V2 corresponding to the second user key uK2 in the user KV pair KVPR-user as second user data UD2, and may write information {PUT.uK2} related to the operation corresponding to the second KV command CMD_KV2 to the log buffer LB. The KV manager 121a may update the key index IDX based on the second storage location sLCT2 storing the second value V2 and the second user key uK2.

[0178] Then, if Fig. 15CAs shown in , the host 110 may send a third KV command CMD_KV3 having a structure of PUT [uK2, V3] to the storage controller 121. The KV manager 121a may check whether there is a second user data UD2 corresponding to the second user key uK2 in the user KV pair KVPR-user based on the key index IDX. In this case, under the control of the KV manager 121a, the NVM control module 121f may replace or update the second user data UD2 of the user KV pair KVPR-user from the second value V2 to the third value V3.

[0179] The NVM control module 121f may write information {PUT.uK2} related to the operation corresponding to the third KV command CMD_KV3 into the log buffer LB. Since information about the second user key uK2 is included in the key index IDX, the KV manager 121a may not update the key index IDX.

[0180] Then, if Fig.15D As shown in FIG. 1 , the host 110 may send a fourth KV command CMD_KV4 having a structure of DEL[uK1] to the storage controller 121. The KV manager 121a may check a first storage location sLCT1 storing a value (i.e., first user data UD1) corresponding to a first user key uK1 of the fourth KV command CMD_KV4 based on a key index IDX, and may control the NVM control module 121f based on the first storage location sLCT1.

[0181] The NVM control module 121f may remove, invalidate, or delete the first user data UD1 corresponding to the first user key uK1 from the user KV pair KVPR-user under the control of the KV manager 121a. The NVM control module 121f may write information {DEL.uK1} related to the operation with respect to the fourth KV command CMD_KV4 into the log buffer LB.

[0182] like Fig.15E As shown in , the log buffer LB may be full. In this case, the storage controller 121 may generate log data LD based on the log entries "{PUT.uK1}, {PUT.uK2}, {DEL.uK2}, and {DEL.uK1}" stored in the log buffer LB, and may store the generated log data LD in the operation log KV pair KVPR-op of the nonvolatile memory device 122.

[0183] The KV manager 121a may assign the first operation log key ok1 to the log data LD. The KV manager 121a may update the key index IDX based on the first operation log key ok1 and the storage location sLCT3 storing the log data LD corresponding to the first operation log key ok1. That is, the updated key index IDX may include information related to the first operation log key ok1 and the third storage location sLCT3.

[0184] In an exemplary embodiment, the first operation log key ok1 may be managed as an internal key, and a key group identifier corresponding to the internal key may be assigned to the first operation log key ok1.

[0185] In an exemplary embodiment, Fig.15E After the embodiment, in the case of receiving the KV command of GET[ok1] from the host 110, the storage controller 121 may provide the log data LD corresponding to the first operation log key ok1 from the operation log KV pair KVPR-op to the host 110. The host 110 may use the log data LD included in the operation log KV pair KVPR-op for logging.

[0186] In an exemplary embodiment, when there is insufficient available space in the storage device 120 (i.e., when there is insufficient space for the user KV pair KVPR-user), the host 110 can ensure the storage space of the storage device 120 (i.e., space for the user KV pair KVPR-user) by deleting the log data LD included in the operation log KV pair KVPR-op using a DEL type KV command.

[0187] As described above, according to an embodiment of the present disclosure, the storage device 120 can manage an operation log associated with an operation performed internally by using a KV pair without a separate explicit command or request from the host 110. Therefore, since a separate command for managing the operation log is not required, the interface of the storage system can be simplified.

[0188] Fig.16 is shown for storage Fig.15E A diagram of the internal data structure of the log data. Fig.16 , the data structure may include a KV pair header, an operation log key ok, padding information, and log data LD (ie, value).

[0189] The KV pair header may include information required to store the log data LD in the operation log KV pair KVPR-op (eg, a PUT command header). The operation log key ok may include information about the operation log key. The padding information may be any value used to adjust the size of the data structure.

[0190] The log data LD may include a log header and a plurality of log entries. The log header and the plurality of log entries may include the information in Table 2 below.

[0191]

Table 2

[0192]

[0193]

[0194] Referring to Table 2 above, the log header may include a 2-byte signature, an 8-byte log header sequence number, a 4-byte key operation log count, and 4 types of size information. Each of the multiple log entries may include 2-byte operation type information of the corresponding KV command, 2-byte key group identifier information, 4-byte key size information, 8-byte reserved information, and size variable key information. Fig.16 According to the data structure shown in , log data LD including a plurality of operation log entries may be stored in the operation log KV pair KVPR-op of the nonvolatile memory device 122 .

[0195] Fig.17 It shows Figure 1 A flowchart of the operation of the storage device. Fig.17 An embodiment in which the storage device 120 manages the internal KV pair KVPR-int and the operation log KV pair KVPR-op is described. To simplify the description, it is assumed that the KV command received from the host 110 is a GET command including a first key.

[0196] refer to Figure 1 , Fig.15E and Fig.17 , in operation S1100, the storage device 120 may receive a KV command from the host 110. In this case, the KV command may be a GET command including a first key.

[0197] In operation S1200, the storage device 120 may determine whether the first key is an internal key. For example, the storage controller 121 may determine whether the first key is an internal key or a user key based on a key group identifier included in the first key.

[0198] When the first key is an internal key, in operation S1300, the storage device 120 may determine whether a value corresponding to the first key is stored in the nonvolatile memory device 122. For example, the storage device 120 may check the location where the first key is stored based on the key index IDX. In an exemplary embodiment, when the first key corresponds to information of the internal KV pair KVPR-int, the value corresponding to the first key may be stored in the storage device 121c of the storage controller 121; when the first key corresponds to information of the operation log KV pair KVPR-op, the value corresponding to the first key may be stored in the nonvolatile memory device 122.

[0199] When there is no value corresponding to the first key in the nonvolatile memory device 122, in operation S1400, the storage device 120 can find the corresponding value from the internal KV pair KVPR-int. For example, as described above, in the case where the first key corresponds to the internal KV pair KVPR-int to obtain the log page-intelligence / health information, the storage device 120 can find or generate the intelligence / health information as the corresponding value. That is, the corresponding value can be determined by performing an operation corresponding to the value of the first key.

[0200] When a value corresponding to the first key exists in the nonvolatile memory device 122 , in operation S1500 , the storage device 120 may find the value corresponding to the first key (ie, log data) from the operation log KV pair KVPR-op.

[0201] When the first key is not an internal key (ie, in the case where the first key is a user key), in operation S1600 , the storage device 120 may find user data corresponding to the first key as a value from the user KV pair KVPR-user of the nonvolatile memory device 122 .

[0202] In operation S1700 , the storage device 120 may transmit the found or generated value to the host 110 .

[0203] As described above, the storage system 100 according to an embodiment of the present disclosure can support a method of extracting or reading various types of information (e.g., user data, operation logs, or information about various admin operations) by using a single type of KV command (e.g., a GET command). Therefore, the interface of the storage system 100 can be simplified, and new functions can be easily added / changed / deleted without requiring a separate interface change. Therefore, a storage system with improved performance and reduced cost is provided.

[0204] Fig.18 is a block diagram showing a storage system according to an embodiment of the present disclosure. Fig.18, the storage system 1000 may include a host 1100 and a storage device 1200. The host 1100 may be configured to control the storage device 1200.

[0205] The storage device 1200 may include a storage controller 1210 and a non-volatile memory device 1220. The storage controller 1210 may include a plurality of NVMe controllers 1211 to 1213. Each of the plurality of NVMe controllers 1211 to 1213 may communicate with the host 1100 through a physical port PT. In an exemplary embodiment, the plurality of NVMe controllers 1211 to 1213 may communicate with the host 1100 through different physical ports (not shown). The physical port PT may indicate a physical layer defined by a PCIe interface protocol.

[0206] The plurality of NVMe controllers 1211 to 1213 may be configured to respectively control the namespaces NS0 to NS3 of the nonvolatile memory device 1220 under the control of the host 1100. For example, the nonvolatile memory device 1220 may be divided into a plurality of namespaces NS0 to NS3. Each of the plurality of namespaces NS0 to NS3 may be a logically divided or physically divided storage space. Each of the plurality of namespaces NS0 to NS3 may be configured to have independent attributes under the control of the host 1100.

[0207] The first NVMe controller 1211 may control the 0th namespace NS0 and the first namespace NS1, the second NVMe controller 1212 may control the 0th namespace NS0 and the second namespace NS2, and the third NVMe controller 1213 may control the third namespace NS3. That is, the 0th namespace NS0 may be a namespace shared by each of the first NVMe controller 1211 and the second NVMe controller 1212.

[0208] In an exemplary embodiment, the host 1100 may control the storage device 1200 through an admin submission queue ASQ, an admin completion queue ACQ, a submission queue SQ, and a completion queue CQ. The admin submission queue ASQ may be configured to queue an admin command to be provided to at least one of the plurality of NVMe controllers 1211 to 1213. The admin completion queue ACQ may be configured to queue completion information about the admin command. The submission queue SQ may be configured to queue an input / output command to be provided to at least one of the plurality of NVMe controllers 1211 to 1213. The completion queue CQ may be configured to queue completion information about the input / output command.

[0209] The admin submission queue ASQ, the admin completion queue ACQ, the submission queue SQ and the completion queue CQ can be provided to each of the multiple NVMe controllers 1211 to 1213, can be shared by the multiple NVMe controllers 1211 to 1213, can be provided to each of the multiple namespaces NS0 to NS3, or can be shared by the multiple namespaces NS0 to NS3.

[0210] In an exemplary embodiment, at least one of the plurality of namespaces NS0 to NS3 may be used as a key-value store. For example, the attributes of the first namespace NS1 of the plurality of namespaces NS0 to NS3 may be set as a key-value store. In this case, the attributes of the first namespace NS1 may be set as a key-value store based on the reference Figures 1 to 17 The described operation method operates the first NVMe controller 1211 configured to control the first namespace NS1. That is, the first NVMe controller 1211 can execute the reference in response to the KV command CMD_KV from the host 1100. Figures 1 to 17 In this case, the internal KV pair KVPR-int can be managed by the first NVMe controller 1211.

[0211] In an exemplary embodiment, the first NVMe controller 1211 is based on the reference Figures 1 to 17 When the described operation method is performed, the host 1100 can queue the commands of admin operations associated with the first namespace NS1 (ie, KV commands including internal keys) in the admin submission queue ASQ or in the submission queue SQ instead of in the admin submission queue ASQ.

[0212] As described above, the storage system 1000 according to an embodiment of the present disclosure may manage the storage space of the nonvolatile memory device 1220 through a plurality of name spaces, and may manage the storage space of the nonvolatile memory device 1220 based on the reference name space. Figures 1 to 18 The described operation method (ie, admin operation using internal KV pairs) manages at least a portion of multiple namespaces.

[0213] Fig.19 is a block diagram showing a storage system according to an embodiment of the present disclosure. Fig.19 , the storage system 2000 may include a host 2100 and a first storage device 2210 and a second storage device 2220. The host 2100 may communicate with the first storage device 2210 and the second storage device 2220 via an interface channel IF. In an exemplary embodiment, the interface channel IF may be configured to support reference Figures 1 to 18 Describes the communication channel for KV commands.

[0214] Each of the first storage device 2210 and the second storage device 2220 may be a reference Figures 1 to 18 The storage device described. That is, each of the first storage device 2210 and the second storage device 2220 can be configured to manage an internal KV pair KVPR-int or an operation log KV pair KVPR-op. In an exemplary embodiment, the internal KV pair KVPR-int managed by the first device 2210 may be different from the internal KV pair KVPR-int managed by the second device 2220. That is, the admin operations supported by the first storage device 2210 and the second storage device 2220 may be different. However, according to an embodiment of the present disclosure, since various admin operations are performed by using the same type of KV commands, even if the admin operations supported by the first storage device 2210 and the second storage device 2220 are different, the host 2100 can normally perform the admin operations supported by the first storage device 2210 and the second storage device 2220.

[0215] Fig. 20 is a block diagram showing a data center to which a storage system according to an embodiment of the present disclosure is applied. Fig. 20 , the data center 3000 may include a plurality of computing nodes 3100 to 3400 (or, servers). The plurality of computing nodes 3100 to 3400 may communicate with each other through a network NT. In an exemplary embodiment, the network NT may be a storage-specific network such as a storage area network (SAN), or may be an Internet network such as TCP / IP. In an exemplary embodiment, the network NT may include at least one of the following various communication protocols, such as Fibre Channel, iSCSI protocol, FCoE, NAS, and NVMe-oF.

[0216] The plurality of computing nodes 3100 to 3400 may include processors 3110 , 3210 , 3310 , and 3410 , memories 3120 , 3220 , 3320 , and 3420 , storage devices 3130 , 3230 , 3330 , and 3430 , and interface circuits 3140 , 3240 , 3340 , and 3440 .

[0217] For example, the first computing node 3100 may include a first processor 3110, a first memory 3120, a first storage device 3130, and a first interface circuit 3140. In an exemplary embodiment, the first processor 3110 may be implemented with a single core or multiple cores. The first memory 3120 may include a memory such as DRAM, SDRAM, SRAM, 3D XPoint memory, MRAM, PRAM, FeRAM, or ReRAM. The first memory 3120 may be used as a system memory, a working memory, or a buffer memory of the first computing node 3100. The first storage device 3130 may be a large-capacity storage medium such as a hard disk drive (HDD) or a solid-state drive (SSD). The first interface circuit 3140 may be a network interface controller (NIC) configured to support communication through a network NT.

[0218] In an exemplary embodiment, the first processor 3110 of the first computing node 3100 may be configured to access the first memory 3120 based on a given memory interface. Alternatively, in an embodiment of a shared memory architecture, the first processor 3110 of the first computing node 3100 may be configured to access the memories 3220, 3320, and 3420 of the remaining computing nodes 3200, 3300, and 3400 through a network NT. The interface circuit 3140 may include a network switch (not shown) configured to control or support access of the first processor 3110 to the shared memory (i.e., the memory of any other computing node).

[0219] In an exemplary embodiment, the first processor 3110 of the first computing node 3100 may be configured to access the first storage device 3130 based on a given storage interface. Alternatively, the first processor 3110 of the first computing node 3100 may be configured to access the storage devices 3230, 3330, and 3430 of the remaining computing nodes 3200, 3300, and 3400 through the network NT. The interface circuit 3140 may include a network switch (not shown) configured to control or support the first processor 3110's access to the storage device of any other computing node. In an exemplary embodiment, the storage devices 3130 to 3430 respectively included in the plurality of computing nodes 3100 to 3400 may constitute a RAID volume.

[0220] The operations of the second to fourth computing nodes 3200 to 3400 may be similar to the operations of the first computing node 3100 described above, and thus additional descriptions will be omitted to avoid redundancy.

[0221] In an exemplary embodiment, various applications may be executed at the data center 3000. The application may be configured to execute instructions for moving or copying data between the computing nodes 3100 to 3400, or may be configured to execute instructions for combining, processing, or reproducing various information present on the computing nodes 3100 to 3400. In an exemplary embodiment, the application may be executed by one of the plurality of computing nodes 3100 to 3400 included at the data center 3000, or may be distributed and executed among the plurality of computing nodes 3100 to 3400.

[0222] In an exemplary embodiment, data center 3000 can be used for high performance computing (HPC) (e.g., finance, petroleum, material science, weather forecasting), enterprise applications (e.g., extended databases), big data applications (e.g., NoSQL databases or in-memory replication).

[0223] In an exemplary embodiment, at least one of the plurality of computing nodes 3100 to 3400 may be an application server. The application server may be configured to execute an application configured to perform various operations at the data center 3000. At least one of the plurality of computing nodes 3100 to 3400 may be a storage server. The storage server may be configured to store data generated or managed at the data center 3000.

[0224] In an exemplary embodiment, the plurality of computing nodes 3100 to 3400 or parts thereof included in the data center 3000 may exist in the same site or sites physically separated from each other, and may communicate with each other through wireless communication or wired communication based on the network NT. In an exemplary embodiment, the plurality of computing nodes 3100 to 3400 included in the data center 3000 may be implemented by the same memory technology or may be implemented by different memory technologies.

[0225] Although not shown in the figure, at least a portion of the plurality of computing nodes 3100 to 3400 of the data center 3000 may communicate with an external client node (not shown) through the network NT or through any other communication interface (not shown). At least a portion of the plurality of computing nodes 3100 to 3400 may automatically process a request (e.g., data storage or data transmission) depending on a request of the external client node, or may process the request at any other computing node.

[0226] In the exemplary embodiment, the number of computing nodes 3100 to 3400 included in the data center 3000 is exemplary, and the present disclosure is not limited thereto. In addition, in each computing node, the number of processors, the number of memories, and the number of storage devices are exemplary, and the present disclosure is not limited thereto.

[0227] In an exemplary embodiment, each of the plurality of computing nodes 3100 to 3400 may be a reference Figures 1 to 19 The host described, and each of the storage devices 3130 to 3400 respectively included in the plurality of computing nodes 3100 to 3400 may be a reference Figures 1 to 19 The plurality of computing nodes 3100 to 3400 may be based on reference Figures 1 to 19 The KV commands described above are used to control the storage devices 3130 to 3400 respectively. Each of the storage devices 3130 to 3400 can be configured to manage the Figures 1 to 19 The internal KV pairs described and can be based on the reference Figures 1 to 19 The described method of operation is performed.

[0228] According to an embodiment of the present disclosure, a storage device can manage internal key-value (KV) pairs including information related to various admin operations. A host can access the internal KV pairs through key-value commands provided by a key-value interface to perform various admin operations on the storage device. Therefore, since separate commands for performing various admin operations are not required, the interface between the host and the storage device can be simplified. In other words, a storage device and an operating method thereof with improved performance and reduced cost are provided.

[0229] As is common in the art, embodiments can be described and illustrated around a block that performs a desired function. These blocks, which may be referred to herein as units or modules, are physically implemented by analog and / or digital circuits such as logic gates, integrated circuits, microprocessors, microcontrollers, memory circuits, passive electronic components, active electronic components, optical components, hard-wired circuits, etc., and may be optionally driven by firmware and / or software. For example, the circuit may be specifically implemented in one or more semiconductor chips, or on a substrate support such as a printed circuit board. The circuit constituting the block may be implemented by dedicated hardware or by a processor (e.g., one or more programmed microprocessors and associated circuits), or by a combination of dedicated hardware for performing some functions of the block and a processor for performing other functions of the block. Without departing from the scope of the present disclosure, each block of the embodiment may be physically divided into two or more interactive and discrete blocks. Similarly, without departing from the scope of the present disclosure, the block of the embodiment may be physically combined into more complex blocks. An aspect of the embodiment may be implemented by instructions stored in a non-temporary storage medium and executed by a processor.

[0230] While the present disclosure has been described with reference to exemplary embodiments thereof, it will be apparent to those skilled in the art that various changes and modifications can be made thereto without departing from the spirit and scope of the present disclosure as set forth in the appended claims.

Claims

1. A method for operating a storage device, the storage device comprising a non-volatile storage device, the method include: receiving a first key-value KV command including a first key from an external host device; In response to the first KV command, sending a first value corresponding to the first key from the nonvolatile memory device to the external host device as first user data; receiving a second KV command including a second key from the external host device; as well as In response to the second KV command, performing a first management operation based on a second value corresponding to the second key, wherein: The first KV command and the second KV command are KV commands of the same type; as well as The second value includes information related to both a management command and a command identifier, each of the management command and the command identifier corresponding to the first management operation.

2. The method according to claim 1, in: The first key includes information associated with a first key group identifier and a first key name indicating a user key, and The second key includes information associated with a second key group identifier indicating an internal key and a second key name.

3. The method according to claim 1, in, Sending the first value corresponding to the first key as the first user data from the nonvolatile memory device to the external host device in response to the first KV command includes: determining a first position of the first value corresponding to the first key based on a key index, the key index including information related to a plurality of keys and positions of values ​​respectively corresponding to the plurality of keys; Based on the determined first location, reading the first value from the non-volatile memory device; and The read first value is sent to the external host device as the first user data.

4. The method according to claim 3, in, Performing the first management operation based on the second value corresponding to the second key in response to the second KV command includes: determining a second position of the second value corresponding to the second key based on the key index; reading the second value based on the determined second position; and The first management operation is performed in response to the read second value.

5. The method according to claim 4, further comprising: include: Writing a first operation log associated with the first KV command into a log buffer; storing first log data including the first operation log in the nonvolatile memory device; as well as A third key is assigned to the first log data, and the key index is updated based on the third key and a third location where the first log data is stored.

6. The method according to claim 5, further comprising: include: receiving a third KV command including the third key from the external host device; as well as In response to the third KV command, sending the first log data corresponding to the third key to the external host device, The first KV command, the second KV command and the third KV command are KV commands of the same type.

7. The method according to claim 1, in, The second value is included in an internal key-value pair stored in a storage device of the storage device.

8. The method according to claim 7, in, During the initialization process of the storage device, the internal key-value pairs are loaded from the non-volatile storage device to the storage device.

9. The method according to claim 7, further comprising: include: receiving, from the external host device, a fourth KV command including a fourth key and a fourth value; In response to the fourth KV command, storing the fourth value in the internal key-value pair; receiving a fifth KV command including the fourth key from the external host device; as well as In response to the fifth KV command, a second management operation corresponding to the fourth value is performed.

10. The method according to claim 9, in, The fourth value includes information related to a management command corresponding to the second management operation and a command identifier.

11. A storage device, include: a non-volatile memory device configured to store a user key-value pair including a first value corresponding to a user key; as well as A memory controller configured to control the nonvolatile memory device, wherein: The storage controller comprises: A storage device configured to store: inner key-value pairs, including a second value corresponding to the inner key, and a key index including information related to the user key, the internal key, and the positions of the first value and the second value; and The key-value KV manager is configured as follows: determining, based on the key index, whether a key included in a first key-value KV command from an external host device is the internal key or the user key, In response to the first KV command, when the key is the user key, sending the first value to the external host device, and When the key is the internal key, a first management operation corresponding to the second value is performed.

12. The storage device according to claim 11, in, During the initialization process of the storage device, the internal key-value pairs are loaded from the non-volatile storage device to the storage device.

13. The storage device according to claim 11, in, The KV manager is further configured to send information about the internal key-value pair to the external host device in response to a second KV command from the external host device.

14. The storage device according to claim 11, in: In response to a second KV command from the external host device, the KV manager is further configured to: When the second key included in the second KV command is the user key, updating the first value in the user key-value pair to a third value of the second KV command; as well as When the second key included in the second KV command is the internal key, updating information corresponding to the second value to the third value of the second KV command; and The second value corresponds to a set feature command, and the information corresponding to the second value is feature information of the storage device.

15. The storage device according to claim 11, in, In response to a second KV command from the external host device, the KV manager is further configured to: When the second key included in the second KV command is the user key, updating the first value in the user key-value pair to a third value of the second KV command; as well as When the second key included in the second KV command is the internal key, the second value in the internal key-value pair is updated to the third value of the second KV command.

16. The storage device according to claim 15, in, In response to a third KV command provided from the external host device and including the second key as the internal key, the KV manager is further configured to perform a second management operation corresponding to the third value.

17. The storage device according to claim 11, in, The storage controller communicates with the external host device through a physical port based on a PCI-Express interface.

18. A method for operating a storage device, the storage device comprising a non-volatile storage device, the method include: receiving a first key-value KV command including a first key from an external host device; determining whether the first key is an internal key or a user key; as well as When the first key is the internal key, performing a first management operation on the storage device, wherein the first management operation is performed based on a first value corresponding to the first key as the internal key, and The first value includes information related to both a management command and a command identifier, each of the management command and the command identifier corresponding to the first management operation.