Storage device engaged with host device and operating method of storage device

By introducing network, virtual and physical command queues in storage devices and using storage controllers to adjust queue depth and bandwidth, the data processing congestion problem between host devices and storage devices is solved and data processing performance is improved.

CN112988058BActive Publication Date: 2025-10-24SAMSUNG ELECTRONICS CO LTD
View PDF 7 Cites 0 Cited by

Patent Information

Application Number
CN202011457053.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-12-12
Filing Date
2020-12-11
Publication Date
2025-10-24
Estimated Expiration
2040-12-11

AI Technical Summary

Technical Problem

In the prior art, there is a congestion problem in data processing between a host device and a storage device, which affects data processing performance.

Method used

By introducing a combination of network command queues, virtual command queues, and physical command queues in storage devices, and using the storage controller to adjust the connection bandwidth and the number of physical command queues according to the queue depth, current limiting and optimization of data processing processes can be achieved.

Benefits of technology

Data processing congestion is reduced and data processing performance is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN112988058B_ABST
    Figure CN112988058B_ABST
Patent Text Reader

Abstract

An operating method of a storage device including a plurality of memory chips and a connected storage device including a network command queue and a virtual command queue includes receiving a plurality of commands from a host device using a connection, selecting a physical command queue assigned to the connection among a plurality of physical command queues corresponding to the plurality of memory chips, sequentially storing the plurality of commands in the network command queue and the virtual command queue, and transmitting a command throttling request to the host device in response to the plurality of commands based on a queue depth of the network command queue, and adjusting a number of the physical command queues assigned to the connection based on a queue depth of the virtual command queue.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims the benefit of Korean Patent Application No. 10-2019-0166003 filed on December 12, 2019, in the Korean Intellectual Property Office, the entire contents of which are incorporated herein by reference. Technical Field

[0003] Exemplary embodiments of the inventive concept relate to a storage device and an operating method thereof, and more particularly, to a storage device interfaced with a host device and an operating method thereof. Background Art

[0004] Non-volatile memory can retain the data stored in it even when the power is turned off. Recently, storage devices including flash-based non-volatile memory such as embedded multimedia cards (eMMC), universal flash storage (UFS), solid-state drives (SSDs), and memory cards have become widely used. Storage devices can be used to store or move large amounts of data.

[0005] A data processing system including a storage device may be referred to as a storage system and may further include a host device. The host device may be connected to the storage device via various interface standards. It is expected that data processing performance can be improved by reducing congestion in data processing such as writes and reads during connection. Summary of the Invention

[0006] According to an exemplary embodiment conceived in the present invention, in an operating method of a storage device including a plurality of memory chips and a connection including a network command queue and a virtual command queue, the operating method includes: receiving a plurality of commands from a host device using the connection; selecting a physical command queue assigned to the connection from a plurality of physical command queues corresponding to the plurality of memory chips; sequentially storing the plurality of commands in the network command queue and the virtual command queue; and based on a queue depth of the network command queue, sending a command throttling request to the host device in response to the plurality of commands; and adjusting the number of physical command queues assigned to the connection based on the queue depth of the virtual command queue.

[0007] According to an exemplary embodiment of the inventive concept, a storage device configured to interface with a host device includes a memory including a plurality of memory chips; and a storage controller configured to control operations of the memory. The storage controller includes a plurality of connections including a network command queue and a virtual command queue and configured to receive commands from the host device; and a plurality of physical command queues respectively connected to the plurality of memory chips and each configured to provide the commands to a corresponding one of the plurality of memory chips. The storage controller is configured to send a command throttling request to the host device based on a queue depth of the network command queue and adjust a number of physical command queues connected to the virtual command queue based on a queue depth of the virtual command queue.

[0008] According to an exemplary embodiment of the inventive concept, a storage device includes a memory including a plurality of memory chips; and a storage controller configured to control operations of the memory. The storage controller includes a plurality of connections including a network command queue and a virtual command queue and configured to receive commands from a host device. The storage controller is configured to send a command throttling request to the host device based on a queue depth of the network command queue and adjust a number of memory chips to which commands provided to be queued in the virtual command queue are based on a queue depth of the virtual command queue. BRIEF DESCRIPTION OF DRAWINGS

[0009] The above and other features of the inventive concept will become more apparent by describing in detail exemplary embodiments thereof with reference to the attached drawings in which:

[0010] Figure 1 is a block diagram of a storage system according to an exemplary embodiment of the inventive concept.

[0011] Figure 2 is a block diagram of a storage device according to an exemplary embodiment of the inventive concept. Figure 1 is a flowchart of operations of the storage device of

[0012] Figure 3 is a block diagram of a storage device according to an exemplary embodiment of the inventive concept. Figure 1

[0013] Figure 4 is a flowchart of operations of the storage device according to an exemplary embodiment of the inventive concept.

[0014] Figure 5 is a diagram for describing operations S48_3 in Figure 4

[0015] Figure 6 ​​is a diagram for describing operation S48_4 in Figure 4

[0016] Figure 7 is a flowchart of operation of a storage device according to an exemplary embodiment of the present inventive concept.

[0017] Figure 8 is a diagram for describing operation S483 in Figure 7

[0018] Figure 9 is a flowchart of operation of a storage device according to an exemplary embodiment of the present inventive concept.

[0019] Figure 10 is a diagram for describing operation S487 in Figure 9

[0020] Figure 11 is a block diagram of a storage device according to an exemplary embodiment of the present inventive concept.

[0021] Figure 12 is a block diagram for describing operation of a storage device according to an exemplary embodiment of the present inventive concept.

[0022] Figure 13A and 13B is a diagram for describing operation S120 in Figure 12 DETAILED DESCRIPTION

[0023] Exemplary embodiments of the present inventive concept provide a storage device for improving data processing performance by reducing data processing congestion between a host device and the storage device, and an operation method of the storage device.

[0024] Exemplary embodiments of the present inventive concept will be described in detail below with reference to the attached drawings. Like reference numerals can refer to like elements throughout the application.

[0025] Figure 1 is a block diagram of a storage system according to an exemplary embodiment of the present inventive concept.

