Method, device and storage medium for improving data reliability in solid state hard disk

Through the programming progress detection and timing processing of migrated data in solid-state drives, the data to be supplemented is determined and migrated to the four-layer unit flash memory, the problem of reduced data writing performance and reliability of QLC particles in solid-state drives is solved, and the complete programming and storage efficiency of data is achieved.

CN119668526BActive Publication Date: 2025-04-25ZHEJIANG DAHUA TECH CO LTD

Patent Information

Application Number
CN202510189020.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2025-02-20
Publication Date
2025-04-25
Estimated Expiration
2045-02-20

AI Technical Summary

Technical Problem

Due to the need for multiple data programming in solid-state drives, QLC particles cannot cache unstable data, which reduces data writing performance and reliability.

Method used

By performing programming progress detection on the migration data migrating from single-layer unit flash memory to four-layer unit flash memory, it is determined whether the current programming progress meets the complete programming progress. If it is not satisfied, a timing process is performed to obtain the programming waiting time. If the programming wait time is greater than the preset time threshold, determine the data to be supplemented and migrate it to the four-layer unit flash memory.

Benefits of technology

It realizes complete data programming, ensures the integrity and storage efficiency of data in solid-state drives, and improves the performance and reliability of the solid-state drive storage system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119668526B_ABST
    Figure CN119668526B_ABST
Patent Text Reader

Abstract

The present application discloses a method, device and storage medium for improving data reliability in a solid-state hard disk. The method for improving data reliability in a solid-state hard disk includes: performing programming progress detection on migration data from a single-layer unit flash memory to a four-layer unit flash memory in a solid-state hard disk to obtain the current programming progress of the migration data; in response to the current programming progress not satisfying the complete programming progress of the migration data, timing processing is performed on the current programming progress to obtain the programming waiting time; in response to the programming waiting time being greater than a preset time threshold, determining the data to be supplemented according to the current programming progress of the migration data and the complete programming progress of the migration data; and migrating the data to be supplemented to the four-layer unit flash memory. The above scheme can improve the data reliability in a solid-state hard disk.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present application relates to the technical field of solid-state hard disks, and in particular to a method, device, and storage medium for improving data reliability in a solid-state hard disk. Background Art

[0002] Solid State Disk (Solid State Drive, SSD for short), also known as solid-state drive, is a hard disk made of a solid-state electronic storage chip array.

[0003] Flash memory-based solid-state drives use Flash memory chips as storage media, and depending on the type of flash memory particles, the most common particles on solid-state drives are SLC (Single-Level Cell), MLC (Multi-Level Cell), TLC (Trinary-Level Cell) and QLC (Quad-Level Cell), with R&D costs and service life decreasing in turn.

[0004] Generally, when writing data, solid-state drives that use QLC particles will first write the data to the SLC physical block with higher speed and durability. After the SLC space is consumed, the system will move the data on the SLC physical block to the QLC physical block. This can provide faster write speeds and extend the service life of the QLC flash memory.

[0005] However, QLC particles usually require multiple data programming to complete data storage, resulting in the inability of QLC solid-state drives to cache unstable data, reducing QLC's data writing performance and data reliability. Summary of the invention

[0006] The present application at least provides a method, apparatus, device and computer-readable storage medium for improving data reliability in a solid state drive.

[0007] In a first aspect, the present application provides a method for improving data reliability in a solid-state drive, comprising: performing programming progress detection on migration data from the single-layer unit flash memory to the four-layer unit flash memory in the solid-state drive to obtain a current programming progress of the migration data; in response to the current programming progress not satisfying the complete programming progress of the migration data, performing timing processing on the current programming progress to obtain a programming waiting time; in response to the programming waiting time being greater than a preset time threshold, determining data to be supplemented based on the current programming progress of the migration data and the complete programming progress of the migration data; and migrating the data to be supplemented to the four-layer unit flash memory.

[0008] In one embodiment, determining the data to be supplemented based on the current programming progress of the migration data and the complete programming progress of the migration data includes: determining the current storage page information corresponding to the current programming progress based on the storage page layout information corresponding to the solid-state drive and the current programming information of the current programming progress; selecting a data determination strategy corresponding to the current storage page information; determining the data to be supplemented based on the data determination strategy, the current programming information and the complete programming information of the complete programming progress.

[0009] In one embodiment, the data determination strategy includes a first strategy, and the selecting of the data determination strategy corresponding to the current storage page information includes: in response to the current storage page information representing that the current programming row of the current programming progress is in the four-layer unit flash memory, and the next programming row of the current programming row is in the four-layer unit flash memory, selecting the first strategy; determining the data to be supplemented according to the data determination strategy, the current programming information and the complete programming information of the complete programming progress includes: determining the amount of complete programming data according to the storage page layout information and the complete programming information; determining the amount of data to be supplemented of the data to be supplemented according to the amount of complete programming data and the current programming information.

[0010] In one embodiment, the data determination strategy includes a second strategy, and the selecting of the data determination strategy corresponding to the current storage page information includes:

[0011] In response to the current storage page information indicating that the current programming row of the current programming progress is in the four-layer unit flash memory, and the next programming row of the current programming row is not in the four-layer unit flash memory, the second strategy is selected; the strategy is determined according to the data, the current programming information and the complete programming information of the complete programming progress, and the data to be supplemented is determined, including: determining the current storage page position according to the storage page difference between the current programming row and the next programming row; determining the complete programming data amount according to the current storage page position and the complete programming information; determining the data amount to be supplemented of the data to be supplemented according to the complete programming data amount and the current programming information.

[0012] In one embodiment, the data determination strategy includes a third strategy, and the selecting of the data determination strategy corresponding to the current storage page information includes: in response to the current storage page information representing that the current programming row of the current programming progress is not in the four-layer unit flash memory, selecting the third strategy; determining the data to be supplemented according to the data determination strategy, the current programming information and the complete programming information of the complete programming progress, including: determining the amount of complete programming data according to the current programming information and the complete programming information; determining the amount of data to be supplemented of the data to be supplemented according to the amount of complete programming data and the unit flash memory information where the current programming row is located.

