Controller, storage device including the controller, and operating method of the controller

By distinguishing between single-work requests and concurrent work requests in the storage device and generating scheduling policies based on priorities, the resource scarcity problem of storage devices when processing multiple host device commands is solved, achieving efficient resource management and avoiding head-of-line blocking.

CN114489470BActive Publication Date: 2026-05-29SAMSUNG ELECTRONICS CO LTD

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
SAMSUNG ELECTRONICS CO LTD
Filing Date
2021-08-10
Publication Date
2026-05-29

AI Technical Summary

Technical Problem

Existing storage devices may experience resource shortages when processing commands from multiple host devices, especially when receiving concurrent requests. They fail to effectively manage resource allocation, leading to head-of-line congestion and resource scarcity.

Method used

By introducing an operation checker, operation allocator, and scheduler into the storage device, single work requests and concurrent work requests are distinguished, and scheduling policies are generated based on priority to allocate resources reasonably.

Benefits of technology

It effectively avoids resource scarcity, improves the resource management efficiency of storage devices when processing multiple host device commands, prevents head-of-line congestion, and ensures the rational allocation and efficient utilization of resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114489470B_ABST
    Figure CN114489470B_ABST
Patent Text Reader

Abstract

A controller for performing command scheduling, a storage device including the same, and an operating method of the same are provided. The storage device communicates with a host device that generates an original data packet. The storage device includes a memory device and a controller, the memory device including a die having a plurality of planes. The controller includes an operation checker that receives the original data packet indicating a simultaneous parallel work request occupying at least two planes among the plurality of planes, wherein the operation checker sets a simultaneous parallel identifier associated with the original data packet to generate a modified data packet, an operation allocator that stores the modified data packet in at least one virtual output queue in a virtual queue cluster, and a scheduler that transmits the modified data packet to at least one plane occupied by the simultaneous parallel work request among the plurality of planes according to a scheduling policy.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references to related applications

[0002] This application claims priority to Korean Patent Application No. 10-2020-0141571, filed on October 28, 2020, with the Korean Intellectual Property Office, the subject of which is incorporated herein by reference. Technical Field

[0003] This invention relates to controllers, and more specifically, to controllers capable of executing command scheduling. The invention also relates to storage devices comprising this type of controller, and related methods of operation for such controllers. Background Technology

[0004] Storage devices can use various scheduling strategies to efficiently schedule commands received from host devices.

[0005] The scheduling policy should ensure fairness among multiple hosts and prevent head-of-the-line (HOL) blocking that may occur during the processing of a particular command. However, if a command is received whose execution will consume multiple resources, and if the scheduling priority of this command among other commands is not properly considered during the scheduling of this command, a resource shortage phenomenon (hereinafter referred to as "resource shortage") may occur associated with that command. Summary of the Invention

[0006] Embodiments of this invention provide a controller capable of performing command scheduling by considering the priority of commands that occupy multiple resources and work in parallel simultaneously. Embodiments of this invention also provide a storage device including this type of controller, and related operating methods for the controller.

[0007] According to one aspect of the present invention, a storage device is provided for communicating with a host device that generates an original data packet. The storage device includes a storage device and a controller, the storage device including a die having a plurality of planes. The controller includes: an operation checker that receives the original data packet indicating a concurrent operation request, the concurrent operation request occupying at least two of the plurality of planes, wherein the operation checker sets a concurrent identifier associated with the original data packet to generate a modified data packet; an operation distributor that stores the modified data packet in at least one virtual output queue of a virtual queue cluster; and a scheduler that sends the modified data packet to at least one of the plurality of planes occupied by the concurrent operation request, according to a scheduling policy.

[0008] According to one aspect of the present invention, a controller is provided in a storage device configured to communicate with a plurality of host devices, wherein each of the plurality of host devices is configured to generate a raw data packet indicating a work request. The controller includes: an operation checker configured to determine whether a work request received from one of the plurality of host devices is a concurrent or single work request, and to generate a modified data packet by adding a concurrent identifier to the original data packet once it is determined that the work request received from the host device is a concurrent work request; a virtual queue cluster including a first virtual output queue and a second virtual output queue; a queue controller configured to store the modified data packet in the first virtual output queue based on information associated with the modified data packet; and a scheduler configured to store the modified data packet in a storage device according to a scheduling policy, wherein the scheduling policy is defined by at least one of: the state of the concurrent identifier, information associated with the work request received from the host device, channel information associated with at least one of the first and second virtual output queues, and plane information associated with a plurality of planes of the storage device, wherein the execution of the concurrent work request occupies at least two of the plurality of planes, and the execution of the single work request occupies only a single of the plurality of planes.

[0009] According to one aspect of the present invention, a method is provided for operating a controller in a storage device that communicates with a host device that generates raw data packets, wherein the storage device includes a storage device and a controller, the storage device including a die having a plurality of planes. The method includes: receiving a raw data packet indicating a concurrent parallel work request; adding a concurrent parallel identifier to the raw data packet to generate a modified data packet; storing the modified data packet in at least one virtual output queue of a virtual queue cluster; and sending the modified data packet to at least one of the plurality of planes according to a scheduling policy, wherein the execution of the concurrent parallel work request occupies at least two of the plurality of planes. Attached Figure Description

[0010] Embodiments of the inventive concept will become clearer by considering the following detailed description in conjunction with the accompanying drawings, in which:

[0011] Figure 1 This is a block diagram illustrating a data processing system 10 according to an embodiment of the concept of the present invention;