[0026] ​​​​The storage system 1000 can include, for example, a personal computer (PC), a data server, a network-attached storage (NAS), an Internet of Things (IoT) device, or a portable electronic device. The portable electronic device can include a laptop computer, a mobile phone, a smart phone, a tablet PC, a personal digital assistant (PDA), an enterprise digital assistant (EDA), a digital still camera, a digital camcorder, an audio device, a portable multimedia player (PMP), a personal navigation device (PND), an MP3 player, a handheld game console, an electronic book, or a wearable device.

[0027] Referring to Figure 1 The storage system 1000 can include a host device 20 and a storage device 10. The storage device 10 can include a storage controller 100 and a memory 200. When the storage device 10 stores data in a non-volatile manner, the memory 200 can include a non-volatile memory chip.

[0028] The storage device 10 can include a storage medium that stores data in response to a request from the host device 20. In an exemplary embodiment of the inventive concept, the storage device 10 can include a solid state drive (SSD). For example, the storage device 10 can include an Ethernet-attached storage drive (EASD). The memory 200 can include a plurality of flash memory chips (e.g., NAND memory chips) that store data in a non-volatile manner.

[0029] The host device 20 can communicate with the storage device 10 through various interfaces. In an exemplary embodiment of the inventive concept, the host device 20 can communicate with the storage device 10 through various interfaces such as a universal serial bus (USB) interface, a multimedia card (MMC) interface, a peripheral component interconnect express (PCI Express) interface, an advanced technology attachment (ATA) interface, a serial ATA (SATA) interface, a parallel ATA (PATA) interface, a small computer system interface (SCSI), a serial attached SCSI (SAS), an enhanced small disk interface (ESDI), or an integrated drive electronics (IDE) interface. For example, a non-volatile memory express (NVMe) interface can be used as an interface of the storage device 10 such as an SSD, and a non-volatile memory express over fabrics (NVMeoF) interface can be applied to the storage system 1000.

[0030] In an exemplary embodiment of the inventive concept, the storage system 1000 can include a fabric 30. The host device 20 can transmit a plurality of commands CMD to the fabric 30, and the storage device 10 can receive the commands CMD from the host device 20 through the fabric 30. For example, the host device 20 can transmit a packet including the commands CMD, and the storage device 10 can receive the packet including the commands CMD. In an exemplary embodiment of the inventive concept, the fabric 30 can correspond to Ethernet and can include at least one switch. However, the inventive concept is not limited thereto. In an exemplary embodiment of the inventive concept, the storage device 10 can be directly connected to the host device 20.

[0031] The storage device 10 can transmit a response RES in response to the commands CMD to the host device 20 through the fabric 30. In an exemplary embodiment of the inventive concept, when the commands CMD received by the storage device 10 exceed the connection bandwidth of the storage device 10, the storage device 10 can transmit a command throttling request CTR to the host device 20 as a response to the commands CMD. In an exemplary embodiment of the inventive concept, the command throttling request CTR can include information about the connection bandwidth.

[0032] However, the storage device 10 is not limited thereto, and can include a flash memory device including at least one flash memory chip. In an exemplary embodiment of the inventive concept, the storage device 10 can be an embedded memory of the storage system 1000. For example, the storage device 10 can include an embedded MMC (eMMC) or an embedded Universal Flash Storage (UFS) memory device. In an exemplary embodiment of the inventive concept, the storage device 10 can be an external memory that is removably mounted on the storage system 1000. For example, the storage device 10 can include a UFS memory card, a CompactFlash (CF) card, a Secure Digital (SD) card, a microSD card, a miniSD card, an extreme Digital (xD) card, or a memory stick.

[0033] When the storage device 10 includes a flash memory, the flash memory can include a two-dimensional (2D) NAND memory array or a three-dimensional (3D) or vertical NAND (VNAND) memory array. The 3D memory array can be formed monolithically with an array of memory cells of at least one physical level having active regions or circuits on a silicon substrate that participate in the operation of the memory cells and are formed on or in the silicon substrate. The term "monolithic" refers to layers of each level of the array being directly stacked on layers of a bottom level of the array.

[0034] In exemplary embodiments of the inventive concept, a 3D memory array includes vertical NAND strings arranged in a vertical direction such that at least one memory cell is placed on another memory cell. The memory cell can include a charge trap layer.

[0035] Structures of 3D memory arrays including multiple tiers and word lines and / or bit lines shared by the tiers are disclosed in U.S. Patent No. 7,679,133, U.S. Patent No. 8,553,466, U.S. Patent No. 8,654,587, U.S. Patent No. 8,559,235, and U.S. Patent Application Publication No. 2011 / 0233648, the disclosures of which are incorporated herein by reference in their entirety.

[0036] In exemplary embodiments of the inventive concept, the storage device 10 can include other kinds of non-volatile memory. For example, the storage device 10 can include various types of non-volatile memory such as magnetic random access memory (MRAM), spin transfer torque MRAM, conductive-bridge RAM (CBRAM), ferroelectric RAM (FeRAM), phase change RAM (PRAM), resistive RAM, nanotube RAM, polymer RAM (PoRAM), nanofloating-gate memory (NFGM), holographic memory, molecular electronic memory, or resistive-change memory.

[0037] The storage controller 100 can control all operations of the memory 200. For example, the storage controller 100 can control exchange of data between the memory 200 and the host device 20. For example, the storage controller 100 can control the memory 200 to write or read data at the request of the host device 20. The storage controller 100 can control a series of internal operations (e.g., performance control, consolidation, wear leveling, etc.) to implement characteristics or efficient management of the non-volatile memory.

[0038] The storage controller 100 can include a plurality of network command queues 110, a plurality of virtual command queues 120, and a plurality of physical command queues 130. Each of the network command queues 110 can receive and temporarily buffer a command CMD and provide the command CMD to a corresponding one of the virtual command queues 120.

[0039] In exemplary embodiments of the inventive concept, one of the network command queues 110 can have a corresponding relationship with one of the virtual command queues 120, and the network command queue and the corresponding virtual command queue can form a connection. In other words, the network command queues 110 can correspond one-to-one to the virtual command queues 120, and the storage controller 100 can include the same number of network command queues 110 and virtual command queues 120.