[0013] In one embodiment, the data to be supplemented is determined based on the data determination strategy, the current programming information and the complete programming information of the complete programming progress, including: determining the amount of data to be supplemented of the data to be supplemented based on the data determination strategy, the current programming information and the complete programming information; filling the address information of the migrated data according to the amount of data to be supplemented to obtain the address information of the data to be supplemented.

[0014] In one embodiment, determining the data to be supplemented based on the data determination strategy, the current programming information and the complete programming information of the complete programming progress includes: determining the amount of data to be supplemented of the data to be supplemented based on the data determination strategy, the current programming information and the complete programming information; applying for a cache space that matches the amount of data to be supplemented, and filling the cache space with designated data that is the same as the amount of data to be supplemented to obtain the filled data; performing data programming processing on the filled data to obtain the data to be supplemented.

[0015] In one embodiment, the current programming progress includes a coarse programming progress and a fine programming progress. In response to the current programming progress not satisfying the complete programming progress of the migration data, before timing the current programming progress to obtain the programming waiting time, the method further includes: obtaining the first storage page number corresponding to the coarse programming progress and the second storage page number corresponding to the fine programming progress; in response to the first storage page number and the second storage page number being the same, determining that the current programming progress satisfies the complete programming progress; in response to the first storage page number and the second storage page number being different, determining that the current programming progress does not satisfy the complete programming progress.

[0016] According to a second aspect of the present application, there is provided a device for improving the reliability of data in a solid-state drive, comprising: a detection module for performing programming progress detection on migration data from the single-layer unit flash memory to the four-layer unit flash memory in the solid-state drive to obtain a current programming progress of the migration data; a timing module for performing timing processing on the current programming progress in response to the current programming progress not satisfying the complete programming progress of the migration data to obtain a programming waiting time; a data determination module for determining data to be supplemented according to the current programming progress of the migration data and the complete programming progress of the migration data in response to the programming waiting time being greater than a preset time threshold; and a data migration module for migrating the data to be supplemented to the four-layer unit flash memory.

[0017] A third aspect of the present application provides an electronic device, including a memory and a processor, wherein the processor is used to execute program instructions stored in the memory to implement the above-mentioned method for improving data reliability in a solid state drive.

[0018] A fourth aspect of the present application provides a computer-readable storage medium having program instructions stored thereon, which implement the above-mentioned method for improving data reliability in a solid-state drive when the program instructions are executed by a processor.

[0019] The above scheme detects the programming progress of the migration data from the single-layer unit flash memory to the four-layer unit flash memory in the solid state drive, obtains the current programming progress of the migration data, and then can judge whether the migration data has been completely programmed according to the current programming progress; in response to the current programming progress not meeting the complete programming progress of the migration data, the current programming progress is timed to obtain the programming waiting time, and judges whether the data programming process is interrupted according to the programming waiting time; in response to the programming waiting time being greater than the preset time threshold, it indicates that the data programming process is interrupted, and determines the data to be supplemented according to the current programming progress of the migration data and the complete programming progress of the migration data; and migrates the data to be supplemented to the four-layer unit flash memory. In this way, complete data programming can be achieved, ensuring data integrity and storage efficiency in the solid state drive, while improving the performance and reliability of the solid state drive storage system.

[0020] It is to be understood that the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the present application. BRIEF DESCRIPTION OF THE DRAWINGS

[0021] The drawings herein are incorporated into the specification and constitute a part of the specification. These drawings illustrate embodiments consistent with the present application and are used together with the specification to illustrate the technical solution of the present application.

[0022] Figure 1is a flowchart of an exemplary embodiment of a method for improving data reliability in a solid state drive of the present application;

[0023] Figure 2 This is an exemplary storage page layout division diagram in the method for improving data reliability in a solid state drive of the present application;

[0024] Figure 3 is a block diagram of a device for improving data reliability in a solid state drive according to an exemplary embodiment of the present application;

[0025] Figure 4 It is a structural schematic diagram of an embodiment of the electronic device of the present application;

[0026] Figure 5 It is a structural diagram of an embodiment of a computer-readable storage medium of the present application. DETAILED DESCRIPTION

[0027] The scheme of the embodiment of the present application is described in detail below in conjunction with the drawings of the specification.

[0028] In the following description, for the purpose of explanation rather than limitation, specific details such as specific system structures, interfaces, and technologies are provided to facilitate a thorough understanding of the present application.

[0029] The term "and / or" in this article is only a description of the association relationship of associated objects, indicating that there may be three relationships. For example, A and / or B can represent: A exists alone, A and B exist at the same time, and B exists alone. In addition, the character " / " in this article generally indicates that the objects associated before and after are in an "or" relationship. In addition, "many" in this article means two or more than two. In addition, the term "at least one" in this article means any combination of at least two of any one or more of a plurality of, for example, including at least one of A, B, and C, can mean including any one or more elements selected from the set consisting of A, B, and C.

[0030] For ease of understanding, one of the applicable scenarios of this application is now exemplified. Solid-state drives, also known as SSDs, are one of the most common storage media. The two hardware that have a significant impact on the read and write performance of solid-state drives are the main control chip and flash memory particles in the solid-state drive.

[0031] SSDs based on flash memory particles use flash memory chips as the carrier for storing data, and can store and read data through electrical signals. According to the different types of flash memory particles, single-level cell (SLC), double-level cell (MLC), triple-level cell (TLC) and quad-level cell (QLC) particles are currently common in SSDs. One type of flash memory particles or multiple types of flash memory particles can exist in a SSD.

[0032] For example, for a QLC particle solid-state drive, it can also include at least SLC particles. When writing data, the data will first be written to the SLC physical block with higher read and write speed and durability. As the SLC physical block is used, when the SLC storage space is consumed, the storage system will migrate the data on the SLC physical block to the QLC physical block to achieve writing of the QLC solid-state drive.

