Systems, methods, and media that prioritize read access to storage devices
By prioritizing read commands over write commands based on a threshold mechanism, the mechanism addresses QoS issues in storage devices, enhancing performance and maintaining optimal read access times.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-10-25
- Publication Date
- 2026-03-25
AI Technical Summary
Existing computing devices face challenges in maintaining quality of service (QoS) requirements due to prioritization mechanisms that can lead to suboptimal read access times when handling a large number of write operations, particularly in storage devices like solid-state drives.
A mechanism is implemented to prioritize read commands over write commands by tracking the number of incomplete read commands and setting a threshold based on a function of the average number of read commands, ensuring read commands are processed ahead of write commands when the threshold is met, using calibration parameters to determine the assertiveness of this prioritization.
This approach enhances the quality of service by prioritizing read access, thereby improving the performance of storage devices and connected host systems by ensuring timely processing of read operations.
Smart Images

Figure 2026509696000001_ABST
Abstract
Description
[Background technology]
[0001] [Cross-reference of related applications] This application claims the interests of U.S. Patent Application No. 17 / 977,975, filed on 31 October 2022, which is incorporated herein by reference in its entirety.
[0002] Recent computing devices, which may include general-purpose and specialized computers such as desktop computers, laptop computers, tablet computers, servers, mobile phones, and Internet of Things (IoT) devices, frequently implement different processes (which may be referred to herein as “workers”) that read and / or write information (which may include data and / or programs) to and from one or more storage devices, such as solid-state drives. To ensure that each worker receives a desired amount of access to the storage device, such recent computing devices can assign each worker a share that defines the amount of access each worker has to the storage device or a portion thereof. For example, the amount of the share may represent the percentage of time that a worker will have access to the storage device or a portion thereof. As a more specific example, consider a computing device with three workers. Worker 1 may be allocated a 50% share (or any other preferred percentage between 0% and 100%), Worker 2 a 30% share (or any other preferred percentage between 0% and 100%), and Worker 3 a 20% share (or any other preferred percentage between 0% and 100%). In this scenario, on average over a long period, Worker 1 will have access to the storage device or a portion thereof for approximately 50% of the total time the storage is accessed, while Workers 2 and 3 will similarly have access times of approximately equal 30% and 20%, respectively.
[0003] In some cases, maintaining a certain share of the storage device for a worker can lead to a breach of quality of service (QoS) requirements. For example, if a storage device handles a large number of write accesses (which tend to take longer than read accesses) for a single worker, the QoS for workers requiring read access may fall below the explicit performance requirements for that storage device.
[0004] Therefore, a new mechanism to prioritize read access to storage devices is desirable. [Overview of the Initiative]
[0005] According to some embodiments, a mechanism (including systems, methods, and media) is provided for prioritizing read access to a storage device.
[0006] In some embodiments, a system is provided for prioritizing read commands over write commands to a storage device, comprising: memory; and at least one hardware processor coupled to the memory, which determines the number of read commands targeting at least a plurality of portions of the storage device; calculates a threshold based on a function of the average number of read commands targeting the plurality of portions of the storage device; determines that the number of one or more read commands targeting one of the plurality of portions of the storage device satisfies the threshold; and in response to the determination that the number of one or more read commands targeting one of the plurality of portions of the storage device satisfies the threshold, the system is collectively configured to prioritize a read command to access one of the plurality of portions of the storage device over at least one write command. In some of these embodiments, the number of commands targeting the plurality of portions of the storage device is the number of read commands targeting the plurality of portions of the storage device. In some of these embodiments, the plurality of portions of the storage device are NAND devices. In some of these embodiments, the storage device is a solid-state drive. In some of these embodiments, the function of the average number of read commands targeting the plurality of portions of the storage device is α· <N read [i]>+β is a function, where <N read [i]> is the average number of read commands targeting the plurality of portions of the storage device, where α and β are control parameters. In some of these embodiments, the function of the average number of read commands targeting the plurality of portions of the storage device is floor(α· <N read [i]>+β) and here <N read[i]> is the average number of read commands targeting the plurality of portions of the storage device, where α and β are control parameters. In some of these embodiments, determining that the number of one or more read commands targeting one of the plurality of portions of the storage device satisfies the threshold means determining that the number of one or more read commands targeting one of the plurality of portions of the storage device is greater than the threshold. In some of these embodiments, determining that the number of one or more read commands targeting one of the plurality of portions of the storage device satisfies the threshold means determining that the number of one or more read commands targeting one of the plurality of portions of the storage device is greater than or equal to the threshold.
[0007] In some embodiments, a method is provided for prioritizing read commands over write commands to a storage device, comprising the steps of: determining the number of read commands targeting a plurality of portions of the storage device; calculating a threshold based on a function of the average number of read commands targeting the plurality of portions of the storage device; determining that the number of one or more read commands targeting one of the plurality of portions of the storage device satisfies the threshold; and, in response to determining that the number of one or more read commands targeting one of the plurality of portions of the storage device satisfies the threshold, prioritizing a read command to access one of the plurality of portions of the storage device over at least one write command. In some of these embodiments, the number of commands targeting the plurality of portions of the storage device is the number of read commands targeting the plurality of portions of the storage device. In some of these embodiments, the plurality of portions of the storage device are NAND devices. In some of these embodiments, the storage device is a solid-state drive. In some of these embodiments, the function of the average number of read commands targeting the plurality of portions of the storage device is α· <N read [i]>+β is a function, where <N read [i]> is the average number of read commands targeting the plurality of portions of the storage device, where α and β are control parameters. In some of these embodiments, the function of the average number of read commands targeting the plurality of portions of the storage device is floor(α· <N read [i]>+β) and here <N read[i]> is the average number of read commands targeting the plurality of portions of the storage device, where α and β are control parameters. In some of these embodiments, the step of determining that the number of one or more read commands targeting one of the plurality of portions of the storage device satisfies the threshold includes the step of determining that the number of one or more read commands targeting one of the plurality of portions of the storage device is greater than the threshold. In some of these embodiments, the step of determining that the number of one or more read commands targeting one of the plurality of portions of the storage device satisfies the threshold includes the step of determining that the number of one or more read commands targeting one of the plurality of portions of the storage device is greater than or equal to the threshold.
[0008] In some embodiments, a non - transient computer - readable medium comprising computer - executable instructions that, when executed by a processor, cause the processor to execute a method for prioritizing read commands over write commands to a storage device, the method comprising: determining a number of read commands targeting a plurality of portions of the storage device; calculating a threshold based on a function of an average of the number of read commands targeting the plurality of portions of the storage device; determining that the number of one or more read commands targeting one of the plurality of portions of the storage device meets the threshold; and in response to determining that the number of one or more read commands targeting one of the plurality of portions of the storage device meets the threshold, prioritizing read commands for accessing the one of the plurality of portions of the storage device over at least one write command. In some of these embodiments, the number of commands targeting the plurality of portions of the storage device is the number of read commands targeting the plurality of portions of the storage device. In some of these embodiments, the plurality of portions of the storage device are NAND devices. In some of these embodiments, the storage device is a solid - state drive. In some of these embodiments, the function of the average of the number of read commands targeting the plurality of portions of the storage device is a function of α·<N read [i]>+β, where <N read [i]> is the average of the number of read commands targeting the plurality of portions of the storage device, and α and β are control parameters. In some of these embodiments, the function of the average of the number of read commands targeting the plurality of portions of the storage device is floor(α·<N read [i]>+β), where <N read[i] is the average of the number of the read commands targeting the plurality of portions of the storage device, and α and β are control parameters. In some of these embodiments, the step of determining that the number of one or more read commands targeting one of the plurality of portions of the storage device satisfies the threshold includes the step of determining that the number of one or more read commands targeting one of the plurality of portions of the storage device is greater than the threshold. In some of these embodiments, the step of determining that the number of one or more read commands targeting one of the plurality of portions of the storage device satisfies the threshold includes the step of determining that the number of one or more read commands targeting one of the plurality of portions of the storage device is greater than or equal to the threshold.
Brief Description of the Drawings
[0009] [Figure 1] An example of a block diagram of a solid state drive coupled to a host device via a bus, according to some embodiments. [Figure 2A] An example of values that can be tracked, according to some embodiments. [Figure 2B] An example of values that can be tracked, according to some embodiments. [Figure 2C] An example of values that can be tracked, according to some embodiments.
[0010] [Figure 3] An example of a process for prioritizing read commands, according to some embodiments.
[0011] [Figure 4] An example of a process for selecting a worker based on actual usage, according to some embodiments.
Modes for Carrying Out the Invention
[0012] According to some embodiments, a mechanism (including systems, methods, and media) is provided for prioritizing read access to a storage device.
[0013] In some embodiments as described herein, these mechanisms can prioritize read commands over write commands to any preferred portion or all (a portion or all referred to herein as a “portion”) of any preferred one or more storage devices. For example, in a NAND solid-state drive (SSD), there may be multiple NAND dies (each of which may be referred to herein as a “NAND”), and in some embodiments, one or more or all of these NAND dies may be referred to herein as a portion of a NAND SSD. Similarly, if multiple SSDs are used, the portion of the SSDs may be one, two, any preferred subset, or all of the SSDs.
[0014] In some embodiments, the mechanism described herein can track the number of incomplete read and write commands for each portion i of the storage device. The mechanism then calculates a threshold and, when the number of read commands for a portion of the storage device exceeds that threshold, can use that threshold to prioritize read commands for that portion of the storage. In some embodiments, this threshold can be calculated as follows: T t =floor(α· <N read [i]>+β) Here, floor() returns the largest integer less than or equal to the real number input value; <N read[i]> is the average number of incomplete read commands across all portions of the storage device (e.g., NAND); and α and β are calibration parameters that can be heuristically determined based on the desired assertiveness of the mechanism in prioritizing read commands. The mechanism can then compare the number of incomplete read commands for a portion of the storage device with a threshold. If this number satisfies the threshold (e.g., greater than or equal to the threshold), the mechanism can prioritize a read command for processing over one or more write commands for that portion of the storage device. Otherwise, the mechanism can determine which command should be processed next according to the share policy.
[0015] Referring to Figure 1, an exemplary block diagram of a solid-state drive 102 coupled to a host device 124 via a bus 132 is shown according to several embodiments.
[0016] As shown, in some embodiments, the solid-state drive 102 may include a controller 104, NAND devices 106, 108, and 110, channels 112, 114, and 116, random access memory (RAM) 118, firmware 120, and a cache 122. In some embodiments, more or fewer components than those shown in Figure 1 may be included. In some embodiments, two or more components shown in Figure 1 may be included in a single component.
[0017] In some embodiments, controller 104 may be any suitable controller for a solid-state drive. In some embodiments, controller 104 may include any suitable hardware processor (e.g., a microprocessor, a digital signal processor, a microcontroller, a programmable gate array, etc.). In some embodiments, controller 104 may also include any suitable memory (e.g., RAM, firmware, cache, buffer, latch, etc.), interface controllers, interface logic, drivers, etc.
[0018] In some embodiments, NAND devices 106, 108, and 110 may be any suitable NAND devices for storing information (which may include data, programs, and / or any other suitable information that can be stored in a solid-state drive). In some embodiments, the NAND devices may include any suitable memory cells, hardware processors (such as microprocessors, digital signal processors, microcontrollers, and programmable gate arrays), interface controllers, interface logic, drivers, and the like. Although three NAND devices (106, 108, and 110) are shown in Figure 1, in some embodiments, any suitable number D of NAND devices (including only one) may be used. In some embodiments, any suitable type of NAND device may be used (such as single-level cell (SLC), multilevel cell (MLC), triple-level cell (TLC), quad-level cell (QLC), and 3D NAND). In some embodiments, each NAND device may have any suitable size. Although devices 106, 108, and 110 are described herein as NAND devices, the devices may additionally or alternatively use any other suitable one or more storage technologies, such as NOR flash memory or any other suitable flash technology, phase-change memory technology, and / or any other suitable non-volatile memory storage technology.
[0019] In some embodiments, channels 112, 114, and 116 can be any preferred mechanism for communicating information between the controller 104 and the NAND devices 106, 108, and 110. For example, in some embodiments, the channels may be implemented using conductors (lands) on a circuit board. Three channels (112, 114, and 116) are shown in Figure 1, but in some embodiments, any preferred number C channels may be used.
[0020] In some embodiments, the random access memory (RAM) 118 may include any preferred type of RAM, such as dynamic RAM or static RAM. In some embodiments, any preferred number of RAMs 118 may be included, and each RAM 118 may have any preferred size.
[0021] In some embodiments, the firmware 120 may include any preferred combination of software and hardware. For example, in some embodiments, the firmware 120 may include software programmed in any preferred programmable read-only memory (PROM). In some embodiments, any preferred number of firmwares 120, each having any preferred size, may be used.
[0022] In some embodiments, the cache 122 may be any suitable device for temporarily storing information (which may include data and programs in some embodiments). In some embodiments, the cache 122 may be implemented using any suitable type of device, such as RAM (e.g., static RAM, dynamic RAM, etc.). In some embodiments, any suitable number of caches 122, each having any suitable size, may be used.
[0023] In some embodiments, the host device 124 may be any suitable device for accessing the stored information. For example, in some embodiments, the host device 124 may be a general-purpose computer, a dedicated computer, a desktop computer, a laptop computer, a tablet computer, a server, a database, a router, a gateway, a switch, a mobile phone, a communication device, an entertainment system (e.g., an in-car entertainment system, a television, a set-top box, a music player, etc.), a navigation system, etc. Although only one host device 124 is shown in Figure 1, in some embodiments, any number of suitable host devices may be included.
[0024] In some embodiments, the host device 124 may include workers 126, 128, and 130. Three workers (126, 128, and 130) are shown in Figure 1, but in some embodiments, any preferred number of workers M may be included. In some embodiments, at least two workers may be included. The workers may be any preferred hardware and / or software that reads data from and / or writes data to the solid-state drive 102.
[0025] In some embodiments, bus 132 may be any suitable bus for communicating information (which may include data and / or programs in some embodiments). For example, in some embodiments, bus 132 may be a PCIe bus, a SATA bus, or any other suitable bus.
[0026] Figure 1 shows a NAND solid-state drive, but it should be understood that the mechanisms described herein may be used with other forms of storage and / or other devices. For example, in some embodiments, the mechanism may be used with network nodes, compute nodes, and / or any suitable device that multiple workers require access to in routing, and their access is controlled by shares determined by a QoS bypass mechanism.
[0027] Referring to Figures 2A, 2B, and 2C, several embodiments show examples of a trackable value of 200.
[0028] As shown in Figure 2A, in some embodiments, these values represent the number of incomplete read commands N for each portion of the storage device (e.g., each NAND in the solid-state drive in Figure 1). read [0:N-1] can include 202, 204, and 206. Figure 2A shows three values N read [0:N-1]202, 204, and 206 are shown, but in some embodiments, any preferred number of these values (including only one) may be tracked.
[0029] Furthermore, as shown in Figure 2A, in some embodiments, these values may include the total worker time for all workers, Time_Total[0:N-1]212, 214, and 216, for each portion of the storage device (e.g., each NAND in the solid-state drive in Figure 1). This total worker time can be expressed in any preferred way. For example, in some embodiments, this total time can be expressed as a real number in seconds (e.g., 10.02 ms or any other preferred value). As another example, in some embodiments, this total time can be expressed as any preferred integer unit of time (in some embodiments, this can be a value rounded from a real number). Although three values Time_Total[0:N-1]212, 214, and 216 are shown in Figure 2A, in some embodiments, any preferred number of these values (including only one) may be tracked.
[0030] As further shown in Figure 2A, in some embodiments, these values may include a threshold Tt220 that can be used to prioritize read commands for that portion of the storage described herein. In some embodiments, the threshold Tt220 may be common across all portions (e.g., NAND) and workers of the storage device. In some embodiments, Tt220 is floor(α· <N read [i]> + β) may be equal, but in other embodiments, Tt220 is ceiling(α· <N read [i]>+β), int(α· <N read [i]>+β),(α· <N read [i]>+β), or <N read [i]> may be based on any other suitable function, where floor() returns the largest integer less than or equal to the real input value; ceiling() returns the smallest integer greater than or equal to the real input value; and int() returns the largest integer less than or equal to the real input value. <N read[i]> is the average number of incomplete read commands across all portions of the storage device (e.g., NAND), and α and β are calibration parameters that can be heuristically determined based on the desired assertiveness of the mechanism in prioritizing read commands.
[0031] As shown in Figure 2B, in some embodiments, the value 200 may also include the value Shares[0:D-1,0:M-1]230, which represents the assigned share for each combination of storage device portion (0:D-1) (e.g., each NAND in the solid-state drive in Figure 1) and worker (0:M-1), and which can be expressed as a percentage, where the sum of the shares for all workers for any given portion of the storage device is 100%. Nine values Shares[0:D-1,0:M-1]230 are shown in Figure 2B, but in some embodiments, any preferred number of these values (including only one) may be tracked.
[0032] As shown in Figure 2C, in some embodiments, the value 200 may further include the total time Time_W[0:D-1,0:M-1]240 for each combination of storage device portion (0:D-1) (e.g., each NAND of the solid-state drive in Figure 1); and worker (0:M-1). This total time can be expressed in any preferred way. For example, in some embodiments, this total time can be expressed as a real number in seconds (e.g., 10.02 ms or any other preferred value). As another example, in some embodiments, this time can be expressed as any preferred integer unit of time (in some embodiments, this can be a value rounded from a real number). Nine values Time_W[0:D-1,0:M-1]240 are shown in Figure 2C, but in some embodiments, any preferred number of these values (including only one) may be tracked.
[0033] The values in Figures 2A, 2B, and 2C may be stored in any suitable location in some embodiments. For example, in some embodiments, these values may be stored in RAM 118 in Figure 1.
[0034] Referring to Figure 3, an example 300 of a process for prioritizing read commands according to several embodiments is shown. This process may be performed on any suitable device. For example, in some embodiments, this process may be performed on a controller of the storage device (e.g., controller 104 in Figure 1). According to some embodiments, different instances of this process may be performed for each portion i of the storage device (e.g., each NAND device 106, 108, and 110 on the solid-state drive 102).
[0035] As shown, after an instance of process 300 is started in 302 for portion i, in 304 the process can detect that a new command has been added from the host or that a command has been completed for portion i. The process can detect that a new command has been added from the host or that a command has been completed in any preferred manner. For example, in some embodiments, the process can detect that a new command has been added from the host for portion i of the storage device by detecting that a new command has been added to the queue. As another example, in some embodiments, the process can detect that a command has been completed for portion i of the storage device by detecting that the command has been removed from the queue.
[0036] Next, in 306, if the added or completed process is a read command, process 300, based on the detection in 304, counts the number of commands N in the counter. read [i] can be updated. This update can be performed in any preferred manner in some embodiments. For example, in some embodiments, this update is performed in N read This can be executed by adding 1 to the value of the memory location corresponding to [i].
[0037] Next, in step 308, process 300 determines the threshold T based on the following formula. t It can be updated. T t =floor(α· <N read [i]>+β) Here, floor() returns the largest integer less than or equal to the real number input value; <N read[i]> is the average number of incomplete read commands across all portions of the storage device (e.g., NAND); and α and β are calibration parameters that can be heuristically determined based on the desired assertiveness of the mechanism in prioritizing read commands. In some embodiments, α and β can have any preferred values. For example, in some embodiments, α may be any preferred value between 0.5 and 1.5 (e.g., 1.0), and β may be any preferred non-negative integer value (e.g., 0, 1, 2, 3, etc.).
[0038] In some embodiments, instead of using the floor function shown above, the ceiling function or the int function can be used as follows: T t =ceiling(α· <N read [i]>+β) T t =int(α· <N read [i]>+β) Here, ceiling() returns the smallest integer greater than or equal to the real input value; int() returns the largest integer less than or equal to the real input value; <N read [i]> is the average number of incomplete read commands across all portions of the storage device (e.g., NAND), and α and β are calibration parameters that can be heuristically determined based on the desired assertiveness of the mechanism in prioritizing read commands. In some embodiments, the floor function can be abbreviated as follows: T t =α· <N read [i]>+β
[0039] In 310, process 300 counts the number of incomplete read commands (N) for potion i. read [i]) is the threshold T t (For example, threshold T) tIt is possible to determine whether it is greater than, greater than, or equal to. This determination can be made in any preferred way. For example, in some embodiments, this determination is made by N read The first value of the memory location corresponding to [i], and T t This can be determined by comparing the first value with the second value at the corresponding memory location to determine whether the first value is greater than, or equal to, the second value.
[0040] In some embodiments, the number of incomplete read commands for a potion i (e.g., NAND[i]) is N read [i]) is the threshold T t (For example, threshold T) t If it is determined in 310 that it is greater than or equal to (or greater than or equal to), process 300 may branch to 312, where it is necessary to allow a read command to proceed to portion i (e.g., NAND[i]) prior to one or more write commands. In some embodiments, allowing a read command to proceed to portion i (e.g., NAND[i]) prior to one or more write commands can be done in any preferred manner. For example, in some embodiments, prior to a pending write command, the next read command may be selected from the same or a different worker and sent to portion i of the storage device.
[0041] In some embodiments, otherwise, the number of incomplete read commands for a portion i (e.g., NAND[i]) is N read [i]) is the threshold T t (e.g., threshold T) tIf it is determined in 310 that it is less than, equal to, or less than, process 300 can branch to 314, where it can determine which command should proceed to portion i (e.g., NAND[i]) according to the share policy. In some embodiments, determining which command should proceed to portion i (e.g., NAND[i]) according to the share policy can be performed in any preferred manner (as described below, for example, in relation to Figure 4).
[0042] Referring to Figure 4, an example 400 of a process for determining which command should be advanced to a portion i (e.g., NAND[i]) of a storage device that can be used in Figure 314 is shown according to several embodiments. This process may be performed on any suitable device. For example, in some embodiments, this process may be performed on a controller of the storage device (e.g., controller 104 in Figure 1). According to some embodiments, different instances of this process may be performed for each portion of the storage device (e.g., each NAND device 106, 108, and 110 on the solid-state drive 102).
[0043] As shown, after process 400 is started in 402, the process can select a first worker. In some embodiments, any suitable worker may be selected as the first worker, and this worker can be selected in any suitable manner. For example, in some embodiments, the worker with the oldest incomplete command may be selected as the first worker. As another example, in some embodiments, the first instantiated worker may be selected as the first worker.
[0044] Next, in 406, process 400 may determine that a portion i of the storage device (e.g., NAND[i]) is ready to receive a command. In some embodiments, this determination can be made in any preferred manner. For example, in some embodiments, this determination can be made by checking the command queue of portion i to see if it is empty (being empty may indicate that portion i is ready to receive a command).
[0045] Next, in step 408, process 400 can determine the actual used share of the selected worker. In some embodiments, this determination can be made in any preferred way. For example, in some embodiments, process 400 can determine the actual used share of the selected worker by dividing the total worker time for portion i (e.g., Time_W[i,w]240, where w is the exponent of the selected worker) by the total time for all workers for portion i (e.g., Time_Total[i]212,214, or 216).
[0046] In step 410, process 400 can then determine whether the actual used share of the selected worker satisfies (e.g., is greater than or equal to) the selected worker's allocated share (e.g., Shares[i,w]230, where w is the exponent of the selected worker) for the corresponding portion i (e.g., NAND[i]). In some embodiments, this determination can be made in any preferred manner. For example, in some embodiments, process 400 can make this determination by comparing a first value in the memory location corresponding to the actual used share of the selected worker with a second value in the memory location corresponding to the selected worker's allocated share for the corresponding portion i, to determine whether the first value is greater than or equal to the second value.
[0047] If, in 410, it is determined that the actual used share of the selected worker satisfies (for example, is greater than or equal to) the selected worker's allocated share of the corresponding NAND[i], then process 400 may select the next worker in 412. The next worker can be selected in any preferred manner. For example, in some embodiments, the worker with the next oldest incomplete command compared to the currently selected worker can be selected as the next worker. In another example, in some embodiments, the worker instantiated immediately after the currently selected worker can be selected as the first worker. After selecting the next worker in 412, process 400 can loop back to 408.
[0048] Otherwise, if 410 determines that the actual used share of the selected worker does not meet the allocated share of the selected worker for the corresponding potion i (e.g., is less than or equal to less than or equal to it), process 400 may allow the next command of the selected worker to proceed to potion i at 414 and then loop back to 406. In some embodiments, process 400 may allow the next command of the selected worker to proceed to potion i in any preferred manner. For example, in some embodiments, process 400 may process the next selected worker command in the command queue based on the command parameters.
[0049] In some embodiments, at least some of the blocks of the process in Figures 3 and 4 described above may be performed or executed in any order or sequence, not limited to the order and sequence shown in the figures and described in relation to the figures. Also in some embodiments, some of the blocks of the process in Figures 3 and 4 described above may be performed or executed substantially simultaneously or in parallel, where appropriate, in order to reduce latency and processing time. Additionally or alternatively, in some embodiments, some of the blocks of the process in Figures 3 and 4 described above may be omitted.
[0050] In some embodiments, any suitable computer-readable medium may be used to store instructions for performing the functions and / or processes described herein. For example, in some embodiments, the computer-readable medium may be transient or non-transient. For example, non-transient computer-readable storage media may include media such as non-transient forms of magnetic media (e.g., hard disks, floppy disks, and / or any other suitable magnetic media), non-transient forms of optical media (e.g., compact discs, digital video discs, Blu-ray discs, and / or any other suitable optical media), non-transient forms of semiconductor media (e.g., flash memory, electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and / or any other suitable semiconductor media), any suitable medium that is not transient during transmission or lacks any aspect of persistence, and / or any suitable tangible medium. As another example, a transient computer-readable medium may include signals in any suitable medium that is transient during transmission and lacks any aspect of permanence, such as over a network, in a wire, in a conductor, in an optical fiber, in a circuit, and / or in any suitable intangible medium.
[0051] As can be seen from the above description, new mechanisms (which may include systems, methods, and media) are provided to prioritize read access to storage devices. By prioritizing read access when needed, these mechanisms can improve the QoS performance of storage devices, thereby improving the performance of host devices connected to the storage devices.
[0052] While various embodiments are described herein in which read commands take precedence over write commands, these types of commands are described herein for illustrative purposes only and are not intended to be limiting. In some embodiments, other types of commands may be substituted for each of the read and write commands described herein. For example, one type of command may take precedence over one or more other types of commands based on the time required for each to be executed (e.g., faster commands take precedence over slower commands), based on any preferred importance indicated for the command types (e.g., more important commands take precedence over less important commands), based on how the type of command affects the QoS of the storage device (e.g., command types that improve QoS take precedence over command types that do not improve QoS), or based on the urgency of the command type (e.g., a command that is more urgent than one or more other types of commands may take precedence).
[0053] Although the present invention is described and illustrated in the exemplary embodiments described above, this disclosure is merely illustrative, and it should be understood that numerous modifications in the details of the implementation of the invention can be made without departing from the spirit and scope of the invention, which are limited only by the following claims. The features of the disclosed embodiments can be combined and rearranged in various ways.
Claims
1. This is a system designed to prioritize read commands over write commands to storage devices. memory; and The memory is coupled to at least Determine the number of read commands targeting multiple portions of the aforementioned storage device; A threshold is calculated based on a function of the average number of read commands targeting the multiple portions of the storage device; The number of read commands targeting one of the multiple portions of the storage device is determined to satisfy the threshold; In response to determining that the number of read commands targeting one of the multiple portions of the storage device satisfies the threshold, a read command to access one of the multiple portions of the storage device is given priority over at least one write command. At least one hardware processor configured collectively in such a way A system equipped with these features.
2. The system according to claim 1, wherein the number of commands targeting the plurality of portions of the storage device is the number of read commands targeting the plurality of portions of the storage device.
3. The system according to claim 1, wherein the plurality of portions of the storage device are NAND devices.
4. The system according to claim 1, wherein the storage device is a solid-state drive.
5. The function of the average number of read commands targeting the plurality of portions of the storage device is α < N read [i] is a function of +β, where < N read [i]> is the average number of read commands targeting the plurality of portions of the storage device, and α and β are control parameters, the system according to claim 1.
6. The function of the average number of read commands targeting the plurality of portions of the storage device is floor(α<N). read [i] > +β) where < N read [i]> is the average number of read commands targeting the plurality of portions of the storage device, and α and β are control parameters, the system according to claim 1.
7. The system according to any one of claims 1 to 6, wherein determining that the number of one or more read commands targeting one of the multiple portions of the storage device satisfies the threshold means determining that the number of one or more read commands targeting one of the multiple portions of the storage device is greater than the threshold.
8. The system according to any one of claims 1 to 6, wherein determining that the number of one or more read commands targeting one of the multiple portions of the storage device satisfies the threshold means determining that the number of one or more read commands targeting one of the multiple portions of the storage device is greater than or equal to the threshold.
9. A method for prioritizing read commands over write commands to a storage device, A step in determining the number of read commands targeting multiple portions of the aforementioned storage device; A step of calculating a threshold based on a function of the average number of read commands targeting the multiple portions of the storage device; The step of determining that the number of read commands targeting one of the multiple portions of the storage device satisfies the threshold; and In response to determining that the number of read commands targeting one of the multiple portions of the storage device satisfies the threshold, a step is taken to prioritize a read command for accessing one of the multiple portions of the storage device over at least one write command. A method for providing this.
10. The method according to claim 9, wherein the number of commands targeting the plurality of portions of the storage device is the number of read commands targeting the plurality of portions of the storage device.
11. The method according to claim 9, wherein the plurality of portions of the storage device are NAND devices.
12. The method according to claim 9, wherein the storage device is a solid-state drive.
13. The function of the average number of read commands targeting the plurality of portions of the storage device is α < N read [i] is a function of +β, where < N read The method according to any one of claims 9 to 12, wherein [i]> is the average number of read commands targeting the plurality of portions of the storage device, and α and β are control parameters.
14. The function of the average number of read commands targeting the plurality of portions of the storage device is floor(α<N). read [i] > +β) where < N read The method according to any one of claims 9 to 12, wherein [i]> is the average number of read commands targeting the plurality of portions of the storage device, and α and β are control parameters.
15. The method according to any one of claims 9 to 12, wherein the step of determining that the number of one or more read commands targeting one of the multiple portions of the storage device satisfies the threshold is further comprising the step of determining that the number of one or more read commands targeting one of the multiple portions of the storage device is greater than the threshold.
16. The method according to any one of claims 9 to 12, wherein the step of determining that the number of one or more read commands targeting one of the multiple portions of the storage device satisfies the threshold is further comprising the step of determining that the number of one or more read commands targeting one of the multiple portions of the storage device is greater than or equal to the threshold.
17. The computer executable instruction, when executed by the processor, causes the processor to execute a method for prioritizing read commands over write commands to a storage device, wherein the method A step in determining the number of read commands targeting multiple portions of the aforementioned storage device; A step of calculating a threshold based on a function of the average number of read commands targeting the multiple portions of the storage device; The step of determining that the number of read commands targeting one of the multiple portions of the storage device satisfies the threshold; and In response to determining that the number of read commands targeting one of the multiple portions of the storage device satisfies the threshold, a step is taken to prioritize a read command for accessing one of the multiple portions of the storage device over at least one write command. A computer program that has [a certain characteristic].
18. The computer program according to claim 17, wherein the number of commands targeting the plurality of portions of the storage device is the number of read commands targeting the plurality of portions of the storage device.
19. The computer program according to claim 17, wherein the plurality of portions of the storage device are NAND devices.
20. The computer program according to claim 17, wherein the storage device is a solid-state drive.
21. The function of the average of the number of the read commands for the plurality of portions of the storage device is a function of α·<N read [i]> + β, where <N read [i]> is the average of the number of the read commands for the plurality of portions of the storage device, and α and β are control parameters. The computer program according to claim 17.
22. The function of the average number of read commands targeting the plurality of portions of the storage device is floor(α<N). read [i] > +β) where < N read [i]> is the average number of read commands targeting the plurality of portions of the storage device, and α and β are control parameters, the computer program according to claim 17.
23. The computer program according to any one of claims 17 to 22, wherein the step of determining that the number of one or more read commands targeting one of the multiple portions of the storage device satisfies the threshold is further comprising the step of determining that the number of one or more read commands targeting one of the multiple portions of the storage device is greater than the threshold.
24. The computer program according to any one of claims 17 to 22, wherein the step of determining that the number of one or more read commands targeting one of the multiple portions of the storage device satisfies the threshold comprises the step of determining that the number of one or more read commands targeting one of the multiple portions of the storage device is greater than or equal to the threshold.