[0040] In exemplary embodiments of the inventive concept, each of the physical command queues 130 can be dedicated to a specific one of the plurality of memory chips included in the memory 200. In other words, the physical command queues 130 can correspond to the memory chips one-to-one, and a command stored in one of the physical command queues 130 can be transmitted to a certain memory chip. However, the inventive concept is not limited to Figure 1 In the illustration of FIG. 1, the physical command queues 130 can be included in the memory 200.

[0041] In exemplary embodiments of the inventive concept, the storage controller 100 can transmit a command throttling request CTR to the host device 20 when a queue depth (e.g., the number of commands queued into each network command queue 110) exceeds a first reference value RV1. Accordingly, the host device 20 can maintain an agreed bandwidth when transmitting commands CMD to the storage device 10. In exemplary embodiments of the inventive concept, the storage controller 100 can increase the number of physical command queues allocated to a virtual command queue having a queue depth exceeding a second reference value RV2 when the queue depth of each of the virtual command queues 120 exceeds the second reference value RV2. As the number of physical command queues connected to a single virtual command queue increases, the speed of processing commands queued to the virtual command queue increases. Accordingly, data processing congestion of the storage device 10 can be reduced and its data processing performance can be improved.

[0042] Figure 2 is a flowchart of an operation of a storage device according to exemplary embodiments of the inventive concept. Figure 1

[0043] Referring to Figure 1 and Figure 2 In operation S10, the storage device 10 can receive a command CMD from the host device 20. For example, the storage controller 100 can receive a packet including the command CMD and obtain the command CMD parsed from the packet.

[0044] In operation S20, the storage device 10 can select a physical command queue allocated to a connected physical command queue corresponding to the command CMD. The host device 20 can communicate with the storage device 10 through the connection. For example, the command CMD can correspond to one of a plurality of connections. The connection can include one network command queue and one virtual command queue, and a physical command queue allocated to the virtual command queue included in the connection can be selected.

[0045] ​For example, the storage device 10 can select a physical command queue from the physical command queues 130 that receives the command CMD from the virtual command queue corresponding to the command CMD. The storage device 10 can select one physical command queue or at least two physical command queues from the physical command queues 130. The physical command queue corresponding to the command CMD can be selected from an available physical command queue that has no other command currently queued therein.

[0046] In operation S30, the storage device 10 can sequentially store the command CMD in the network command queue and the virtual command queue that form a connection that receives the command CMD. For example, when the command CMD is received by the storage device 10, the command CMD can be stored in the network command queue at a certain speed and then extracted to the virtual command queue. In other words, when the command CMD is received by a specific connection of the storage device 10, the command CMD can be stored in a physical command queue assigned to the virtual command queue through the network command queue and the virtual command queue included in the specific connection. The operation of storing some of the commands CMD in the network command queue can be substantially performed in parallel with the operation of extracting other commands CMD from the network command queue.

[0047] In operation S40, the storage device 10 can transmit a command throttling request CTR in response to the command CMD based on a queue depth of the network command queue corresponding to the command CMD. In addition, in operation S40, the storage device 10 can adjust the number of physical command queues assigned to the virtual command queue based on a queue depth of the virtual command queue corresponding to the command CMD.

[0048] In an exemplary embodiment of the inventive concept, a data processing method according to the command CMD can be changed according to a result of comparing the queue depth of the network command queue with the first reference value RV1 and a result of comparing the queue depth of the virtual command queue with the second reference value RV2. For example, when the queue depth of the virtual command queue exceeds the second reference value RV2, the storage device 10 can increase the number of memory chips to which the command CMD is assigned. In other words, when the queue depth of the virtual command queue exceeds the second reference value RV2, the storage device 10 can increase the number of physical command queues of the virtual command queue assigned to the connection that receives the command CMD.

[0049] When the queue depth of the network command queue exceeds the first reference value RV1, the storage device 10 can transmit the command throttling request CTR to the host device 20 as a response to the command CMD. Accordingly, the storage device 10 can reduce data processing congestion and improve data processing performance by managing the queue depths of each of the network command queue and the virtual command queue not to exceed the reference values.

[0050] A first reference value RV1 may be set for the queue depth of each network command queue 110, and a second reference value RV2 may be set for the queue depth of each virtual command queue 120. In an exemplary embodiment of the present inventive concept, the first reference value RV1 may be the same for all network command queues 110, and the second reference value RV2 may be the same for all virtual command queues 120. However, the present inventive concept is not limited thereto. The first reference value RV1 for each network command queue 110 may differ between network command queues 110, and the second reference value RV2 for each virtual command queue 120 may differ between virtual command queues 120.

[0051] In an exemplary embodiment of the present invention, the first reference value RV1 and the second reference value RV2 may be preset. In an exemplary embodiment of the present invention, the first reference value RV1 and the second reference value RV2 may be set in separate operations of setting the first reference value RV1 and the second reference value RV2. Figure 12 The operation of setting the first reference value RV1 and the second reference value RV2 is described.

[0052] Figure 3 According to an exemplary embodiment of the present inventive concept Figure 1 Block diagram of a storage device. Figure 1 The command CMD is received by the first connection CON1, but the inventive concept is not limited thereto, and the same description may apply to a case where the command CMD is received by the second to nth connections CON2 to CONn.

[0053] refer to Figure 3 , the storage device 10 may include a storage controller 100 and a memory 200. The storage controller 100 may control all operations of the memory 200.

[0054] The storage controller 100 may include first to nth network command queues 110_1 to 110_n, first to nth virtual command queues 120_1 to 120_n, and first to kth physical command queues 130_1 to 130_k. For example, "n" may be a natural number greater than or equal to 3, and "k" may be a natural number greater than or equal to 4. In an exemplary embodiment of the present inventive concept, "n" may have the same value as "k". However, the present inventive concept is not limited thereto, and "n" may have a different value from "k".