[0033] The advantage of this data writing method is that the SLC physical block can provide faster read and write speeds as a cache, while reducing the number of writes on the QLC physical block, thereby extending the service life of the QLC flash memory. In addition, after the QLC storage space in the solid-state drive is consumed, the storage system will also perform data recycling operations to manage unused storage space in the flash memory and erase invalid data, etc., to release available physical blocks for writing new data.

[0034] It should be noted that in order to cope with the problem of high-density storage, the data needs to be programmed twice (coarse programming and fine programming) when writing data to QLC in order to successfully store the data in QLC. Among them, coarse programming refers to: first, a word line (WordLine, WL) in a certain layer is roughly programmed to program the cell to 16 voltage levels slightly lower than the target voltage. The main purpose of this stage is to quickly write data to the flash memory cell, but due to the influence between adjacent cells, the actual written voltage may deviate from the target voltage. Fine programming refers to: after completing the coarse programming of the next word line in the same layer or the corresponding word line in the next layer, return to finely program the previously coarsely programmed WL to accurately program the cell to the final target voltage state. This process can reduce programming interference between adjacent cells and allow more accurate control of the cell voltage level, thereby improving data reliability.

[0035] Therefore, when writing data to QLC, if the complete two-time programming is not completed, the data may not be read later, resulting in reduced data reliability. ‌‌

[0036] See also Figure 1 , Figure 1 This is a flowchart of an exemplary embodiment of a method for improving data reliability in a solid state drive of the present application. Specifically, the method may include the following steps:

[0037] Step S110 , performing programming progress detection on the migration data from the single-layer unit flash memory to the four-layer unit flash memory in the solid state drive to obtain the current programming progress of the migration data.

[0038] Combined with the above examples, the single-layer cell flash memory in this application refers to the SLC in the solid-state drive, and the four-layer cell flash memory refers to QLC. It should be noted that the solid-state drive of this application includes at least single-layer cell flash memory SLC and four-layer cell flash memory QLC. On this basis, the solid-state drive of this application may also include double-layer cell flash memory MLC and / or triple-layer cell flash memory TLC, etc., which are not limited here.

[0039] Specifically, when migrating data from SLC to QLC, the programming progress of the current migration data is detected to obtain the current programming progress of the migration data. It can be understood that the data programming process of QLC includes rough programming (coarse programming) and fine programming (fine programming). Therefore, for each data written to QLC, the programming progress of each batch of data can also be divided into coarse programming progress and fine programming progress. If the migration data written to QLC completes coarse programming and fine programming, it indicates that the migration data has performed a complete secondary programming, that is, it is in a complete programming progress. If the migration data written to QLC has not completed coarse programming and / or fine programming, it indicates that the migration data has not performed a complete secondary programming, that is, it is not in a complete programming progress.

[0040] For example, during data migration from the SLC Cache to the QLC physical block (target block), the data written to the target block is monitored to determine whether the written data has completed two pass programming, that is, whether it satisfies full programming.

[0041] Step S120 , in response to the current programming progress not satisfying the complete programming progress of the migration data, timing processing is performed on the current programming progress to obtain a programming waiting time.

[0042] In conjunction with the above steps, there may be a certain time interval during the data writing process. Therefore, when it is detected that the current programming progress does not meet the complete programming progress of the migrated data, a timer task can be triggered to time the current programming progress, for example, by using a preset timer to detect the time of the current data programming operation to obtain the programming waiting time. The programming waiting time can be used to determine whether the current data programming process is interrupted and ended.

[0043] Step S130 , in response to the programming waiting time being greater than a preset time threshold, determining the data to be supplemented according to the current programming progress of the migration data and the complete programming progress of the migration data.

[0044] In conjunction with the above steps, in response to the programming waiting time being greater than the preset time threshold, that is, the timer has exceeded the preset time and has not received the IO data task, it indicates that the current data programming process is interrupted. Therefore, the interrupt task will be triggered, and the data to be supplemented will be determined according to the current programming progress of the migration data and the complete programming progress that the migration data should have.

[0045] Step S140, migrating the data to be supplemented into the four-layer unit flash memory.

[0046] In summary, after the data to be supplemented is determined, the data to be supplemented can be migrated to the QLC four-layer unit flash memory, thereby completing the data programming and ensuring the integrity of the data.

[0047] It can be seen that the present application detects the programming progress of the migration data from the single-layer unit flash memory to the four-layer unit flash memory in the solid-state drive, obtains the current programming progress of the migration data, and then can judge whether the migration data has been completely programmed according to the current programming progress; in response to the current programming progress not meeting the complete programming progress of the migration data, the current programming progress is timed to obtain the programming waiting time, and judges whether the data programming process is interrupted according to the programming waiting time; in response to the programming waiting time being greater than the preset time threshold, it indicates that the data programming process is interrupted, and determines the data to be supplemented according to the current programming progress of the migration data and the complete programming progress of the migration data; and migrates the data to be supplemented to the four-layer unit flash memory. In this way, complete data programming can be achieved, ensuring data integrity and storage efficiency in the solid-state drive, while improving the performance and reliability of the solid-state drive storage system.

[0048] Based on the above embodiments, the present embodiment of the present application describes the steps of determining the data to be supplemented according to the current programming progress of the migration data and the complete programming progress of the migration data. Specifically, the method of this embodiment includes the following steps:

[0049] Determine the current storage page information corresponding to the current programming progress based on the storage page layout information corresponding to the solid state drive and the current programming information of the current programming progress; select the data determination strategy corresponding to the current storage page information; determine the data to be supplemented based on the data determination strategy, the current programming information and the complete programming information of the complete programming progress.

[0050] It is understandable that a chip in a solid-state drive can include multiple die. Die is the basic unit for executing flash memory commands. Only one read or write command can be performed at the same time for a block in a die. Allowing more dies to work at the same time can improve the parallelism of commands, which will also increase the bandwidth for SSDs. Among them, a die can include multiple storage planes, a storage plane can include multiple storage blocks, and a storage block can include multiple storage pages, and a storage page can also include multiple storage cells. Page is the smallest read and write unit in flash memory, and block is the smallest erase unit.