[0012] Figure 2This is further illustrated in one example. Figure 1 Block diagram of the storage device 2000;

[0013] Figure 3 This is further illustrated in one example. Figure 1 and Figure 2 A conceptual diagram of the 400-type package;

[0014] Figure 4 This is further illustrated in one example. Figure 2 Block diagram of the bare die controller 200;

[0015] Figure 5 This is a flowchart illustrating, in one example, a method for operating a storage controller according to an embodiment of the present invention;

[0016] Figure 6 and Figure 7 These are conceptual diagrams illustrating data packet structures according to embodiments of the present invention in different examples;

[0017] Figure 8 This is a conceptual diagram illustrating, in one example, an operation method of an operation distributor according to an embodiment of the present invention;

[0018] Figure 9 This is shown in one example. Figure 4 Block diagram of the scheduler 250 of the die controller 200;

[0019] Figure 10 It is to further demonstrate Figure 9 A conceptual diagram of the operation methods of the scheduler 253;

[0020] Figure 11 This is further illustrated in one example. Figure 1 The signaling diagram of the operation methods of each component of the data processing system 10, which is related to the signaling diagram of the operation methods of each component of the data processing system 10. Figures 2 to 9 The embodiments described are consistent; and

[0021] Figure 12 This is a block diagram illustrating a data processing system according to an embodiment of the concept of the present invention. Detailed Implementation

[0022] In the following, embodiments of the inventive concept will be described in more detail with reference to the accompanying drawings.

[0023] Figure 1 This is a block diagram illustrating a data processing system 10 according to an embodiment of the concept of the present invention.

[0024] Reference Figure 1The data processing system 10 typically includes a host device 1000 and a storage device 2000, wherein the storage device 2000 may include a storage controller 100 and a storage device 300.

[0025] Host device 1000 may communicate with storage device 2000 (e.g., send and / or receive) one or more commands (CMDs) in response to one or more user requests. In response to the commands, storage device 2000 may perform one or more operations. Here, the term "command" should be interpreted broadly to include not only the various types of commands typically used in data processing systems, but also (one or more) work requests.

[0026] Storage device 2000 may include a storage medium in which data can be stored (e.g., programmed or written) in response to one or more commands received from host device 1000. In some embodiments, storage device 2000 may include one or more solid-state drives (SSDs). When storage device 2000 includes SSDs, storage device 300 may include multiple flash memory chips (e.g., NAND flash memory chips) each capable of storing data in a non-volatile manner. Therefore, in various embodiments, storage device 300 may include a single flash memory chip, multiple flash memory chips, and / or a memory card including one or more flash memory chips.

[0027] For embodiments of the storage device 2000 that include flash memory, the flash memory can be arranged as a two-dimensional (2D) NAND storage array or a 3D (or vertical) NAND (VNAND) storage array. Here, the 3D NAND storage array can be formed monolithically in at least one physical layer of the circuitry arranged on the substrate, as circuitry relating to the operation of an array of storage cells having active regions and arranged on a silicon substrate, or the operation of storage cells. In this regard, the term "monolithic" means that the layers constituting each level of the array are directly stacked on top of the layers of the lower levels in the array.

[0028] In some embodiments, a 3D NAND memory array may include VNAND strings arranged in a direction perpendicular to the substrate, such that at least one memory cell is vertically disposed above another memory cell. Here, the memory cell (one or more) associated with the VNAND string may include a charge trapping layer. In this regard, the common subject matter of U.S. Patent Nos. 7,679,133, 8,553,466, 8,654,587, and 8,559,235 and published U.S. Patent Application No. 2,011 / 0233,648 is incorporated herein by reference, and various features of 3D memory arrays comprising multiple layers and having shared word lines and / or bit lines between the multiple layers are described.

[0029] Alternatively, the storage device 2000 may be one or more types of non-volatile memory other than flash memory, such as magnetic random access memory (MRAM), spin-transfer torque MRAM, bridged-conducting 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, insulator resistance change memory, etc.

[0030] In some embodiments, storage device 300 may be an embedded multimedia card (eMMC) or an embedded universal flash memory (UFS) storage device. For example, storage device 300 may be an attachable / removable storage device associated with storage device 2000, such as a UFS memory card, a compact flash memory (CF) card, a secure digital card (SD) card, a micro SD card, a mini SD card, an extreme digital (xD) card, a memory stick, etc.

[0031] In some embodiments, the storage device 300 may include a plurality of storage blocks, wherein each storage block includes at least one page, and each page includes a storage unit connected to a word line.

[0032] exist Figure 1 In the illustrated embodiment, the storage device 300 may include one or more packages 400, wherein each package includes one or more dies, and wherein each die includes multiple planes.