[0055] The storage controller 100 may include first to nth connections CON1 to CONn and communicate with the host device through each of the first to nth connections CON1 to CONn. The first network command queue 110_1 and the first virtual command queue 120_1 may form the first connection CON1 and may be used by the host device (e.g., Figure 1 The host device 20 may identify the first connection CON1 as the first network command queue 110_1. The second network command queue 110_2 and the second virtual command queue 120_2 may form a second connection CON2 and may be identified as the second connection CON2 by the host device 20. The nth network command queue 110_n and the nth virtual command queue 120_n may form an nth connection CONn and may be identified as the nth connection CONn by the host device 20. In other words, each of the first to nth network command queues 110_1 to 110_n may correspond to one of the first to nth virtual command queues 120_1 to 120_n.

[0056] In an exemplary embodiment of the present inventive concept, each of the first to nth connections CON1 to CONn may have an agreed bandwidth according to a service level agreement (SLA). For example, a first bandwidth BW1 may be agreed upon for the first connection CON1, a second bandwidth BW2 may be agreed upon for the second connection CON2, and an nth bandwidth BWn may be agreed upon for the nth connection CONn. In an exemplary embodiment of the present inventive concept, the first to nth bandwidths BW1 to BWn may have the same value as each other. However, the present inventive concept is not limited thereto, and the first to nth bandwidths BW1 to BWn may have different values.

[0057] The memory 200 may include first to k-th memory chips 200_1 to 200_k. Each of the first to k-th memory chips 200_1 to 200_k may correspond to one of the first to k-th physical command queues 130_1 to 130_k. For example, commands stored in the first physical command queue 130_1 may be sent to the first memory chip 200_1, commands stored in the second physical command queue 130_2 may be sent to the second memory chip 200_2, commands stored in the k-1th physical command queue 130_k-1 may be sent to the k-1th memory chip 200_k-1, and commands stored in the k-th physical command queue 130_k may be sent to the k-th memory chip 200_k.

[0058] The commands CMD received by the first connection CON1 can be temporarily primarily stored in the first network command queue 110_1. The first network command queue 110_1 can transmit the commands (e.g., the commands CMD) stored therein to the first virtual command queue 120_1. At this time, the operation of storing some of the commands CMD in the first network command queue 110_1 can be substantially in parallel with the operation of extracting other commands CMD from the first network command queue 110_1 to the first virtual command queue 120_1.

[0059] The first virtual command queue 120_1 can receive the commands CMD from the first network command queue 110_1 and can temporarily store the commands CMD. In an exemplary embodiment of the inventive concept, the first virtual command queue 120_1 can be connected to the first physical command queue 130_1 and can transmit the commands CMD stored in the first virtual command queue 120_1 to and store in the first physical command queue 130_1. At this time, the operation of storing some of the commands CMD in the first virtual command queue 120_1 can be substantially in parallel with the operation of extracting other commands CMD from the first virtual command queue 120_1 to the first physical command queue 130_1.

[0060] When the commands CMD are stored in the first physical command queue 130_1, the first memory chip 200_1 can perform an operation according to the commands CMD.

[0061] Although only the first physical command queue 130_1 is allocated to the first virtual command queue 120_1 in Figure 3 The storage device 10 is not limited to the case where one physical command queue is allocated to one virtual command queue. For example, the first virtual command queue 120_1 can be connected to the first physical command queue 130_1 and a second physical command queue 130_2, the first physical command queue 130_1 and the second physical command queue 130_2 can alternately receive the commands CMD from the first virtual command queue 120_1 and store some and other commands CMD, respectively. In other words, the first physical command queue 130_1 can temporarily store some of the commands CMD and provide them to the first memory chip 200_1, and the second physical command queue 130_2 can temporarily store other commands CMD and provide them to the second memory chip 200_2.

[0062] In an exemplary embodiment of the inventive concept, the virtual command queues (e.g., the first virtual command queue 120_1 and the second virtual command queue 120_2) included in different connections, respectively, can be connected to the first physical command queue 130_1. At this time, the first memory chip 200_1 can receive commands from both the first virtual command queue 120_1 and the second virtual command queue 120_2. In other words, the first memory chip 200_1 can receive commands from both the first connection CON1 and the second connection CON2.

[0063] The storage device 10 can transmit a command limit request CTR to the host device 20, or increase the number of physical command queues (e.g., the first physical command queue 130_1 and the second physical command queue 130_2) allocated to the first virtual command queue 120_1, according to an operation of receiving a command CMD from the first network command queue 110_1, an operation of transmitting the command CMD from the first network command queue 110_1 to the first virtual command queue 120_1, and an operation of transmitting the command CMD from the first virtual command queue 120_1 to the first physical command queue 130_1. Accordingly, the storage device 10 can reduce data processing congestion and improve data processing performance.

[0064] Figure 4 is a flowchart of operations of a storage device according to an exemplary embodiment of the inventive concept. In particular, Figure 4 is a flowchart for describing Figure 2 operation S40. Figure 5 is a diagram for describing operation S48_3 in Figure 4 according to an exemplary embodiment of the inventive concept. Figure 6 is a diagram for describing operation S48_4 in Figure 4 according to an exemplary embodiment of the inventive concept. Operation S40 can include operations S42 to S48_4. For example, the command CMD can be received by the first connection CON1.

[0065] Referring to Figure 4 , in operation S42, the storage device can determine whether the queue depth of the network command queue is less than or equal to a first reference value. In operations S44 and S46, the storage device can also determine whether the queue depth of the virtual command queue is less than or equal to a second reference value. In an exemplary embodiment of the inventive concept, the first reference value and the second reference value can be preset and can be pre-stored in the storage controller 100. In an exemplary embodiment of the inventive concept, in operation S100 in Figure 12 described below, the storage device can obtain the first reference value of the queue depth of the network command queue and the second reference value of the queue depth of the virtual command queue.

[0066] When the queue depth of the network command queue is less than or equal to the first reference value and the queue depth of the virtual command queue is less than or equal to the second reference value, operation S48_1 may be performed. In operation S48_1, the number of physical command queues allocated to the virtual command queue may be maintained.

[0067] refer to Figure 4 and Figure 5 For example, the first reference value RV1 of the first network command queue 110_1 included in the first connection CON1 corresponding to the command CMD may be 7, and the second reference value RV2 of the first virtual command queue 120_1 may be 7. The queue depth QD1 (e.g., the number of commands NCMD1 to NCMD3 queued to the first network command queue 110_1) may be 3. The queue depth QD2 (e.g., the number of commands VCMD1 to VCMD3 queued to the first virtual command queue 120_1) may be 3.

[0068] When the queue depth QD1 of the first network command queue 110_1 is less than or equal to the first reference value RV1 and the queue depth QD2 of the first virtual command queue 120_1 is less than or equal to the second reference value RV2, in operation S48_1, the number of physical command queues connected to the first virtual command queue 120_1 and receiving the command CMD is maintained. In other words, Figure 2 The first physical command queue 130_1 selected in operation S20 is maintained as the physical command queue allocated to the first virtual command queue 120_1. At this time, the commands NCMD1 to NCMD3 queued to the first network command queue 110_1 may be extracted to the first virtual command queue 120_1 at a first extraction rate FR1.

[0069] Return Reference Figure 4 When the queue depth of the network command queue is less than or equal to the first reference value and the queue depth of the virtual command queue exceeds the second reference value, operation S48_2 may be performed. In operation S48_2, the number of physical command queues allocated to the virtual command queue may be increased.

[0070] refer to Figure 4 and 6 For example, the first reference value RV1 and the second reference value RV2 may be 7. The queue depth QD1 (e.g., the number of commands NCMD1 to NCMD3 queued to the first network command queue 110_1) may be 3. The queue depth QD2 (e.g., the number of commands (e.g., the first to eighth commands VCMD1 to VCMD8) queued to the first virtual command queue 120_1) may be 8.

[0071] When the queue depth QD1 of the first network command queue 110_1 is less than or equal to the first reference value RV1 and the queue depth QD2 of the first virtual command queue 120_1 exceeds the second reference value RV2, in operation S48_2, the number of physical command queues assigned to the first virtual command queue 120_1 can be increased according to the number of physical command queues selected in operation S20 of Figure 2 For example, the second physical command queue 130_2 can be further assigned to the first virtual command queue 120_1, and the first physical command queue 130_1 and the second physical command queue 130_2 can receive commands CMD from the first virtual command queue 120_1.

[0072] The first virtual command queue 120_1 can alternately transmit the first to eighth commands VCMD1 to VCMD8 to the first physical command queue 130_1 and the second physical command queue 130_2. For example, the first virtual command queue 120_1 can transmit the first command VCMD1 to the first physical command queue 130_1 and transmit the second command VCMD2 to the second physical command queue 130_2. Accordingly, the speed at which the first to eighth commands VCMD1 to VCMD8 queued to the first virtual command queue 120_1 are output from the first virtual command queue 120_1 can be increased, and the number of queued commands (the first to eighth commands VCMD1 to VCMD8) can also be reduced at an increased speed.

[0073] Referring back to Figure 4 When the queue depth of the network command queue exceeds the first reference value, the first mode or the second mode can be performed in operation S48_3 or S48_4, respectively. For example, when the queue depth of the virtual command queue is less than or equal to the second reference value, the first mode can be performed in operation S48_3. When the queue depth of the virtual command queue exceeds the second reference value, the second mode can be performed in operation S48_4. The first mode (e.g., operation S48_3) and the second mode (e.g., operation S48_4) will be described below with reference to Figures 7 to 10

[0074] Figure 7 is a flowchart of operations of a storage device according to an exemplary embodiment of the inventive concept. In particular, Figure 7 is a flowchart for describing Figure 4 operation S48_3 in Figure 8 is a diagram for describing operation S483 in Figure 7 operation S48_3 according to an exemplary embodiment of the inventive concept. Operation S48_3 can include operations S481 to S484.

[0075] Referring to Figure 7 and Figure 8 ​When the queue depth of the network command queue exceeds the first reference value and the queue depth of the virtual command queue is less than or equal to the second reference value, operation S48_3 can be performed. For example, the first reference value RV1 of the first network command queue 110_1 and the second reference value RV2 of the first virtual command queue 120_1 can be 7. The queue depth QD1 (e.g., the number of commands NCMD1 to NCMD8 queued to the first network command queue 110_1) can be 8. The queue depth QD2 (e.g., the number of commands VCMD1 to VCMD3 queued to the first virtual command queue 120_1) can be 3.

[0076] In operation S481, the storage device can identify whether the queue depth of the network command queue exceeds the first reference value and whether the queue depth of the virtual command queue is less than or equal to the second reference value even after a certain period of time elapses. For example, when a command CMD from the host device is received by the first connection CON1 of the storage device, the queue depth QD1 of the first network command queue 110_1 can rapidly increase and then can gradually decrease over time. Accordingly, even after a certain period of time elapses, it can be identified that the state in which the queue depth QD1 of the first network command queue 110_1 exceeds the first reference value RV1 and the queue depth QD2 of the first virtual command queue 120_1 is less than or equal to the second reference value RV2 is maintained.

[0077] When the above state is maintained, in operation S482, the storage device can identify whether the input / output bandwidth of the connection including the network command queue and the virtual command queue is less than or equal to a contracted level. For example, the storage device can identify whether the input / output bandwidth of the first connection CON1 is less than or equal to a contracted level, e.g., the first bandwidth BW1. The contracted level can be a predetermined level.

[0078] When the input / output bandwidth of the connection is less than or equal to the contracted level, in operation S483, the storage device can increase the extraction speed at which commands queued to the network command queue are output to the virtual command queue. Even when the input / output bandwidth of the connection is less than or equal to the contracted level, when the queue depth of the network command queue exceeds the first reference value, the storage device can determine that the speed at which commands are output from the network command queue is low, and can increase the extraction speed at which commands queued to the network command queue are output to the virtual command queue. For example, when the input / output bandwidth of the first connection CON1 is less than or equal to the contracted level (e.g., the first bandwidth BW1), the commands NCMD1 to NCMD8 queued to the first network command queue 110_1 can be extracted to the first virtual command queue 120_1 at a second extraction speed FR2, which is higher than the first extraction speed (e.g., FR1 in Equation 1). Figure 5

[0079] ​When the connected input / output bandwidth exceeds the agreed level, the storage device can transmit a command throttling request (e.g., a command throttling request CTR) to the host device in operation S484. At this time, the command throttling request CTR can be transmitted as a response to a command (e.g., a CMD). The command throttling request CTR can include information about the bandwidth violation. Accordingly, the host device can reduce the bandwidth of the command transmitted to the storage device according to the command throttling request CTR, and can maintain the agreed bandwidth level. Figure 3

[0080] Figure 9 is a flowchart of operations of a storage device according to an exemplary embodiment of the inventive concept. In particular, Figure 9 is a flowchart for describing operation S48_4 in Figure 4 Figure 10 is a diagram for describing operation S487 in Figure 9 according to an exemplary embodiment of the inventive concept. Operation S48_4 can include operations S486 to S488.

[0081] Referring to Figure 9 and Figure 10 , operation S48_4 can be performed when the queue depth of the network command queue exceeds the first reference value and the queue depth of the virtual command queue exceeds the second reference value. For example, the first reference value RV1 and the second reference value RV2 can be 7. The queue depth QD1 (e.g., the number of commands NCMD1 to NCMD8 queued to the first network command queue 110_1) can be 8. The queue depth QD2 (e.g., the number of commands VCMD1 to VCMD8 queued to the first virtual command queue 120_1) can be 8.

[0082] In operation S486, the storage device can identify whether the connected input / output bandwidth including the network command queue and the virtual command queue is less than or equal to the agreed level. For example, the storage device can identify whether the input / output bandwidth of the first connection CON1 is less than or equal to the agreed level, e.g., the first bandwidth BW1.

[0083] ​​When the input / output bandwidth of the connection is less than or equal to the agreed level, the storage device can increase the number of physical command queues allocated to the virtual command queue in operation S487. For example, when the input / output bandwidth of the first connection CON1 is less than or equal to the first bandwidth BW1, the storage device can connect the first physical command queue 130_1 and the second physical command queue 130_2 to the first virtual command queue 120_1, thereby increasing the number of physical command queues allocated to the first virtual command queue 120_1 and the number of memory chips (e.g., the first memory chip and the second memory chip) processing the commands CMD. When the queue depth QD1 of the first network command queue 110_1 exceeds the first reference value RV1 and the queue depth QD2 of the first virtual command queue 120_1 exceeds the second reference value RV2, even if the input / output bandwidth of the first connection CON1 does not exceed the first bandwidth BW1, it can be determined that the speed of outputting the commands VCMD1 to VCMD8 queued to the first virtual command queue 120_1 is low. Accordingly, the storage device can increase the speed of outputting the commands VCMD1 to VCMD8 queued to the first virtual command queue 120_1 by increasing the number of physical command queues allocated to the first virtual command queue 120_1.

[0084] When the input / output bandwidth of the connection exceeds the agreed level, the storage device can transmit a command throttling request (e.g., a command throttling request CTR) to the host device in operation S488. At this time, the command throttling request CTR can be transmitted as a response to a command (e.g., CMD). The command throttling request CTR can include information about the bandwidth violation. Accordingly, the host device can reduce the bandwidth of the commands transmitted to the storage device according to the command throttling request CTR, and can maintain the agreed bandwidth level. Figure 3

[0085] Figure 11 is a block diagram of a storage device according to an exemplary embodiment of the inventive concept. Redundant descriptions of the same reference numerals in Figure 3 and 11 will be omitted.

[0086] Referring to Figure 11 , the storage device 10a can include a storage controller 100a and a memory 200a. The storage controller 100a can control all operations of the memory 200a.

[0087] The storage controller 100a can include first to nth network command queues 110_1 to 110_n and first to nth virtual command queues 120_1 to 120_n. For example, "n" can be a natural number greater than or equal to 3.

[0088] ​The memory 200a can include first to k-th memory chips 200_1a to 200_ka. Each of the first to k-th memory chips 200_1a to 200_ka can include a corresponding one of first to k-th physical command queues 210_1 to 210_k. Each of the first to k-th memory chips 200_1a to 200_ka can perform an operation according to a command stored in the corresponding physical command queue. For example, the first memory chip 200_1a can include the first physical command queue 210_1, the second memory chip 200_2a can include the second physical command queue 210_2, the k-1-th memory chip 200_k-1a can include the k-1-th physical command queue 210_k-1, and the k-th memory chip 200_ka can include the k-th physical command queue 210_k. For example, "k" can be a natural number greater than or equal to 4. In an exemplary embodiment of the inventive concept, "n" can have the same value as "k". However, the inventive concept is not limited thereto, and "n" can have a different value from "k".

[0089] In an exemplary embodiment of the inventive concept, the command CMD can be received by the first connection CON1 and can be temporarily stored in the first network command queue 110_1. The first network command queue 110_1 can transmit the command CMD to the first virtual command queue 120_1, and the first virtual command queue 120_1 can temporarily store the command CMD. In an exemplary embodiment of the inventive concept, the first virtual command queue 120_1 can be connected to the first physical command queue 210_1, and can transmit the command CMD stored in the first virtual command queue 120_1 to the first physical command queue 210_1. Accordingly, the first memory chip 200_1a can perform an operation according to the command CMD.

[0090] The storage device 10a can transmit a command throttling request CTR to the host device 20, or change the number of physical command queues allocated to the first virtual command queue 120_1, according to the operation of the first network command queue 110_1 receiving the command CMD, the operation of the first network command queue 110_1 transmitting the command CMD to the first virtual command queue 120_1, and the operation of the first virtual command queue 120_1 transmitting the command CMD to the first physical command queue 210_1. In an exemplary embodiment of the inventive concept, the storage device 10a can transmit a command throttling request CTR to the host device 20, or change the number of physical command queues allocated to the first virtual command queue 120_1, based on a result of comparing the queue depth of the first network command queue 110_1 with a first reference value and a result of comparing the queue depth of the first virtual command queue 120_1 with a second reference value.

[0091] Figure 2 and Figures 4 to 9 The description of the above can be applied to the storage device 10a. In this case, since the first to k-th memory chips 200_1a to 200_ka each include a corresponding one of the first to k-th physical command queues 210_1 to 210_k, the number of memory chips (among 200_1a to 200_ka) to which commands provided for queuing to a virtual command queue (e.g., the first virtual command queue 120_1) can be adjusted based on the queue depth of the virtual command queue. Accordingly, the storage device 10a can reduce data processing congestion and improve data processing performance.

[0092] Figure 12 is a block diagram for describing an operation of a storage device according to an exemplary embodiment of the inventive concept. Figure 13A and 13B is a diagram for describing operation S120 in Figure 12 According to an exemplary embodiment of the inventive concept, in operation S120 in Figure 12 The first and second reference values forming a single connected network command queue and a virtual command queue, respectively, can be set in operation S100 in Figure 2 Operation S100 can be performed before operation S10 in

[0093] Referring to Figure 12 In operation S110, the storage device can set reference speeds including a reference speed of providing a command to a network command queue, a reference speed of extracting a command from the network command queue, and a reference speed of outputting a command from a virtual command queue. The reference speeds can have specific values to set the first and second reference values. For example, assuming that one physical command queue is allocated to a virtual command queue, the reference speed of providing a command to a network command queue, the reference speed of extracting a command from the network command queue, and the reference speed of outputting a command from a virtual command queue can be set. However, the inventive concept is not limited thereto. It can be assumed that a plurality of physical command queues are allocated to a virtual command queue to set the reference speed of providing a command to a network command queue, the reference speed of extracting a command from the network command queue, and the reference speed of outputting a command from a virtual command queue.

[0094] In operation S120, when a plurality of reference commands are provided to a network command queue, the storage device can set a first reference value of the network command queue and a second reference value of the virtual command queue based on a change in the queue depth of the network command queue and a change in the queue depth of the virtual command queue according to the set reference speeds.

[0095] Referring to Figures 12 to 13BWhen the network command queue receives the reference command and outputs the reference command to the virtual command queue, the queue depth QD1 of the network command queue can repeatedly increase and decrease. During a first time period t1 in operation S120, the storage device can detect a change in the queue depth QD1 of the network command queue. The storage device can set the first reference value RV_1 to be greater than a maximum value vmax_1 of the queue depth QD1 and less than a queue capacity max_1 of the network command queue. The queue capacity max_1 of the network command queue can refer to a maximum number of commands that can be stored in the network command queue.

[0096] When the virtual command queue receives the reference command and outputs the reference command to the physical command queue, the queue depth QD2 of the virtual command queue can repeatedly increase and decrease. During a second time period t2 in operation S120, the storage device can detect a change in the queue depth QD2 of the virtual command queue. The storage device can set the second reference value RV_2 to be greater than a maximum value vmax_2 of the queue depth QD2 and less than a queue capacity max_2 of the virtual command queue. The queue capacity max_2 of the virtual command queue can refer to a maximum number of commands that can be stored in the virtual command queue.

[0097] Referring to Figure 3 , 11 and 12, the first reference values of the first to nth network command queues 110_1 to 110_n can be the same as each other. For example, after the first reference value is set for the first connection CON1 in operation S100, the set first reference value can be applied to the second to nth network command queues 110_2 to 110_n. Alternatively, the first reference value can be set for each of the first to nth connections CON1 to CONn in operation S100 so that the first reference value is set for the first to nth network command queues 110_1 to 110_n, respectively, and some of the first reference values can be different from each other.

[0098] In an exemplary embodiment of the inventive concept, Figure 3 and 11 the second reference values of the first to nth virtual command queues 120_1 to 120 in operation S100 can be the same as each other. For example, after the second reference value is set for the first connection CON1 in operation S100, the set second reference value can be applied to the second to nth virtual command queues 120_2 to 120_n. Alternatively, the second reference value can be set for each of the first to nth connections CON1 to CONn in operation S100 so that the second reference value is set for the first to nth virtual command queues 120_1 to 120_n, respectively, and some of the second reference values can be different from each other.

[0099] For example, the reference speed of outputting a command from the virtual command queue when one physical command queue is assigned to the virtual command queue can be lower than the reference speed of outputting a command from the virtual command queue when a plurality of physical command queues are assigned to the virtual command queue. Accordingly, the first reference value and the second reference value when one physical command queue is assigned to the virtual command queue can be different from the first reference value and the second reference value when a plurality of physical command queues are assigned to the virtual command queue. For example, assuming that the first virtual command queue 120_1 is connected to the first physical command queue 130_1 (or 210_1) and the nth virtual command queue 120_n is connected to the k-1th physical command queue 130_k-1 or (210_k-1) and the kth physical command queue 130_k or (210_k) in operation S110, the first reference value set for the first network command queue 110_1 in operation S120 can be different from the first reference value set for the nth network command queue 110_n in operation S120, and the second reference value set for the first virtual command queue 120_1 in operation S120 can be different from the second reference value set for the nth virtual command queue 120_n in operation S120.

[0100] While the inventive concept has been particularly shown and described with reference to exemplary embodiments thereof, it will be understood by those of ordinary skill in the art that various changes in form and details can be made therein without departing from the spirit and scope of the inventive concept as set forth by the following claims.

Claims

1. An operating method of a storage device including a plurality of memory chips and a connection including a network command queue and a virtual command queue, the operating method comprising: receiving a plurality of commands from a host device using the connection; selecting a physical command queue assigned to the connection among a plurality of physical command queues corresponding to the plurality of memory chips; sequentially storing the plurality of commands in the network command queue and the virtual command queue; and based on a queue depth of the network command queue, transmitting a command throttling request to the host device in response to the plurality of commands, and based on a queue depth of the virtual command queue, adjusting a number of the physical command queues assigned to the connection. The transmitting of the command throttling request and the adjusting of the number of the physical command queues includes maintaining the number of the physical command queues assigned to the connection when the queue depth of the network command queue is less than or equal to a first reference value and the queue depth of the virtual command queue is less than or equal to a second reference value.

2. The operating method of claim 1, wherein, The transmitting of the command throttling request and the adjusting of the number of the physical command queues includes increasing the number of the physical command queues assigned to the connection when the queue depth of the network command queue is less than or equal to the first reference value and the queue depth of the virtual command queue exceeds the second reference value.

3. The operating method of claim 1, wherein, The transmitting of the command throttling request and the adjusting of the number of the physical command queues includes:

4. The operating method of claim 1, wherein, determining whether an input / output bandwidth of the connection is less than or equal to a predetermined level when the queue depth of the network command queue exceeds the first reference value and the queue depth of the virtual command queue is less than or equal to the second reference value; and increasing a command extraction speed at which the plurality of commands are extracted from the network command queue to the virtual command queue when the input / output bandwidth of the connection is less than or equal to the predetermined level. The transmitting of the command throttling request and the adjusting of the number of the physical command queues includes:

5. The operating method of claim 1, wherein, determining whether an input / output bandwidth of the connection is less than or equal to a predetermined level when the queue depth of the network command queue exceeds the first reference value and the queue depth of the virtual command queue is less than or equal to the second reference value; and transmitting the command throttling request to the host device when the input / output bandwidth exceeds the predetermined level, wherein the command throttling request includes information about a violation of the input / output bandwidth. The transmitting of the command throttling request and the adjusting of the number of the physical command queues further includes, before determining whether the input / output bandwidth of the connection is less than or equal to the predetermined level, determining whether the queue depth of the network command queue exceeds the first reference value and the queue depth of the virtual command queue is less than or equal to the second reference value after a certain period of time elapses.

6. The operating method of claim 5, wherein, The transmitting of the command throttling request and the adjusting of the number of the physical command queues includes:

7. The operating method of claim 1, wherein, determining whether an input / output bandwidth of the connection is less than or equal to a predetermined level when the queue depth of the network command queue exceeds the first reference value and the queue depth of the virtual command queue exceeds the second reference value; and ​ when the input / output bandwidth is less than or equal to the predetermined level, increasing a number of physical command queues assigned to the connection.

8. The operating method of claim 1, wherein, the sending of the command throttling request and the adjusting of the number of physical command queues comprises: when the queue depth of the network command queue exceeds a first reference value and the queue depth of the virtual command queue exceeds a second reference value, determining whether an input / output bandwidth of the connection is less than or equal to a predetermined level; and when the input / output bandwidth exceeds the predetermined level, sending the command throttling request to the host device, wherein the command throttling request includes information about the violation of the input / output bandwidth.

9. The method of operation of claim 1, further comprising: before receiving the plurality of commands from the host device using the connection, setting a first reference value of a queue depth of the network command queue and a second reference value of a queue depth of the virtual command queue, wherein the setting of the first reference value and the second reference value comprises: setting reference speeds including a reference speed of providing commands to the network command queue, a reference speed of extracting commands from the network command queue to the virtual command queue, and a reference speed of outputting commands from the virtual command queue; and when a plurality of reference commands are provided to the network command queue, setting the first reference value and the second reference value based on changes in the queue depth of the network command queue and changes in the queue depth of the virtual command queue according to the set reference speeds.

10. The operating method of claim 9, wherein, the setting of the first reference value and the second reference value comprises: setting a value between a maximum value of the queue depth of the network command queue during a first time period and a queue capacity of the network command queue as the first reference value; and setting a value between a maximum value of the queue depth of the virtual command queue during a second time period and a queue capacity of the virtual command queue as the second reference value.

11. A storage device configured to interface with a host device, the storage device comprising: a memory including a plurality of memory chips; and a storage controller configured to control operations of the memory, wherein the storage controller comprises: a plurality of connections including a network command queue and a virtual command queue, and configured to receive commands from the host device; and a plurality of physical command queues respectively connected to the plurality of memory chips, and each configured to provide the commands to a corresponding one of the plurality of memory chips, and the storage controller is configured to send a command throttling request to the host device based on a queue depth of the network command queue, and to adjust a number of physical command queues connected to the virtual command queue based on a queue depth of the virtual command queue.

12. The storage device of claim 11, wherein, the storage device comprises an Ethernet Attached Storage Drive (EASD).

13. The storage device of claim 11, wherein, the storage controller is further configured to increase the number of physical command queues connected to the virtual command queue when the queue depth of the network command queue is less than or equal to a first reference value and the queue depth of the virtual command queue exceeds a second reference value.

14. The storage device of claim 11, wherein, The storage controller is further configured to increase a speed of fetching the commands from the network command queue to the virtual command queue when a queue depth of the network command queue exceeds a first reference value, a queue depth of the virtual command queue is less than or equal to a second reference value, and an input / output bandwidth of connections including the network command queue and the virtual command queue is less than or equal to a predetermined level.

15. A storage device comprising: a memory including a plurality of memory chips; and a storage controller configured to control operations of the memory, wherein the storage controller includes a plurality of connections including a network command queue and a virtual command queue and is configured to receive commands from a host device, and the storage controller is configured to send a command throttling request to the host device based on a queue depth of the network command queue and adjust a number of memory chips of commands provided to be queued into the virtual command queue based on a queue depth of the virtual command queue.

16. The storage device of claim 15, wherein, each of the plurality of memory chips includes a physical command queue, and the storage controller adjusts the number of memory chips of commands provided to be queued into the virtual command queue by adjusting a number of physical command queues assigned to the virtual command queue based on the queue depth of the virtual command queue.

17. The storage device of claim 15, wherein, the storage controller is further configured to send the command throttling request to the host device when the queue depth of the network command queue exceeds the first reference value and the input / output bandwidth exceeds the predetermined level, and the command throttling request includes information about a violation of the input / output bandwidth of connections including the network command queue.

18. The storage device of claim 15, wherein, the storage controller is further configured to increase the number of memory chips of commands provided to be queued into the virtual command queue when the queue depth of the network command queue is less than or equal to the first reference value and the queue depth of the virtual command queue exceeds the second reference value.

19. The storage device of claim 15, wherein, the storage controller is further configured to increase a speed of fetching the commands from the network command queue to the virtual command queue when a queue depth of the network command queue exceeds a first reference value, a queue depth of the virtual command queue is less than or equal to a second reference value, and an input / output bandwidth of connections including the network command queue and the virtual command queue is less than or equal to a predetermined level.

20. The storage device of claim 15, wherein, the storage controller is further configured to increase the number of memory chips of commands provided to be queued into the virtual command queue when the queue depth of the virtual command queue exceeds the second reference value and an input / output bandwidth of connections including the virtual command queue is less than or equal to a predetermined level.

Citation Information

Patent Citations

  • Three-Dimensional Semiconductor Memory Devices And Methods Of Fabricating The Same

    US20110233648A1

  • Vertical-type non-volatile memory devices

    US7679133B2

  • Non-volatile memory device, erasing method thereof, and memory system including the same

    US8553466B2

  • Nonvolatile memory device, operating method thereof and memory system including the same

    US8559235B2

  • Nonvolatile memory devices, channel boosting methods thereof, programming methods thereof, and memory systems including the same

    US8654587B2