[0051] Therefore, for each solid-state drive, its storage structure can be obtained, and its corresponding storage page layout information can be obtained. Combining the storage page layout information and the current programming progress, the current storage page information can be determined, which is equivalent to the storage page where the current programming progress is located. The current storage page information may include but is not limited to the position of the current programming progress in the storage page, the type of storage page where the current programming progress is located, etc. In the face of different storage page layout divisions of different solid-state drives, there will be different data determination strategies when determining the data to be supplemented.

[0052] For example, reference may be made to Figure 2 As shown, Figure 2 This is an exemplary storage page layout division diagram in the method of improving data reliability in the solid-state drive of the present application. A portion of the SSD space can be pre-set as SLC Block, and the remaining space can be set as QLC Block. When the host device writes data to the solid-state drive, it is first written to the SLC Block. After an SLC Block is full, continue to reallocate a group of SLC Blocks until all SLC Blocks of the solid-state drive are full, and then the following can be used Figure 2 The storage page layout division form shown is to perform layout division on the QLC Block in the solid state drive, and then switch the data programming mode to achieve the migration and programming of the data in the SLC to the QLC Block. Optionally, if the SLC Block is not full, the QLC Block may not be layout divided.

[0053] After the QLC Block is laid out and divided, the storage page layout information of the solid state drive can be obtained, such as Figure 2 The QLC-Programming Memory Map is shown in the figure. Because the particles of the solid-state drive can support two-pass programming of QLC and one-pass programming of SLC and TLC, when the storage page is laid out, the page in the block will be divided. If there is one page in each WL, it can be divided into SLC Line, if there are three pages in each WL, it can be divided into TLC Line, and if there are four pages in each WL, it can be divided into QLC Line.

[0054] In addition, the QLC-Programming Memory Map can be split into two parts. Similarly, the layout division can be performed according to the method in the above embodiment. The first part includes TLC Line, QLC Line and TLC1 Line, and the second part includes TLC Line, QLC Line, TLC1 Line and SLC Line. In the TLC Line area of ​​the first part and the second part, there can be only one row of TLC Line.

[0055] It should be noted that the application provides Figure 2 The storage page layout information in the solid-state drive shown is only one of the methods that can be implemented in the specific implementation. There may actually be more storage page layout division methods for different solid-state drive products, but the principles are actually the same. For ease of explanation, this application mainly uses Figure 2 This is an example to illustrate the rest.

[0056] Specifically, according to the storage page layout information corresponding to the solid-state drive and the current programming information of the current programming progress, the current storage page information corresponding to the current programming progress can be determined, for example, the current programming progress is in the QLC Line. Different programming progresses (such as QLC Line and TLC Line) are adapted to different data determination strategies. Therefore, the data determination strategy corresponding to the current storage page information is selected; according to the data determination strategy, the current programming information and the complete programming information of the complete programming progress, the data Dummy to be supplemented is determined.

[0057] For example, if the last migration data involved in programming does not meet the requirements for complete programming, the number of the last written data (migration data) will be calculated first, and then the data to be filled in different lines (Dummy data to be filled) will be calculated based on the layout of the pages in the QLC Block. The page Idx and the line Idx of the written storage page index and the line Idx of the written programming row index can be calculated based on the last data in the current rough programming. Combined with the QLC-ProgrammingMemory Map and related index information, the current storage page information of the current programming progress is calculated. Therefore, it is necessary to combine the different programming progress in the actual application scenario and perform corresponding processing.

[0058] Based on the above embodiments, the embodiment of the present application describes the steps of selecting the data determination strategy corresponding to the current storage page information and determining the data to be supplemented according to the data determination strategy, the current programming information and the complete programming information of the complete programming progress. The data determination strategy includes a first strategy. Specifically, the method of this embodiment includes the following steps:

[0059] In response to the current storage page information indicating that the current programming row of the current programming progress is in the four-layer cell flash memory, and the next programming row of the current programming row is in the four-layer cell flash memory, a first strategy is selected; the amount of complete programming data is determined according to the storage page layout information and the complete programming information; and the amount of data to be supplemented of the data to be supplemented is determined according to the amount of complete programming data and the current programming information.

[0060] In combination with the above-mentioned embodiment, if the current programming row of the current storage page information representing the current programming progress is in the four-layer unit flash memory, that is, the current programming progress is in Figure 2 If the QLC Line in the first or second part of the QLC page is shown, and the next programming row of the current programming row is also in the QLC page (the timing of the next programming row is after the current programming row), it is equivalent to that the current programming row is not the last QLC Line in the QLC page.

[0061] Therefore, in the case of such a programming progress, a first strategy may be adopted to determine the data to be supplemented based on the storage page layout information of the QLC and in combination with the current programming information of the current programming progress and the complete programming information of the complete programming progress.

[0062] The complete programming information refers to the relevant information required to complete the programming progress, which may include but is not limited to the total number of storage pages in the current programming row. , the total number of storage pages for the next programming row 、The number of storage pages of the currently programmed QLC Line 、The number of programming times required for each programming of data in QLC , the total number of DBUs (data buffer units) required to program the QLC Line The complete programming data volume can be calculated through the above complete programming information. , in the first strategy, its mathematical expression is:

[0063]

[0064] Current programming information refers to the relevant information that can be obtained based on the current programming progress, which may include but is not limited to: the number of chips required for an InterLeave (Die Cnt) 、The number of currently programmed die And the amount of data filled in the SSD Buffer Among them, InterLeave is a technology for improving the performance of NAND flash memory, allowing parallel operations between different dies in the same channel, thereby maximizing channel utilization. For details, please refer to the description of InterLeave in the prior art, which will not be repeated here.

[0065] Through the above current programming information, the complete programming data can be combined Calculate the amount of data to be supplemented , in the first strategy, its mathematical expression is:

[0066]

[0067] It should be noted that the above data information can be obtained according to relevant configuration information of the solid state drive (such as storage page layout information), and / or according to the current programming progress, and / or obtained through a certain calculation process, which will not be elaborated here.

