QLC ssd writing method and device, computer device, and storage medium
By setting up a data buffer and suspending blocking units in the QLC SSD, data can be read first, enabling concurrent programming of multiple units. This solves the problem of excessive memory requirements caused by the complex write process of QLC SSDs and reduces the cost of SSDs.
Patent Information
- Application Number
- CN202310450225.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2023-04-24
- Publication Date
- 2025-11-04
- Estimated Expiration
- 2043-04-24
AI Technical Summary
The complex write process of QLC SSDs leads to excessive memory requirements, increasing the cost of SSDs, which is difficult to optimize with existing technologies.
By setting up a QLC WL data buffer, blocking independently concurrent operation units are suspended, data is read first and processed in the buffer, enabling concurrent programming of multiple units.
By optimizing the QLC write process, the memory cost of the SSD was reduced while ensuring performance.
Smart Images

Figure CN116312699B_ABST
Abstract
Description
Technical Field
[0001] This invention relates to solid-state drives, and more specifically to QLC SSD writing methods, apparatus, computer devices, and storage media. Background Technology
[0002] SSDs (Solid State Drives) have been widely used in various applications and are gradually replacing traditional HDDs (Hard Disk Drives) in the PC market, providing users with a better experience in terms of reliability and performance.
[0003] With the evolution of NAND technology, it has progressed from the early 1 bit / cell to 2 bit / cell, 3 bit / cell, and 4 bit / cell, with its data storage capacity becoming larger and larger. However, due to the increase in the number of bits per cell, its programming model has become more and more complex.
[0004] Typical NAND flash memory such as SLC / MLC / TLC only requires one programming session to complete data storage, after which it can be read normally. However, QLC, due to its complex NAND cell voltage distribution, requires multiple programming sessions to truly complete data storage for subsequent retrieval. Furthermore, to eliminate the influence between adjacent wordlines, these multiple programming sessions need to be interleaved among multiple wordlines, resulting in a large number of wordlines in an unstable state. Since these wordlines cannot be read, their data needs to be cached in other, correctly readable locations. If caching is required in the SOC's memory, it would lead to significant memory overhead, which is not feasible in cost-constrained consumer SSD scenarios.
[0005] Therefore, it is necessary to design a new method to optimize the QLC write process, thereby reducing the memory cost of SSDs. Summary of the Invention
[0006] The purpose of this invention is to overcome the shortcomings of the prior art and provide a QLC SSD writing method, apparatus, computer equipment, and storage medium.
[0007] To achieve the above objectives, the present invention adopts the following technical solution: a QLC SSD writing method, comprising:
[0008] Set the QLC WL data buffer;
[0009] When the SSD is in QLC write mode, if the cell in which the source data being read is located is blocked, a command is generated to suspend the operation of the cell in which the source data is located.
[0010] Use the QLC WL data buffer to read the corresponding data;
[0011] When the operation of the unit in which the source data is located is suspended, resume the suspended operation of the unit in which the source data is located.
[0012] Write the read source data into the QLC physical block of the destination unit that can be operated independently and concurrently.
[0013] The further technical solution is as follows: When the SSD is in QLC writing, if the independently concurrently operable unit where the source data is located is blocked, a command is generated to suspend the independently concurrently operable unit where the source data is located, including:
[0014] Initiate QLC write operation;
[0015] Select the cell / physical block that can be independently and concurrently operated on for QLC writing;
[0016] Select the cell / physical block where the source data for QLC writing is located and can be operated on independently and concurrently;
[0017] Allocate the corresponding buffer from the QLC WL data buffer;
[0018] Determine whether the buffer is occupied;
[0019] If the buffer is occupied, then the process of requesting a corresponding buffer from the QLC WL data buffer is executed;
[0020] If the buffer is not occupied, determine whether the unit where the source data is located, which can be operated independently and concurrently, is in a QLC programming or erasing state.
[0021] If the cell in which the source data is located is in an independently concurrent operation state, then generate a command to suspend the operation of the cell in which the source data is located.
[0022] The operation of the unit where the source data is located, which can be operated on independently and concurrently, is in a suspended state.
[0023] The further technical solution is as follows: the step of reading the corresponding data using the QLC WL data buffer includes:
[0024] The buffer is used to read the corresponding data from the cell where the source data is located, which can be operated on independently and concurrently.
[0025] The further technical solution is as follows: after writing the read source data into the QLC physical block of the destination unit that can be operated independently and concurrently, it also includes:
[0026] Release the buffer.
[0027] A further technical solution is as follows: after releasing the buffer, it further includes:
[0028] When the SSD is in QLC writing mode, if the cell where the source data is located is blocked, a command is generated to suspend the operation of the cell where the source data is located.
[0029] The present invention also provides a QLC SSD writing device, comprising:
[0030] The setting unit is used to set the QLC WL data buffer;
[0031] The suspend unit is used to generate a command to suspend the independent concurrent operation of the source data when the SSD is in QLC writing and the independent concurrent operation of the source data is blocked.
[0032] The reading unit is used to read corresponding data using the QLC WL data buffer;
[0033] The recovery unit is used to restore the suspended operations of the unit where the source data is located when the operation of the unit that can be operated on independently and concurrently is in a suspended state.
[0034] The write unit is used to write the read source data into the QLC physical block of the destination unit, which can be operated independently and concurrently.
[0035] The further technical solution is as follows: the suspending unit includes:
[0036] The startup subunit is used to initiate QLC write operations;
[0037] The first selection sub-unit is used to select the cell / physical block that can be independently and concurrently operated on for the purpose of QLC writing;
[0038] The second selection subunit is used to select the cell / physical block where the source data to be written by QLC is located and can be operated on independently and concurrently;
[0039] The request subunit is used to request a corresponding buffer from the QLC WL data buffer;
[0040] The first judgment subunit is used to determine whether the buffer is occupied; if the buffer is occupied, the corresponding buffer is requested from the QLC WL data buffer.
[0041] The second judgment subunit is used to determine whether the unit where the source data is located, which can be operated independently and concurrently, is in a QLC programming or erasure state if the buffer is not occupied.
[0042] The command to suspend the operation of the cell where the source data is located if the cell that can be operated independently and concurrently is in a QLC programming or erasure state is generated.
[0043] The marker subunit is used to mark that the operation of the unit where the source data is located, which can be operated on independently and concurrently, is in a suspended state.
[0044] The further technical solution is as follows: the reading unit is used to read corresponding data from the unit where the source data is located, which can be operated independently and concurrently, using the buffer.
[0045] The present invention also provides a computer device, the computer device including a memory and a processor, the memory storing a computer program, and the processor executing the computer program to implement the above-described method.
[0046] The present invention also provides a storage medium storing a computer program that, when executed by a processor, implements the above-described method.
[0047] The beneficial effects of this invention compared with the prior art are as follows: By setting up a QLC WL data buffer for data writing, when the buffer is occupied and the unit where the source data is located needs to perform a time-consuming operation, the operation is suspended, the source data is read first, and then the operation of the suspended unit can continue, thereby optimizing the QLC writing process and reducing the memory cost of SSD.
[0048] The present invention will be further described below with reference to the accompanying drawings and specific embodiments. Attached Figure Description
[0049] To more clearly illustrate the technical solutions of the embodiments of the present invention, the drawings used in the following description of the embodiments will be briefly introduced. Obviously, the drawings described below are some embodiments of the present invention. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.
[0050] Figure 1 This is a schematic diagram of the NAND structure provided in an embodiment of the present invention;
[0051] Figure 2 A schematic diagram of QLC programming provided for existing technologies;
[0052] Figure 3A schematic diagram illustrating time-division multiplexing of a single QLC WL buffer for existing technologies;
[0053] Figure 4 A flowchart illustrating the QLC SSD writing method provided in an embodiment of the present invention;
[0054] Figure 5 A schematic diagram of a sub-process of the QLC SSD writing method provided in an embodiment of the present invention;
[0055] Figure 6 This is a schematic diagram of QLC programming provided in an embodiment of the present invention;
[0056] Figure 7 A schematic block diagram of a QLC SSD writing device provided in an embodiment of the present invention;
[0057] Figure 8 A schematic block diagram of the suspend unit of the QLC SSD writing device provided in an embodiment of the present invention;
[0058] Figure 9 A schematic block diagram of a computer device provided for an embodiment of the present invention. Detailed Implementation
[0059] The technical solutions of the embodiments of the present invention will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some, not all, of the embodiments of the present invention. Based on the embodiments of the present invention, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of the present invention.
[0060] It should be understood that, when used in this specification and the appended claims, the terms "comprising" and "including" indicate the presence of the described features, integrals, steps, operations, elements and / or components, but do not exclude the presence or addition of one or more other features, integrals, steps, operations, elements, components and / or collections thereof.
[0061] It should also be understood that the terminology used in this specification is for the purpose of describing particular embodiments only and is not intended to limit the invention. As used in this specification and the appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms unless the context clearly indicates otherwise.
[0062] It should also be further understood that the term "and / or" as used in this specification and the appended claims refers to any combination of one or more of the associated listed items and all possible combinations, and includes such combinations.
[0063] Please seeFigure 4 , Figure 4 This is a flowchart illustrating the QLC SSD writing method provided in this embodiment of the invention. This QLC SSD writing method is applied to solid-state drives. When the DIE containing the source data to be read is undergoing time-consuming programming / erasing operations, a suspension command can be initiated first to prioritize reading the source data, and then the operation on the suspended DIE can continue. The method in this embodiment can achieve concurrent programming of multiple DIEs in a scenario with a single QLC WL buffer, thereby ensuring performance.
[0064] Please see Figure 1 A typical NAND flash memory is composed of the following: DIE is a cell that can be operated independently and concurrently; Block is a cell that can be erased independently, and the entire Block must be erased before the next write after the data at each physical location is written; WL is Wordline, i.e., programming cell, which includes one or more Pages; Pages within the same physical block must be programmed in sequence: 0, 1, 2, 3...; Page is the read cell 303.
[0065] DIE's physical blocks can work in different modes. Taking QLC as an example, it can work in SLC mode, where each WL contains one Page, and only one programming is needed to complete the data solidification for subsequent reading and writing; it can also work in QLC mode, where each WL contains four Pages, and two programmings are needed to complete the data solidification, i.e., 2Pass. When only 1Pass programming is completed, the data cannot be read.
[0066] like Figure 2 As shown, taking an SSD containing 8 internal DIEs as an example, for ease of explanation, the maximum number of WLs that have not completed 2-pass programming is 5: The SSD internally writes data to the QLC physical block; to ensure concurrency, each DIE has one QLC physical block for data writing; each QLC physical block is programmed according to the WL order: WL 0, WL 1, WL 2, WL 3; each WL needs to be programmed twice, and the WLs are interleaved according to certain rules: [Example code would be inserted here] Figure 2For example, programming is performed sequentially for WL0 Pass 1, WL 1Pass1, WL2Pass 1, WL 3Pass 1, WL 4Pass 1, WL 0Pass 2, WL 5Pass 1, WL 1Pass2... For any Pass programming, the corresponding WL data, i.e., the data of 4 Pages, needs to be transferred to the corresponding DIE for programming; and before the Pass 2 programming of any WL is completed, its data cannot be correctly read from the corresponding QLC physical block WL / Page. Based on this, when writing to the QLC in this SSD, there are a maximum of 5*4*8=160 physical pages, corresponding to several MB of data. If all this data is buffered in memory, such a large memory overhead will greatly increase the demand for on-chip memory of the SOC, thereby greatly increasing the cost of the SOC / SSD. In this embodiment, in low-cost SSDs, data is typically written to other 1-pass programming physical blocks such as SLC first, and then during the data migration to QLC, only a small amount of write buffer, such as a WL Buffer, is retained. Data is read in turn and transferred to the DIE / physical block to be programmed. In order to improve the efficiency of the rotation, the WL Buffer can be released after the transfer is completed, and it can be used for data loading and writing to other DIEs.
[0067] Figure 2 This is a flowchart illustrating the QLC SSD writing method provided in an embodiment of the present invention. Figure 2 As shown, the method includes the following steps S110 to S160.
[0068] S110, Set the QLC WL data buffer.
[0069] In this embodiment, the QLC WL data buffer is a buffer used for writing QLC data.
[0070] S120. When the SSD is in QLC write mode, if the cell where the source data is located is blocked, a command is generated to suspend the operation of the cell where the source data is located.
[0071] In one embodiment, please refer to Figure 5 The above-mentioned step S120 may include steps S121 to S128.
[0072] S121. Start QLC write operation;
[0073] S122. Select the cell that can be independently and concurrently operated on for QLC writing.
[0074] In this embodiment, the target DIE / physical block for QLC writing is marked as DIE X / Block M.
[0075] S123. Select the cell / physical block where the source data to be written by QLC is located and can be operated on independently and concurrently.
[0076] In this embodiment, the cell / physical block in which the source data written by QLC is located and can be operated independently and concurrently is designated as DIE Y / Block N.
[0077] S124. Request a corresponding buffer from the QLC WL data buffer;
[0078] S125. Determine whether the buffer is occupied;
[0079] If the buffer is occupied, then step S124 is executed;
[0080] S126. If the buffer is not occupied, determine whether the unit where the source data is located, which can be operated independently and concurrently, is in QLC programming or erasure state.
[0081] S127. If the cell in which the source data is located is in an independently concurrent operation state, then generate a command to suspend the operation of the cell in which the source data is located.
[0082] S128. The operation of the unit where the source data is located, which can be operated on independently and concurrently, is in a suspended state.
[0083] Specifically, a programming / erase suspension instruction is initiated for DIE Y, and the operation of the unit where the source data is located, which can be operated on independently and concurrently, is suspended.
[0084] S130. Use the QLC WL data buffer to read the corresponding data.
[0085] In this embodiment, the buffer is used to read the corresponding data from the cell where the source data is located, which can be operated on independently and concurrently.
[0086] S140. When the operation of the unit in which the source data is located is suspended, resume the suspended operation of the unit in which the source data is located.
[0087] S150. Write the read source data into the QLC physical block of the destination unit that can be operated independently and concurrently;
[0088] S160, Release the buffer and execute step S120.
[0089] Specifically, resume the suspended operation of the source DIE; transfer the QLC_WL_BUF data to the destination DIE X and Block M; release QLC_WL_BUF; while the destination DIE X and Block M are in background programming, the software continues to process QLC writes to other DIEs; jump to step S120 until all QLC data writing is completed.
[0090] Please see Figure 3 The programming blocking problem of time-division multiplexing a single QLC WL buffer in existing technologies is as follows: At a certain moment, QLC writing is required, and both DIE 0 and 1 are in the IDLE state; QLC writing is performed on DIE 0, with its data source on the physical block of DIE 1; using the QLC WL buffer, data is read from DIE 1; after the data is read, it is transferred to the physical block of DIE 0 to be programmed; the QLC WL buffer is released, and DIE 0 enters QLC programming mode; QLC data is written to DIE 1, with its data source on the physical block of DIE 0; DIE 0 is in the QLC programming state, which takes a long time; DIE 1 cannot obtain the source data, so its programming cannot be initiated; waiting for DIE 0's QLC programming to complete is required before the source data can be read from DIE 0; using the QLC WL buffer, data is read from DIE 0; the data is transferred to DIE 1, and QLC programming is initiated. During this process, the programming of DIE 1 must wait for the programming of DIE 0 to be completed before it can be initiated. Therefore, it cannot achieve parallel operation between DIEs, which leads to a serious degradation of SSD performance.
[0091] Please see Figure 6 The QLC programming method in this embodiment is as follows: At a certain moment, QLC writing is required, and both DIE 0 and 1 are in the IDLE state; QLC writing is performed on DIE 0, with its data source on the physical block of DIE 1; using the QLC WL buffer, data is read from DIE 1; after the data reading is completed, it is transferred to the physical block to be programmed on DIE 0; the QLC WL buffer is released, and DIE 0 enters QLC programming mode; QLC data is written to DIE 1, with its data source on the physical block of DIE 0; DIE 0 is in the QLC programming state, which takes a long time; a programming suspension operation is initiated on DIE 0 to pause QLC programming; using the QLC WL buffer, data is read from DIE 0; a programming continuation operation is initiated on DIE 0; the data is transferred to DIE 1, and the QLC WL buffer is released; QLC programming of DIE 1 is initiated.
[0092] In this embodiment, when the DIE containing the source data to be read is undergoing a time-consuming programming / erasing operation, a suspension instruction can be initiated first to prioritize reading the source data, and then the operation of the suspended DIE can continue. This allows for concurrent programming of multiple DIEs within a single QLC WL buffer, thus ensuring performance.
[0093] The QLC SSD writing method described above optimizes the QLC writing process by setting up a QLC WL data buffer for data writing. When the buffer is occupied and the source data is located in a unit that can be operated independently and concurrently, the operation is suspended, the source data is read first, and then the operation of the suspended unit that can be operated independently and concurrently continues. This reduces the memory cost of the SSD.
[0094] Figure 7 This is a schematic block diagram of a QLC SSD writing device 300 provided in an embodiment of the present invention. Figure 7 As shown, corresponding to the above QLC SSD writing method, the present invention also provides a QLC SSD writing device 300. This QLC SSD writing device 300 includes a unit for performing the above-described QLC SSD writing method, and the device can be configured in an SSD. Specifically, please refer to... Figure 5 The QLC SSD writing device 300 includes a setting unit 301, a suspending unit 302, a reading unit 303, a restoring unit 304, a writing unit 305, and a releasing unit 306.
[0095] The setting unit 301 is used to set the QLC WL data buffer; the suspending unit 302 is used to generate a command to suspend the independently concurrently operable unit of the source data when the SSD is in QLC write mode and the independently concurrently operable unit of the source data is blocked; the reading unit 303 is used to read the corresponding data using the QLC WL data buffer; the resuming unit 304 is used to resume the suspended operation of the independently concurrently operable unit of the source data when the operation of the independently concurrently operable unit of the source data is in a suspended state; the writing unit 305 is used to write the read source data into the QLC physical block of the destination independently concurrently operable unit; the releasing unit 306 is used to release the buffer and execute the command to suspend the independently concurrently operable unit of the source data when the SSD is in QLC write mode and the independently concurrently operable unit of the source data is blocked.
[0096] In one embodiment, such as Figure 8As shown, the suspending unit 302 includes a startup subunit 3021, a first selection subunit 3022, a second selection subunit 3023, an application subunit 3024, a first judgment subunit 3025, a second judgment subunit 3026, a generation subunit 3027, and a marking subunit 3028.
[0097] A startup subunit 3021 is used to initiate a QLC write operation; a first selection subunit 3022 is used to select a cell / physical block that can be independently and concurrently operated on as the destination of the QLC write; a second selection subunit 3023 is used to select a cell / physical block that can be independently and concurrently operated on as the source data of the QLC write; an allocation subunit 3024 is used to allocate a corresponding buffer from the QLC WL data buffer; a first judgment subunit 3025 is used to determine whether the buffer is occupied; if the buffer is occupied, then the operation from the QLC is executed. The WL data buffer allocates a corresponding buffer; the second judgment subunit 3026 is used to determine whether the unit where the source data is located, which can be operated independently and concurrently, is in a QLC programming or erasing state if the buffer is not occupied; the generation subunit 3027 is used to generate a command to suspend the operation of the unit where the source data is located, which can be operated independently and concurrently, if the unit where the source data is located, is in a QLC programming or erasing state; the marking subunit 3028 is used to mark the operation of the unit where the source data is located, which can be operated independently and concurrently, as being in a suspended state.
[0098] In one embodiment, the reading unit 303 is used to read corresponding data from the unit where the source data is located, which can be operated independently and concurrently, using the buffer.
[0099] It should be noted that those skilled in the art can clearly understand that the specific implementation process of the QLC SSD writing device 300 and each unit can be referred to the corresponding description in the foregoing method embodiments. For the sake of convenience and brevity, it will not be repeated here.
[0100] The aforementioned QLC SSD writing device 300 can be implemented as a computer program, which can, for example... Figure 9 It runs on the computer device shown.
[0101] Please see Figure 9 , Figure 9 This is a schematic block diagram of a computer device 500 provided in an embodiment of this application. The computer device 500 can be a terminal or a server. The terminal can be an electronic device with communication functions, such as a smartphone, tablet, laptop, desktop computer, personal digital assistant, or wearable device. The server can be a standalone server or a server cluster composed of multiple servers. Both the terminal and the server need to be equipped with an SSD.
[0102] See Figure 9 The computer device 500 includes a processor 502, a memory, and a network interface 505 connected via a system bus 501. The memory may include a non-volatile storage medium 503 and internal memory 504.
[0103] The non-volatile storage medium 503 may store an operating system 5031 and a computer program 5032. The computer program 5032 includes program instructions that, when executed, cause the processor 502 to perform a QLC SSD writing method.
[0104] The processor 502 provides computing and control capabilities to support the operation of the entire computer device 500.
[0105] The internal memory 504 provides an environment for the execution of the computer program 5032 in the non-volatile storage medium 503. When the computer program 5032 is executed by the processor 502, the processor 502 can execute a QLC SSD writing method.
[0106] This network interface 505 is used for network communication with other devices. Those skilled in the art will understand that... Figure 9 The structure shown is merely a block diagram of a portion of the structure related to the present application and does not constitute a limitation on the computer device 500 to which the present application is applied. The specific computer device 500 may include more or fewer components than those shown in the figure, or combine certain components, or have different component arrangements.
[0107] The processor 502 is used to run a computer program 5032 stored in the memory to perform the following steps:
[0108] Set up a QLC WL data buffer; when the SSD is in QLC write mode, if the independently concurrently operable unit where the source data is located is blocked, generate a command to suspend the operation of the independently concurrently operable unit where the source data is located; use the QLC WL data buffer to read the corresponding data; when the operation of the independently concurrently operable unit where the source data is located is in a suspended state, resume the suspended operation of the independently concurrently operable unit where the source data is located; write the read source data into the QLC physical block of the destination independently concurrently operable unit.
[0109] In one embodiment, when the processor 502 implements the step of generating a command to suspend the independently concurrent operation of the source data when the source data being read is blocked during QLC writing of the SSD, the specific implementation steps are as follows:
[0110] Initiate a QLC write operation; select the target cell / physical block for independent concurrent operation of the QLC write; select the cell / physical block where the source data of the QLC write is located; request a corresponding buffer from the QLC WL data buffer; determine whether the buffer is occupied; if the buffer is occupied, execute the request for the corresponding buffer from the QLC WL data buffer; if the buffer is not occupied, determine whether the cell where the source data is located is in a QLC programming or erasing state; if the cell where the source data is located is in a QLC programming or erasing state, generate a command to suspend the operation of the cell where the source data is located; mark the operation of the cell where the source data is located as suspended.
[0111] In one embodiment, when implementing the step of reading corresponding data using the QLC WL data buffer, the processor 502 specifically implements the following steps:
[0112] The buffer is used to read the corresponding data from the cell where the source data is located, which can be operated on independently and concurrently.
[0113] In one embodiment, after implementing the step of writing the read source data to the QLC physical block of the destination independently concurrently operable unit, the processor 502 further implements the following steps:
[0114] Release the buffer.
[0115] In one embodiment, after implementing the step of releasing the buffer, the processor 502 further implements the following steps:
[0116] When the SSD is in QLC writing mode, if the cell where the source data is located is blocked, a command is generated to suspend the operation of the cell where the source data is located.
[0117] It should be understood that in the embodiments of this application, the processor 502 may be a central processing unit (CPU), or it may be other general-purpose processors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. The general-purpose processor may be a microprocessor or any conventional processor.
[0118] It will be understood by those skilled in the art that all or part of the processes in the methods of the above embodiments can be implemented by a computer program instructing related hardware. The computer program includes program instructions and can be stored in a storage medium, which is a computer-readable storage medium. The program instructions are executed by at least one processor in the computer system to implement the process steps of the embodiments of the above methods.
[0119] Therefore, the present invention also provides a storage medium. This storage medium can be a computer-readable storage medium. The storage medium stores a computer program, wherein when executed by a processor, the computer program causes the processor to perform the following steps:
[0120] Set up a QLC WL data buffer; when the SSD is in QLC write mode, if the independently concurrently operable unit where the source data is located is blocked, generate a command to suspend the operation of the independently concurrently operable unit where the source data is located; use the QLC WL data buffer to read the corresponding data; when the operation of the independently concurrently operable unit where the source data is located is in a suspended state, resume the suspended operation of the independently concurrently operable unit where the source data is located; write the read source data into the QLC physical block of the destination independently concurrently operable unit.
[0121] In one embodiment, when the processor executes the computer program to implement the step of generating a command to suspend the operation of the independently concurrently operable unit where the source data is located when the SSD is in QLC writing, if the unit where the source data is located is blocked, the specific implementation is as follows:
[0122] Initiate a QLC write operation; select the target cell / physical block for independent concurrent operation of the QLC write; select the cell / physical block where the source data of the QLC write is located; request a corresponding buffer from the QLC WL data buffer; determine whether the buffer is occupied; if the buffer is occupied, execute the request for the corresponding buffer from the QLC WL data buffer; if the buffer is not occupied, determine whether the cell where the source data is located is in a QLC programming or erasing state; if the cell where the source data is located is in a QLC programming or erasing state, generate a command to suspend the operation of the cell where the source data is located; mark the operation of the cell where the source data is located as suspended.
[0123] In one embodiment, when the processor executes the computer program to implement the step of reading corresponding data using the QLC WL data buffer, it specifically implements the following steps:
[0124] The buffer is used to read the corresponding data from the cell where the source data is located, which can be operated on independently and concurrently.
[0125] In one embodiment, after executing the computer program to implement the step of writing the read source data into the QLC physical block of the destination independently concurrently operable unit, the processor further implements the following steps:
[0126] Release the buffer.
[0127] In one embodiment, after executing the computer program to perform the step of releasing the buffer, the processor further performs the following steps:
[0128] When the SSD is in QLC writing mode, if the cell where the source data is located is blocked, a command is generated to suspend the operation of the cell where the source data is located.
[0129] The storage medium can be any computer-readable storage medium capable of storing program code, such as a USB flash drive, portable hard drive, read-only memory (ROM), magnetic disk, or optical disk.
[0130] Those skilled in the art will recognize that the units and algorithm steps of the various examples described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, computer software, or a combination of both. To clearly illustrate the interchangeability of hardware and software, the components and steps of the various examples have been generally described in terms of functionality in the foregoing description. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementations should not be considered beyond the scope of this invention.
[0131] In the several embodiments provided by this invention, it should be understood that the disclosed apparatus and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative. For example, the division of each unit is merely a logical functional division, and there may be other division methods in actual implementation. For example, multiple units or components may be combined or integrated into another system, or some features may be ignored or not executed.
[0132] The steps in the method of this invention can be adjusted, merged, or reduced in order according to actual needs. The units in the device of this invention can be merged, divided, or reduced according to actual needs. Furthermore, the functional units in the various embodiments of this invention can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit.
[0133] If the integrated unit is implemented as a software functional unit and sold or used as an independent product, it can be stored in a storage medium. Based on this understanding, the technical solution of the present invention, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, a terminal, or a network device, etc.) to execute all or part of the steps of the methods described in the various embodiments of the present invention.
[0134] The above description is merely a specific embodiment of the present invention, but the scope of protection of the present invention is not limited thereto. Any person skilled in the art can easily conceive of various equivalent modifications or substitutions within the technical scope disclosed in the present invention, and these modifications or substitutions should all be covered within the scope of protection of the present invention. Therefore, the scope of protection of the present invention should be determined by the scope of the claims.
Claims
1. A QLC SSD writing method, characterized in that, include: Set the QLC WL data buffer; When the SSD is in QLC write mode, if the cell in which the source data being read is located is blocked, a command is generated to suspend the operation of the cell in which the source data is located. Use the QLC WL data buffer to read the corresponding data; When the operation of the unit in which the source data is located is suspended, resume the suspended operation of the unit in which the source data is located. Write the read source data into the QLC physical block of the destination unit that can be operated independently and concurrently; When the SSD is in QLC write mode, if the independently concurrently operable unit containing the source data being read is blocked, a command is generated to suspend the independently concurrently operable unit containing the source data, including: Initiate QLC write operation; Select the cell / physical block that can be independently and concurrently operated on for QLC writing; Select the cell / physical block where the source data for QLC writing is located and can be operated on independently and concurrently; Allocate the corresponding buffer from the QLC WL data buffer; Determine whether the buffer is occupied; If the buffer is occupied, then the process of requesting a corresponding buffer from the QLC WL data buffer is executed; If the buffer is not occupied, determine whether the unit where the source data is located, which can be operated independently and concurrently, is in a QLC programming or erasing state. If the cell in which the source data is located is in an independently concurrent operation state, then generate a command to suspend the operation of the cell in which the source data is located. The operation of the unit where the source data is located, which can be operated on independently and concurrently, is in a suspended state.
2. The QLC SSD writing method according to claim 1, characterized in that, The step of reading the corresponding data using the QLC WL data buffer includes: The buffer is used to read the corresponding data from the cell where the source data is located, which can be operated on independently and concurrently.
3. The QLC SSD writing method according to claim 1, characterized in that, After writing the read source data into the QLC physical block of the destination unit that can be operated independently and concurrently, the method further includes: Release the buffer.
4. The QLC SSD writing method according to claim 3, characterized in that, After releasing the buffer, the process further includes: When the SSD is in QLC writing, if the cell where the source data is located is blocked, a command is generated to suspend the operation of the cell where the source data is located.
5. A QLC SSD writing device, characterized in that, include The setting unit is used to set the QLC WL data buffer; The suspend unit is used to generate a command to suspend the independent concurrent operation of the source data when the SSD is in QLC writing and the independent concurrent operation of the source data is blocked. The reading unit is used to read corresponding data using the QLC WL data buffer; The recovery unit is used to restore the suspended operations of the unit where the source data is located when the operation of the unit that can be operated on independently and concurrently is in a suspended state. The write unit is used to write the read source data into the QLC physical block of the destination unit, which can be operated independently and concurrently. The suspension unit includes: The startup subunit is used to initiate QLC write operations; The first selection sub-unit is used to select the cell / physical block that can be independently and concurrently operated on for the purpose of QLC writing; The second selection subunit is used to select the cell / physical block where the source data to be written by QLC is located and can be operated on independently and concurrently; The request subunit is used to request a corresponding buffer from the QLC WL data buffer; The first judgment subunit is used to determine whether the buffer is occupied; if the buffer is occupied, then the following is executed: Allocate the corresponding buffer from the QLC WL data buffer; The second judgment subunit is used to determine whether the unit where the source data is located, which can be operated independently and concurrently, is in a QLC programming or erasure state if the buffer is not occupied. The command to suspend the operation of the cell where the source data is located if the cell that can be operated independently and concurrently is in a QLC programming or erasure state is generated. The marker subunit is used to mark that the operation of the unit where the source data is located, which can be operated on independently and concurrently, is in a suspended state.
6. The QLC SSD writing device according to claim 5, characterized in that, The reading unit is used to read corresponding data from the unit where the source data is located, which can be operated on independently and concurrently, using the buffer.
7. A computer device, characterized in that, The computer device includes a memory and a processor, wherein the memory stores a computer program, and the processor executes the computer program to implement the method as described in any one of claims 1 to 4.
8. A storage medium, characterized in that, The storage medium stores a computer program that, when executed by a processor, implements the method as described in any one of claims 1 to 4.
Citation Information
Patent Citations
Data storage device and operating method thereof
CN110413222A
Method and device for improving SSD writing performance, computer equipment and storage medium
CN112559385A