Data storage system and method for context-aware dynamic instruction planning for a data storage system
By categorizing commands into priority queues and dynamically updating the scheduling ratio, the method addresses latency issues in data storage systems, specifically improving host read command performance.
Patent Information
- Application Number
- DE102018105943
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2017-05-19
- Filing Date
- 2018-03-14
- Publication Date
- 2025-10-30
- Estimated Expiration
- 2038-03-14
AI Technical Summary
Existing data storage systems experience latency issues due to commands being processed in the order received, which is particularly problematic for host read commands, affecting drive performance.
Implementing a method to manage data storage systems by categorizing commands into high-priority and low-priority queues and dynamically updating a scheduling ratio based on the number of received commands and write factor to optimize read latency.
This approach reduces latency by prioritizing host read commands and adjusting the processing schedule to maintain optimal read performance, enhancing overall system efficiency.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
BACKGROUND
[0001] The present disclosure relates generally to the planning of instructions for a data storage system.
[0002] In data storage systems such as solid-state drives (SSDs), commands are queued and processed in the order they are received. Waiting for a preceding command to be processed can introduce latency into the next command in the queue. Latency can be more critical for certain types of commands, such as host read commands, than for others. For example, latency from host read commands can negatively impact the drive performance of data storage systems.
[0003] Document US 2017 / 0123730A1 concerns a system for memory input / output management that uses queues. Document US 2013 / 0227111A1 concerns systems and methods for determining client metrics of a volume in a storage system. Document US 2014 / 0156877A1 concerns techniques for analyzing memory resources. Document US 9378136B1 concerns techniques for selecting a write endurance classification for flash memory based on a mixture of read and write operations. Document US 2010 / 0250785A1 uses port virtualization to prioritize input / output. Document US 7933283B1 concerns a shared memory with queues for storing communication traffic to be scheduled for transmission.German patent application DE 11 2014 005 346 T5 relates to a storage system with a storage maintenance schedule that improves the durability of the storage by measuring certain parameters, such as temperature, and using them for maintenance planning. German patent application DE 10 2013 114 069 A1 relates to a reconfigurable storage device. German patent application US 9 075 712 B2 relates to the planning of accesses in a solid-state storage device.
[0004] The task is to achieve an optimal average read latency or target read latency of the host read commands. SUMMARY
[0005] According to the invention, a method for managing a data storage system and data storage systems with the features of the independent claims are provided; dependent claims relate to preferred embodiments.
[0006] Aspects of the technology of the subject matter relate to a method for managing a data storage system. The method may include identifying commands as a first command type or a second command type. The method may also include assigning commands identified as the first command type to a first queue and commands identified as the second command type to a second queue, and processing commands from the first queue and commands from the second queue based on a scheduling ratio.The procedure may further include, after the instructions from the first queue and the instructions from the second queue have been processed based on the scheduling ratio over a predetermined time period, determining a write factor of the data storage system, a number of host read instructions, and a number of host write instructions received by a host device during the predetermined time period, wherein the first instruction type contains the host read instructions and the second instruction type contains the host write instruction. The procedure may also include updating the scheduling ratio based on the determined write factor, the number of host read instructions, the number of host write instructions, and a predetermined scheduling ratio factor, and processing subsequent instructions from the first queue and the second queue based on the updated scheduling ratio.
[0007] In specific aspects, the technology of the subject matter relates to the provision of a data storage system. This data storage system may include means for identifying instructions as either a first instruction type or a second instruction type. The data storage system may also include means for assigning instructions identified as the first type to a first queue and instructions identified as the second type to a second queue. Furthermore, the data storage system may include means for processing instructions from the first queue and instructions from the second queue based on a scheduling ratio.The data storage system may further include means for determining a write factor of the data storage system, a number of host read commands, and a number of host write commands received by a host device during a predetermined time period. The first command type contains the host read commands, and the second command type contains the host read commands after the commands from the first queue and the commands from the second queue have been processed, based on the scheduling ratio over a predetermined time period. The data storage system may further include means for updating the scheduling ratio based on the determined write factor, the number of host read commands, the number of host write commands, and a predetermined scheduling ratio factor.The data storage system can also include means for processing subsequent commands from the first queue and the second queue based on the updated scheduling ratio.
[0008] Aspects of the subject's technology also relate to a data storage system comprising multiple storage devices, each containing multiple non-volatile memory chips, and a control unit coupled to the multiple storage devices. The control unit can be configured to identify instructions as either a first instruction type or a second instruction type. The control unit can also be configured to assign instructions identified as the first type to a first queue and instructions identified as the second type to a second queue. Furthermore, the control unit can be configured to process instructions from the first queue and instructions from the second queue based on a scheduling ratio.The control unit can further be configured to determine a write factor of the data storage system, a number of host read commands, and a number of host write commands received by a host device during a predetermined time period. The first command type contains the host read commands, and the second command type contains the host read commands after the commands from the first queue and the commands from the second queue have been processed, based on the scheduling ratio over a predetermined time period. The control unit can also be configured to update the scheduling ratio based on the determined write factor, the number of host read commands, the number of host write commands, and a predetermined scheduling ratio factor.The control unit can also be configured to process subsequent commands from the first queue and the second queue based on the updated planning ratio.
[0009] It is understood that other configurations of the present disclosure are easily recognizable to those skilled in the art from the following detailed description, where various configurations of the present disclosure are illustrated and described. As can be seen, the present disclosure is capable of other and different configurations, and its various details are capable of modification in various other respects, all without departing from the scope of protection of the present disclosure. Accordingly, the drawings and the detailed description should be regarded as explanatory in nature and not as limiting. BRIEF DESCRIPTION OF THE DRAWINGS Fig. Figure 1 is a block diagram that depicts components of a data storage system according to aspects of the subject's technology. Fig. Figure 2 is a block diagram illustrating example command queues in a control unit of a data storage device according to aspects of the subject's technology. Fig. 3A and Fig. Figure 3B depicts a flowchart of an example process for managing a data storage system according to aspects of the subject's technology. DETAILED DESCRIPTION
[0010] The detailed description set forth below is intended as a description of various configurations of the subject's technology and is not meant to represent the only configurations in which the subject's technology can be practiced. The accompanying drawings are included here and form part of the detailed description. The detailed description contains specific details for the purpose of aiding a complete understanding of the subject's technology. However, it will be evident that the subject's technology can be practiced without these specific details. In some cases, structures and components are shown in block diagram form to avoid obscuring the concepts of the subject's technology. Similar components are marked with the same reference symbols for ease of understanding.
[0011] Controllers manage data storage devices such as solid-state drives (SSDs) and perform data operations on non-volatile memory such as the NAND flash memory of the data storage devices. Controllers can receive operation instructions (e.g., host read instructions, host write instructions) from host devices. Specialized operation instructions (e.g., erase instructions, write instructions, read instructions, error correction, etc.) can be generated internally by the data storage device's firmware. The operation instructions can be queued for execution in the order in which they are received and / or generated. Data operations from the operation instructions can be executed in the queue order. However, operation instructions earlier in the queue can increase the latency of operation instructions later in the queue.The technology can improve the performance of data storage systems, for example, by queuing operation instructions into multiple queues based on instruction types and scheduling operation instructions from corresponding queues based on a scheduling ratio. The scheduling ratio can be dynamically updated based on the number of received and / or generated operation instructions, according to the processes described herein.
[0012] Fig. Figure 1 is a block diagram illustrating the components of an example data storage system 100 according to different implementations of the subject's technology. The data storage system 100 can include the host system 110 and the data storage device 120. The data storage device 120 (for example, a solid-state drive) can include the host interface 130, the control unit 140, the memory 150, and the non-volatile memory 160A-160C.
[0013] The host system 110 represents a device configured to be coupled with the data storage system 120 in order to send and receive data to and from the data storage system 120 via the host interface 130. The host system 110 can be a computing system such as a personal computer, server, workstation, laptop computer, PDA, smartphone, and the like. Alternatively, the host system 110 can be an electronic device such as a digital camera, digital audio player, digital video recorder, and the like.
[0014] The host interface 130 can include both electrical and physical connections for operational coupling of the host system 110 with the control unit 140. The host interface 130 can be configured to communicate data, addresses, and control signals between the host system 110 and the control unit 140. The host interface 130 can use any proprietary or standard interface protocol, including but not limited to Serial Advanced Technology Attachment (SATA), Advanced Technology Attachment (ATA), Small Computer System Interface (SCSI), PCI-extended (PCI-X), Fibre Channel, Serial Attached SCSI (SAS), Secure Digital (SD), Embedded Multi-Media Card (EMMC), Universal Flash Storage (UFS), and Peripheral Component Interconnect Express (PCIe).
[0015] According to aspects of the subject's technology, the host interface 130 can implement a wireless connection between the host system 110 and the data storage device 120 using standardized or proprietary wireless interface standards and protocols. In this respect, the host interface 130 or other components of the data storage device 120 can include a wireless transmitter / receiver to enable wireless communication between the host system 110 and the data storage device 120.
[0016] The control unit 140 is configured to store data received from the host system 110 in the non-volatile memory 160A-160C in response to a write command from the host system 110, and to read data stored in the non-volatile memory 160A-160C in response to a read command from the host system 110 and to transfer the read data to the host system 110 via the host interface 130. The control unit 140 can control several internal components (in Fig. (1 not shown) includes components such as multiple processor cores, memory, a flash component interface (for example, a multiplexer to manage instruction and data transport along a connection to the non-volatile memory 160A-160C), an I / O interface, an error correction code module (ECC module), and the like. The ECC module can be configured to generate codewords from data received by the host system 110, which are to be stored in the non-volatile memory 160A-160C, and to decode codewords read from the non-volatile memory 160A-160C before the decoded data is sent to the host system 110. Various ECC solutions can be used to encode and decode data to generate the codewords. In some aspects, one or more elements of the control unit 140 can be integrated into a single chip.In other aspects, the elements can be implemented on multiple discrete components.
[0017] The control unit 140 can contain a multi-core processor. For example, corresponding cores in the multi-core processor can be assigned to a separate process. The control unit 140 can be configured, for example, to execute code or instructions to manage the operation instruction flow and address mappings, and to perform calculations and generate operation instructions. The control unit 140 can be configured to monitor and control the operation of the components in the data storage device 120. The control unit 140 can contain a general-purpose microprocessor, a microcontroller, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a programmable logic device (PLD), a state machine, gate logic, discrete hardware components, or a combination thereof.
[0018] Instruction sequences can be stored as firmware in the memory within the control unit 140. Instruction sequences can also be stored in and read from memory 150, non-volatile memory 160A-160C, or received from the host system 110 (for example, via the host interface 130). Memory and non-volatile memory 160A-160C represent examples of machine-readable or computer-readable media on which instructions / code executable by the control unit 140 can be stored. Machine-readable or computer-readable media can generally refer to any tangible and non-transient media used to provide instructions to the control unit 140 and its processor, including both volatile media such as dynamic memory used for memory 150 or buffers within the control unit, and non-volatile media such as...This includes electronic media, optical media, and magnetic media.
[0019] The control unit 140 can use the memory 150 for the temporary storage of data and information used to manage the data storage device 120. In some aspects, the memory 150 represents volatile memory used to temporarily store data and information used to manage the data storage device 120. Depending on the technology of the subject matter, the memory 150 can be random access memory (RAM), such as double data rate RAM (DDR RAM). Other types of RAM can also be used to implement the memory 150. The memory 150 can be implemented using a single RAM module or multiple RAM modules. Although the memory 150 is depicted as being separate from the control unit 140, it can also be integrated into the control unit 140 without infringing upon the scope of protection of this disclosure.Alternatively, the memory 150 can be a non-volatile memory such as a magnetic disk, flash memory, and the like.
[0020] The non-volatile memory 160A-160C represents non-volatile storage devices for storing data. The number of non-volatile memory chips in the data storage device 120 can be any number, such as two, four, eight, sixteen, etc. For the sake of simplicity, the non-volatile memory 160A-160C is referred to as... Fig. Figure 1 illustrates the 160A-160C non-volatile memory. It is not limited to any specific capacity or configuration. Each 160A-160C non-volatile memory can be organized into blocks and pages. Each block can contain a number of pages, for example, 256, and each page can contain one or more sectors or sections of data.
[0021] According to aspects of the technology of the subject matter, the 160A-160C non-volatile memory contains, for example, NAND flash memory. The 160A-160C non-volatile memory may contain multi-level cell (MLC) flash memory and / or three-level cell (TLC) memory. In some aspects, the 160A-160C non-volatile memory may further contain three-dimensional (3D) flash memory. In some aspects, the 160A-160C non-volatile memory may contain one or more hybrid memory devices that can operate in one or more SLC, MLC, or TLC modes. The technology of the subject matter is not limited to these memory types and can be applied to flash memory cells configured and operated using more than three levels (e.g., 4 bits per cell, 5 bits per cell, etc.).
[0022] Fig. Figure 2 is a block diagram illustrating example command queues of the control unit 140 of the data storage device 120 according to aspects of the subject's technology. The control unit 140 contains a high-priority queue 142, a low-priority queue 144, and a flash channel control unit 146. The control unit 140 can receive host operation commands from the host system 110 via the host interface 130. Host operation commands can include host read commands to read data from the non-volatile memory 160A-160C. In some cases, host commands can also include host write commands to write data to the non-volatile memory 160A-160C. In some cases, the control unit 140 can generate internal operation commands. Internal operation commands can include internal programming commands, internal erase commands, internal read commands, and error correction commands.For example, internal operation instructions can be generated based on garbage collection (GC), background media scanning (BGMS), or set / get features.
[0023] The Control Unit 140 can identify operation instructions (e.g., host operation instructions and internal operation instructions) as either high-priority or low-priority. For example, each type of operation instruction can be categorized as either a low-priority or a high-priority instruction. The Control Unit 140 can identify operation instructions as either high-priority or low-priority based on a category list or other type of lookup data structure to prioritize the operation instructions so that those instructions that impact the drive performance of the data storage device can be processed with reduced wait times. For example, host read instructions can be identified as high-priority instructions.In some cases, internal error correction instructions, used to move data from data locations due to error count or operational errors, can be identified as high-priority instructions. In some aspects, operational instructions such as host write instructions, internal programming instructions, internal delete instructions, and internal read instructions can be identified as low-priority instructions.
[0024] Operational commands identified as high-priority are assigned to high-priority queue 142, and operational commands identified as low-priority are assigned to low-priority queue 144. In some respects, operational commands can be placed in the appropriate queues in control unit 140 in chronological order based on the time the operational commands were received by control unit 140.
[0025] The control unit 140 can schedule operation commands from the high-priority queue 142 and the low-priority queue 144 based on a scheduling ratio. A scheduling ratio can, for example, define a number of processed operation commands from the high-priority queue for each predetermined number of processed operation commands from the low-priority queue. For example, the control unit 140 can schedule nine operation commands from the high-priority queue for every single operation command from the low-priority queue.
[0026] An initial scheduling ratio can be determined based on the average read latency of host read instructions. For example, an initial scheduling ratio can be determined by processing test operation instructions based on an arbitrary scheduling ratio and monitoring the average read latency of host read instructions during processing. The arbitrary scheduling ratio can be adjusted and tested until one is determined that results in an average optimal or target read latency of the host read instructions. The scheduling ratio that results in the average target read latency can be set as an initial scheduling ratio. In some aspects, in addition to the average read latency of host read instructions, an initial scheduling ratio can be determined for different levels of overprovisioning (e.g., 7%, 10%, etc.) in the data storage device 120.
[0027] The Flash Channel Control Unit 146 can process operation instructions from the high-priority queue and the low-priority queue based on the initial scheduling ratio. The Flash Channel Control Unit 146 can process an operation instruction by issuing an instruction corresponding to the operation instruction to the non-volatile memory 160A-160C. If the Flash Channel Control Unit 146 processes operation instructions from the high-priority queue and the low-priority queue based on the initial scheduling ratio for a predetermined period of time (e.g., 10 seconds), the Control Unit 140 can update the scheduling ratio using equation (1): AB⋅C⋅D=E A number of host read commands B Number of host write commands C writing factor D Planning ratio factor E Planning relationship
[0028] The control unit 140 can maintain a log of operation instructions in memory 150. For example, the log can contain the types of operation instructions and the number of each type of operation instruction processed during the predetermined time period. The number of host read instructions A, for example, could be the number of host read instructions received by the host system 110 during the predetermined time period. The number of host write instructions B, for example, could be the number of host write instructions received during the predetermined time period based on the log.
[0029] The write factor C represents the number of write operations performed for each host write command received from the host system 110. The write factor can correlate with the number of program / erase cycles of blocks in the data storage device 120. The write factor can increase as the number of program / erase cycles increases. For example, non-volatile memory blocks 160A-160C can tolerate a finite number of program / erase cycles before a block is removed from the cycle and becomes unavailable. Thus, the number of available blocks in the non-volatile memory 160A-160C can decrease as the data storage device 120 approaches the end of its lifespan. As the number of available blocks decreases, the control unit 140 may need to perform more data moves and / or garbage collection to accommodate new host write commands.This can lead to an increase in the write factor. In some aspects, a table containing predefined write factors assigned to different lifetime levels of non-volatile memory 160A-160C can be stored in memory 150.
[0030] The planning ratio factor D can be determined based on the initial planning ratio E, the number of host read commands A, the number of host write commands B and the write factor C using equation (1).
[0031] The initial scheduling ratio is determined based on a specific mix of operation instruction types. However, the mix of operation instruction types can vary during the operation of the data storage device from the specific mix used to determine the initial scheduling ratio, and the mean read latency resulting from the initial scheduling ratio may differ from the mean optimal or target read latency of host read instructions. To obtain the mean optimal or target read latency, the control unit 140 can update the scheduling ratio by determining a new scheduling ratio E using the determined scheduling ratio factor D. For example, the control unit 140 can determine a number of host write instructions A and a number of host read instructions B over a predetermined period of time.The control unit 140 can also determine the write factor C using, for example, the table stored in memory 150. The planning ratio factor D can be read from memory 150. Using equation (1), the control unit 140 determines a new planning ratio to update the planning ratio. The control unit 140 can update the initial planning ratio with the new planning ratio. The control unit 140 plans and processes subsequent operation instructions that are received based on the updated planning ratio.
[0032] Fig. Figure 3A depicts a flowchart of an example process for managing the data storage system 120 according to aspects of the subject's technology. For illustrative purposes, the various blocks of the example process 300 are described here with reference to the components and / or processes described herein. One or more blocks of process 300 may, for example, be implemented by one or more processors, such as the control unit 140 of Fig. The blocks may contain one or more components or processors of the control unit 140. In some implementations, one or more of the blocks may be implemented separately from other blocks and by one or more different processors or control units. Furthermore, for illustrative purposes, the blocks of Example Process 300 are described as occurring sequentially or linearly. However, several blocks of Example Process 300 may occur in parallel. Additionally, the blocks of Example Process 300 need not be executed in the order shown, and / or one or more of the blocks of Example Process 300 need not be executed.
[0033] At block 310, the control unit 140 receives operation instructions. For example, the control unit 140 receives host instructions (i.e., host read instructions and host write instructions) from the host system 110 via the host interface 130. In some aspects, internal instructions, such as those generated by GC or BGMS, may be included in the operation instructions. At block 320, the control unit 140 identifies the operation instructions as either high-priority or low-priority. For example, host read instructions can be identified as high-priority instructions. In some aspects, error correction instructions can also be identified as high-priority instructions. Operation instructions such as host read instructions, internal write instructions, internal delete instructions, and internal read instructions generated by the control unit 140 can be identified as low-priority instructions.
[0034] At block 330, the control unit assigns 140 operation commands to high-priority queue 142 and low-priority queue 144. For example, operation commands identified as high-priority are assigned to high-priority queue 142, and operation commands identified as low-priority are assigned to low-priority queue 144.
[0035] Fig. Figure 3B depicts a flowchart of an example process for managing a data storage system 120 according to aspects of the subject's technology. For illustrative purposes, the various blocks of example process 340 are described here with reference to the components and / or processes described herein. One or more blocks of process 340 may, for example, be implemented by one or more processors, such as the control unit 140 of Fig.The blocks may contain one or more components or processors of the control unit 140. In some implementations, one or more of the blocks may be implemented separately from other blocks and by one or more different processors or control units. Furthermore, for illustrative purposes, the blocks of Example Process 340 are described as occurring sequentially or linearly. However, several blocks of Example Process 340 may occur in parallel. Additionally, the blocks of Example Process 340 need not be executed in the order shown, and / or one or more of the blocks of Example Process 340 need not be executed.
[0036] At block 350, control unit 140 processes the high-priority instructions from high-priority queue 142 and the low-priority instructions from low-priority queue 144 based on a scheduling ratio. For example, if the scheduling ratio is 9:1, the flash channel control unit 146 of control unit 140 can process nine high-priority instructions from high-priority queue 142 sequentially. After flash channel control unit 146 has processed nine high-priority instructions from high-priority queue 142, it can process one low-priority instruction from low-priority queue 144.
[0037] Block 360 determines whether a predetermined time has elapsed. For example, if a predetermined time (e.g., 10 seconds) has elapsed after processing the high-priority commands from high-priority queue 142 and the low-priority commands from low-priority queue 144 has begun, the control unit 140 determines that a predetermined time has elapsed (Block 360 = Yes), and process 340 proceeds to Block 370. Otherwise, if the control unit determines that a predetermined time has not elapsed (Block 360 = No), process 340 returns to Block 350.
[0038] Block 370 specifies a number of host read commands, a number of host write commands, and a write factor. For example, the control unit 140 can determine a number of host read commands and a number of host write commands to be received by the host device 110 during a predetermined time. In some aspects, the control unit 140 can determine a write factor based on a number of program / erase cycles of the data storage device 120.
[0039] At block 380, control unit 140 updates the scheduling ratio. Control unit 140 determines a new scheduling ratio based on the specified number of host read commands, the number of host write commands, and the write factor. For example, using equation (1), control unit 140 determines a new scheduling ratio by dividing the specified number of host read commands by the product of the specified number of host write commands and the write factor. The result of the division is multiplied by a predetermined scheduling ratio factor. The result of the calculation is the new scheduling ratio. Control unit 140 updates the existing scheduling ratio with the new scheduling ratio. Process 340 returns to block 350. Subsequent operation commands are processed based on the updated scheduling ratio.
[0040] It is important to understand that the intuitive blocks, modules, elements, components, procedures, and algorithms described herein may be implemented as electronic hardware, computer software, or combinations of both. To illustrate this interchangeability of hardware and software, various intuitive blocks, modules, elements, components, procedures, and algorithms have been described above in general terms with regard to their functionality. Whether such functionality is implemented as hardware or software depends on the specific application and design constraints that apply to the overall system. Experts may implement the described functionality in different ways for each specific application. Different components and blocks may be arranged differently (e.g.,(arranged in a different order or subdivided in a different way), all without deviating from the protected scope of the technology of the object.
[0041] It should be understood that the specific sequence or hierarchy of steps in the disclosed processes is presented as an illustration of some exemplary approaches. Based on design preferences and / or other considerations, it should be understood that the specific sequence or hierarchy of steps in the processes may be arranged differently. For example, in some implementations, some of the steps may be executed concurrently. Thus, the attached method claims present elements of the various steps in an exemplary sequence and are not intended to be limited to the specific sequence or hierarchy presented.
[0042] The foregoing description is provided to enable a person skilled in the art to practice the various aspects described herein. The foregoing description provides various examples of the subject matter's technology, and the subject matter's technology is not limited to these examples. Various modifications to these aspects will be readily apparent to those skilled in the art, and the fundamental principles defined herein can be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein but are intended to be granted the full scope of protection consistent with the wording of the claims, where reference to an element in the singular is not intended to mean "one and only one" unless specifically stated, but instead "one or more". Unless otherwise stated, the term "some" refers to one or more.Masculine pronouns (e.g., *sein*) include the feminine and neuter forms (e.g., *ihr* and *sein*), and vice versa. Headings and subheadings, if present, are used for simplification only and do not restrict the disclosure of the subject matter.
[0043] The predicates "configure," "operate," and "program" do not imply any specific tangible or intangible modification of a subject, but are instead intended to be used interchangeably. For example, a processor configured to monitor and control an operation or component can also mean that the processor is programmed to monitor and control the operation, or that the processor is operating to monitor and control the operation. Similarly, a processor configured to execute code can be interpreted as a processor programmed to execute code, or operating to execute code.
[0044] The phrases “in communication with” and “coupled” mean in direct communication with or in indirect communication with one or more components mentioned or not mentioned here (e.g. a memory card reader).
[0045] A term such as "an aspect" does not imply that such an aspect is essential to the technology of the subject matter or that such an aspect applies to all configurations of the technology of the subject matter. A disclosure relating to an aspect may apply to all configurations or to one or more configurations. An aspect may provide one or more examples. A term such as "an aspect" may refer to one or more aspects, and vice versa. A term such as "a form of implementation" does not imply that such a form of implementation is essential to the technology of the subject matter or that such a form of implementation applies to all configurations of the technology of the subject matter. A disclosure relating to an implementation may apply to all aspects or to one or more aspects. An implementation may provide one or more examples. A term such as "a form of implementation" may imply that such a form of implementation is essential to the technology of the subject matter or that such a form of implementation applies to all configurations of the technology of the subject matter.A “form of implementation” can refer to one or more implementations, and vice versa. A term such as a “configuration” does not imply that such a configuration is essential to the subject matter's technology or that such a configuration applies to all configurations of the subject matter's technology. A disclosure that refers to a configuration can apply to all configurations or to one or more configurations. A configuration can provide one or more examples. A term such as a “configuration” can refer to one or more configurations, and vice versa.
[0046] The word "exemplary" is used here to mean "serving as an example or illustration." An aspect or construction described here as "exemplary" is not necessarily to be considered preferential or advantageous over other aspects or constructions.
Claims
[1] Method for managing a data storage system (120), the method comprising: Identifying (320) an order as a high-priority order or a low-priority order; if the command is a high-priority command, assign (330) the command to a first queue which is a high-priority queue (142); if the command is a low-priority command, assign (330) the command to a second queue which is a low-priority queue (144), wherein the second queue is configured to contain at least two different command types, comprising a first command type and a second command type, and wherein the first command type is a host write command and the second command type is different from the first command type; Processing (350) one or more instructions from the first queue and one or more instructions from the second queue based on a scheduling ratio, wherein the scheduling ratio indicates a ratio between the number of one or more instructions to be processed in the first queue and the number of one or more instructions to be processed in the second queue; periodically determining (370) a write factor of the data storage system (120), a total number of host read commands and a total number of host write commands received by the data storage system (120) during a respective predetermined time period; periodic generation (380) of an updated planning ratio based on the following equation: AB⋅C⋅D=E where: A is the total number of host read commands received during the respective predetermined time period, B is the total number of host write commands received during the respective predetermined time period, C is the definite writing factor D is a planning ratio factor that is determined based on the planning ratio, A, B and C, and E is the updated planning relationship; and Processing (350) subsequent commands from the first queue and the second queue based on the updated scheduling ratio. [2] Method according to claim 1, wherein the second instruction type includes an internal programming instruction, an internal delete instruction, and an internal read instruction. [3] The method of claim 1 or 2, further comprising: Maintain, in a memory (150), a log of the total number of host read commands and the total number of host write commands received by the data storage system during the respective predetermined time period. [4] Method according to claim 1, wherein the write factor of the data storage system (120) is determined based on a number of program / erase cycles performed on the data storage system (120). [5] Method according to claim 4, wherein the write factor of the data storage system (120) is determined based on a size of the oversupply of the data storage system (120). [6] Data storage system (120) containing: Means for identifying (320) an order as a high-priority order or a low-priority order; Means of assigning (330), if the command is a high-priority command, the command to a first queue which is a high-priority queue (142); Means for allocating (330), when the command is a low-priority command, to a second queue, which is a low-priority queue (144), wherein the second queue is configured to contain at least two distinct command types, comprising a first command type and a second command type, and wherein the first command type is a host write command and the second command type is different from the first command type; Means for processing (350) one or more instructions from the first queue and one or more instructions from the second queue based on a scheduling ratio, wherein the scheduling ratio indicates a ratio between a number of one or more instructions to be processed in the first queue and a number of one or more instructions to be processed in the second queue; Means for periodically determining (370) a write factor of the data storage system (120), a total number of host read commands and a total number of host write commands received by the data storage system (120) during a respective predetermined time period; Means for periodically generating (380) an updated planning ratio based on the following equation: AB⋅C⋅D=E where: A is the total number of host read commands received during the respective predetermined time period, B is the total number of host write commands received during the respective predetermined time period, C is the definite writing factor D is a planning ratio factor that is determined based on the planning ratio, A, B and C, and E is the updated planning relationship; and Means to process (350) subsequent orders from the first queue and the second queue based on the updated scheduling ratio. [7] Data storage system according to claim 6, further comprising: Means of maintaining, in a memory (150), a log of the total number of host read commands and the total number of host write commands received by the data storage system (120) during the respective predetermined time period. [8] Data storage system according to claim 6, wherein the second instruction type includes an internal programming instruction, an internal erase instruction, and an internal read instruction. [9] Data storage system according to claim 6, wherein the write factor of the data storage system (120) is determined based on a number of program / erase cycles performed on the data storage system (120). [10] Data storage system according to claim 9, wherein the write factor of the data storage system (120) is determined based on a size of the oversupply of the data storage system (120). [11] Data storage system according to claim 6, wherein the planning ratio specifies a number of a first group of instructions from the first queue to be processed for a number of a second group of instructions from the second queue. [12] Data storage system (120) containing: multiple storage devices (160A, 160B, 160C), each storage device containing multiple non-volatile memory chips; and a control unit (140) coupled to the multiple storage devices (160A, 160B, 160C), the control unit being configured to: Identifying (320) an order as a high-priority order or a low-priority order; If the command is a high-priority command, assign (330) the command to a first queue which is a high-priority queue (142); if the command is a low-priority command, assign (330) the command to a second queue which is a low-priority queue (144), wherein the second queue is configured to contain at least two different command types, comprising a first command type and a second command type, and wherein the first command type is a host write command and the second command type is different from the first command type; Processing (350) one or more commands from the first queue and one or more commands from the second queue based on a scheduling ratio, wherein the scheduling ratio indicates a ratio between the number of one or more commands to be processed in the first queue and the number of one or more commands to be processed in the second queue; periodically determining (370) a write factor of the data storage system (120), a total number of host read commands and a total number of host write commands received by the data storage system (120) during a respective predetermined time period; periodic generation (380) of an updated planning ratio based on the following equation: AB⋅C⋅D=E where: A is the total number of host read commands received during the respective predetermined time period, B is the total number of host write commands received during the respective predetermined time period, C is the definite writing factor D is a planning ratio factor that is determined based on the planning ratio, A, B and C, and E is the updated planning relationship; and Processing (350) subsequent commands from the first queue and the second queue based on the updated scheduling ratio. [13] Data storage system according to claim 12, wherein the control unit is configured to: Maintain, in a memory (150), a log of the total number of host read commands and the total number of host write commands received by the data storage system (120) during the respective predetermined time period. [14] Data storage system according to claim 12, wherein the second instruction type includes an internal programming instruction, an internal erase instruction, and an internal read instruction. [15] Data storage system according to claim 12, wherein the write factor of the data storage system (120) is determined based on a number of program / erase cycles performed on the data storage system (120). [16] Data storage system according to claim 15, wherein the write factor of the data storage system (120) is determined based on a size of the oversupply of the data storage system (120). [17] Data storage system according to claim 12, wherein the planning ratio specifies a number of a first group of instructions from the first queue to be processed for a number of a second group of instructions from the second queue.
Citation Information
Patent Citations
Memory system for changing operating characteristics of storage device i.e. solid state drive, has storage including adaptation controller to receive command from configuration controller and to determine whether to enable feature
DE102013114069A1
temperature-based flash memory system preservation
DE112014005346T5
NPIV at storage devices
US20100250785A1
Proportional quality of service based on client usage and system metrics
US20130227111A1
Storage resource usage analysis for customized application options
US20140156877A1