[0068] Based on the above embodiment, the embodiment of the present application describes the steps of selecting the data determination strategy corresponding to the current storage page information and determining the data to be supplemented according to the data determination strategy, the current programming information and the complete programming information of the complete programming progress. Among them, the data determination strategy includes the second strategy. Specifically, the method of this embodiment includes the following steps:

[0069] In response to the fact that the current programming row of the current programming progress represented by the current storage page information is in the four-layer cell flash memory, and the next programming row of the current programming row is not in the four-layer cell flash memory, the second strategy is selected; the current storage page position is determined according to the storage page difference between the current programming row and the next programming row; the complete programming data amount is determined according to the current storage page position and the complete programming information; and the amount of data to be supplemented of the data to be supplemented is determined according to the complete programming data amount and the current programming information.

[0070] With reference to the foregoing embodiment, the application scenario of the first strategy in the foregoing embodiment is that the current programming row is in a QLC page, and the current programming row is not the last programming row in the QLC page (ie, the next programming row of the current programming row is also in a QLC page).

[0071] This embodiment provides a second strategy, which can be applied when the current programming row is the last QLCLine in a QLC page.

[0072] Specifically, according to the QLC-Programming Memory Map, if the current storage page information represents that the current programming row of the current programming progress is in the QLC of the first part or the second part, and the next programming row of the current programming row is not in the QLC (for example, it exists in the TLC), then it can be known that the current programming row is the last programming row in the QLC page.

[0073] Therefore, the second strategy is selected to determine the data to be supplemented. The process may include: determining the amount of complete programming data according to the current storage page position and complete programming information; for example, if the current programming row is in the last QLC Line, and the storage page position of the next programming row is in the TLC Line, the difference in the number of pages between the QLC Line and the TLC Line can be determined based on the number of pages in the QLC Line and the number of pages in the TLC Line. , combined with the number of pages of the currently programmed QLC Line 、Number of DBUs required for programming QLC Line , calculate the page position of the current programming progress in the QLC Line, that is, the current storage page position , its mathematical expression is:

[0074]

[0075] Then according to the current storage page position and complete programming information , and The amount of complete programming data can be determined , in the second strategy, its mathematical expression is:

[0076]

[0077] Similarly, according to the complete programming data volume combined with the current programming information , as well as , then the amount of data to be supplemented can be obtained , in the second strategy, its mathematical expression is:

[0078]

[0079] Based on the above embodiments, the embodiment of the present application describes the steps of selecting the data determination strategy corresponding to the current storage page information and determining the data to be supplemented according to the data determination strategy, the current programming information and the complete programming information of the complete programming progress. Among them, the data determination strategy includes a third strategy. Specifically, the method of this embodiment includes the following steps:

[0080] In response to the current storage page information indicating that the current programming row of the current programming progress is not in the four-layer unit flash memory, the third strategy is selected; the amount of complete programming data is determined according to the current programming information and the complete programming information; and the amount of data to be supplemented is determined according to the amount of complete programming data and the unit flash memory information where the current programming row is located.

[0081] The above embodiments are described in conjunction with each other. In the above embodiments, two methods are provided for determining the amount of data to be supplemented when the current programming row is at different QLC Line positions.

[0082] This embodiment may also provide a method for determining the amount of data to be supplemented according to the third strategy when the current programming row is in another type of page. Still taking the storage page layout information represented by the QLC-ProgrammingMemory Map in the aforementioned embodiment as an example, if the current programming row represented by the current storage page information in the current programming progress is not in the four-layer cell flash memory (for example, TLC1 Line in TLC programming), then according to the complete programming information , , the total number of data programming storage pages in the QLC Block of the current programming information , calculate the complete programming data volume , in the third strategy, its mathematical expression is:

[0083]

[0084] According to the complete programming data and the unit flash information of the current programming row (for example, if the current programming row is in TLC1 Line, the total number of DBUs required for data programming in TLC Line is obtained ), thereby determining the amount of data to be supplemented , in the third strategy, its mathematical expression is:

[0085]

[0086] Based on the above embodiments, the embodiment of the present application describes the steps of determining the data to be supplemented according to the data determination strategy, the current programming information, and the complete programming information of the complete programming progress. Specifically, the method of this embodiment includes the following steps:

[0087] The amount of data to be supplemented is determined according to the data determination strategy, the current programming information and the complete programming information; and the address information of the migration data is filled according to the amount of data to be supplemented to obtain the address information of the data to be supplemented.

[0088] It should be noted that in the process of data writing and storage, in addition to storing the data itself, it is also necessary to maintain the data address table entries corresponding to the written data. The data address table entries may include LAA entries for logical addresses and PAA entries for physical addresses.

[0089] Specifically, after the amount of data to be supplemented is obtained according to the method provided in the above embodiment, the logical address table entry and the physical address table entry corresponding to the last data (that is, the most recently programmed data) in the current programming progress of the migration data can be filled backward according to the data timing. The number of LAAs and PAAs can be filled with invalid data, for example, to obtain the address information (logical address and physical address) of the data to be supplemented in the data address table entry. Therefore, by maintaining the address information in the data address table entry, the subsequent storage system can determine which data stored in the solid-state drive is invalid based on the address information, thereby skipping the verification operation of these invalid data in the subsequent data reading process, thereby improving the speed and efficiency of data reading.

[0090] Based on the above embodiments, the embodiment of the present application describes the steps of determining the data to be supplemented according to the data determination strategy, the current programming information, and the complete programming information of the complete programming progress. Specifically, the method of this embodiment includes the following steps:

[0091] Determine the amount of data to be supplemented according to the data determination strategy, current programming information and complete programming information; apply for cache space matching the amount of data to be supplemented, and fill the cache space with designated data with the same amount of data to be supplemented to obtain the filled data; perform data programming processing on the filled data to obtain the data to be supplemented.

[0092] In combination with the above-mentioned embodiment, in the data completion process of the present application, in addition to maintaining the address information of the data to be supplemented, it is also necessary to determine the value of the data to be supplemented to achieve complete data programming. Among them, the process of determining the value of the data to be supplemented and the process of maintaining the address information of the data to be supplemented can be performed successively or simultaneously, and the timing of the two processes is not limited here.