[0033] Storage controller 100 may include multiple channel controllers (e.g., Figure 2 (120, 130, and 140), wherein the channel controllers can communicate with one or more packages 400 of the storage device 300 via channels (e.g., Ch1, Ch2…Chm). As will be described in more detail below, each channel controller (e.g., Figure 2 120, 130, and 140) may include multiple die controllers (e.g., Figure 2 (200), wherein each die controller 200 can be used to control one or more dies in (one or more) packages 400 respectively (e.g., Figure 2 (411).

[0034] Reference Figure 1 The storage controller 100 and the storage device 300 may transmit (one or more) commands, (one or more) addresses and / or data in various ways via one or more channels (e.g., channels Ch1, Ch2...Chm) associated with the storage device 2000.

[0035] The host device 1000 can communicate with the storage device 2000 using, for example, one or more interfaces, such as Universal Serial Bus (USB) interface, Multimedia Card (MMC) interface, Peripheral Component Interconnect Fast (PCI-E) interface, Advanced Technology Attachment (ATA) interface, Serial ATA (SATA) interface, Parallel ATA (PATA) interface, Small Computer System Interface (SCSI), Serial Attached SCSI (SAS), Enhanced Small Disk Interface (ESDI), Integrated Drive Electronic Device (IDE) interface, Non-Volatile Memory Fast (NVMe) interface, etc.

[0036] In some embodiments, the storage controller 100 may determine (or check) whether a particular command received from the host device 1000 is a “simultaneous parallel work request.” In this respect, a simultaneous parallel work request is a request to “occupy” multiple resources within the storage device 300 (e.g., consume the operational capacity of multiple resources). In contrast to a simultaneous parallel work request, a “single work request” is a request to “occupy” a single resource within the storage device 300. In this respect, the term “resource” can be variably defined according to system capabilities and may include, for example, circuitry, signal paths, channels, processing time, power, memory, storage regions, storage planes, buffers, etc. Typically, one or more resources will be occupied during the completion of a work request.

[0037] Those skilled in the art will recognize that data processing systems must continuously allocate resources among various incoming work requests. Indeed, a data processing system may receive numerous work requests. The resource allocation process can be complicated by distinguishing different priorities associated with different work requests. This is especially true when multiple hosts can transmit work requests to storage devices. Therefore, Figure 1 The storage controller 100 can generate a "scheduling policy" to manage resource allocation appropriately and efficiently based on received work requests. In this regard, the storage controller 100 must consider the challenges associated with receiving concurrent work requests when generating the scheduling policy. For example, when generating the scheduling policy, the storage controller 100 may assign a higher priority to concurrent work requests compared to single work requests in order to avoid resource scarcity associated with concurrent work requests.

[0038] Figure 2 This is further illustrated in one example. Figure 1 Block diagram of storage device 2000.

[0039] Reference Figure 1 and Figure 2 Suppose that the storage controller 100 receives a command from the host device 1000 and accesses the storage device 300 in response to the command.

[0040] Here, the storage controller 100 may include a host interface (I / F) 110 and multiple channel controllers (e.g., 120, 130, and 140). The host I / F 110 and the channel controllers 120, 130, and 140 may be electrically connected via a bus, such that the bus forms a transmission path through which information (e.g., (one or more) requests, data, (one or more) addresses, (one or more) control signals, and / or (one or more) commands) can be transmitted between the storage controller 100 and the host device 1000.

[0041] Therefore, for the sake of simplicity, in Figure 2 In the example shown, it is assumed that storage device 2000 operates with respect to m channels (e.g., Ch1 to Chm), storage controller 100 includes m channel controllers (e.g., channel controller 1 to channel controller m) associated with each of the m channels, and storage device 300 includes m packages (e.g., package 1 to package m) associated with each of the m channels, where "m" is a positive integer greater than 1. However, those skilled in the art will recognize that any reasonable number of channels, channel controllers, and packages can be provided and operated in various ways within the embodiments of the inventive concept. Hereinafter, the first channel controller 120 among the channel controllers and the first package 410 among the packages will be described as working examples.

[0042] Therefore, the first channel controller 120 communicates with the first package 410 of the storage device 300 via the first channel Chl. In this regard, it is assumed that the channel controller 120 includes a work queue 121, a processor 122, a buffer 123, and a die controller 200. Furthermore, it is assumed that the first package 410 includes four (4) dies (see...). Figure 3 (Die 1, die 2, die 3, and die 4). However, those skilled in the art will recognize that the channel controller 120 can be implemented differently in hardware, firmware, and / or software, and the package can include any reasonable number of dies.

[0043] Work queue 121 can be used to temporarily store (one or more) work requests and (one or more) other types of commands received from host device 1000.

[0044] Processor 122 can be used to control the overall operation of channel controller 120. For example, processor 122 can execute one or more programs stored in read-only memory (ROM) (not shown) to control the operation of channel controller 120 and / or die controller 200.

[0045] Buffer 123 can be used to temporarily store data received from host device 1000 via host I / F 110 and / or data received from storage device 300.

[0046] The die controller 200 can transmit one or more instructions associated with a work request received from the host device 1000 to the corresponding first die 411 in the package 410 via the first channel Ch1. That is, a scheduling policy can be generated to manage the transmission of instructions to the first die 411. In this respect, since each plane can be occupied differently by the received work requests, Figure 2 The die controller 200 can process each job request (and / or (one or more) commands) received from the host device 100 differently with respect to multiple planes included in the first die 411. For example, the die controller 200 can generate a scheduling policy considering whether the job request is a single job request or simultaneous parallel job requests. Figure 4 An exemplary method of operating the die controller 200 is described in more detail below.

[0047] Figure 3 This is further illustrated in one example. Figure 2 Conceptual diagram of the first package 410.

[0048] Reference Figure 3 The four planes of the first die 411 can perform the same type of operation simultaneously. Therefore, in some embodiments, the first die 411 can perform four NAND operations independently and simultaneously with respect to each of the four planes. In this regard, a single work request can be used to execute one NAND operation occupying any one plane of the first die 411, while a simultaneous parallel work request can be used to execute two or more NAND operations of the same type simultaneously occupying two or more of the four planes of the first die 411.

[0049] Figure 4 It is to further demonstrate Figure 2 Block diagram of the bare die controller 200.

[0050] Reference Figure 1 , Figure 2 and Figure 4 Storage device 2000 may generate a "raw" data packet (e.g., Packet_C) in response to (or based on) a command (e.g., a work request) received from host device 1000. For example, Packet_C may be an input / output (I / O) request data packet when the command is a read command indicating a read operation or a write command indicating a write operation. That is, the raw data packet Packet_C may include information corresponding to the type of command received from host device 1000.

[0051] Once the die controller 200 receives Packet_C, it can forward (e.g., send, queue (or store - hereinafter referred to as "store") Packet_C to the plane of die 411 indicated by Packet_C.

[0052] In some such Figure 4 In the illustrated embodiment, the die controller 200 may include an operation checker 210, an operation distributor 220, a queue controller 230, a virtual queue (VQ) cluster 240, and a scheduler 250.

[0053] Extending the above operational example, the operation checker 210 can check whether Packet_C is a single work request or a simultaneous parallel work request. Therefore, the original packet associated with (or indicating a single work request) a single work request can be referred to as a "single packet", and the original packet associated with (or indicating a simultaneous parallel work request) a simultaneous parallel work request can be referred to as a "simultaneous parallel packet".

[0054] In this regard, the operation checker 210 can generate a "modified packet" from the original packet by adding (or setting) an identifier associated with Packet_C. For example, when Packet_C is associated with a concurrent work request, an appropriate identifier can be added (or set) to indicate the concurrent packet. Here, the "identifier" can be a single data bit (0 or 1), a text message, etc. (hereafter referred to as the "concurrent identifier"). In this regard, the concurrent identifier can be omitted from the single packet but can be added to the concurrent packet. In some embodiments, the symbol Packet_C' is used below to represent a modified (or identified, or identified) version of the original packet Packet_C.

[0055] Once the operation checker has generated Packet_C', the operation allocator 220 can store Packet_C' into the virtual queue cluster 240 via one or more intermediate buses. In this regard, the operation allocator 220 can examine certain information included in Packet_C' to determine where to store Packet_C'. For example, the operation allocator 220 can refer to information included in a single packet or information included in simultaneously parallel packets to determine whether a simultaneous parallel identifier has been added.

[0056] Then, the operation allocator 220 can selectively (forward and) store (e.g., store to one of a plurality of "virtual output queues") a single packet that does not include a simultaneous parallel identifier or a simultaneous parallel packet that includes a simultaneous parallel identifier.

[0057] In this regard, the virtual output queue for receiving Packet_C' can be determined based on the plane to be occupied by Packet_C'. Alternatively, the virtual output queue for receiving and storing Packet_C' can be determined based on the type (or nature) of Packet_C generated by host device 1000.

[0058] The operation allocator 220 can also send update commands to the queue controller 230, thereby storing Packet_C' in the appropriate virtual output queue. Therefore, the queue controller 230 can be used to store (or push or queue) Packet_C' in the corresponding virtual output queue.

[0059] Virtual queue cluster 240 may include multiple virtual output queues. Each virtual output queue may be used to store Packet_C' when forwarded from operation allocator 220. The head portion of each virtual output queue may be referred to as the "head", and the tail portion may be referred to as the "tail". For example, when multiple packets are stored in a virtual output queue, the "first packet" (e.g., the first stored packet) may be located at the head of the virtual output queue, while the "last packet" (e.g., the last stored packet) may be located at the tail of the virtual output queue.

[0060] As described above, the virtual output queue for storing Packet_C' can be determined with respect to the plane to be occupied by Packet_C'. For example, refer to... Figure 4 Furthermore, assuming a single work request (or multiple single work requests), packets occupying the first plane (plane 1) can be stored in the first virtual output queue VQ1, packets occupying the second plane (plane 2) can be stored in the second virtual output queue VQ2, packets occupying the third plane (plane 3) can be stored in the third virtual output queue VQ3, and packets occupying the fourth plane (plane 4) can be stored in the fourth virtual output queue VQ4. However, referring again... Figure 4 Furthermore, assuming concurrent work requests (or multiple concurrent work requests), packets occupying the first and second planes can be stored in the first virtual output queue VQ1, and packets occupying the third and fourth planes can be stored in the third virtual output queue VQ3. However, this is merely one example of a rule for managing the storage of Packet_C' in a specific virtual output queue, and embodiments of the inventive concept are not limited thereto.

[0061] In response to storing data packets in one or more specific virtual output queues, virtual queue cluster 240, under the control of queue controller 230, can provide scheduler 250 with header change information related to one or more changes to the headers of one or more virtual output queues due to the storage of data packets. For example, virtual queue cluster 240 can provide scheduler 250 with header change information (Data_Head) associated with Packet_C' now at the head of one or more virtual output queues.

[0062] although Figure 4 An example including a single queue cluster 240 is shown, but the die controller 200 may alternatively include multiple queue clusters 240. For example, when the storage device 2000 is configured to receive commands (e.g., job requests) from more than one host device, the die controller 200 may accordingly include a separate queue cluster 240 for each host device. (See also...) Figure 12 Describe this situation in more detail.

[0063] Return to reference Figure 4 Scheduler 250 can receive header change information (Data_Head) from the virtual queue cluster 240 associated with the storage of Packet_C', which is currently at the head of one or more virtual output queues. Scheduler 250 can also receive plane status information (Data_Plane) from die 411. For example, scheduler 250 can receive a busy signal when the plane is performing another operation (e.g., an operation unrelated to Packet_C'), or an idle signal when the plane is not performing another operation. Additionally or alternatively, scheduler 250 can receive other information from one or more planes associated with the storage of Packet_C'.

[0064] In this regard, scheduler 250 can manage header change information (Data_Head) and, where appropriate, generate a scheduling policy for (one or more) virtual output queues in response to the header change information (Data_Head). Here, the scheduling policy can indicate the scheduling policy for sending Packet_C' stored in (one or more) virtual output queues to storage device 300. That is, the scheduling policy can indicate the sending priority of Packet_C' in other stored data packets.

[0065] In some embodiments, scheduler 250 may consider different scheduling strategies (or combinations of one or more different scheduling strategies) to prevent resource exhaustion, such as preventing resource exhaustion of the type where concurrent packets are dequeued (or popped) from one or more virtual output queues. That is, scheduler 250 may generate new scheduling strategies and / or correct one or more existing scheduling strategies. It is noted in this regard that resource exhaustion may occur when packets stored in one or more virtual output queues have relatively low priority and are therefore not sent to storage device 300 within a predetermined time period.

[0066] Given this potential outcome, some schedulers have employed a "weighted fair scheduling strategy" (e.g., weighted fair queuing). Under a weighted fair scheduling strategy, different weights can be assigned to each virtual queue cluster corresponding to a specific host device. Therefore, it is assumed that there is no priority among the virtual output queues included in the virtual queue cluster, and that the virtual output queues can store the same number of packets and send packets to the plane in different orders. As a result, the stored packets may be output from the virtual output queues based on the state of each plane. In this case, it is likely that packets corresponding to a single work request occupying only one plane will be output in a timely manner. This relatively high output chance occurs because the probability of any one plane entering an idle state is much greater than the probability of multiple planes entering an idle state simultaneously. Therefore, when (one or more) single packets and (one or more) simultaneously parallel packets are stored in (one or more) virtual output queues, (one or more) single packets will be sent to the corresponding (one or more) planes as expected. However, when (one or more) single packets and (one or more) simultaneously parallel packets are stored in (one or more) virtual output queues, there is a significant possibility that simultaneously parallel packets may run out of resources, causing commands (e.g., work requests) to fail in the virtual output queues.

[0067] In view of the foregoing, embodiments of the present invention provide storage devices (such as...) Figure 1 Storage devices 2000), die controllers (such as...) Figure 2 and Figure 3 The bare die controller) and / or a scheduler capable of distinguishing the priority between a single work request and simultaneous parallel work requests (such as a die controller) and / or a scheduler capable of distinguishing the priority between a single work request and simultaneous parallel work requests. Figure 4 The scheduler 250 executes one or more operation methods.

[0068] For example, even in cases where a single packet might be output, scheduler 250 can assign a higher priority to a specific concurrently parallel packet compared to a specific single packet, in order to better incentivize the output of concurrently parallel packets (e.g., increase the probability of output). Additionally or alternatively, scheduler 250 can assign a higher priority to one or more virtual output queues storing concurrently parallel packets than to other virtual output queues (e.g., virtual output queues storing single packets). That is, scheduler 250 can output Packet_C' from one or more virtual output queues according to an appropriate scheduling strategy that allows Packet_C' to occupy one or more planes.

[0069] Figure 5 This is a flowchart illustrating, in one example, a method for operating a storage controller according to an embodiment of the present invention.

[0070] Reference Figure 1 , Figure 4 and Figure 5 The storage controller 100 can receive a command CMD associated with a work request from the host device 1000 (S110). Thereafter, the storage controller 100 can generate a raw data packet Packet_C in response to the command CMD.

[0071] Subsequently, the storage controller 100 can determine whether the work request associated with the command CMD is a concurrent work request, and once it is determined that the work request associated with the command CMD is a concurrent work request, it adds (or sets) a concurrent identifier to the original data packet Packet_C to generate a modified data packet Packet_C' (S120). (It is worth noting that in some embodiments, the storage controller 100 may not add (or set) a concurrent identifier for a single data packet.)

[0072] Then, the storage controller 100 can store the modified packet Packet_C' in at least one virtual output queue in (one or more) virtual queue clusters 240 based on the information associated with the modified packet Packet_C' (S130). Here, the storage controller 100 can identify the virtual output queue in which the modified packet Packet_C' should be stored, taking into account at least one resource (e.g., a plane) associated with the command CMD. For example, if the command that generates the modified packet Packet_C' indicates that it occupies a first plane (plane 1) and a second plane (plane 2), then the command can be stored in the first virtual output queue VQ1, and the modified packet Packet_C' can be stored in the second virtual output queue VQ2.

[0073] Then, the storage controller 100 can send header change information associated with the virtual output queue storing the modified data packet Packet_C' to the scheduler 250 (S140). For example, the virtual queue cluster 240 can send header change information (Data_Head) associated with the second virtual output queue VQ2 and caused by the storage of the modified data packet Packet_C' to the scheduler 250 (S140).

[0074] Then, the storage controller 100 can generate a scheduling policy (S150) by taking into account the header change information (Data_Head) associated with the modified data packet Packet_C', the state of (one or more) virtual output queues, and the state of the plane in the storage device 300. The resulting scheduling policy can define the following strategy: manage the output of the modified data packet Packet_C' in relation to the predetermined output time of various data packets stored in (one or more) virtual output queues to prevent resource exhaustion. As described above, the storage controller 100 can consider any number of existing scheduling policies, select a scheduling policy from existing scheduling policies, modify existing scheduling policies, and / or generate new scheduling policies to achieve the purpose of one or more defined scheduling policies and avoiding resource exhaustion.

[0075] Then, the storage controller 100 can output the modified data packet Packet_C' stored in (one or more) virtual output queues according to the scheduling policy, and send the modified data packet Packet_C' to the bare die 411 in the storage device 300 (S160).

[0076] Figure 6 and Figure 7 These are conceptual diagrams illustrating packet structures and modified packet structures that can be used in relation to certain embodiments of the inventive concept.

[0077] Reference Figure 4 and Figure 6 Assume that the raw data packet Packet_C generated in response to the command CMD indicating a concurrent work request includes at least one of the following: channel information (Channel_ID) associated with the work request, die information (Die_ID) associated with the work request, plane information (Plane_Bitmap) identifying the plane (one or more) occupied by the work request, host device information (Tenant_ID) identifying the host device sending the work request, and the type of the work request (OP_Code). Here, it is also assumed that a read command is identified by OP_Code 1, and a write command is identified by OP_Code 0.

[0078] When the die controller 200 receives the original data packet Packet_C, the operation checker 210 can determine whether the original data packet Packet_C indicates a simultaneous parallel operation request. Once it is determined that the original data packet Packet_C indicates a simultaneous parallel operation request, a simultaneous parallel identifier (e.g., Barrier_Bit) can be added (or set) to generate a corresponding modified data packet Packet_C'. That is, the nature of the original data packet (whether it indicates a single-operation data packet or a simultaneous parallel data packet) can be clearly distinguished in the modified data packet Packet_C' based on the state of the identifier Barrier_Bit (e.g., 0 or 1). Furthermore, because the operation checker 210 distinguishes only simultaneous parallel data packets from single data packets in this way, the operation checker 210 does not need to use an identifier (e.g., regarding single data packets).

[0079] For example, refer to Figure 7 Assume that the first data packet (Packet_C1) is a simultaneous parallel data packet, and the second data packet (Packet_C2) and the third data packet (Packet_C3) are single data packets.

[0080] Therefore, by operating the inspector 210, the concurrent identifier (e.g., Barrier_Bit) is set to "1" for the first packet Packet_C1 to generate a modified first packet (Packet_C1'), the concurrent identifier (e.g., Barrier_Bit) is set to "0" for the second packet Packet_C2 to generate a modified second packet (Packet_C2'), and the concurrent identifier (e.g., Barrier_Bit) is set to "0" for the third packet Packet_C3 to generate a modified third packet (Packet_C3').

[0081] Figure 8 This is further illustrated in one example. Figure 4 A conceptual diagram of the operation method of the operation distributor 220.

[0082] Reference Figure 4 and Figure 8Operation allocator 220 can identify each packet and forward it to the virtual output queue by referring to the header information (Data_Head) associated with the received modified packets (e.g., modified first packet Packet_C1', modified second packet Packet_C2', and modified third packet Packet_C3'). That is, operation allocator 220 and / or queue controller 230 can be used to store modified first packet Packet_C1', modified second packet Packet_C2', and modified third packet Packet_C3'.

[0083] exist Figure 8 In the example shown, it is assumed that the operation allocator 220 first allocates virtual output queues differently among the modified first packet Packet_C1', the modified second packet Packet_C2', and the modified third packet Packet_C3'. For example, it is assumed that the modified first packet Packet_C1' is associated with work occupying both the first plane (plane 1) and the second plane (plane 2), the modified second packet Packet_C2' is associated with work occupying only the second plane (plane 2), and the modified third packet Packet_C3' is associated with work occupying only the third plane (plane 3).

[0084] Therefore, the allocator 220 can allocate the first virtual output queue VQ1 to packets (single packets or simultaneous parallel packets) occupying the first plane (plane 1); allocate the second virtual output queue VQ2 to packets occupying the second plane (plane 2); and allocate the third virtual output queue VQ3 to packets occupying the third plane (plane 3). However, many different allocation methods can be used in various embodiments of the inventive concept. Additionally, depending on the state of (one or more) virtual output queues, single packets and / or simultaneous parallel packets may not be allocated to previously designated virtual output queues.

[0085] Figure 9 This is further illustrated in one example. Figure 4 The block diagram of the scheduler 250, and Figure 10 This is a conceptual diagram further illustrating the operation of the scheduler 250 according to an embodiment of the present invention.

[0086] Reference Figure 4 , Figure 9 and Figure 10 The scheduler 250 may include a factor manager 251, a plane state manager 252, a scheduler 253, and a switch 254.

[0087] Factor manager 251 can collect information (e.g., Data_Head) about the generation of scheduling policies (Data_Sch). For example, factor manager 251 can collect header information (Data_Head) associated with one or more packets stored in each virtual output queue from the virtual output queues of virtual queue cluster 240. Additionally, factor manager 251 can use plane state manager 252 to collect plane state information (Data_Plane) associated with the state of each plane in the planes of storage device 300.

[0088] Factor Manager 251 can be like Figure 10 The aforementioned information is managed as collected data. Here, the factor manager 251 can use a single bit (e.g., 0 or 1) to manage plane state information (Data_Plane) related to the state of various planes. Figure 10 In this context, it is assumed that the state of the first plane (plane 1) and the state of the third plane (plane 3) are idle (e.g., 0), while it is assumed that the state of the second plane (plane 2) and the state of the fourth plane (plane 4) are busy (e.g., 1).

[0089] Furthermore, assume that factor manager 251 manages information PB_VQ1, PB_VQ2, PB_VQ3, and PB_VQ4 related to which plane a packet stored in the header of each virtual output queue occupies. For example, packets stored in the first virtual output queue can occupy the first through fourth planes (planes 1 through 4), and factor manager 251 can indicate information PB_VQ1 as "1111". Additionally, packets stored in the second virtual output queue can occupy the second plane (plane 2), and factor manager 251 can indicate information PB_VQ2 as "0010". Packets stored in the third virtual output queue can occupy the third plane (plane 3) and the fourth plane (plane 4), and factor manager 251 can indicate information PB_VQ3 as "1100". Furthermore, if no packets are stored in the header of the fourth virtual output queue, factor manager 251 can indicate information PB_VQ4 as "0000".

[0090] Here, by comparison, if the scheduler 250 uses the weighted fair scheduling policy as the scheduling policy (Data_Sch), the factor manager 251 can further collect time information VTS, such as the virtual timestamp provided by the host device 1000.

[0091] The factor manager 251 can manage information related to which virtual output queue head a concurrent data packet stored in a virtual output queue is located at. For example, it can manage information indicating that concurrent data packets requiring the use of the first to fourth planes (planes 1 to 4) and concurrent data packets requiring the use of the third plane (plane 3) and the fourth plane (plane 4) are located at the head of each corresponding virtual output queue, while concurrent data packets requiring the use of the first plane (plane 1) and the second plane (plane 2) are not located at the head of their respective virtual output queues.

[0092] Additionally or alternatively, the factor manager 251 can further collect and manage various scheduling information.

[0093] The plane state manager 252 can receive plane state information (Data_Plane) from the plane and send plane state information (Data_Plane) to the factor manager 251 or the scheduler 253.

[0094] The scheduler 253 can receive information (e.g., VTS, Data_Plane, and Barrier_Bit states) and generate a scheduling policy (Data_Sch) based on the received information. For example, when a virtual output queue in the virtual queue cluster 240 receives a new data packet, the scheduler 253 can begin generating the scheduling policy.

[0095] The scheduling strategy generation algorithm currently being used by the scheduling manager 253 can be selected from a variety of algorithms available to the scheduler 250.

[0096] Here, it is assumed that the control algorithm used by scheduler 253 attempts to output data packets from the virtual output queue within a predetermined time period, especially when concurrent work requests occupy multiple planes. That is, scheduler 253 attempts to generate a scheduling policy (Data_Sch) to prevent resource scarcity for any given data packet.

[0097] Therefore, the scheduler 253 can generate a scheduling policy (Data_Sch) related to the data packets that can currently be output from the virtual output queue, and when the output of the data packets is interrupted by the scheduling policy (Data_Sch) due to concurrent operation, the scheduler 253 can modify (or correct) the existing scheduling policy (Data_Sch).

[0098] The scheduler 253 can send the modified scheduling policy to the switch 254, and the switch 254 can send packets (e.g., Packet_C') to the corresponding (one or more) planes.

[0099] Figure 11 This is a signaling diagram further illustrating, in one example, a method for operating a die controller according to an embodiment of the present invention.

[0100] Reference Figure 4 , Figure 9 and Figure 11 Suppose that the operation checker 210 in the die controller 200 has received the original data packet Packet_C indicating a simultaneous parallel operation request, and added (or set) the simultaneous parallel identifier to generate the modified data packet Packet_C'.

[0101] Therefore, the operation allocator 220 receives Packet_C' from the operation checker 210 (S301); the operation allocator 220 forwards Packet_C' to the virtual queue cluster 240 (S302); the operation allocator 220 sends an update command to the queue controller 230 to store Packet_C' in the virtual output queue (S303); and once the update command is received, the queue controller 230 stores Packet_C' in the virtual output queue of the virtual queue cluster 240 (S304).

[0102] After storing Packet_C', queue controller 230 can send header information (Data_Head) related to the data packets located at the heads of the virtual output queue to scheduler 250 (S305). Queue controller 230 can also send additional information about other data packets located in the virtual output queue.

[0103] Scheduler 250 can generate a scheduling policy (Data_Sch) based on header information (Data_Head) (S306). Here, scheduler 250 can consider various information when generating the scheduling policy (Data_Sch). For example, the scheduling policy (Data_Sch) generated by scheduler 250 can take into account the existence of one or more concurrently working data packets in the virtual queue cluster 240.

[0104] Once the scheduling policy (Data_Sch) is generated, the virtual queue cluster 240 can send Packet_C' to the scheduler 250 (S307), and the scheduler 250 can send Packet_C' to the bare die 411 (S308). For example, the switch 254 in the scheduler 250 can be used to send Packet_C' to the plane to be occupied by Packet_C'.

[0105] Once Packet_C' is received, die 411 can send completion information to scheduler 250 (S309). The completion information may include plane state information (Data_Plane) of each plane included in die 411 (e.g., the plane that received Packet_C', thereby changing the corresponding plane state information).

[0106] Then the scheduler 250 can send plane status information (Data_Plane) including the completion information to the queue controller 230 (S310), and the queue controller 230 can send a command to the virtual queue cluster 240 to remove the (now completed) Packet_C' from the virtual output queue (S311).

[0107] Figure 12 This is a block diagram illustrating a data processing system 20 according to an embodiment of the concept of the present invention.

[0108] Reference Figure 1 , Figure 2 , Figure 4 , Figure 9 and Figure 12 The data processing system 20 may include host devices 1100, 1200, and 1300, each configured to send commands to the storage device 3000. Host devices 1100, 1200, and 1300 may all be referred to as "tenants," and the storage controller 3100 in the storage device 3000 may independently (or individually) process commands received from each of the host devices 1100, 1200, and 1300, and independently (or individually) store each command in queue clusters 3110, 3120, and 3130. Therefore, the storage device 3000 may include multiple queue clusters 3110, 3120, and 3130.

[0109] When storage device 3000 uses a weighted fair scheduling policy, the virtual timestamps of host devices 1100, 1200 and 1300 can be different from each other, and the scheduling policy can be generated based on the differences between the virtual timestamps.

[0110] For example, the scheduler 253 in scheduler 250 can first search for the virtual queue cluster 240 corresponding to the host device with the smallest virtual timestamp value to generate a scheduling policy. When a packet waiting to be output exists in the virtual queue cluster 240, a scheduling policy for outputting the packet can be generated, and the packet can be output. Whether to output the packet can be determined by considering the plane state, information about the packet, etc.

[0111] Otherwise, when there are no packets waiting to be output in the virtual queue cluster 240, the virtual queue cluster 240 corresponding to the host device with the second minimum virtual timestamp value can be searched.

[0112] Although the inventive concept has been specifically shown and described with reference to embodiments thereof, it should be understood that various changes in form and detail may be made herein without departing from the spirit and scope of the appended claims.

Claims

1. A storage device that communicates with a host device that generates raw data packets, the storage device comprising: A storage device, the storage device comprising a die having a plurality of planes; and Controller, wherein the controller includes: An operation checker is configured to receive the original data packet indicating a simultaneous parallel operation request, the simultaneous parallel operation request occupying at least two of the plurality of planes, wherein the operation checker is further configured to set a simultaneous parallel identifier associated with the original data packet to generate a modified data packet; An operation allocator, configured to store the modified data packet in at least one virtual output queue in a virtual queue cluster; and Scheduler, the scheduler is configured to: Once the modified data packet is stored in the at least one virtual output queue, header change information related to the change in the header of the at least one virtual output queue is received from the virtual queue cluster. A scheduling strategy is generated by considering the header change information, the state of the at least one virtual output queue, and the states of the multiple planes; and According to the scheduling strategy, the modified data packet is sent to at least one of the multiple planes that is occupied by the concurrent work request. The scheduling policy is configured to assign a higher priority to the modified data packet rather than to the single-work data packet indicating a single-work request from the host device, wherein the single-work request is configured to occupy only a single plane among the plurality of planes.

2. The storage device according to claim 1, wherein, The operation checker is further configured to: Determine whether the original data packet is the single-work data packet or a simultaneous parallel work data packet indicating the simultaneous parallel work request, and Once it is determined that the original data packet is the simultaneous parallel working data packet, the simultaneous parallel identifier is set.

3. The storage device according to claim 2, wherein, The operation checker is further configured to set the simultaneous parallel identifier and generate the modified data packet by adding a single bit to the original data packet.

4. The storage device according to claim 2, wherein, The operation allocator is further configured to store the modified data packet in the at least one virtual output queue based on information associated with the modified data packet.

5. The storage device according to claim 4, wherein, The information includes plane information that identifies at least one of the multiple planes occupied by the execution of the concurrent work request.

6. The storage device according to claim 4, wherein, The information includes header information associated with the modified data packet located at the head of the at least one virtual output queue.

7. The storage device according to claim 4, wherein, The information includes the type of command associated with the original data packet.

8. The storage device according to claim 1, wherein, The scheduler is also configured to receive plane state information from the die.

9. The storage device according to claim 8, wherein, The plane status information includes a busy signal for one of the plurality of planes currently performing another operation, and an idle signal for another of the plurality of planes not performing another operation.

10. The storage device according to claim 1, wherein, The scheduler is also configured to assign a higher priority to a virtual output queue storing the modified data packet than to another virtual output queue storing a single data packet.

11. A controller for a storage device, the storage device being configured to communicate with a plurality of host devices, wherein, Each of the plurality of host devices is configured to generate a raw data packet indicating a work request, and the controller includes: An operation checker is configured to determine whether a work request received from one of the plurality of host devices is a simultaneous parallel work request or a single work request, and once it is determined that the work request received from the host device is a simultaneous parallel work request, to generate a modified data packet by adding a simultaneous parallel identifier to the original data packet, wherein the operation checker is further configured to set the simultaneous parallel identifier and generate the modified data packet by adding a single bit to the original data packet; A virtual queue cluster, the virtual queue cluster including a first virtual output queue and a second virtual output queue; A queue controller configured to store the modified data packet in the first virtual output queue based on information associated with the modified data packet; and A scheduler configured to: store the modified data packet in a storage device according to a scheduling policy; and, once the modified data packet is stored in at least one of the first virtual output queue or the second virtual output queue, receive header change information from the virtual queue cluster related to a change in the header of the first virtual output queue or the second virtual output queue, wherein the scheduling policy is defined by at least one of: the state of the concurrent identifier, information associated with the work request received from the host device, change information associated with at least one of the first virtual output queue and the second virtual output queue, and plane information associated with multiple planes of the storage device. The execution of the concurrent work request occupies at least two of the multiple planes, while the execution of the single work request occupies only a single plane. The scheduling policy is configured to assign a higher priority to the first virtual output queue instead of the second virtual output queue.

12. The controller according to claim 11, wherein, The change information associated with at least one of the first virtual output queue and the second virtual output queue includes header change information associated with the storage of the modified data packet in the first virtual output queue.