Storage device and method for writing data to storage device at variable code rate
By dynamically adjusting the parity mode value of the portable SSD, the problems of read errors and low data retention capability of QLC SSDs in long-term idle or power-off states are solved, achieving higher data reliability and error correction capability.
Patent Information
- Application Number
- CN202511183327.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-08-23
- Filing Date
- 2025-08-22
- Publication Date
- 2026-03-03
AI Technical Summary
Portable SSDs are prone to read errors and low data retention when idle for extended periods or without power, especially SSDs manufactured using QLC technology, where existing strategies are ineffective.
By determining the write amplification factor (WAF) and fill factor values through the storage device, the parity mode value is dynamically adjusted to store data in a higher parity mode, ensuring that the data can still be effectively retained in an inactive state.
It improves data retention capabilities, reduces errors caused by inactivity, and ensures that data can be reliably stored even during prolonged power outages or periods of inactivity.
Smart Images

Figure CN121597119A_ABST
Abstract
Description
Cross-references to related applications
[0001] This application claims priority to Indian Provisional Application No. 202441063866, filed on 23 August 2024, and Indian Non-Provisional Application No. 202441063866, filed on 11 June 2025, the disclosure of each of which is incorporated herein by reference in its entirety. Technical Field
[0002] One or more example embodiments relate to the general field of data storage, and more specifically, but not limited to, storage devices, systems including storage devices, methods for writing data to storage devices, and / or non-transitory computer-readable media storing computer-executable instructions for performing methods. Background Technology
[0003] Storage devices (e.g., portable solid-state drives (SSDs)) are used to store data. Most portable SSDs operate under limited workloads and fill factors, and many users do not fully fill their portable SSDs with data, thus failing to fully utilize available space and / or storage. Portable SSDs are also commonly left idle and power-off for extended periods before performing any input / output (I / O) operations. However, compared to Three-Level Cell (TLC) and / or Multi-Level Cell (MLC) SSD technologies, portable SSDs manufactured using Quad-Level Cell (QLC) technology are more prone to read errors and have lower data retention capabilities (e.g., data retention reliability). Furthermore, when portable SSDs manufactured using QLC technology are idle for extended periods without any I / O activity, device firmware strategies (such as patrol reads and random interval neighbor checks (RINC)) become less effective. For these strategies to function properly, portable SSDs manufactured using QLC technology must remain powered on and periodically active. Another scenario involves the operating system (OS) being installed on a laptop (or other computing device) in the factory during assembly and then left unpowered in a warehouse for an extended period before being powered on again. In this case, data written to an SSD that has been unpowered for a long time is prone to more read errors and / or has lower data retention and / or reliability.
[0004] The information disclosed in this background section is only intended to enhance the understanding of the general background of exemplary embodiments of the inventive concept and should not be construed as an admission or in any way implying that the information constitutes prior art known to those skilled in the art. Summary of the Invention
[0005] Some exemplary embodiments of the present invention relate to a method for writing data to a storage device. The method includes: the storage device, in response to a write request, determining a write amplification factor (WAF) value and a fill factor value associated with the storage device; the storage device obtaining a current parity mode value; the storage device determining a WAF threshold and a fill factor threshold associated with the current parity mode value; based on the WAF threshold, the WAF value, the fill factor threshold, and the fill factor value, the storage device determining whether to change the current parity mode value to a higher parity mode value among a plurality of parity mode values; and the storage device writing the data to a storage area of the storage device based on the determined result.
[0006] Some exemplary embodiments of the present invention relate to a storage device. The storage device includes: processing circuitry; and a memory communicatively coupled to the processing circuitry, wherein the memory is configured to store computer-executable instructions, which, when executed, cause the processing circuitry to: determine, in response to a write request, a write amplification factor (WAF) value and a fill factor value associated with the storage device; obtain a current parity mode value of the storage device; determine a WAF threshold and a fill factor threshold associated with the current parity mode value; based on the WAF threshold, the WAF value, the fill factor threshold, and the fill factor value, determine whether to change the current parity mode value to a higher parity mode value among a plurality of parity mode values; and write data to a storage area of the storage device based on the determined result.
[0007] Some exemplary embodiments of the present invention relate to a storage device. The storage device includes: processing circuitry; and a memory configured to store computer-executable instructions, which, when executed, cause the processing circuitry to: receive a write request; determine, based on the write request, whether a trigger condition has been met; in response to the meeting of the trigger condition, determine a write amplification factor (WAF) value and a fill factor value associated with the storage device; determine a WAF threshold and a fill factor threshold based on the current parity mode value of the storage device; determine, based on the WAF threshold, WAF value, fill factor threshold, and fill factor value, whether to change the current parity mode value to a higher parity mode value among a plurality of parity mode values; and write data to a storage area of the storage device based on the determined result.
[0008] The foregoing description of the invention is merely illustrative and not intended to be limiting in any way. Other aspects, exemplary embodiments, and features will become apparent from the accompanying drawings and the following detailed description, in addition to the illustrative aspects, exemplary embodiments, and features described above. Attached Figure Description
[0009] The accompanying drawings, which are incorporated in and constitute a part of this disclosure, illustrate some exemplary embodiments and, together with the description, serve to illustrate the inventive concept. In the drawings, the leftmost numeral of the reference numeral identifies the first appearance of the reference numeral. Throughout the drawings, the same reference numerals are used to refer to the same features and components. Some examples of devices, systems, and / or methods according to one or more exemplary embodiments of the inventive concept will now be described by way of example only and with reference to the accompanying drawings.
[0010] Figure 1a An environment for writing data to a storage device is shown, based on some example embodiments of the concept according to the present invention.
[0011] Figure 1b An example of a parity pattern value table is shown, representing some exemplary embodiments of the invention.
[0012] Figures 1c to 1d Examples of block allocation based on parity pattern values are shown, representing some exemplary embodiments of the invention.
[0013] Figure 2 Detailed block diagrams of storage devices according to some exemplary embodiments of the present invention are shown.
[0014] Figure 3a and Figure 3b A flowchart illustrating a method for writing data to a storage device according to some example embodiments of the present invention is shown.
[0015] Figure 4 A comparison example of parity mode values of a conventional storage device and parity mode values of at least one example embodiment of the inventive concept is shown.
[0016] Figures 5a to 5c Examples of the use of a method for writing data to a storage device, based on some exemplary embodiments of the present invention, are shown.
[0017] Those skilled in the art will understand that any block diagram herein represents a conceptual diagram of an illustrative system embodying the principles of exemplary embodiments of the inventive concept. Similarly, it will be understood that arbitrary flow diagrams, flowcharts, state transition diagrams, pseudocode, etc., represent various processes that can be substantially represented in a non-transitory computer-readable medium and executed by a computer and / or processor, regardless of whether such a computer or processor is explicitly shown. Detailed Implementation
[0018] Specific exemplary embodiments of the inventive concept are illustrated by way of example in the accompanying drawings and will be described in detail below. However, it should be understood that the exemplary embodiments of the inventive concept are not limited to the specific forms disclosed herein; rather, the exemplary embodiments of the inventive concept encompass all modifications, equivalents, and / or substitutions falling within the scope of the inventive concept.
[0019] The terms “comprising,” “including,” or any other variations thereof are intended to cover non-exclusive inclusion, that is, a system, apparatus, non-transitory computer-readable medium, and / or method that includes a list of components and / or operations, including not only those components and / or operations but also other components and / or operations not expressly listed or inherent to such setup and / or apparatus and / or method. In other words, without further limitations, one or more elements in a system and / or apparatus that begin with “comprising…” do not exclude the presence of other elements and / or additional elements in the system or method.
[0020] In the following detailed description of exemplary embodiments of the inventive concept, reference is made to the accompanying drawings, which form a part of this disclosure, in which specific exemplary embodiments in which the inventive concept can be practiced are illustrated by way of illustration. These embodiments are described in sufficient detail to enable those skilled in the art to practice the inventive concept; however, it should be understood that other exemplary embodiments may be utilized and changes may be made to the exemplary embodiments without departing from the scope of the inventive concept. Therefore, the following description should not be considered limiting.
[0021] In some example embodiments, storage device 105 may refer to any portable SSD, such as TLC SSD, QLC SSD, and / or any higher-level multi-tier SSD. In some example embodiments, storage device 105 may refer to a programmable logic controller (PLC), but the example embodiments are not limited thereto.
[0022] Figure 1a An environment for writing data to a storage device is shown, based on some example embodiments of the concept according to the present invention.
[0023] exist Figure 1a In this example, the environment includes at least one host device 101, at least one interface 103, and / or at least one storage device 105, etc., but the example embodiment is not limited thereto, and may include, for example, more or fewer components. The host device 101 may be a computer, laptop computer, mobile device, embedded device, and / or any other computing device and / or electronic device. The host device 101 is connected to the storage device 105 via the interface 103. The interface 103 may be wired communication, but is not limited thereto, and may, for example, be a wireless communication interface, etc.
[0024] In some example embodiments, storage device 105 is a NAND-based device, but is not limited thereto. A NAND-based device may be a portable SSD, but is not limited thereto. Storage device 105 includes an input / output (I / O) interface 107 (e.g., a communication interface, etc.), at least one memory 109, and / or at least one processor (e.g., processing circuitry, a controller, etc.) 111. For example, storage device 105 may include a storage controller, etc. I / O interface 107 is configured to receive at least one I / O (also referred to as an I / O request, etc.) from host device 101. I / O (and / or I / O request) may be a write request (also referred to as a data write request), but is not limited thereto. I / O interface 107 may employ wired communication protocols / methods, but is not limited thereto.
[0025] Memory 109 is communicatively coupled to processor 111 of storage device 105. Memory 109 also stores controller-executable instructions (e.g., computer-readable instructions, computer-executable instructions, program code, code, etc.) that enable processor 111 to execute computer-readable instructions, such as for writing data to storage device 105. Memory 109 includes, but is not limited to, memory drives, removable disk drives, etc.
[0026] Processor 111 includes at least one data processor for writing data to storage device 105, but is not limited thereto. Processor 111 may include dedicated processing units, such as integrated system (bus) controllers, memory management control units, floating-point units, graphics processing units, digital signal processing units, etc. According to some example embodiments, processor 111, etc., may be implemented as processing circuitry. Processing circuitry may include: hardware or hardware circuitry containing logic circuitry; hardware / software combinations, such as processors executing software and / or firmware; or combinations thereof. For example, processing circuitry may more specifically include, but is not limited to, central processing units (CPUs), arithmetic logic units (ALUs), digital signal processors, microcomputers, field-programmable gate arrays (FPGAs), system-on-a-chip (SoCs), programmable logic units, microprocessors, application-specific integrated circuits (ASICs), etc., but is not limited thereto.
[0027] The following section will describe the operations used to write data to storage device 105. For the purpose of... Figures 1b to 1d The description of the operation for writing data to storage device 105 assumes a page size of 16K, but the example embodiment is not limited to this, and the page size may be greater than or less than 16K.
[0028] Prior to the operation of writing data to storage device 105, during the manufacturing process of storage device 105, as follows: Figure 1bThe table shown is stored and / or loaded (e.g., pre-stored and / or pre-loaded) in the memory 109 of storage device 105, but the example embodiment is not limited thereto, and the table may be loaded, for example, after the manufacture of storage device 105. Specifically, the table is part of the software flashed into storage device 105 during the assembly and / or manufacture of storage device 105, but is not limited thereto, and the table may be loaded and / or flashed into storage device 105 at a later time (e.g., firmware and / or ROM of flash storage device 105, etc.). The table includes, but is not limited to, multiple parity mode values, multiple write amplification factor (WAF) thresholds (also referred to as storage device WAF thresholds) associated with the multiple parity mode values, and / or multiple fill factor thresholds (also referred to as storage device fill factor thresholds) associated with the multiple parity mode values of storage device 105, etc. Parity pattern values refer to a combination of the number of data units (e.g., the number of data units per page of memory) and are associated with and / or correspond to parity size (e.g., the number of parity bits used to correct stored data), or in other words, parity pattern values include information about the number of data units per page of memory associated with the parity pattern value and the number of parity bits associated with the parity pattern value. A WAF threshold (e.g., a WAF value) is a value representing the amount of data written by storage device 105 relative to the amount of data written by host device 101. A fill factor of storage device 105 (e.g., a fill factor value) refers to the amount of valid data written by host device 101 relative to the total data storage capacity of storage device 105. In this table, together with the associated WAF threshold and / or fill factor threshold, multiple parity pattern values are arranged in logical order according to and / or based on bitrate (also referred to as parity bitrate). Each of the multiple parity pattern values is associated with a WAF threshold among multiple WAF thresholds and a fill factor threshold among multiple fill factor thresholds. Parity check mode values can be sorted in ascending order of bitrate in this table, but are not limited to this. For example, see reference... Figure 1b The table shown indicates that when the parity mode value is parity 1, the bitrate is the minimum bitrate (e.g., the minimum parity bitrate). This means that the maximum and / or highest parity size (e.g., the number of parity bits, etc.) is allocated to the data unit. Figure 1c As shown, but the example embodiments are not limited thereto. For example, Figure 1c The diagram shows 3 mapping (or data) units per physical page with a low padding factor. Furthermore, when the parity mode value is parity N, the bitrate is the highest bitrate (e.g., highest parity bitrate, etc.), which means that the minimum and / or lowest parity size (e.g., the number of parity bits, etc.) is allocated to the data units. Figure 1dAs shown, but the example embodiments are not limited thereto. For example, Figure 1d It shows 4 mapping (or data) units per physical page with a high fill factor.
[0029] In some example embodiments, storage device 105 receives a write request from host device 101, or the write request is an internal garbage collection write operation. Upon receiving a write request, storage device 105 determines and / or identifies a WAF value (also referred to as device WAF value) and / or a fill factor value (also referred to as device fill factor value) based on the write request and / or storage device status information (e.g., the performance history of storage device 105). The WAF value and fill factor value are metrics of storage device 105 evaluated by storage device 105 based on storage device 105 status (e.g., the state of storage device 105, etc.). Storage device 105 status may be based on the current workload of storage device 105. The current workload is derived as follows: the number of writes (e.g., write operations) (also referred to as host writes) issued by host device 101 to storage device 105 and the number of writes (also referred to as NAND writes, etc.) performed by storage device 105, where WAF = NAND writes / host writes. Then, storage device 105 obtains the current parity mode value stored in storage device 105 based on the calculated current workload. For example, storage device 105 obtains... Figure 1b Parity 1 is shown in the table, but is not limited to it. Storage device 105 determines a WAF threshold (also referred to as storage device WAF threshold) and / or fill factor threshold (also referred to as storage device fill factor threshold) associated with the current parity mode value. For example, storage device 105 determines Figure 1b The table shown includes, but is not limited to, WAF 1 and fill factor 1 associated with parity 1. Storage device 105 determines whether to change the current parity mode value to a higher parity mode value among multiple parity mode values based on a WAF threshold, a WAF value, a fill factor threshold, and / or a fill factor value. Specifically, storage device 105 compares the WAF value to a WAF threshold and the fill factor value to a fill factor threshold. For example, storage device 105 compares the WAF value to WAF 1 and the fill factor value to fill factor 1, but is not limited to this. Storage device 105 checks whether the WAF threshold is greater than the WAF value and / or checks whether the fill factor threshold is greater than the fill factor value. For example, storage device 105 checks whether WAF 1 is greater than the WAF value and / or checks whether fill factor 1 is greater than the fill factor value, etc.
[0030] Storage device 105 writes data to its storage area based on a determined result. Specifically, if the WAF threshold is greater than the WAF value and / or the fill factor threshold is greater than the fill factor value, storage device 105 writes data to its storage area based on the current parity mode value. For example, if WAF 1 is greater than the WAF value and fill factor 1 is greater than the fill factor value, storage device 105 writes data to its storage area based on the current parity mode value, in which case the current parity mode value is parity 1, but is not limited thereto. To write to the storage area based on the parity mode value, storage device 105 modifies the page format of at least one block based on the current parity mode value. Then, storage device 105 allocates at least one block in storage device 105 for data storage based on the page format and writes data to the allocated at least one block of storage device 105. The page format can be defined during the erase operation of storage device 105, but the example embodiment is not limited thereto. The page format can be maintained in the storage block information (SBInfo) of storage device 105, but is not limited to this. All pages in a block of storage device 105 can use the same page format, but is not limited to this.
[0031] If the WAF threshold is less than or equal to the WAF value and the fill factor threshold is less than or equal to the fill factor value, then storage device 105 changes the current parity mode value to the next parity mode value (e.g., a higher parity mode value, etc.) among a plurality of parity mode values stored in a table in storage device 105, but the example embodiment is not limited thereto. For example, if WAF 1 is less than or equal to the WAF value and fill factor 1 is less than or equal to the device fill factor value, then storage device 105 changes the current parity mode value (which is parity 1) to parity 2, etc. Storage device 105 determines the WAF threshold and fill factor threshold of storage device 105 associated with the current parity mode value (which is parity 2). For example, storage device 105 determines that the WAF threshold and fill factor threshold associated with parity 2 are WAF 2 and fill factor 2, respectively. Then, storage device 105 changes the WAF threshold to the next WAF threshold (e.g., WAF 2) and changes the fill factor threshold to the next fill factor threshold (e.g., fill factor 2), etc. For example, storage device 105 changes the WAF threshold from WAF 1 to WAF 2, and changes the fill factor threshold from fill factor 1 to fill factor 2, etc. Storage device 105 compares the WAF value with the WAF threshold and the fill factor value with the fill factor threshold. For example, storage device 105 compares the WAF value with WAF 2 and the fill factor value with fill factor 2. Storage device 105 checks whether the WAF threshold is greater than the WAF value and whether the fill factor threshold is greater than the fill factor value. For example, storage device 105 checks whether WAF 2 is greater than the WAF value and whether the fill factor 2 is greater than the fill factor value, etc.
[0032] If the WAF threshold is greater than the WAF value and the fill factor threshold is greater than the fill factor value, then storage device 105 writes data to its storage area based on the current parity mode value. For example, if WAF 2 is greater than the WAF value and fill factor 2 is greater than the fill factor value, then storage device 105 writes data to its storage area based on the current parity mode value, in which case the current parity mode value is parity 2. To write to the storage area based on the current parity mode value, storage device 105 may modify the page format of at least one block based on the current parity mode value. Then, storage device 105 allocates at least one block in storage device 105 for data storage based on the page format and writes the data to the allocated at least one block in storage device 105.
[0033] If the WAF threshold is less than or equal to the WAF value and / or the fill factor threshold is less than or equal to the fill factor value, then storage device 105 changes the parity mode value to the next parity mode value among a plurality of parity mode values in a table stored in storage device 105, but the example embodiment is not limited thereto. For example, if WAF 2 is less than or equal to the WAF value and / or if fill factor 2 is less than or equal to the fill factor value, then storage device 105 changes the current parity mode value (which is parity 2) to parity 3, but is not limited thereto. Storage device 105 repeats the above operation: changing the current parity mode value to Figure 1b The table shows the next parity mode value, which becomes the current parity mode; the WAF threshold and fill factor threshold of the storage device associated with the current parity mode value are determined; the WAF threshold is changed to the WAF threshold associated with the current parity mode value, and the fill factor threshold is changed to the fill factor threshold associated with the current parity mode value; the WAF threshold is compared with the WAF value, and the fill factor threshold is compared with the fill factor value; until the WAF threshold is greater than the WAF value and the fill factor threshold is greater than the fill factor value. In one or more example embodiments of the present invention, the method of dynamically selecting the WAF threshold and fill factor threshold based on the parity mode value reduces and / or solves the data retention problem of portable SSDs. That is, by storing data with a higher parity size, the data retention tolerance is higher, and the ability to correct data is higher. In addition, portable SSDs implemented using the method of one or more example embodiments of the present invention are less prone to uncorrectable errors caused by problems related to the inactivity of portable SSDs (e.g., battery voltage leakage and / or temperature changes in portable SSDs).
[0034] Figure 2 Detailed block diagrams of storage devices according to some exemplary embodiments of the present invention are shown.
[0035] In addition to the I / O interface 107 and processor 111 described above, storage device 105 may also include data 201 and / or one or more modules (and / or circuits, devices, etc.) 211, but the example embodiments are not limited thereto. In some example embodiments, data 201 is stored in memory 109 (e.g., within a storage array). Data 201 may include, for example, WAF data 203, fill factor data 205, threshold table data 207, and / or miscellaneous data 209, etc., but is not limited thereto.
[0036] WAF data 203 includes and / or stores the device WAF value of storage device 105. WAF (e.g., WAF value) refers to a value that represents the amount of data written and / or stored by storage device 105 relative to the amount of data written by host device 101.
[0037] The fill factor data 205 includes and / or stores the device fill factor value of storage device 105. The fill factor of storage device 105 (e.g., fill factor value) refers to the amount of valid data written by host device 101 relative to the total storage capacity of storage device 105.
[0038] Threshold table data 207 includes and / or stores tables containing multiple parity pattern values from storage device 105, along with associated and / or corresponding WAF thresholds and / or fill factor thresholds, such as... Figure 1b As shown. During the manufacturing of storage device 105, as... Figure 1b The table shown is stored and / or loaded (e.g., pre-stored and / or pre-loaded) in threshold table data 207 of memory 109, but the example embodiment is not limited thereto. In this table, along with the associated WAF threshold and fill factor threshold, multiple parity pattern values can be arranged in logical order according to and / or based on the parity bitrate (also referred to as bitrate), but are not limited thereto. The parity pattern values can be arranged in ascending order of parity bitrate in the table, but are not limited thereto. The parity pattern values include information about the number of data units per physical page and the number of parity bits corresponding to the parity pattern value (e.g., parity size).
[0039] Miscellaneous data 209 may include data generated by one or more modules 211 (e.g., circuits, devices, etc.) for performing various functions of storage device 105, including at least one of metadata and / or temporary files.
[0040] In some example embodiments, data 201 in memory 109 is processed by one or more modules 211 present within memory 109 of storage device 105, but the example embodiments are not limited thereto, and operations associated with one or more modules 211 may be performed by processor 111, etc. In some example embodiments, one or more modules 211 are implemented as dedicated hardware units (e.g., circuitry or processing circuitry). As described herein, any electronic device and / or part thereof according to any example embodiment may include one or more instances of processing circuitry (e.g., hardware including logic circuitry), hardware / software combinations (e.g., processors executing software), or any combination thereof, which may be included in or / or implemented by such one or more instances. For example, processing circuitry may more specifically include, but is not limited to, a central processing unit (CPU), an arithmetic logic unit (ALU), a graphics processing unit (GPU), an application processor (AP), a digital signal processor (DSP), a microcomputer, a field-programmable gate array (FPGA), a programmable logic unit, a microprocessor, an application-specific integrated circuit (ASIC), a neural network processing unit (NPU), an electronic control unit (ECU), an image signal processor (ISP), etc. In some example embodiments, the processing circuitry may include: a non-transitory computer-readable storage device (e.g., a memory), such as a dynamic random access memory (DRAM) device, storing a program of computer-readable instructions; and a processor (e.g., a CPU) configured to execute the program of computer-readable instructions to implement some or all of the functions and / or methods and / or any part thereof performed by any device, system, module, unit, controller, circuit, architecture and / or portions thereof according to any example embodiment.
[0041] In some example embodiments, one or more modules 211 are communicatively coupled to processor 111 for performing one or more functions of storage device 105, but the example embodiments are not limited thereto. When configured with the functions defined in one or more example embodiments of the inventive concept, one or more modules 211 become dedicated hardware, dedicated storage devices, and / or dedicated computing devices. In some example embodiments, processor 111 (also referred to as a controller) includes one or more modules 211.
[0042] In some example embodiments, one or more modules 211 include, but are not limited to, transceiver 213, determination module 215, comparison module 217, and / or modification module 219, etc., but for example, one or more modules may be combined, omitted, etc. One or more modules 211 may also include miscellaneous modules 221 for performing various miscellaneous functions of the storage device 105. According to some example embodiments, one or more of the processor 111, transceiver 213, determination module 215, comparison module 217, and / or modification module 219, etc., may be implemented as processing circuitry.
[0043] In some example embodiments, transceiver 213 is configured to receive write requests from host device 101 and / or receive internal garbage collection write requests.
[0044] In some example embodiments, the determination module 215 is configured to determine the WAF value and / or fill factor value associated with storage device 105 upon receiving a write request from host device 101. The WAF value and fill factor value are metrics of storage device 105 evaluated by storage device 105 based on storage device 105 status, etc. WAF (e.g., WAF value) refers to a value representing the amount of data written by storage device 105 compared to the amount of data written by host device 101. The fill factor of storage device 105 (e.g., fill factor value) refers to the amount of effective data written by host device 101 compared to the total storage capacity of storage device 105. The status of storage device 105 may be based on the current workload of storage device 105. The current workload is derived as follows: the number of writes (e.g., write operations) (also referred to as host writes) issued by host device 101 to storage device 105 and the number of writes (also referred to as NAND writes, etc.) performed by storage device 105, where WAF = NAND writes / host writes. The determining module 215 is configured to acquire and / or identify the current parity mode value stored in the storage device 105. The current parity mode value may be stored in miscellaneous data 209 of the memory 109, but is not limited thereto. The determining module 215 is configured to determine and / or identify the WAF threshold and / or fill factor threshold of the storage device 105 associated with the current parity mode value. If the WAF threshold is less than or equal to the WAF value and the fill factor threshold is less than or equal to the fill factor value, the determining module 215 is configured to change the current parity mode value to the next parity mode value among a plurality of parity mode values in a table stored in the storage device 105 (this operation is also referred to as operation 1), which then becomes the current parity mode, but the example embodiment is not limited thereto. During the manufacture of the storage device 105, it can be... Figure 1bThe table shown is pre-stored or pre-loaded in the memory 109 of storage device 105, but the example embodiment is not limited thereto. Parity mode values may be arranged in the table in ascending order of bitrate (e.g., parity bitrate, etc.), but are not limited thereto. Multiple parity mode values are arranged in the table in logical order (e.g., sequential order, etc.) according to parity bitrate, along with associated WAF thresholds and fill factor thresholds, but the example embodiment is not limited thereto. Parity mode values include information about the number of data units per physical page and the number of parity bits corresponding to the parity mode value (e.g., parity size). Determination module 215 is configured to determine, based on the WAF threshold, WAF value, fill factor threshold, and fill factor value, whether to change the current parity mode value to a higher (or next) parity mode value among multiple parity mode values. Specifically, determination module 215 is configured to select from, such as Figure 1b The table shown determines the next WAF threshold and / or the next fill factor threshold associated with the current parity mode value for storage device 105 (this operation is also referred to as operation 2), but the example embodiment is not limited thereto. Determination module 215 is configured to change the WAF threshold to the next WAF threshold and the fill factor threshold to the next fill factor threshold (this operation is also referred to as operation 3), etc. Operations 1, 2, and / or 3 are repeated until the WAF threshold is greater than the WAF value and the fill factor threshold is greater than the fill factor value, but the example embodiment is not limited thereto.
[0045] In some example embodiments, the comparison module 217 is configured to compare the WAF value with the WAF threshold and the fill factor value with the fill factor threshold.
[0046] In some example embodiments, the modification module 219 is configured to write data to the storage area of the storage device 105 based on the current parity mode value if both the WAF threshold and the fill factor threshold are greater than the fill factor value. Specifically, the modification module 219 is configured to modify the page format of at least one block of the storage device 105 based on the current parity mode value. The modification module 219 is configured to allocate at least one block in the storage device 105 for data storage based on this page format. The modification module 219 is configured to write data to the allocated at least one block of the storage device 105.
[0047] Figure 3a and Figure 3b A flowchart illustrating a method for writing data to a storage device according to some example embodiments of the present invention is shown.
[0048] like Figure 3a and Figure 3bAs shown, methods 300a and 300b include operations for writing data to a storage device. Methods 300a and 300b can be described in the general context of dedicated computer-executable instructions executed by at least one processor and / or processing circuitry. Typically, computer-executable instructions can include routines, programs, objects, components, data structures, procedures, units, and / or functions that, when executed by at least one processor and / or processing circuitry included in a computing device, perform specific functions and / or implement specific abstract data types.
[0049] The order in which the operations of methods 300a and 300b are described is not intended to be limiting, and the method can be implemented by combining and / or rearranging any number of the described method operations in any order. Furthermore, individual operations can be removed from these methods without departing from the scope of the exemplary embodiments of the inventive concept described herein. Moreover, the method can be implemented using hardware and / or a combination of hardware executing software and / or firmware, etc.
[0050] In operation 301, upon receiving a write request, the determination module 215 (e.g., processing circuitry) of storage device 105 determines the WAF value and / or fill factor value associated with storage device 105. The write request is received from host device 101 by transceiver 213 of storage device 105, and / or is an internal garbage collection write request.
[0051] In operation 303, the determination module 215 of storage device 105 obtains the parity check mode value stored in storage device 105, or in other words, the current parity check mode value of storage device 105.
[0052] In operation 305, the determination module 215 of storage device 105 determines the WAF threshold and fill factor threshold of storage device 105 associated with the parity mode value (e.g., the current parity mode value, etc.).
[0053] In operation 307, the determination module 215 of storage device 105 determines whether to change the current parity mode value to a higher (or next) parity mode value among a plurality of parity mode values based on the WAF threshold, WAF value, fill factor threshold, and fill factor value.
[0054] In operation 309, the modification module 219 (e.g., processing circuitry) of storage device 105 writes data to the storage area of the storage device based on the determined result.
[0055] The following describes the operations related to determining whether to change the current parity mode value to a higher (or next) parity mode value among a plurality of parity mode values, based on the WAF threshold, WAF value, fill factor threshold, and fill factor value.
[0056] In operation 311, the comparison module 217 of storage device 105 compares the WAF value with the WAF threshold and the fill factor value with the fill factor threshold.
[0057] In operation 313, the comparison module 217 of storage device 105 checks whether the WAF threshold is greater than the WAF value and whether the fill factor threshold is greater than the fill factor value.
[0058] If the WAF threshold is less than or equal to the WAF value and / or the fill factor threshold is less than or equal to the fill factor value, then operations 313 to 317 are performed until the WAF threshold is greater than the WAF value and the fill factor threshold is greater than the fill factor value.
[0059] In operation 315, the determining module 215 of storage device 105 changes the current parity mode value to the next parity mode value (e.g., a higher parity mode value) from a table stored in storage device 105. In other words, the next parity mode value becomes the current parity mode value. The parity mode values are arranged in ascending order of parity code rate in the table, such as... Figure 1b As shown, but the example embodiment is not limited thereto. Multiple parity pattern values are arranged in the table in logical order according to the parity bitrate, together with the associated WAF threshold and padding factor threshold, but are not limited thereto. The parity pattern value refers to a combination of the number of data units (e.g., the number of mapping units per page, etc.) and the corresponding parity size (e.g., the corresponding parity bit size or parity bits, etc.).
[0060] In operation 317, the determination module 215 of storage device 105 determines the WAF threshold and fill factor threshold of storage device 105 associated with the current parity mode value.
[0061] In operation 319, if the WAF threshold is greater than the WAF value and the fill factor threshold is greater than the fill factor value, the modification module 219 of storage device 105 writes data to the storage area of storage device 105 based on the parity mode value (e.g., the current parity mode).
[0062] Figure 4 A comparison example of parity mode values of a conventional storage device and parity mode values of at least one example embodiment of the inventive concept is shown.
[0063] exist Figure 4In conventional storage devices, the number of mapped units per page is static (e.g., cannot be changed). For example, for SLC SSDs, the number of mapped units per page is 8. For MLC SSDs, the number of mapped units per page is 16. For TLC SSDs, the number of mapped units per page is 24. For QLC SSDs, the number of mapped units per page is 32. However, in at least one example embodiment of the storage device 105, the number of mapped units per page is dynamic, and the number of mapped units per page changes based on the parity mode value, as referenced above. Figures 1a to 1d This is an example, but not limited to, the following: For example, for SLC SSDs, the possible number of mapping units per page is one of 4, 5, 6, 7, and 8, etc. For MLC SSDs, the possible number of mapping units per page is one of 8, 10, 12, 14, and 16, etc. For TLC SSDs, the possible number of mapping units per page is one of 12, 15, 18, 21, and 24, etc. For QLCSSDs, the possible number of mapping units per page is one of 16, 20, 24, 28, and 32, etc. In the above examples, it is assumed that the page size is 16K, but the example embodiments are not limited to this.
[0064] The following are some example usage scenarios of some exemplary embodiments of the present invention.
[0065] Consider scenario 1, where the blocks of storage device 105 are clean, for example, no data is stored in storage device 105, and the parity mode value is parity 1 (see reference). Figure 5a (Operation 501 in the above). In this case, when storage device 105 receives a write request from host device 101, storage device 105 modifies the page format of at least one block based on a parity mode value (which may be, for example, parity 3), allocates at least one block for data storage, and writes data to at least one block in storage device 105. During this phase, it is considered that the free block count has fallen below the garbage collection (GC) threshold (see reference 501). Figure 5a In operation 503), or in other words, determining whether a trigger has been reached. When a trigger has been reached, for example, if the free block count has fallen below a GC threshold, causing an internal GC write request and / or causing an internal GC write operation to be performed, storage device 105 determines the (current) WAF value and the (current) fill factor value, and changes the current parity mode value (e.g., parity 3) to a table (e.g., ...). Figure 1b The next parity mode value (as shown) is used until the WAF threshold is greater than the WAF value and the fill factor threshold is greater than the fill factor value (see reference). Figure 5aThe example embodiment is not limited to operation 505. Storage device 105 modifies the page format of at least one block based on a parity mode value (which may be one of parity 4, ..., parity N), allocates at least one block for data storage, and writes data to the at least one block allocated in storage device 105 (see reference 505). Figure 5a Operation 507 in the middle, etc.
[0066] Consider scenario 2, where one or more blocks of storage device 105 are used. For example, storage device 105 has already stored data in its blocks, and the parity mode value is parity 5 (see reference). Figure 5b Operation 511 in the example is not limited thereto. It is assumed that the WAF value and fill factor value are much smaller than and / or lower than the WAF threshold and fill factor threshold of storage device 105 (see reference 511). Figure 5b Operation 513 in the table). When storage device 105 receives a write request and / or an internal garbage collection write request and / or trigger, etc. from host device 101, storage device 105 changes the current parity mode value (e.g., parity 5) to a table (e.g., ...). Figure 1b The next parity mode value (as shown) is used until the WAF threshold is greater than the WAF value and the fill factor threshold is greater than the fill factor value (see reference). Figure 5b The example embodiment is not limited to operation 515. In this case, the parity mode value can be changed from parity 5 to parity 1. Storage device 105 modifies the page format of at least one block based on the parity mode value (e.g., parity 1), allocates at least one block for data storage, and writes data to the at least one block allocated in storage device 105 (see reference 515). Figure 5b Operations in 517, etc.
[0067] Consider scenario 3, where one or more blocks of storage device 105 are clean, for example, no data is stored in storage device 105, and the current parity mode value is parity 1 (see reference). Figure 5c Operation 521 in the example, etc. In this case, when storage device 105 receives a write request from host device 101, storage device 105 modifies the page format of at least one block based on the parity mode value (which may be, for example, parity 1), allocates at least one block for data storage, and writes data to the at least one block allocated in storage device 105, but the example embodiment is not limited thereto. At this stage, it is considered that the free block count has dropped to the garbage collection threshold (refer to...). Figure 5cThe operation in section 523 is as follows. When an internal garbage collection (GC) write request and / or trigger occurs, storage device 105 determines the (current) WAF value and the (current) fill factor value, and may maintain the parity mode value at parity 1 (refer to) based on whether the WAF threshold is greater than the (current) WAF value and the fill factor threshold is greater than the (current) fill factor value. Figure 5c Operations 525 and 527 in the example are described, but the example embodiment is not limited thereto. Storage device 105 modifies the page format of at least one block based on a parity mode value (parity 1), allocates at least one block for data storage, and writes data to the at least one block allocated in storage device 105 (see reference 525 and 527). Figure 5c Operation 527 in the document). Furthermore, if storage device 105 receives write requests (and / or workloads) from host device 101 that significantly increase the WAF threshold (see reference 527). Figure 5c In operation 529), storage device 105 determines the (current) WAF value and the (current) fill factor value, and based on whether the WAF threshold is greater than the (current) WAF value and the fill factor threshold is greater than the (current) fill factor value, changes the parity mode value from parity 1 to the next parity mode value (see reference). Figure 5c Operation 531 in the example is described, but the example embodiment is not limited thereto. Storage device 105 modifies the page format of at least one block based on parity mode values, allocates at least one block for data storage, and writes data to the at least one block allocated in storage device 105 (see reference 531). Figure 5c Operation 533 in the middle).
[0068] Some technical advantages of one or more exemplary embodiments of the present invention are given below.
[0069] At least one example embodiment of the present invention can improve and / or solve the data retention problem of portable SSDs by dynamically selecting WAF thresholds and / or fill factor thresholds based on parity mode values.
[0070] SSDs implemented using the method of at least one example embodiment of the inventive concept are less prone to uncorrectable errors caused by battery voltage leakage and / or temperature variations in the SSD.
[0071] The operations can be implemented as methods, systems, and / or articles of art using programming and / or engineering techniques to be executed on hardware, or a combination of hardware and software, and / or firmware. The operations can be implemented as code (e.g., computer-readable instructions, etc.) maintained in a non-transitory computer-readable medium, wherein a processor can read and execute the code from the non-transitory computer-readable medium. A processor is at least one of a microprocessor or a processor capable of processing and / or executing code. Non-transitory computer-readable media can include media such as magnetic storage media (e.g., hard disk drives, floppy disks, magnetic tapes, etc.), optical storage (CD-ROMs, DVDs, Blu-ray discs, optical discs, etc.), volatile and / or non-volatile storage devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, flash memory, firmware, programmable logic, etc.). Furthermore, non-transitory computer-readable media includes all computer-readable media except for transient signals. The code implementing the operations can also be implemented in hardware logic (e.g., integrated circuit chips, programmable gate arrays (PGAs), application-specific integrated circuits (ASICs), etc.).
[0072] Unless otherwise expressly specified, the terms “including,” “comprise,” “have,” and variations thereof mean “including but not limited to.”
[0073] Unless otherwise explicitly stated, the enumerated list of items does not imply that any or all items are mutually exclusive.
[0074] Unless otherwise expressly specified, the terms “a” and “the” mean “one or more”.
[0075] The description of some example embodiments having several components communicating with each other does not imply the need for and / or requirement of all such components. Rather, a variety of optional components are described to illustrate a variety of possible example embodiments of the inventive concept.
[0076] When a single device or item is described herein, it is apparent that multiple devices / items (whether they cooperate or not) may be used in place of the single device / item. Similarly, in cases where multiple devices or items (whether they cooperate or not) are described herein, it is apparent that a single device / item may be used in place of these multiple devices or items, or that a different number of devices / items may be used in place of the number of devices or items shown. The functionality and / or features of a device may be alternatively embodied by one or more other devices not explicitly described as having such functionality / features. Therefore, other exemplary embodiments of the inventive concept need not include the device itself.
[0077] Figure 3a and Figure 3bThe operations illustrated demonstrate that certain events occur in a particular order. In alternative example embodiments, certain operations may be performed, modified, and / or deleted in a different order. Furthermore, operations can be added to the logic described above and still conform to one or more of the example embodiments. Additionally, the operations described herein may occur sequentially and / or some operations may be processed in parallel. Furthermore, operations may be performed by a single processing unit (e.g., processing circuitry, processor, processor core, etc.) and / or distributed processing units (e.g., processing circuitry, multiple processors, multiple processor cores, etc.).
[0078] Finally, the language used in this specification has been chosen primarily for readability and instructional purposes, and not for defining or limiting exemplary embodiments of the inventive concept. Therefore, the scope of exemplary embodiments of the inventive concept should not be limited by the specific description, but rather by the claims issued based on this application. Thus, the disclosure of some exemplary embodiments of the inventive concept is intended to illustrate, but not limit, the scope of the inventive concept, which is set forth in the appended claims.
[0079] While various aspects and exemplary embodiments have been disclosed herein, other aspects and exemplary embodiments will be apparent to those skilled in the art. The various aspects and exemplary embodiments disclosed herein are for illustrative purposes and not restrictive, and the true scope is indicated by the appended claims.
Claims
1. A method performed by a storage device for writing data to the storage device, comprising: In response to a write request, determine the write amplification factor (WAF) value and fill factor value associated with the storage device; Obtain the current parity mode value of the storage device; Determine the WAF threshold and fill factor threshold associated with the current parity mode value; Based on the WAF threshold, the WAF value, the fill factor threshold, and the fill factor value, determine whether to change the current parity check mode value to a higher parity check mode value among multiple parity check mode values. as well as Based on the determined results, the data is written to the storage area of the storage device.
2. The method according to claim 1, wherein, The plurality of parity check pattern values are arranged in logical order according to their corresponding parity check code rates; and Each of the plurality of parity check mode values is associated with a corresponding WAF threshold among the plurality of WAF thresholds and a corresponding fill factor threshold among the plurality of fill factor thresholds.
3. The method according to claim 2, wherein, The multiple parity check mode values are arranged in ascending order of parity check code rate in the table.
4. The method according to claim 1, wherein, The current parity mode value includes information about the number of data units per physical page and the number of parity bits corresponding to the parity mode value.
5. The method according to claim 1, wherein, Writing data to the storage area based on the current parity check mode value also includes: Modify the page format of at least one block based on the current parity mode value; Allocate at least one block of the storage device for data storage based on the page format; and Write the data into at least one allocated block.
6. The method according to claim 1, wherein, Determining whether to change the current parity mode value to the higher parity mode value also includes: Determine whether the WAF value is greater than or equal to the WAF threshold; Determine whether the fill factor value is greater than or equal to the fill factor threshold; and In response to the WAF value being greater than or equal to the WAF threshold and / or the fill factor value being greater than or equal to the fill factor threshold, Change the current parity check mode value to the next parity check mode value among the plurality of parity check mode values; and Change the WAF threshold and the fill factor threshold to new WAF threshold and new fill factor threshold associated with the current parity mode value.
7. The method according to claim 1, wherein, The WAF value is a value indicating the amount of data written by the storage device compared to the amount of data written by the host device; and The fill factor value is a value that indicates the amount of valid data stored in the storage device relative to the total storage capacity of the storage device.
8. A storage device, comprising: Processing circuitry; as well as A memory, communicatively coupled to the processing circuitry, wherein the memory is configured to store computer-executable instructions that, when executed, cause the processing circuitry to: In response to a write request, determine the write amplification factor (WAF) value and fill factor value associated with the storage device; Obtain the current parity mode value of the storage device; Determine the WAF threshold and fill factor threshold associated with the current parity mode value; Based on the WAF threshold, the WAF value, the fill factor threshold, and the fill factor value, determine whether to change the current parity check mode value to a higher parity check mode value among multiple parity check mode values; and Based on the determined results, the data is written to the storage area of the storage device.
9. The storage device according to claim 8, wherein, The plurality of parity check pattern values are arranged in logical order according to their corresponding parity check code rates; and Each of the plurality of parity check mode values is associated with a corresponding WAF threshold among the plurality of WAF thresholds and a corresponding fill factor threshold among the plurality of fill factor thresholds.
10. The storage device according to claim 9, wherein, The multiple parity check mode values are arranged in ascending order of parity check code rate in the table.
11. The storage device according to claim 8, wherein, The current parity mode value includes information about the number of data units per physical page and the number of parity bits corresponding to the parity mode value.
12. The storage device according to claim 8, wherein, The processing circuit is also made to: Modify the page format of at least one block based on the current parity mode value; At least one block of the storage device is allocated for data storage based on the page format; as well as Write the data into at least one allocated block.
13. The storage device according to claim 8, wherein, The processing circuit also determines whether to change the current parity mode value to a higher parity mode value by: Determine whether the WAF value is greater than or equal to the WAF threshold; Determine whether the fill factor value is greater than or equal to the fill factor threshold; as well as In response to the WAF value being greater than or equal to the WAF threshold and / or the fill factor value being greater than or equal to the fill factor threshold, Change the current parity check mode value to the next parity check mode value among the plurality of parity check mode values, and Change the WAF threshold and the fill factor threshold to new WAF threshold and new fill factor threshold associated with the current parity mode value.
14. The storage device according to claim 8, wherein, The WAF value is a value indicating the amount of data written by the storage device compared to the amount of data written by the host device; and The fill factor value is a value that indicates the amount of valid data stored in the storage device relative to the total storage capacity of the storage device.
15. A storage device, comprising: Processing circuitry; as well as The memory is configured to store computer-executable instructions that, when executed, cause the processing circuitry to: Receive write request, The triggering condition is determined based on the write request. In response to the occurrence of the triggering condition, Determine the write amplification factor (WAF) and fill factor values associated with the storage device. The WAF threshold and fill factor threshold are determined based on the current parity mode value of the storage device. Based on the WAF threshold, the WAF value, the fill factor threshold, and the fill factor value, determine whether to change the current parity mode value to a higher parity mode value among multiple parity mode values, and Based on the determined results, the data is written to the storage area of the storage device.
16. The storage device according to claim 15, wherein, The processing circuit is also made to: In response to the WAF threshold being less than or equal to the WAF value and / or the fill factor threshold being less than or equal to the fill factor value, the current parity mode value is increased to the next parity mode value.
17. The storage device according to claim 16, wherein, The processing circuit is also made to: Determine the new WAF threshold and new fill factor threshold corresponding to the increased parity mode value; and In response to the new WAF threshold being greater than the WAF value and the new fill factor threshold being greater than the fill factor value, the data is written to the storage area using a mapping unit value corresponding to the increased parity mode value.
18. The storage device according to claim 15, wherein, The processing circuit is also made to: When the WAF threshold is greater than the WAF value and the fill factor threshold is greater than the fill factor value, the current parity check mode value is maintained; as well as The data is written into the storage area using the mapping unit value corresponding to the current parity mode value.
19. The storage device according to claim 15, wherein, The current parity mode value includes information about the number of data units per physical page and the number of parity bits corresponding to the current parity mode value.
20. The storage device according to claim 15, wherein, The processing circuit is also made to: Modify the page format of at least one block in the storage area based on the current parity mode value; The at least one block is allocated to the data based on the page format; as well as Write the data into at least one allocated block.