[0093] For example, after obtaining the amount of data to be supplemented After that, apply for a buffer space Buffer that matches the amount of data to be supplemented (the amount of data that the Buffer can cache can be greater than, less than or equal to the amount of data to be supplemented, which is not limited here). Then fill the Buffer with random values ​​or specific values ​​of DummyCnt to obtain the filled data.

[0094] Preferably, a specific value (specified data) of the number of DummyCnt may be filled into the Buffer. These specific values ​​may be predefined invalid data values, such as specific values ​​that are all 0 or specific values ​​that are all 1, or may be determined according to a preset data filling programming logic. Compared with filling random values, filling specific values ​​can have a more obvious distinction during the data reading and writing process, and will not mistakenly mistake the invalid data filled with random values ​​for valid data, which can improve the integrity and stability of the data during the migration process. It can also effectively avoid data inconsistencies during Coarse programming and Fine programming, thereby avoiding errors in subsequent data reading, greatly improving the reliability of programming to complete the data.

[0095] Furthermore, the filled data is programmed using QLC's two-time programming technology (Coarse programming and Fine programming) to obtain the data to be supplemented. The data to be supplemented can then be migrated and replaced, thereby achieving complete QLC data programming.

[0096] Through the steps of the above embodiment, it can be ensured that an appropriate number of specific values ​​are filled in the data programming process, so that the data in the storage block is complete and meets the programming requirements. Such a processing flow can ensure the integrity and efficiency of the data, while improving the performance and reliability of the system.

[0097] Based on the above embodiment, the embodiment of the present application describes the steps before timing the current programming progress in response to the current programming progress not meeting the complete programming progress of the migration data and obtaining the programming waiting time. The current programming progress includes a coarse programming progress and a fine programming progress. Specifically, the method of this embodiment includes the following steps:

[0098] Obtain the number of first storage pages corresponding to the coarse programming progress and the number of second storage pages corresponding to the fine programming progress; in response to the first storage page number and the second storage page number being the same, determine that the current programming progress meets the complete programming progress; in response to the first storage page number and the second storage page number being different, determine that the current programming progress does not meet the complete programming progress.

[0099] With reference to the above-mentioned embodiments, in the present application, whether the current programming progress satisfies the complete programming progress can be determined by analyzing whether the written data has completed two programmings.

[0100] For example, it can be to determine the number of first storage pages that have undergone a coarse programming progress and the number of second storage pages that have undergone a fine programming progress during the current data migration process; if the number of first storage pages and the number of second storage pages are the same, it can be determined that the current programming progress meets the complete programming progress; if the number of first storage pages and the number of second storage pages are different, it can be determined that the current programming progress does not meet the complete programming progress.

[0101] To further illustrate, for example, in the structure of QLC NAND, the smallest unit represents a page. For example, 0 represents page0. When data is written, it is written in sequence, for example, from page0 to page5531 (the page with the largest serial number). The data in the page of QLC mode needs to be programmed twice (two pass programming). A variable called program page is maintained here, and the value of program page will increase by 1 every time a page is written. For example: the current coarse programming (one pass) writes to page41, and the current program page is 41+1=42. If fine programming (two pass) writes to page41, the current program page is (65+1)+4*6=90. Its data writing logic is that after the first row (page0-17) is written, coarse programming (page18-41) will be performed, and then coarse programming (page42-65) will be performed. At this time, it is necessary to switch to fine programming. The current fine programming is only for QLC page, and fine programming (page18-41). When the fine programming progress is written to page 41, the full programming progress (two-pass programming) is completed for the first row of data. Similarly, the same judgment method is used for each subsequent programming row.

[0102] In summary, it is equivalent to judging whether the current programming progress meets the complete programming progress. According to the above principle, we can first judge whether the current page mode is QLC, and then, (the current number of programmed storage pages (program page num) minus the number of first programming row storage pages (first line page num)) / 24 / 2 (rounding), it can be judged whether the current programming row is in coarse programming or fine programming. If the value obtained is 1, the current programming row is fine programming, and if the value obtained is 0, it is coarse programming. Then, (the current number of programmed storage pages (programpage num) minus the number of first programming row storage pages (first line page num))%24 (remainder). If it is fine programming and the remainder is 0, it means that this programming row has completed two complete programming processes.

[0103] It should be noted that although the prior art can determine whether the full programming is completed based on the current Wordline (WL), it is only applicable to application scenarios where a single die is written. For scenarios where multiple dies are written concurrently, no effective judgment can be made. The present application can determine whether the current InterLeave is complete by the number of storage pages that have undergone two programming processes. If the end of the currently written data has only undergone one programming pass (one pass programming), it indicates that the current programming progress is incomplete, and the data cannot be read, resulting in reduced data reliability. In addition, in scenarios where multiple dies are written concurrently, the amount of data written at one time is larger and the writing performance is better. If the current programming progress is incomplete, a specific value is used to fill the data to complete the writing of the host data, which can improve the data writing stability of the solid-state drive.

[0104] It should be further explained that the execution subject of the method for improving the reliability of data in a solid-state drive may be a device for improving the reliability of data in a solid-state drive, for example, the method for improving the reliability of data in a solid-state drive may be executed by a terminal device or a server or other processing device, wherein the terminal device may be a user equipment (UE), a computer, a mobile device, a user terminal, a terminal, a cellular phone, a cordless phone, a personal digital assistant (PDA), a handheld device, a computing device, a vehicle-mounted device, a wearable device, etc. In some possible implementations, the method for improving the reliability of data in a solid-state drive may be implemented by a processor calling a computer-readable instruction stored in a memory.

[0105] Figure 3 FIG. 1 is a block diagram of an apparatus for improving data reliability in a solid state drive according to an exemplary embodiment of the present application. Figure 3 As shown, the exemplary device 300 for improving data reliability in a solid state drive includes: a detection module 310, a timing module 320, a data determination module 330 and a data migration module 340. Specifically:

