Method for scheduling jobs in storage device and method for operating storage system
By using predefined operation schedules and timestamp update mechanisms in storage devices, the problems of priority and throughput management when scheduling jobs in the prior art are solved, and efficient job scheduling and accurate timestamp management are achieved.
Patent Information
- Application Number
- CN202011538720.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-12-26
- Filing Date
- 2020-12-23
- Publication Date
- 2025-03-18
- Estimated Expiration
- 2040-12-23
AI Technical Summary
In the prior art, when scheduling jobs in storage devices, it is difficult to effectively manage the priority and throughput of the jobs, resulting in poor scheduling performance.
Priority and throughput management of jobs are achieved by using a predefined operation schedule in the storage device, pre-update timestamps based on the operation and operation time relationship of the job, and receiving and processing schedule requests for the next job when the current job is executed.
This method can reduce the wait time overhead, improve the scheduling performance of the storage device, and improve the accuracy of scheduling operations through the post-compensation mechanism.
Smart Images

Figure CN113050884B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims the priority of Korean Patent Application No. 10-2019-0174906 filed on December 26, 2019, in the Korean Intellectual Property Office (KIPO), the contents of which are incorporated herein by reference in their entirety. Technical Field
[0003] Exemplary embodiments relate generally to semiconductor integrated circuits, and more particularly, to a method of scheduling a job in a storage device using a predefined time and a method of operating a storage system using the method of scheduling a job. Background Art
[0004] Some types of data storage devices include one or more semiconductor memory devices. Examples of such data storage devices include solid-state drives (SSDs). These types of data storage devices may have various design and / or performance advantages over hard disk drives (HDDs). Examples of potential advantages include the absence of moving mechanical parts above the subatomic level, higher data access speeds, stability, durability, and / or low power consumption. Recently, various systems such as laptops, cars, airplanes, drones, etc. have adopted such SSDs for data storage.
[0005] Such a system may be implemented to perform multitasking, where various jobs or tasks are performed simultaneously. When performing multitasking, a storage device may be accessed by multiple jobs or tasks simultaneously. Summary of the invention
[0006] At least one exemplary embodiment of the present disclosure provides a method for internally scheduling a job or task in a storage device using a predefined time.
[0007] At least one exemplary embodiment of the present disclosure provides a method of operating a storage system using a method of scheduling jobs or tasks.
[0008] At least one exemplary embodiment of the present disclosure provides a method for scheduling jobs or tasks in a storage device, wherein priorities and / or throughputs of a plurality of jobs or tasks are controlled by the storage device.
[0009] According to an exemplary embodiment, in a method for scheduling a job in a storage device, a preselected first job is executed. When the first job is executed, a first timestamp for the first job among a plurality of timestamps is pre-updated based on a predefined operation schedule representing a relationship between a plurality of operations and operation times of the storage device. When the first job is executed, a plurality of scheduling requests associated with a second job to be executed subsequently are received. When the first job is executed, a scheduling operation for selecting the second job is pre-executed based on the plurality of scheduling requests and the plurality of timestamps.
[0010] According to an exemplary embodiment, in a method of operating a storage system including at least one host device and a storage device, a preselected first job is executed by the storage device. When executing the first job, the storage device pre-updates a first timestamp for the first job among a plurality of timestamps based on a predefined operation schedule stored in the storage device and representing a relationship between a plurality of operations and operation times of the storage device. When executing the first job, the host device sends a plurality of scheduling requests to the storage device. The plurality of scheduling requests are associated with a second job to be subsequently executed by the storage device. When executing the first job, the storage device pre-executes a scheduling operation for selecting a second job based on the plurality of scheduling requests and the plurality of timestamps.
[0011] According to an exemplary embodiment, in a method for scheduling a job in a storage device, a first scheduling operation for selecting a first job is performed based on a plurality of first scheduling requests and a plurality of time stamps. The first job selected by the first scheduling operation is executed. When the first job is executed, a first time stamp for the first job among a plurality of time stamps is updated based on a predefined operation schedule representing a relationship between a plurality of operations of the storage device and an operation time. When the first job is executed, a plurality of second scheduling requests associated with a second job to be executed subsequently are received. When the first job is executed, a second scheduling operation for selecting the second job is performed based on a plurality of second scheduling requests and a plurality of time stamps. After the first job is completed, the second job selected by the second scheduling operation is executed immediately. When the second job is executed, the first time stamp for the first job is post-compensated. When the second job is executed and after the first time stamp is post-compensated, a second time stamp for the second job among a plurality of time stamps is updated based on a predefined operation schedule. The plurality of time stamps correspond to a plurality of job executors to which different weights are assigned. The operation times of the plurality of operations of the storage device included in the predefined operation schedule are set differently for the plurality of job executors based on different weights.
[0012] In a method for scheduling a job and a method for operating a storage system according to an exemplary embodiment, when executing a current job, an operation for updating a timestamp for the current job and a scheduling operation for selecting a next job may be performed. In other words, the timestamp update operation for the current job and the scheduling operation for the next job may overlap with the execution of the current job. In addition, since the timestamp update operation for the current job is performed before the current job is completed, the timestamp update operation for the current job may be performed using a predefined operation time (e.g., a predicted execution time) stored in a predefined operation schedule instead of the actual execution time of the current job. Therefore, the waiting time overhead may be reduced, removed or eliminated, because the time for updating the timestamp of the current job and the time for scheduling the next job are not required between the current job and the next job, and thus the scheduling performance of the storage device may be improved or enhanced. In addition, after the current job is completed, the timestamp of the current job may be post-compensated based on the actual execution time of the current job, and thus the accuracy of the scheduling operation may be improved.
[0013] According to exemplary embodiments, latency overhead overlap or removal of latency overhead and accurate scheduling may be performed simultaneously by removing disadvantages of alternatives while taking advantages of the alternatives.
[0014] According to an exemplary embodiment, a method for scheduling jobs in a storage device includes: predefining an operation schedule representing the relationship between multiple operations of the storage device and the expected operation times of the multiple operations; receiving multiple scheduling requests associated with multiple timestamps for multiple jobs, each job having at least one operation; executing a preselected first job having a first operation from the multiple jobs; while the first job is being executed, pre-updating a first timestamp for the first job from the multiple timestamps based on the first operation and a predefined operation schedule representing the relationship between the multiple operations of the storage device and the operation times; while the first job is being executed, receiving multiple scheduling requests associated with a second job to be executed subsequently; and while the first job is being executed, pre-executing a scheduling operation for selecting a second job to be executed after the first job from the multiple jobs based on the multiple scheduling requests and the multiple timestamps.
[0015] According to an exemplary embodiment, a method for operating a storage system including at least one host device and a storage device includes: executing a preselected first job by the storage device; while the first job is being executed, pre-updating, by the storage device, a first timestamp for the first job among a plurality of timestamps based on a predefined operation schedule stored in the storage device and representing a relationship between a plurality of operations of the storage device and a predicted operation time of the plurality of operations; while the storage device is executing the first job, sending, by at least one host device, a plurality of scheduling requests to the storage device, the plurality of scheduling requests being associated with a second job to be subsequently executed by the storage device after the first job; and while the first job is being executed, pre-executing, by the storage device, a scheduling operation for selecting the second job based on the plurality of scheduling requests and the plurality of timestamps.
[0016] According to an exemplary embodiment, a storage device includes: a storage controller connected to at least one non-volatile memory; and a scheduler connected to the storage controller, wherein the scheduler is configured to receive multiple scheduling requests associated with multiple timestamps for multiple jobs, each job having at least one operation on at least one non-volatile memory, wherein the storage controller is configured to execute a first job among the multiple jobs having a first operation on at least one non-volatile memory, wherein the scheduler is also configured to pre-update a first timestamp for the first job based on the first operation and a predefined operation schedule while the first job is being executed, wherein the scheduler is also configured to pre-execute a scheduling operation for selecting a second job to be executed after the first job from the multiple jobs based on the multiple scheduling requests and the multiple timestamps while the first job is being executed, wherein the storage controller is configured to execute the second job among the multiple jobs having the second operation on the at least one non-volatile memory immediately after the first job is completed. BRIEF DESCRIPTION OF THE DRAWINGS
[0017] Illustrative, non-limiting exemplary embodiments will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings.
[0018] Figure 1 is a flow chart illustrating a method of scheduling a job in a storage device using a predefined time according to an exemplary embodiment;
[0019] Figure 2 Is used to describe Figure 1 A hybrid timing diagram of a method for scheduling jobs in a storage device;
[0020] Figure 3 is a schematic block diagram illustrating a storage device and a storage system including the storage device according to an exemplary embodiment;
[0021] Figure 4is a schematic block diagram illustrating an example of a storage controller included in a storage device according to an exemplary embodiment;
[0022] Figure 5 is a schematic block diagram illustrating an example of a nonvolatile memory included in a storage device according to an exemplary embodiment;
[0023] Figure 6 is a schematic block diagram illustrating an example of a WFQ scheduler included in a storage device according to an exemplary embodiment;
[0024] Figure 7 It is shown Figure 6 A tabular diagram of an example of a predefined operating schedule included in a WFQ scheduler;
[0025] Figure 8 It is shown Figure 1 A flowchart of an example of performing a scheduling operation for selecting a second job;
[0026] Fig. 9 Is used to describe Figure 8 A hybrid timing diagram of the scheduling operation;
[0027] Fig.10 It is shown Figure 1 A flowchart of an example of updating a first timestamp in;
[0028] Fig.11 Is used to describe Fig.10 A mixed timing diagram of the update operation;
[0029] Fig.12 is a flow chart illustrating a method of scheduling a job in a storage device using a predefined time according to an exemplary embodiment;
[0030] Fig.13 Is used to describe Fig.12 A hybrid timing diagram of a method for scheduling jobs in a storage device;
[0031] Fig.14 is a schematic block diagram illustrating another example of a WFQ scheduler included in a storage device according to an exemplary embodiment;
[0032] Fig.15 It is shown Fig.12 A flowchart of an example of a post-compensation first timestamp in;
[0033] Fig.16 It is shown Fig.12 A flowchart of another example of a post-compensation first timestamp in;
[0034] Fig.17is a schematic block diagram illustrating a storage system including a storage device according to an exemplary embodiment;
[0035] Fig.18 is a schematic block diagram illustrating a storage system including a storage device according to an exemplary embodiment; and
[0036] Fig.19 is a schematic block diagram illustrating a storage server including a plurality of storage devices according to an exemplary embodiment. DETAILED DESCRIPTION
[0037] The present disclosure will be described more fully with reference to the accompanying drawings, in which exemplary embodiments are shown. However, the present disclosure may be specifically implemented in many different forms and should not be construed as being limited to the exemplary embodiments set forth herein. Throughout this application, similar reference numerals may refer to similar elements.
[0038] Figure 1 A method of scheduling a job in a storage device using a predefined time according to an exemplary embodiment is illustrated. Figure 2 Show use Figure 1 Method to schedule jobs in storage devices.
[0039] refer to Figure 1 and Figure 2 According to an exemplary embodiment, a storage device includes a plurality of nonvolatile memories storing data, and a storage controller controlling operations of the plurality of nonvolatile memories. In addition, the storage device includes a scheduler for scheduling jobs, tasks, or operations. Figure 3 Configurations of storage devices and storage systems including the storage devices are described.
[0040] In the method of scheduling a job in a storage device according to an exemplary embodiment, a preselected (or pre-selected) first job JOB1 is executed (step S100 ). Figure 2 Operation ① in the Figure 1 Step S100 in .
[0041] For example, the first job JOB1 may be selected by executing a scheduling operation WSC1, which is substantially the same as a scheduling operation WSC2 to be described in step S400. The scheduling operation WSC1 for selecting the first job JOB1 may be executed before step S100. As another example, although in Figure 2 Not shown, but when only one scheduling request is received, or when the first job JOB1 is the foremost or most primary job to be executed, the scheduling operation WSC1 may be omitted and the first job JOB1 may be immediately executed without the scheduling operation WSC1.
[0042] While the first job JOB1 is being executed, a first timestamp for the first job JOB1 among a plurality of timestamps is updated based on a predefined operation schedule (step S200 ). Figure 2 Operation ② in the Figure 1 The operation TUP1 of updating the first timestamp in step S200 of the present invention may be pre-executed (or pre-executed) before the first job JOB1 is completed. In other words, the first timestamp may be pre-updated (or pre-updated) before the first job JOB1 is completed. Fig.10 Step S200 is described in detail.
[0043] The predefined operation schedule indicates the relationship between multiple operations of the storage device and the operation time. Multiple jobs including the first job JOB1, the second job JOB2, etc. may be jobs associated or related to multiple operations of the storage device. For example, as will be described later, the multiple operations of the storage device may include a data read operation, a data write operation, a data erase operation, etc. on the storage device. Figure 7 Describe the predefined operational schedule in detail.
[0044] The multiple timestamps may correspond to multiple job executors as subjects or parties that execute the multiple jobs, and may represent, for example, the accumulated time (or cumulative time) that the multiple job executors cumulatively use (e.g., access) the storage device. For example, as will be described later, the accumulated time may not correspond to the actual execution time, and may be obtained by accumulating predicted execution time (or estimated execution time or expected execution time) based on a predefined operation schedule. Fig. 9 Describes multiple timestamps in detail.
[0045] When the first job JOB1 is executed, a plurality of scheduling requests associated with a second job JOB2 to be executed subsequently are received (step S300). Each of the plurality of scheduling requests may be received or sent together with a corresponding one of the plurality of jobs. When the first job JOB1 is executed, a scheduling operation WSC2 for selecting a second job JOB2 is performed based on the plurality of scheduling requests and the plurality of time stamps (step S400). Figure 2 Operation ③ in the Figure 1 Step S400 in FIG. 10 can also be pre-executed (or pre-executed) before the first job JOB1 is completed. Figure 8 Step S400 is described in detail.
[0046] In some exemplary embodiments, at least one scheduling operation, such as scheduling operations WSC1 and WSC2, may be performed based on a weighted fair queuing (WFQ) scheme. For example, a scheduler included in the storage device may be a WFQ scheduler.
[0047] Although it can be described based on the operation when executing the first job JOB1 Figure 1 However, the operation when executing the second job JOB2 can also be the same as Figure 1 The operations are basically the same, such as Figure 2 As shown or can refer to Fig.12 For example, the second job JOB2 may be executed after the first job JOB1 is completed (e.g., immediately after the first job JOB1 is completed). When the second job JOB2 is executed, a second timestamp for the second job JOB2 among the plurality of timestamps may be updated based on a predefined operation schedule (e.g., Figure 2 When the second job JOB2 is executed, a plurality of scheduling requests associated with a third job to be executed after the second job may be received. When the second job JOB2 is being executed, a scheduling operation for selecting the third job may be performed based on the plurality of scheduling requests and the plurality of timestamps. If the plurality of scheduling requests are not sent or received, the storage device may wait to receive a subsequent scheduling request.
[0048] In a non-preferred WFQ scheme, the timestamp update operation and the scheduling operation are performed after the corresponding job is completed. On the other hand, in the WFQ scheme in the method for scheduling jobs in a storage device according to an exemplary embodiment, when the first job JOB1 is being executed and before the first job JOB1 is completed, an operation TUP1 for updating the first timestamp for the first job JOB1 and a scheduling operation WSC2 for selecting the second job JOB2 to be executed subsequently can be performed. In other words, the timestamp update operation for the current job and the scheduling operation for the next job (or subsequent job) can overlap with the execution of the current job at the same time. In addition, since the timestamp update operation for the current job is performed before the current job is completed, the timestamp update operation for the current job can be performed using a predefined operation time (e.g., a predicted execution time) stored in a predefined operation schedule, rather than the actual execution time of the current job. Therefore, the waiting time overhead can be reduced, removed or eliminated because the time for updating the timestamp of the current job and the time for scheduling the next job are not required between the current job and the next job, and thus the scheduling performance of the storage device can be improved or enhanced.
[0049] Figure 3 A storage device and a storage system including the storage device according to exemplary embodiments are shown.
[0050] refer to Figure 3 , the storage system 100 includes a host device 200 and a storage device 300 .
[0051] The host device 200 controls the overall operation of the storage system 100. Figure 3 Although not shown in the figure, the host device 200 may include a host processor and a host memory. The host processor may control the operation of the host device 200. For example, the host processor may execute an operating system (OS). The host memory may store instructions and / or data executed and / or processed by the host processor. For example, the operating system executed by the host processor may include a file system for file management and a device driver for controlling peripheral devices including the storage device 300 at the operating system level.
[0052] In addition, the host device 200 can execute multiple applications APP1, APP2, ..., APPN, which are different from each other and are driven or run on the operating system. For example, the multiple applications APP1 to APPN can provide an Internet browser, a game, a video, a camera, etc. The multiple applications APP1 to APPN can generate multiple jobs and multiple scheduling requests for using or accessing the storage device 300 (for example, for writing, reading and / or erasing data, etc.). In other words, as an execution reference Figure 1 The multiple job executors of the described multiple job subjects or parties may include multiple applications APP1 to APPN.
[0053] The storage device 300 is accessed by the host device 200. The storage device 300 may include a storage controller 310, a plurality of nonvolatile memories 320a, 320b, and 320c, and a buffer memory 330.
[0054] The memory controller 310 may control operations of the memory device 300 and / or operations of the plurality of nonvolatile memories 320 a , 320 b , and 320 c based on commands, addresses, and data received from the host device 200 .
[0055] The storage controller 310 includes a WFQ scheduler 312. The WFQ scheduler 312 may execute reference Figure 1 For example, the storage device 300 may execute a current job preselected by the WFQ scheduler 312, and the WFQ scheduler 312 may, while executing the current job, perform an operation of updating a timestamp for the current job, an operation of receiving a scheduling request associated with a next job, and a scheduling operation for selecting the next job. In other words, the WFQ scheduler 312 may perform a timestamp updating operation and a job scheduling operation such that the waiting time overhead between the current job and the next job is reduced or eliminated. In addition, the WFQ scheduler 312 may perform a reference Fig.12 Describe the method.
[0056] The plurality of nonvolatile memories 320a, 320b, and 320c may store a plurality of data. For example, the plurality of nonvolatile memories 320a, 320b, and 320c may store metadata, various user data, and the like.
[0057] In some exemplary embodiments, each of the plurality of nonvolatile memories 320a, 320b, and 320c may include a NAND flash memory. In other exemplary embodiments, each of the plurality of nonvolatile memories 320a, 320b, and 320c may include one of the following: an electrically erasable programmable read-only memory (EEPROM), a phase change random access memory (PRAM), a resistive random access memory (RRAM), a nano-floating gate memory (NFGM), a polymer random access memory (PoRAM), a magnetic random access memory (MRAM), a ferroelectric random access memory (FRAM), etc.
[0058] The buffer memory 330 may store instructions and / or data executed and / or processed by the memory controller 310, and may temporarily store data stored or to be stored in the plurality of non-volatile memories 320a, 320b, and 320c. For example, the buffer memory 330 may include at least one of various volatile memories, such as a dynamic random access memory (DRAM), a static random access memory (SRAM), and the like.
[0059] In some exemplary embodiments, the storage device 300 may be a solid state drive (SSD). In other exemplary embodiments, the storage device 300 may be a universal flash storage (UFS), a multimedia card (MMC), or an embedded multimedia card (eMMC). In still other exemplary embodiments, the storage device 300 may be one of the following: a secure digital (SD) card, a micro SD card, a memory stick, a chip card, a universal serial bus (USB) card, a smart card, a compact flash (CF) card, etc.
[0060] In some exemplary embodiments, the storage device 300 may be connected to the host device 200 through a block accessible interface, which may include, for example, UFS, eMMC, Serial Advanced Technology Attachment (SATA) bus, Non-Volatile Memory Express (NVMe) bus, Serial Attached SCSI (SAS) bus, etc. The storage device 300 may provide a block accessible interface to the host device 200 using a block accessible address space corresponding to the access size of the plurality of non-volatile memories 320a, 320b, and 320c, for allowing access to data stored in the plurality of non-volatile memories 320a, 320b, and 320c in units of memory blocks.
[0061] In some exemplary embodiments, the storage system 100 may be any computing system, such as a personal computer (PC), a server computer, a data center, a workstation, a digital television, a set-top box, a navigation system, etc. In other exemplary embodiments, the storage system 100 may be any mobile system, such as a mobile phone, a smart phone, a tablet computer, a laptop computer, a personal digital assistant (PDA), a portable multimedia player (PMP), a digital camera, a portable game console, a music player, a camcorder, a video player, a navigation device, a wearable device, an Internet of Things (IoT) device, an Internet of Everything (IoE) device, an e-book reader, a virtual reality (VR) device, an augmented reality (AR) device, a robotic device, a drone, etc.
[0062] Figure 4 An example of a memory controller included in a memory device according to an exemplary embodiment is shown.
[0063] refer to Figure 4 , the memory controller 400 may include at least one processor 410 , a memory 420 , a WFQ scheduler 430 , a host interface 440 , an error correction code (ECC) block 450 , and a memory interface 460 .
[0064] Processor 410 may respond to a request from a host device (eg, Figure 3 The processor 410 may control the operation of the storage controller 400 by using commands received from the host device 200 in the storage device. In some exemplary embodiments, the processor 410 may control the operation of the storage controller 400 by using a method for operating a storage device (e.g., Figure 3 The firmware of the storage device 300) in the storage device 300 is used to control the corresponding components.
[0065] The memory 420 may store instructions and data executed and processed by the processor 410. For example, the memory 420 may be implemented with a volatile memory device having a relatively small capacity and high speed, such as a static random access memory (SRAM), a cache memory, etc.
[0066] The WFQ scheduler 430 for performing job scheduling operations can be used with Figure 3 4. In some exemplary embodiments, at least a portion of the WFQ scheduler 430 may be implemented as hardware. For example, at least a portion of the WFQ scheduler 430 may be included in a computer-based electronic system. In other exemplary embodiments, at least a portion of the WFQ scheduler 430 may be implemented as an instruction code or program routine (e.g., a software program). For example, the instruction code or program routine may be executed by a computer-based electronic system and may be stored in any storage device located inside or outside the computer-based electronic system.
[0067] The ECC block 450 for error correction may perform coding modulation using Bose-Chaudhuri-Hocquenghem (BCH) code, low-density parity-check (LDPC) code, turbo code, Reed-Solomon code, convolutional code, recursive systematic code (RSC), trellis coded modulation (TCM), block coded modulation (BCM), etc., or may perform ECC encoding and ECC decoding using the above codes or other error correction codes.
[0068] The host interface 440 may provide a physical connection between the host device 200 and the storage device 300. The host interface 440 may provide an interface corresponding to the bus format of the host for communication between the host device 200 and the storage device 300. In some exemplary embodiments, the bus format of the host device 200 may be a small computer system interface (SCSI) or a serial attached SCSI (SAS) interface. In other exemplary embodiments, the bus format of the host device 200 may be a USB, a peripheral component interconnect (PCI) Express (PCIe), an advanced technology attachment (ATA), a parallel ATA (PATA), a serial ATA (SATA), a non-volatile memory (NVM) Express (NVMe), and the like.
[0069] The memory interface 460 can communicate with a non-volatile memory (eg, Figure 3 The memory interface 460 may be connected to the nonvolatile memories 320a, 320b, and 320c via one channel. In other exemplary embodiments, the memory interface 460 may be connected to the nonvolatile memories 320a, 320b, and 320c via two or more channels.
[0070] Figure 5 An example of a nonvolatile memory included in a storage device according to an exemplary embodiment is shown.
[0071] refer to Figure 5 , the nonvolatile memory 500 includes a memory cell array 510, an address decoder 520, a page buffer circuit 530, a data input / output (I / O) circuit 540, a voltage generator 550, and a control circuit 560.
[0072] The memory cell array 510 is connected to the address decoder 520 via a plurality of string selection lines SSL, a plurality of word lines WL, and a plurality of ground selection lines GSL. The memory cell array 510 is also connected to the page buffer circuit 530 via a plurality of bit lines BL. The memory cell array 510 may include a plurality of memory cells (e.g., a plurality of nonvolatile memory cells) connected to a plurality of word lines WL and a plurality of bit lines BL. The memory cell array 510 may be divided into a plurality of memory blocks BLK1, BLK2, ..., BLKz, each of which includes memory cells. In addition, each of the plurality of memory blocks BLK1, BLK2, ..., BLKz may be divided into a plurality of pages.
[0073] In some exemplary embodiments, a plurality of memory cells may be arranged in a two-dimensional (2D) array structure or a three-dimensional (3D) vertical array structure. The three-dimensional vertical array structure may include a vertical cell string that is vertically oriented so that at least one memory cell is located above another memory cell. The at least one memory cell may include a charge trapping layer. The following patent documents (the entire contents of which are incorporated herein by reference) describe suitable configurations of memory cell arrays including 3D vertical array structures, wherein the three-dimensional memory array is configured into multiple levels, wherein word lines and / or bit lines are shared between levels: U.S. Patent Nos. 7,679,133; 8,553,466; 8,654,587; 8,559,235; and U.S. Patent Publication No. 2011 / 0233648.
[0074] The control circuit 560 receives the signal from the outside (e.g. Figure 3 The host device 200 and / or the storage controller 310 in the non-volatile memory 500 receives the command CMD and the address ADDR, and controls the erase, program and read operations of the non-volatile memory 500 based on the command CMD and the address ADDR. The erase operation may include a sequence of performing erase cycles, and the program operation may include a sequence of performing program cycles. Each program cycle may include a program operation and a program verification operation. Each erase cycle may include an erase operation and an erase verification operation. The read operation may include a normal read operation and a data recovery read operation.
[0075] For example, the control circuit 560 may generate a control signal CON for controlling the voltage generator 550 and a control signal PBC for controlling the page buffer circuit 530 based on the command CMD, and may generate a row address R_ADDR and a column address C_ADDR based on the address ADDR. The control circuit 560 may provide the row address R_ADDR to the address decoder 520, and may provide the column address C_ADDR to the data I / O circuit 540.
[0076] The address decoder 520 may be connected to the memory cell array 510 via a plurality of string selection lines SSL, a plurality of word lines WL, and a plurality of ground selection lines GSL.
[0077] For example, in a data erase / write / read operation, based on the row address R_ADDR, the address decoder 520 can determine at least one of the multiple word lines WL as a selected word line, and can determine the rest or remaining parts of the multiple word lines WL except the selected word line as unselected word lines.
[0078] In addition, in data erase / write / read operations, based on the row address R_ADDR, the address decoder 520 can determine at least one of the multiple string selection lines SSL as a selected string selection line, and can determine the rest or remaining parts of the multiple string selection lines SSL except the selected string selection line as unselected string selection lines.
[0079] In addition, in data erase / write / read operations, based on the row address R_ADDR, the address decoder 520 can determine at least one of the multiple ground selection lines GSL as a selected ground selection line, and can determine the rest or remaining parts of the multiple ground selection lines GSL except the selected ground selection line as unselected ground selection lines.
[0080] The voltage generator 550 may generate a voltage VS required for the operation of the nonvolatile memory 500 based on the power PWR and the control signal CON. The voltage VS may be applied to a plurality of string selection lines SSL, a plurality of word lines WL, and a plurality of ground selection lines GSL via the address decoder 520. In addition, the voltage generator 550 may generate an erase voltage VERS required for a data erase operation based on the power PWR and the control signal CON. The erase voltage VERS may be applied to the memory cell array 510 directly or via the bit line BL.
[0081] For example, during an erase operation, the voltage generator 550 may apply an erase voltage VERS to a common source line and / or a bit line BL of a memory block (e.g., a selected memory block) via the address decoder 520, and may apply an erase permission voltage (e.g., a ground voltage) to all word lines of the memory block or a portion of the word lines. In addition, during an erase verification operation, the voltage generator 550 may apply an erase verification voltage to all word lines of the memory block simultaneously, or sequentially to the word lines one by one.
[0082] For example, during a program operation, the voltage generator 550 may apply a program voltage to a selected word line and may apply a program pass voltage to unselected word lines via the address decoder 520. In addition, during a program verification operation, the voltage generator 550 may apply a program verification voltage to a selected word line and may apply a verification pass voltage to unselected word lines via the address decoder 520.
[0083] Furthermore, during a normal read operation, the voltage generator 550 may apply a read voltage to a selected word line and may apply a read pass voltage to unselected word lines via the address decoder 520. During a data recovery read operation, the voltage generator 550 may apply a read voltage to word lines adjacent to the selected word line and may apply a recovery read voltage to the selected word line via the address decoder 520.
[0084] The page buffer circuit 530 may be connected to the memory cell array 510 via a plurality of bit lines BL. The page buffer circuit 530 may include a plurality of page buffers. In some exemplary embodiments, each page buffer may be connected to one bit line. In other exemplary embodiments, each page buffer may be connected to two or more bit lines.
[0085] The page buffer circuit 530 may store data DAT to be programmed into the memory cell array 510 or may read data DAT sensed from the memory cell array 510. In other words, the page buffer circuit 530 may operate as a write driver or a sense amplifier according to an operation mode of the nonvolatile memory 500.
[0086] The data I / O circuit 540 may be connected to the page buffer circuit 530 via the data line DL. Based on the column address C_ADDR, the data I / O circuit 540 may provide data DAT from outside the nonvolatile memory 500 to the memory cell array 510 via the page buffer circuit 530, or may provide data DAT from the memory cell array 510 to the outside of the nonvolatile memory 500.
[0087] Figure 6An example of a WFQ scheduler included in a storage device according to an exemplary embodiment is shown. Figure 7 Show Figure 6 An example of a predefined operating schedule included in the WFQ scheduler.
[0088] refer to Figure 6 and Figure 7 , the WFQ scheduler 700 may include a job selector 710 , a predefined operation schedule 720 , a timestamp unit 730 , and a timestamp updater 740 .
[0089] The predefined operation schedule 720 may represent a storage device (e.g., Figure 3 The relationship between multiple operations and operation times of the storage device 300 in FIG. Figure 7 As shown, the predefined operation schedule 720 may represent a relationship between a plurality of operations and operation times for each of a plurality of job performers PFMR1, PFMR2, . . . , PFMRN.
[0090] In some exemplary embodiments, as shown in FIG. Figure 3 As described above, the plurality of job executors PFMR1 to PFMRN may include a plurality of applications APP1 to APPN that are different from each other. Fig.18 As described, the plurality of job executors PFMR1 to PFMRN may include a plurality of host devices different from each other. The plurality of job executors PFMR1 to PFMRN may be referred to as a plurality of users.
[0091] In some exemplary embodiments, the multiple operations of the storage device 300 may include a data read operation RDO, a data write operation WRO, and a data erase operation ERO of the storage device 300. However, exemplary embodiments are not limited thereto. For example, the multiple operations of the storage device 300 may include not only one data read / write / erase operation, but also multiple data read / write / erase operations performed in different schemes, and may also include at least one of the various operations of the storage device 300.
[0092] In some exemplary embodiments, operation times (e.g., data read times) TR1, TR2, ..., TRN associated with a data read operation RDO, operation times (e.g., data write times) TW1, TW2, ..., TWN associated with a data write operation WRO, and operation times (e.g., data erase times) TE1, TE2, ..., TEN associated with a data erase operation ERO may be predefined and prestored for a plurality of job executors PFMR1 to PFMRN. For example, it may be predefined and predicted that the operation time TR1 required for the job executor PFMR1 to perform the data read operation RDO, the operation time TW1 required for the job executor PFMR1 to perform the data write operation WRO, and the operation time TE1 required for the job executor PFMR1 to perform the data erase operation ERO.
[0093] The above-mentioned predefined operation times TR1 to TRN, TW1 to TWN, and TE1 to TEN may not be recorded by measuring the actual execution time of each operation in real time, but may be recorded by predicting the time expected to be required when performing each operation. The predefined operation times TR1 to TRN, TW1 to TWN, and TE1 to TEN may be referred to as normalized operation times.
[0094] In some exemplary embodiments, the operation times TR1 to TRN and TW1 to TWN may represent the time required to read and write a minimum unit (e.g., one page) of data read and write operations RDO and WRO, and the operation times TE1 to TEN may represent the time required to erase a minimum unit (e.g., one memory block) of a data erase operation ERO.
[0095] In some exemplary embodiments, different weights WT1, WT2, ..., WTN may be assigned or allocated to a plurality of job executors PFMR1 to PFMRN. Based on the different weights WT1 to WTN, predefined operation times TR1 to TRN, TW1 to TWN, and TE1 to TEN may be set differently for a plurality of job executors PFMR1 to PFMRN. For example, for each of a plurality of job executors PFMR1 to PFMRN, the operation time TR1 to TRN associated with the same data read operation RDO may be different, for each of a plurality of job executors PFMR1 to PFMRN, the operation time TW1 to TWN associated with the same data write operation WRO may be different, and for each of a plurality of job executors PFMR1 to PFMRN, the operation time TE1 to TEN associated with the same data erase operation ERO may be different. In other words, the predefined operation times TR1 to TRN, TW1 to TWN, and TE1 to TEN may be values reflecting different weights WT1 to WTN. For example, the predefined operation time may have a value obtained by dividing the actual execution time by the weight.
[0096] In some exemplary embodiments, the weights WT1 to WTN and the operating times TR1 to TRN, TW1 to TWN, and TE1 to TEN may be predetermined and stored when manufacturing the memory device 300. According to an exemplary embodiment, the weights WT1 to WTN and the operating times TR1 to TRN, TW1 to TWN, and TE1 to TEN may have fixed values, or may be updated in real time by reflecting a monitoring result performed when the memory device 300 is driven.
[0097] The job selector 710 may receive a plurality of scheduling requests SREQ for selecting a job SJOB to be executed subsequently, and may select a job SJOB to be executed subsequently based on the plurality of scheduling requests SREQ and a plurality of time stamps TS1, TS2, ..., TSN included in the time stamp unit 730 to output the selected job SJOB. In other words, the job selector 710 may perform Figure 1 For example, the job selector 710 may perform a scheduling operation for selecting a job SJOB to be subsequently executed after the current job starts and before the current job is completed. For example, when a plurality of scheduling requests SREQ are received from two or more of the plurality of job executors PFMR1 to PFMRN, the above scheduling operation may be performed.
[0098] The timestamp unit 730 may include a plurality of timestamps TS1 to TSN corresponding to a plurality of job executors PFMR1 to PFMRN. The plurality of timestamps TS1 to TSN may represent the accumulated time of the cumulative use of the storage device 300 by the plurality of job executors PFMR1 to PFMRN. In this example, the value of each of the plurality of timestamps TS1 to TSN may continue to increase over time. For example, the timestamp TS1 may correspond to the job executor PFMR1 and may represent the accumulated time of the cumulative use of the storage device 300 by the job executor PFMR1. For example, the number of the plurality of timestamps TS1 to TSN may be substantially the same as the number of the plurality of job executors PFMR1 to PFMRN.
[0099] The timestamp updater 740 may update the timestamp for the current job among the multiple timestamps TS1 to TSN based on the predefined operation schedule 720. In other words, the timestamp updater 740 may perform Figure 1 For example, the timestamp updater 740 may perform a timestamp update operation after the current job starts and before the current job is completed.
[0100] Figure 8 Show Figure 1 An example of performing a scheduling operation for selecting a second job in FIG. Fig. 9 Show Figure 8 The scheduling operation.
[0101] refer to Figure 1 , Figure 2 , Figure 6 , Figure 7 , Figure 8 and Fig. 9 , when performing a scheduling operation WSC2 for selecting a second job JOB2 based on a plurality of scheduling requests SREQ and a plurality of time stamps TS1 to TSN when executing a first job JOB1 (step S400), a time stamp having a minimum (or smallest) value may be searched by comparing the plurality of time stamps TS1 to TSN with each other (step S410). For example, a plurality of time stamps TS1 to TSN may be formed, such as Fig. 9 As shown. Fig. 9 In the example of , the shaded area (or region) may represent values (eg, accumulation times) of a plurality of time stamps TS1 to TSN, and a time stamp TS2 having a minimum value may be selected based on the values.
[0102] A job associated with a scheduling request corresponding to a timestamp TS2 having a minimum value among the plurality of scheduling requests SREQ may be selected as a second job JOB2 (step S420 ).
[0103] In some exemplary embodiments, the first job JOB1 may be a job corresponding to a timestamp TS1, for example, a job associated with a scheduling request from a job executor PFMR1, and the second job JOB2 may be a job corresponding to a timestamp TS2, for example, a job associated with a scheduling request from a job executor PFMR2. In other words, the timestamp TS1 for the first job JOB1 and the timestamp TS2 for the second job JOB2 may be different from each other.
[0104] In other exemplary embodiments, if there is no scheduling request corresponding to timestamp TS2, for example, if no scheduling request is received from job executor PFMR2 corresponding to timestamp TS2 among multiple scheduling requests SREQ, the job associated with the scheduling request corresponding to timestamp TS1 having the second smallest value may be selected as the second job JOB2. In this example, both the first job JOB1 and the second job JOB2 may be jobs corresponding to timestamp TS1, for example, jobs associated with the scheduling request from job executor PFMR1. In other words, timestamp TS1 for the first job JOB1 and timestamp TS1 for the second job JOB2 may be substantially the same as each other.
[0105] In some exemplary embodiments, Figure 8 Steps S410 and S420 in Figure 7 The job selector 710 in FIG. 7 is executed. Therefore, the job selector 710 may be referred to as a minimum value searcher or a minimum value selector for searching for or selecting a timestamp having a minimum value.
[0106] Fig.10 Show Figure 1 Example of updating the first timestamp in . Fig.11 Show Fig.10 Update operation.
[0107] refer to Figure 1 , Figure 2 , Figure 6 , Figure 7 , Fig.10 and Fig.11 When a first timestamp for a first job JOB1 among a plurality of timestamps TS1 to TSN is updated based on a predefined operation schedule 720 (step S200), a first operation time may be loaded from the predefined operation schedule 720 based on a first job executor of the first job JOB1 among a plurality of job executors PFMR1 to PFMRN and a type of the first job JOB1 (step S210).
[0108] For example, when the first job JOB1 is a job corresponding to the timestamp TS1, for example, a job associated with the scheduling request from the job executor PFMR1, the first job executor and the first timestamp may be the job executor PFMR1 and the timestamp TS1, respectively. In addition, when the first job JOB1 includes a data read operation RDO, the operation time TR1 in the predefined operation schedule 720 may be loaded as the first operation time.
[0109] A predicted execution time of the first job JOB1 may be obtained based on the size of the first job JOB1 and the first operation time (step S220 ), and the predicted execution time of the first job JOB1 may be added to the first timestamp (step S230 ).
[0110] For example, as described above, the operation time TR1 may represent the time required to read the minimum unit of the data read operation RDO. For example, when the minimum unit of the data read operation RDO is about 4KB, and when the size of the data read by the first job JOB1 is about 16KB, the predicted execution time TPRE1 of the first job JOB1 may be about 4*TR1. By adding the predicted execution time TPRE1 of the first job JOB1 to the current accumulation time TACC1 of the timestamp TS1, the timestamp TS1 may be updated to have a new accumulation time TACC1'.
[0111] As described above, the operation time TR1 included in the predefined operation schedule 720 may not be the actual execution time but may be the predicted execution time, and the timestamp TS1 may be pre-updated (or pre-updated) based on the operation time TR1 when the first job JOB1 is executed (for example, before the first job JOB1 is completed), and thus the timestamp TS1 may not correspond to the actual accumulated time when the job executor PFMR1 actually accumulates the use of the storage device 300 but may correspond to the virtual accumulated time when the job executor PFMR1 expects to accumulate the use of the storage device 300. Similarly, the multiple timestamps TS1 to TSN may represent the virtual accumulated time when the multiple job executors PFMR1 to PFMRN expect to accumulate the use of the storage device 300. Therefore, the multiple timestamps TS1 to TSN may be referred to as virtual timestamps.
[0112] In some exemplary embodiments, Fig.10 Steps S210, S220 and S230 in Figure 6 The timestamp updater 740 in is executed.
[0113] Fig.12 A method of scheduling a job in a storage device using a predefined time according to an exemplary embodiment is illustrated. Fig.13 Show Fig.12Method for scheduling jobs in storage devices. Figure 1 and Figure 2 Duplicate description.
[0114] refer to Fig.12 and Fig.13 , in a method for scheduling a job in a storage device according to an exemplary embodiment, Fig.12 Steps S100, S200, S300 and S400 in Figure 1 Steps S100, S200, S300 and S400 in the embodiment are substantially the same.
[0115] After the first job JOB1 is completed, the second job JOB2 selected by the scheduling operation in step S400 is executed (step S500). Fig.13 Operation ④ in the Fig.12 As described above, time for updating the timestamp of the current job and time for scheduling the next job may not be required between the current job and the next job, and thus the second job JOB2 may be started immediately after the first job JOB1 is completed.
[0116] When the second job JOB2 is executed, the first timestamp for the first job JOB1 may be post-compensated (step S600 ). Fig.13 Operation ⑤ in the Fig.12 The operation P1 of post-compensating the first timestamp in step S600 of the embodiment. As described above, the operation TUP1 of updating the first timestamp in step S200 may be pre-executed (or pre-executed) based on the predicted execution time rather than the actual execution time, and occasionally, there may be an error between the predicted execution time and the actual execution time. In this example, the first timestamp may be post-compensated to reflect the error.
[0117] When the second job JOB2 is executed, a second timestamp for the second job JOB2 among the plurality of timestamps may be updated based on a predefined operation schedule (step S700). Step S700 may be substantially the same as step S200 except that the target of the update operation is changed.
[0118] In some exemplary embodiments, when executing the second job JOB2, the operation P1 of post-compensating the first timestamp may be performed first, and then the operation TUP2 of updating the second timestamp may be performed later. For example, the operation P1 of post-compensating the first timestamp may be started substantially simultaneously with the second job JOB2, and the operation TUP2 of updating the second timestamp may be started immediately after the operation P1 of post-compensating the first timestamp is completed.
[0119] After step S700, operations similar to steps S300 and S400 may be further performed. For example, when the second job JOB2 is executed, multiple scheduling requests associated with a third job to be executed subsequently may be received, and when the second job JOB2 is executed, a scheduling operation WSC3 for selecting the third job may be performed based on the multiple scheduling requests and the multiple timestamps.
[0120] In the method for scheduling a job in a storage device according to an exemplary embodiment, the timestamp update operation of the current job and the scheduling operation of the next job can overlap with the execution of the current job, and thus the waiting time overhead can be reduced, and the scheduling performance of the storage device can be improved. In addition, after the current job is completed, the timestamp of the current job can be post-compensated based on the actual execution time of the current job, and thus the accuracy of the scheduling operation can be improved.
[0121] Fig.14 Another example of a WFQ scheduler included in a storage device according to an exemplary embodiment is shown. Figure 6 Duplicate description.
[0122] refer to Fig.14 , the WFQ scheduler 700 a may include a job selector 710 , a predefined operation schedule 720 , a timestamp unit 730 , a timestamp updater 740 , and a post-compensator 750 .
[0123] In addition to the WFQ scheduler 700a also including a post-compensator 750, Fig.14 The WFQ scheduler 700a can be used with Figure 6 The WFQ scheduler 700 is basically the same.
[0124] The post-compensator 750 may perform post-compensation on the timestamp for the current job among the multiple timestamps TS1 to TSN based on the result of executing the current job. In other words, the post-compensator 750 may perform Fig.12 For example, the post-compensator 750 may perform post-compensation after the current job is completed.
[0125] Fig.15 and Fig.16 Show Fig.12 An example of post-compensation of the first timestamp in .
[0126] refer to Fig.12 , Fig.13 and Fig.15When the first timestamp for the first job JOB1 is post-compensated when the second job JOB2 is executed (step S600), it may be checked whether a first event that delays the execution of the first job JOB1 occurs during the execution of the first job JOB1 (step S610). For example, the first event may be a dynamically occurring event, such as during the execution of the first job JOB1, the first job JOB1 is forcibly suspended by a request from the host device 200.
[0127] When the first event occurs (step S610: yes), the first delay time may be added to the first timestamp (step S630). The first delay time may represent the time interval during which the execution of the first job JOB1 is delayed by the first event. When the first event does not occur (step S610: no), the post-compensation process may be terminated without additional action.
[0128] refer to Fig.12 , Fig.13 and Fig.16 , when the first timestamp for the first job JOB1 is post-compensated when the second job JOB2 is executed (step S600), Fig.16 Step S610a in Fig.15 The step S610 in is basically the same.
[0129] When the first event occurs (step S610a: yes), it may be determined whether the first event is an event requiring post-compensating or post-compensation (step S620).
[0130] When the first event occurs (step S610a: yes), and when the first event is an event requiring post-compensation (step S620: yes), a first delay time may be added to the first timestamp (step S630a). Fig.16 Step S630a in Fig.15 The step S630 in is basically the same.
[0131] When the first event does not occur (step S610a: No), or when the first event occurs (step S610a: Yes) and when the first event is not an event requiring post-compensation (step S620: No), the post-compensation process may be terminated without additional action. For example, when the error caused by the first delay time is less than a threshold and the disadvantages of post-compensation (e.g., resource usage and / or consumption) are greater than the advantages of post-compensation (e.g., accuracy improvement), it may be determined that post-compensation is not required.
[0132] Fig.17 and Fig.18A storage device according to an exemplary embodiment and a storage system including the storage device are shown. Figure 3 Duplicate description.
[0133] refer to Fig.17 , the storage system 100a includes a host device 200 and a storage device 300a.
[0134] Except that the WFQ scheduler 312 included in the storage device 300a is located outside the storage controller 310a, Fig.17 The storage system 100a can be used with Figure 3 The storage system 100 is basically the same.
[0135] refer to Fig.18 , the storage system 100 b includes a plurality of host devices 200 a , 200 b , . . . , 200 n and a storage device 300 .
[0136] In addition to the storage system 100b including a plurality of host devices 200a to 200n, Fig.18 The storage system 100b can be used with Figure 3 The storage system 100 is basically the same.
[0137] The storage device 300 is accessed by each of the plurality of host devices 200a to 200n. The plurality of host devices 200a to 200n may generate a plurality of jobs and a plurality of scheduling requests for using or accessing the storage device 300 (e.g., for writing, reading and / or erasing data, etc.). In other words, as a reference for execution Figure 1 The multiple job performers who are the subjects or parties of the described multiple jobs may include multiple host devices 200a to 200n.
[0138] According to an exemplary embodiment, each of the plurality of host devices 200a to 200n may perform a reference Figure 3 The multiple applications described herein and / or the WFQ scheduler 312 included in the storage device 300 may be located outside the storage controller 310, as shown in FIG. Fig.17 Described.
[0139] Although reference Figures 1 to 18 A method of scheduling a job in a storage device or a method of operating a storage device according to an exemplary embodiment is described, but the exemplary embodiment may be described as a method of operating a storage system including a host device and a storage device. In this example, Figure 1 and Fig.12 Steps S100, S200, S400, S500, S600, and S700 in can be described as being performed by a storage device, and Figure 1 and Fig.12Step S300 in the embodiment may be described as the host device sending a plurality of scheduling requests to the storage device.
[0140] As will be appreciated by those skilled in the art, the present invention may be implemented as a system, method, computer program product and / or a computer program product implemented in one or more computer-readable media on which computer-readable program code is implemented. The computer-readable program code may be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device. The computer-readable medium may be a computer-readable signal medium or a computer-readable storage medium. A computer-readable storage medium may be any tangible medium that can contain or store a program used by an instruction execution system, device, or equipment or used in conjunction with an instruction execution system, device, or equipment. For example, a computer-readable medium may be a non-transitory computer-readable medium.
[0141] Fig.19 A storage server including a storage device according to an exemplary embodiment is shown.
[0142] refer to Fig.19 The storage server 1100 may include a server 1110 , a plurality of storage devices 1000 storing data for operating the server 1110 , and a redundant array of independent drives (RAID) controller 1150 for controlling the plurality of storage devices 1000 .
[0143] RAID technology is mainly used in data servers, where important data can be replicated in more than one location across multiple storage devices. RAID controller 1150 can enable one of multiple RAID levels based on RAID information, and can interfacing data between server 1110 and multiple storage devices 1000.
[0144] Each of the plurality of storage devices 1000 may include a storage controller 1010 including a WFQ scheduler WS, a plurality of nonvolatile memories 1020, and a buffer memory 1030. Each of the plurality of storage devices 1000 may correspond to the storage device 300 according to an exemplary embodiment, and may be configured according to the above reference. Figures 1 to 18 The described exemplary embodiment operates. The server 1110 may correspond to the host device 200 , and may control a plurality of storage devices 1000 .
[0145] According to an exemplary embodiment, the RAID controller 1150 may further include a WFQ scheduler.
[0146] The inventive concept can be applied to various electronic devices and / or systems including storage devices and / or storage systems. For example, the inventive concept can be applied to systems such as personal computers (PCs), server computers, data centers, workstations, mobile phones, smart phones, tablet computers, laptop computers, personal digital assistants (PDAs), portable multimedia players (PMPs), digital cameras, portable game consoles, music players, portable cameras, video players, navigation devices, wearable devices, Internet of Things (IoT) devices, Internet of Everything (IoE) devices, e-book readers, virtual reality (VR) devices, augmented reality (AR) devices, robotic devices, drones, etc.
[0147] The foregoing is an illustration of exemplary embodiments and should not be construed as limiting thereof. Although some exemplary embodiments have been described, it will be readily appreciated by those skilled in the relevant art that many modifications are possible in the exemplary embodiments without substantially departing from the novel teachings and advantages of the present disclosure. Therefore, all of these modifications are intended to be included within the scope of the inventive concept defined in the appended claims. Therefore, it will be understood that the foregoing is illustrative and should not be construed as being limited to the specific exemplary embodiments disclosed, and modifications to the disclosed exemplary embodiments and other embodiments are intended to be included within the scope and spirit of the appended claims.
Claims
1. A method for scheduling jobs in a storage device, the method comprising: predefining an operation schedule representing a relationship between a plurality of operations of a storage device and expected operation times of the plurality of operations; receiving a plurality of scheduling requests associated with a plurality of timestamps for a plurality of jobs, each job having at least one operation; executing a first job having a first operation from among the plurality of jobs; While the first job is being executed, pre-updating a first timestamp for the first job based on the first operation and a predefined operation schedule; and When the first job is being executed, pre-performing a scheduling operation for selecting a second job to be executed after the first job from among the plurality of jobs based on the plurality of scheduling requests and the plurality of time stamps, When executing the second job, the operation of post-compensating the first timestamp is firstly executed, and then the operation of pre-updating the second timestamp is executed later.
2. The method according to claim 1, wherein: The multiple timestamps correspond to multiple job executors, Different weights are assigned to the plurality of job executors, and The operation times of the plurality of operations of the storage device included in the predefined operation schedule are differently set for the plurality of job executors based on different weights.
3. The method according to claim 2, wherein: The plurality of time stamps represent cumulative times that a plurality of job executors have cumulatively used the storage device.
4. The method according to claim 3, wherein: The plurality of time stamps represent virtual accumulation times during which a plurality of job executors are expected to cumulatively use the storage device when the first time stamp is pre-updated when the first job is executed.
5. The method according to claim 2, wherein: Pre-updating a first timestamp for a first job includes: loading a first operation time from a predefined operation schedule based on a first job executor of a first job among a plurality of job executors and a type of the first job; obtaining a predicted execution time of the first job based on a size of the first job and a first operation time; and The predicted execution time of the first job is added to the first timestamp.
6. The method according to claim 2, wherein: The plurality of job executors are a plurality of applications that are different from each other and are executed by a storage system including a storage device.
7. The method according to claim 2, wherein: The plurality of job executors are a plurality of host devices that are different from each other and are allowed to access the storage device.
8. The method according to claim 1, wherein: The multiple operations of the storage device include a data reading operation, a data writing operation and a data erasing operation on the storage device.
9. The method according to claim 1, wherein: The pre-execution scheduling operation for selecting the second job includes: searching for a second timestamp having a minimum value by comparing the multiple timestamps to each other; and A job associated with a scheduling request corresponding to a second timestamp among the plurality of scheduling requests is selected as a second job.
10. The method according to claim 1, further comprising: After the first job is completed, the second job selected by the scheduling operation is executed.
11. The method according to claim 10, further comprising: When the second job is executed, the first timestamp for the first job is post-compensated.
12. The method according to claim 11, wherein: Post-compensating a first timestamp for a first job, including: checking whether a first event that delays execution of the first job occurs during execution of the first job; and When the first event occurs, a first delay time is added to the first timestamp, where the first delay time indicates a time interval during which execution of the first job is delayed by the first event.
13. The method according to claim 12, wherein: Post-compensating a first timestamp for a first job further includes: When a first event occurs, determining whether the first event is an event requiring post-compensation, and When the first event occurs and when the first event is an event requiring post-compensation, a first delay time is added to the first timestamp.
14. The method according to claim 11, further comprising: When the second job is executed, a second timestamp for the second job among the plurality of timestamps is pre-updated based on a predefined operation schedule.
15. The method according to claim 1, further comprising: performing a first scheduling operation for selecting a first job from a plurality of jobs based on the plurality of first scheduling requests and the plurality of first timestamps; While the first job is being executed, receiving a plurality of second scheduling requests and a plurality of second timestamps associated with a second job to be executed after the first job; When the first job is being executed, performing a second scheduling operation for selecting a second job based on the plurality of second scheduling requests and the plurality of second timestamps; After the first job is completed, immediately executing the second job selected by the second scheduling operation; post-compensating a first timestamp for a first job while a second job is being executed; and updating a second timestamp for the second job among the plurality of second timestamps based on a predefined operating schedule while the second job is being executed and after post-compensation of the first timestamp, wherein the multiple timestamps correspond to multiple job executors to which different weights are assigned, and The operation times of the plurality of operations of the storage device included in the predefined operation schedule are set differently for the plurality of job executors based on different weights.
16. A method of operating a storage system comprising at least one host device and a storage device, the method comprising: Executing a first job by a storage device; When the first job is being executed, pre-updating, by the storage device, a first time stamp for the first job among the plurality of time stamps based on a predefined operation schedule stored in the storage device and representing a relationship between a plurality of operations of the storage device and predicted operation times of the plurality of operations; When the storage device is executing a first job, at least one host device sends a plurality of scheduling requests to the storage device, the plurality of scheduling requests being associated with a second job to be executed by the storage device after the first job; and When the first job is being executed, the storage device pre-executes a scheduling operation for selecting a second job based on the plurality of scheduling requests and the plurality of time stamps, When executing the second job, the operation of post-compensating the first timestamp is firstly executed, and then the operation of pre-updating the second timestamp is executed later.
17. A storage device comprising: a memory controller coupled to the at least one non-volatile memory; and a scheduler connected to the storage controller, in, The scheduler is configured to receive a plurality of scheduling requests associated with a plurality of time stamps for a plurality of jobs, each job having at least one operation with respect to at least one non-volatile memory, The storage controller is configured to execute a first job having a first operation on at least one non-volatile memory among a plurality of jobs, The scheduler is further configured to pre-update a first timestamp for the first job based on the first operation and a predefined operation schedule while the first job is being executed, The scheduler is further configured to, when the first job is being executed, pre-execute a scheduling operation for selecting a second job to be executed after the first job from among the multiple jobs based on the multiple scheduling requests and the multiple timestamps, wherein the storage controller is configured to execute a second job having a second operation on at least one non-volatile memory among the plurality of jobs immediately after the first job is completed, The timestamp updater is further configured to post-compensate the first timestamp used for the first job while the second job is being executed. The scheduler is further configured to pre-update a second timestamp for the second job after the timestamp updater has post-compensated the first timestamp.
18. The storage device according to claim 17, wherein the scheduler comprises: a predefined operation schedule representing a relationship between a plurality of operations of the storage device with respect to at least one non-volatile memory and expected operation times of the plurality of operations; A timestamp updater connected to a predefined schedule of operations; a timestamp buffer connected to a timestamp updater; and a job selector connected to a timestamp buffer; The job selector is configured to receive a plurality of scheduling requests to the storage device when the first job is being executed by the storage device.
19. The storage device according to claim 17, wherein the scheduler comprises: A job selector configured to receive a plurality of first scheduling requests; a timestamp buffer configured to store a plurality of first timestamps associated with the plurality of first scheduling requests; a timestamp updater configured to update a plurality of first timestamps based on a predefined operation schedule, the predefined operation schedule representing a relationship between a plurality of operations of the storage device and expected operation times of the plurality of operations, wherein the job selector is configured to perform a first scheduling operation for selecting a first job from a plurality of jobs based on the plurality of first scheduling requests and the plurality of first timestamps; The job selector is further configured to receive, while the first job is being executed, a plurality of second scheduling requests and a plurality of second timestamps associated with a second job to be executed after the first job, The job selector is further configured to, when the first job is being executed, perform a second scheduling operation for selecting a second job based on a plurality of second scheduling requests and a plurality of second timestamps, wherein the storage device is configured to execute the second job selected by the second scheduling operation immediately after the first job is completed, wherein the timestamp updater is further configured to update a second timestamp of a second job among the plurality of second timestamps based on a predefined operation schedule when the second job is being executed and after post-compensation of the first timestamp, wherein the multiple timestamps correspond to multiple job executors to which different weights are assigned, and The operation times of the plurality of operations of the storage device included in the predefined operation schedule are set differently for the plurality of job executors based on different weights.
Citation Information
Patent Citations
Three-Dimensional Semiconductor Memory Devices And Methods Of Fabricating The Same
US20110233648A1
Nonvolatile memory device, operating method thereof and memory system including the same
US8559235B2
Virtual machine monitor and scheduling method thereof
CN102193853A
Storage device for supporting virtual machine, storage system including the storage device, and method of operating the same
CN106371888A