[0106] The detection module 310 is used to detect the programming progress of the migration data from the single-layer unit flash memory to the four-layer unit flash memory in the solid state drive to obtain the current programming progress of the migration data.

[0107] The timing module 320 is used to perform timing processing on the current programming progress in response to the current programming progress not meeting the complete programming progress of the migration data, so as to obtain the programming waiting time.

[0108] The data determination module 330 is configured to determine the data to be supplemented according to the current programming progress of the migration data and the complete programming progress of the migration data in response to the programming waiting time being greater than a preset time threshold.

[0109] The data migration module 340 is used to migrate the data to be supplemented to the four-layer unit flash memory.

[0110] In this exemplary device for improving data reliability in a solid-state drive, the current programming progress of the migration data is obtained by performing programming progress detection on the migration data from the single-layer unit flash memory to the four-layer unit flash memory in the solid-state drive, and then it can be judged whether the migration data has been completely programmed according to the current programming progress; in response to the current programming progress not meeting the complete programming progress of the migration data, the current programming progress is timed to obtain the programming waiting time, and it is judged whether the data programming process is interrupted according to the programming waiting time; in response to the programming waiting time being greater than the preset time threshold, it indicates that the data programming process is interrupted, and the data to be supplemented is determined according to the current programming progress of the migration data and the complete programming progress of the migration data; the data to be supplemented is migrated to the four-layer unit flash memory. In this way, complete data programming can be achieved, data integrity and storage efficiency in the solid-state drive are guaranteed, and the performance and reliability of the solid-state drive storage system are improved.

[0111] It should be noted that the device provided in the above embodiment and the method provided in the above embodiment belong to the same concept, wherein the specific manner in which each module and unit performs the operation has been described in detail in the method embodiment, and will not be repeated here. In practical applications, the device provided in the above embodiment can distribute the above functions to different functional modules as needed, that is, divide the internal structure of the device into different functional modules to complete all or part of the functions described above, and this is not limited here.

[0112] The functions of each module can be found in the embodiment of the method for improving data reliability in a solid state drive, which will not be described in detail here.

[0113] See also Figure 4 , Figure 4 1 is a schematic diagram of the structure of an embodiment of an electronic device of the present application. The electronic device 100 includes a memory 101 and a processor 102, and the processor 102 is used to execute program instructions stored in the memory 101 to implement the steps in any of the above-mentioned methods for improving the reliability of data in a solid-state drive. In a specific implementation scenario, the electronic device 100 may include but is not limited to: a microcomputer, a server, and in addition, the electronic device 100 may also include a mobile device such as a laptop computer and a tablet computer, which is not limited here.

[0114] Specifically, the processor 102 is used to control itself and the memory 101 to implement the steps in any of the above-mentioned method embodiments for improving the data reliability in the solid-state hard disk. The processor 102 can also be called a CPU (Central Processing Unit). The processor 102 may be an integrated circuit chip with signal processing capabilities. The processor 102 can also be a general-purpose processor, a digital signal processor (Digital Signal Processor, DSP), an application-specific integrated circuit (Application Specific Integrated Circuit, ASIC), a field-programmable gate array (Field-Programmable Gate Array, FPGA) or other programmable logic devices, discrete gates or transistor logic devices, discrete hardware components. The general-purpose processor can be a microprocessor or the processor can also be any conventional processor, etc. In addition, the processor 102 can be implemented by an integrated circuit chip.

[0115] In this exemplary electronic device, by performing programming progress detection on the migration data from the single-layer unit flash memory to the four-layer unit flash memory in the solid state drive, the current programming progress of the migration data is obtained, and then it can be judged whether the migration data has been completely programmed according to the current programming progress; in response to the current programming progress not meeting the complete programming progress of the migration data, the current programming progress is timed to obtain the programming waiting time, and it is judged whether the data programming process is interrupted according to the programming waiting time; in response to the programming waiting time being greater than the preset time threshold, it indicates that the data programming process is interrupted, and the data to be supplemented is determined according to the current programming progress of the migration data and the complete programming progress of the migration data; the data to be supplemented is migrated to the four-layer unit flash memory. In this way, complete data programming can be achieved, data integrity and storage efficiency in the solid state drive are guaranteed, and the performance and reliability of the solid state drive storage system are improved.

[0116] See also Figure 5 , Figure 5 The computer-readable storage medium 110 stores program instructions 111 that can be executed by a processor, and the program instructions 111 are used to implement the steps in any of the above-mentioned methods for improving data reliability in a solid state drive.

[0117] In this exemplary storage medium, by running the program instructions in the storage medium, the migration data from the single-layer unit flash memory to the four-layer unit flash memory in the solid-state drive is programmed to detect the progress, and the current programming progress of the migration data is obtained, and then it can be judged whether the migration data has been completely programmed according to the current programming progress; in response to the current programming progress not meeting the complete programming progress of the migration data, the current programming progress is timed to obtain the programming waiting time, and it is judged whether the data programming process is interrupted according to the programming waiting time; in response to the programming waiting time being greater than the preset time threshold, it indicates that the data programming process is interrupted, and the data to be supplemented is determined according to the current programming progress of the migration data and the complete programming progress of the migration data; the data to be supplemented is migrated to the four-layer unit flash memory. In this way, complete data programming can be achieved, data integrity and storage efficiency in the solid-state drive are guaranteed, and the performance and reliability of the solid-state drive storage system are improved.

[0118] In some embodiments, the functions or modules included in the device provided by the embodiments of the present disclosure can be used to execute the method described in the above method embodiments. The specific implementation can refer to the description of the above method embodiments, and for the sake of brevity, it will not be repeated here.

[0119] The above description of various embodiments tends to emphasize the differences between the various embodiments. The same or similar aspects can be referenced to each other, and for the sake of brevity, they will not be repeated herein.

[0120] In the several embodiments provided in the present application, it should be understood that the disclosed methods and devices can be implemented in other ways. For example, the device implementation described above is only schematic. For example, the division of modules or units is only a logical function division. There may be other division methods in actual implementation, such as units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be through some interfaces, and the indirect coupling or communication connection of devices or units can be electrical, mechanical or other forms.

[0121] In addition, each functional unit in each embodiment of the present application can be integrated into a processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The above-mentioned integrated unit can be implemented in the form of hardware or in the form of a software functional unit. If the integrated unit is implemented in the form of a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application is essentially or part of the contribution to the prior art or all or part of the technical solution can be embodied in the form of a software product, and the computer software product is stored in a storage medium, including several instructions for a computer device (which can be a personal computer, a server, or a network device, etc.) or a processor (processor) to perform all or part of the steps of each implementation method of the present application. The aforementioned storage medium includes: U disk, mobile hard disk, read-only memory (ROM, Read-Only Memory), random access memory (RAM, Random Access Memory), disk or optical disk and other media that can store program code.

Claims

1. A method for improving data reliability in a solid state drive, characterized in that: The solid state drive includes a single-layer unit flash memory and a quad-layer unit flash memory, and the method includes: Performing programming progress detection on migration data from the single-layer unit flash memory to the four-layer unit flash memory in the solid state drive to obtain a current programming progress of the migration data; In response to the current programming progress not satisfying the complete programming progress of the migration data, timing processing is performed on the current programming progress to obtain a programming waiting time; In response to the programming waiting time being greater than a preset time threshold, determining data to be supplemented according to a current programming progress of the migration data and a complete programming progress of the migration data; The data to be supplemented is migrated to the four-layer unit flash memory.

2. The method according to claim 1, characterized in that The determining the data to be supplemented according to the current programming progress of the migration data and the complete programming progress of the migration data includes: Determine the current storage page information corresponding to the current programming progress according to the storage page layout information corresponding to the solid state drive and the current programming information of the current programming progress; Selecting a data determination strategy corresponding to the current storage page information; The data to be supplemented is determined according to the data determination strategy, the current programming information and the complete programming information of the complete programming progress.

3. The method according to claim 2, characterized in that The data determination strategy includes a first strategy, and the selecting of the data determination strategy corresponding to the current storage page information includes: In response to the current storage page information indicating that the current programming row of the current programming progress is in the four-layer cell flash memory, and the next programming row of the current programming row is in the four-layer cell flash memory, selecting the first strategy; The step of determining the data to be supplemented according to the data determination strategy, the current programming information and the complete programming information of the complete programming progress includes: Determine the complete programming data amount according to the storage page layout information and the complete programming information; The amount of data to be supplemented of the data to be supplemented is determined according to the amount of complete programming data and the current programming information.

4. The method according to claim 2, characterized in that: The data determination strategy includes a second strategy, and the selecting of the data determination strategy corresponding to the current storage page information includes: In response to the current storage page information indicating that the current programming row of the current programming progress is in the four-layer cell flash memory, and the next programming row of the current programming row is not in the four-layer cell flash memory, selecting the second strategy; The step of determining the data to be supplemented according to the data determination strategy, the current programming information and the complete programming information of the complete programming progress includes: Determine the current storage page position according to the storage page difference between the current programming row and the next programming row; Determine the complete programming data amount according to the current storage page position and the complete programming information; The amount of data to be supplemented of the data to be supplemented is determined according to the amount of complete programming data and the current programming information.

5. The method according to claim 2, characterized in that: The data determination strategy includes a third strategy, and the selecting of the data determination strategy corresponding to the current storage page information includes: In response to the current storage page information indicating that the current programming row of the current programming progress is not in the four-level cell flash memory, selecting the third strategy; The step of determining the data to be supplemented according to the data determination strategy, the current programming information and the complete programming information of the complete programming progress includes: determining a complete programming data amount according to the current programming information and the complete programming information; The amount of data to be supplemented of the data to be supplemented is determined according to the amount of complete programming data and the unit flash memory information of the current programming row.

6. The method according to claim 2, characterized in that The step of determining the data to be supplemented according to the data determination strategy, the current programming information and the complete programming information of the complete programming progress includes: Determine the amount of data to be supplemented of the data to be supplemented according to the data determination strategy, the current programming information and the complete programming information; The address information of the migration data is filled according to the amount of data to be supplemented to obtain the address information of the data to be supplemented.

7. The method according to claim 2, characterized in that The step of determining the data to be supplemented according to the data determination strategy, the current programming information and the complete programming information of the complete programming progress includes: Determine the amount of data to be supplemented of the data to be supplemented according to the data determination strategy, the current programming information and the complete programming information; Applying for a cache space that matches the amount of data to be supplemented, and filling the cache space with designated data that is the same as the amount of data to be supplemented, to obtain the filled data; Perform data programming processing on the filled data to obtain the data to be supplemented.

8. The method according to claim 1, characterized in that The current programming progress includes a coarse programming progress and a fine programming progress. Before performing timing processing on the current programming progress to obtain a programming waiting time in response to the current programming progress not satisfying the complete programming progress of the migration data, the method further includes: Acquire the number of first storage pages corresponding to the coarse programming progress and the number of second storage pages corresponding to the fine programming progress; In response to the first storage page quantity and the second storage page quantity being the same, determining that the current programming progress satisfies the complete programming progress; In response to the first storage page quantity and the second storage page quantity being different, it is determined that the current programming progress does not satisfy the complete programming progress.

9. An electronic device, characterized in that: The method comprises a memory and a processor, wherein the processor is used to execute program instructions stored in the memory to implement the method according to any one of claims 1 to 8.

10. A computer-readable storage medium having program instructions stored thereon, characterized in that: When the program instructions are executed by a processor, the method according to any one of claims 1 to 8 is implemented.

Citation Information

Patent Citations

  • Memory system, memory device and operating method of memory device

    CN114067870A

  • Method and device for improving writing performance of QLC solid state disk and computer equipment

    CN117519594A

Cited By

  • System based on AI multi-dimensional model and intelligent decision-making method

    CN121880912A

  • Systems and Intelligent Decision-Making Methods Based on AI Multi-Dimensional Models

    CN121880912B