Data transmission method and apparatus, device, and storage medium

By introducing additional data structures into the solid-state drive data path for integrity verification, the problem of inaccurate data transmission is solved, and the accuracy and reliability of data transmission are achieved.

CN119200957BActive Publication Date: 2025-11-21DAPUSTOR CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202411079710.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2024-08-07
Publication Date
2025-11-21
Estimated Expiration
2044-08-07

AI Technical Summary

Technical Problem

Existing technologies struggle to quickly identify and correct data errors during solid-state drive (SSD) data transfer, leading to inaccurate data transmission.

Method used

By introducing additional data structures into the data path, including source module identifiers, destination module identifiers, and redundant data, integrity verification is performed to ensure the accuracy of data transmission.

Benefits of technology

It achieves integrity protection for solid-state drive data transmission, reduces the difficulty of data error analysis, and ensures the accuracy of data transmission during read and write processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119200957B_ABST
    Figure CN119200957B_ABST
Patent Text Reader

Abstract

The present application relates to the technical field of solid state disk, and discloses a data transmission method, device, equipment and storage medium.The data transmission method comprises the following steps: obtaining first input data of an arbitrary module at a current level, wherein the first input data is original data to be transmitted or first output data of a higher-level module, and the first output data comprises the original data to be transmitted and a plurality of first additional data; judging whether to perform integrity check on the first input data in the module at the current level based on first data in each first additional data; if yes, performing integrity check on the first input data based on second data in the corresponding first additional data and deleting the corresponding first additional data; and if the check is completed or no check is performed, generating second additional data corresponding to the module at the current level and taking the first input data and the second additional data as second output data of the module at the current level. Through the data transmission method, the accuracy of data transmission in the data reading process is ensured.
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 disk, and particularly relates to a data transmission method, device, equipment and storage medium. BACKGROUND

[0002] A solid state disk (SSD) is a computer storage device using flash memory technology as storage medium. In the process of writing data into the SSD or reading data from the SSD, the problem of data error often occurs. For example, in the process of writing data, if the data is incorrect in a certain module and the subsequent module does not perceive and analyze the physical meaning of the data of the previous module, the incorrect data of the previous module is output to the subsequent module. For the subsequent module, the incorrect data of the previous module is still a legal input. Thus, the subsequent module performs the subsequent action based on the incorrect data, which eventually leads to the incorrect data being carried to the storage medium, and then the incorrect data is not found until the data is touched in the reading process.

[0003] To solve the problem of data error in the process of data transmission of the SSD, the prior art usually needs to read and analyze the residual data in the data path management module (DM), but in actual application, considering the concurrency of IO, the mixing of reading and writing, and the mixing of various data formats, the prior art is difficult to quickly identify the error reason of the residual data, and thus cannot ensure the data transmission accuracy in the process of data reading and writing. SUMMARY

[0004] The main purpose of the present application is to provide a data transmission method, device, equipment and storage medium, which aims to solve the technical problem of how to improve the data transmission accuracy in the process of data reading and writing.

[0005] The first aspect of the present application provides a data transmission method applied to a data path of a solid state disk, wherein the data path comprises a plurality of modules having a relative seniority relationship, and the data transmission method comprises the following steps:

[0006] obtaining first input data of any module in the current level, wherein the first input data is original data to be transmitted or first output data of a module in the upper level, and the first output data comprises the original data to be transmitted and a plurality of first additional data;

[0007] if the first input data is the first output data, determining whether to perform integrity check on the first input data in the current module based on first data in the first additional data;

[0008] If the integrity check is performed, the first input data is subjected to the integrity check and the first additional data is deleted in the current module based on the second data in the first additional data;

[0009] If the integrity check is completed or not performed, it is determined whether the current module is the last module of the data path;

[0010] If the current module is not the last module of the data path, the second additional data corresponding to the current module is generated and is taken as the second output data of the current module together with the first input data, and the second output data is the second input data of the next module.

[0011] Optionally, in the first implementation manner of the first aspect, the first additional data and the second additional data adopt the same data structure, and the data structure comprises a source module identifier, a destination module identifier, redundant data generated by the source module and a destination module identifier for integrity check;

[0012] The source module identifier and the destination module identifier are used for identifying a data transmission path in the data path, the redundant data generated by the source module is used for protecting to-be-transmitted data in the data transmission path, and the destination module identifier for integrity check is used for identifying a module for performing integrity check on the to-be-transmitted data.

[0013] Optionally, in the second implementation manner of the first aspect, if the first input data is the first output data, the determination whether the first input data is subjected to the integrity check in the current module based on the first data in each first additional data comprises:

[0014] If the first input data is the first output data, it is determined whether the destination module identifier for integrity check in each first additional data matches a module identifier of the current module;

[0015] If the match is found, it is determined that the first input data is subjected to the integrity check in the current module.

[0016] Optionally, in the third implementation manner of the first aspect, if the integrity check is performed, the first input data is subjected to the integrity check and the first additional data is deleted in the current module based on the second data in the first additional data, and the second data in the first additional data comprises:

[0017] If the integrity check is performed, a plurality of check methods for the integrity check are determined based on the redundant data generated by the source module in the first additional data.

[0018] The integrity check methods are sequentially called to perform integrity check on the first input data at the current module until the integrity check is completed, wherein when the integrity check is completed once and there is no destination module identifier in the first additional data that has not been subjected to integrity check, the first additional data is deleted.

[0019] Optionally, in a fourth implementation form of the first aspect of the present application, the data transmission method further comprises:

[0020] When there is an integrity check that fails, check failure information is generated and stored in a state register or memory for real-time reporting of the current data transmission state;

[0021] The check failure information includes a source module identifier, a destination module identifier, redundant data generated by a source module, and actual redundant data currently generated.

[0022] Optionally, in a fifth implementation form of the first aspect of the present application, the data path includes a read data path and a write data path.

[0023] When the data path is a read data path, the original to-be-transmitted data is first transmission data read from a storage medium; when the data path is a write data path, the original to-be-transmitted data is second transmission data obtained from a host.

[0024] Optionally, in a sixth implementation form of the first aspect of the present application, the output of any module M in the data path is defined as:

[0025] OM = IM + SM + DN + PM + VN.

[0026] Wherein, OM represents the output data of module M, OM is to-be-transmitted data in the data path that needs to be transmitted to a lower-level module, IM represents the input data of module M, IM is the output data of an upper-level module; SM and DN respectively represent a source module M and a destination module N corresponding to the to-be-transmitted data; PM represents redundant data generated by the source module M; and VN represents integrity check at the destination module N.

[0027] The present application also provides a data transmission device applied to a data path of a solid state disk, wherein the data path has a plurality of modules with relative upper and lower level relationships, and the data transmission device comprises:

[0028] An obtaining module is configured to obtain first input data of any current module, wherein the first input data is original to-be-transmitted data or first output data of an upper-level module, and the first output data includes the original to-be-transmitted data and a plurality of first additional data.

[0029] The first judging module is configured to, if the first input data is the first output data, judge whether to perform integrity check on the first input data in the current module based on first data in each of the first additional data.

[0030] The checking module is configured to, if the integrity check is performed, perform integrity check on the first input data in the current module based on second data corresponding to the first additional data and delete the first additional data corresponding to the first additional data.

[0031] The second judging module is configured to, if the integrity check is completed or the integrity check is not performed, judge whether the current module is the last module of the data path.

[0032] The generating module is configured to, if the current module is not the last module of the data path, generate second additional data corresponding to the current module, and take the second additional data and the first input data as second output data of the current module, the second output data being second input data of a next module.

[0033] Optionally, in the first implementation manner of the third aspect of the present application, the first additional data and the second additional data adopt the same data structure, and the data structure comprises a source module identifier, a destination module identifier, redundant data generated by a source module and a destination module identifier for integrity check.

[0034] The source module identifier and the destination module identifier are used to identify a data transmission path in the data path, the redundant data generated by the source module is used to protect to-be-transmitted data in the data transmission path, and the destination module identifier for integrity check is used to identify a module performing integrity check on the to-be-transmitted data.

[0035] Optionally, in the second implementation manner of the third aspect of the present application, the first judging module is specifically configured to:

[0036] If the first input data is the first output data, judge whether a destination module identifier for integrity check in each of the first additional data matches a module identifier of the current module; if the destination module identifier for integrity check matches the module identifier of the current module, determine to perform integrity check on the first input data in the current module.

[0037] Optionally, in the third implementation manner of the third aspect of the present application, the checking module is specifically configured to:

[0038] If the integrity check is performed, a number of check methods used for the integrity check are determined based on the redundant data generated by the source module corresponding to the first additional data; each of the check methods is called in turn to perform the integrity check on the first input data at the current module until the integrity check is completed, wherein when the integrity check is completed once and there is no destination module identifier in the first additional data that has not been subjected to the integrity check, the first additional data corresponding to the first additional data is deleted.

[0039] Optionally, in a fourth implementation manner of the third aspect of the present application, the data transmission device further comprises:

[0040] The state reporting module is configured to generate check failure information and store the check failure information in a state register or a memory when there is an integrity check that fails, so as to report the current data transmission state in real time; wherein the check failure information comprises a source module identifier, a destination module identifier, redundant data generated by the source module, and actual redundant data generated at present.

[0041] Optionally, in a fifth implementation manner of the second aspect of the present application, the data path comprises a read data path and a write data path.

[0042] When the data path is the read data path, the original to-be-transmitted data is first transmission data read from a storage medium; when the data path is the write data path, the original to-be-transmitted data is second transmission data obtained from a host.

[0043] Optionally, in a sixth implementation manner of the second aspect of the present application, the output of any module M in the data path is defined as:

[0044] OM=IM+SM+DN+PM+VN;

[0045] Wherein, OM represents the output data of the module M, OM is to-be-transmitted data in the data path that needs to be transmitted to a lower-level module, IM represents the input data of the module M, IM is the output data of an upper-level module; SM and DN respectively represent a source module M and a destination module N corresponding to the to-be-transmitted data; PM represents redundant data generated by the source module M; and VN represents integrity check at the destination module N.

[0046] The fifth aspect of the present application provides a computer device, comprising a memory and at least one processor, the memory stores instructions; the at least one processor calls the instructions in the memory, so that the computer device executes the above-mentioned data transmission method.

[0047] The sixth aspect of the present application provides a computer readable storage medium, which stores instructions, when the instructions are run on a computer, cause the computer to execute the data transmission method.

[0048] The present application provides a data transmission method applied to a data path of a solid state disk, wherein the data transmitted in the data path comprises not only original data to be transmitted but also additional data generated by modules. Based on the direction of data transmission, a relative superior-inferior relationship is formed between the modules, that is, the module through which the data is transmitted can be a superior module of other modules or an inferior module of other modules, and the output data of the superior module will be the input data of the inferior module. When the data is transmitted through any module, the input data of the module is first acquired, the input data comprising the original data to be transmitted and additional data generated by the superior modules. The additional data can be used to determine whether the input data is subjected to integrity check in the module and the check method, and the additional data generated by the module will be the output data of the module together with the input data, and the output data of the module will be the input data of the inferior module, thereby realizing the data transmission method with integrity protection for the data of the solid state disk. Through the data transmission method, the accuracy of data transmission in the data reading process or the data writing process is ensured, and the difficulty of analyzing the transmission data error is reduced. BRIEF DESCRIPTION OF DRAWINGS

[0049] Figure 1 An embodiment of the prior art data transmission is shown in the figure;

[0050] Figure 2 A module schematic diagram of the relative superior-inferior relationship of the data path in the embodiment of the present application is shown in the figure;

[0051] Figure 3 A data structure schematic diagram used in the data transmission in the embodiment of the present application is shown in the figure;

[0052] Figure 4 A first embodiment flow schematic diagram of the data transmission method in the embodiment of the present application is shown in the figure;

[0053] Figure 5 A second embodiment flow schematic diagram of the data transmission method in the embodiment of the present application is shown in the figure;

[0054] Figure 6 An embodiment function module schematic diagram of the data transmission device in the embodiment of the present application is shown in the figure;

[0055] Figure 7 An embodiment schematic diagram of the computer device in the embodiment of the present application is shown in the figure. DETAILED DESCRIPTION

[0056] The terms "first", "second", "third", "fourth" and the like in the description and in the claims of the present application, and above-mentioned drawings, if any, are used to distinguish between similar objects and not necessarily for describing a particular sequential or chronological order. It is to be understood that the use of the terms so-termed "first", "second", "third", "fourth" and the like, if any, in the description and in the claims of the present application is simply intended to differentiate between similar objects and not necessarily for describing a particular sequential or chronological order. It is to be understood that the data so used can be interchanged, where appropriate, so that the embodiments described herein can be carried out in sequences other than those illustrated or described herein. Furthermore, use of the terms "comprising", "including", "containing", and any variations thereof, are intended to cover a non-exclusive inclusion, such that a process, method, system, product or apparatus that comprises, includes or contains a list of steps or elements, but not those not expressly listed or inherent to such process, method, product or apparatus, is feasible.

[0057] In order to better understand the present application, the data path of the solid state disk and the modules in the data path in the embodiments of the present application are described below.

[0058] The data path of the solid state disk refers to the data transmission path formed when reading data from the solid state disk or writing data to the solid state disk. Among them, reading data corresponds to reading data from the medium Nand, and transmitting the read data to the external host Host through the data path of the solid state disk, and writing data corresponds to receiving data from the external host Host, and writing the received data into the medium Nand through the data path of the solid state disk.

[0059] The devices or modules involved in data transmission of the present application include:

[0060] (1) Host, which is a host for realizing man-machine interaction, such as sending write or read commands;

[0061] (2) SSD controller, which is used to manage and control the data read and write operation inside the SSD and the communication with other system components, and is specifically responsible for the communication and data transmission between the SSD and the host (such as a computer), receiving and analyzing the I / O request from the host, and maintaining the request queue; managing the data read and write operation inside the SSD, including data encoding, decoding, error correction, etc., to ensure the accuracy and reliability of the data; internal module management: configuring the working mode of the SSD, managing the communication and data flow between various modules (such as flash memory chips, cache, etc.).

[0062] (3) Nand, which usually refers to NAND flash memory (NAND Flash Memory), a kind of non-volatile memory, which can keep the stored data from being lost after power failure. NAND flash memory is widely used in various storage devices, such as U disk, memory card, solid state disk, etc.

[0063] In this embodiment, the data path of the solid state disk does not include the Host and the Nand. The data path of the solid state disk specifically realizes data transmission through various functional modules in the SSD controller.

[0064] In an embodiment, the SSD controller specifically includes the following modules:

[0065] 2.1) PCIe / NVMe module, the PCIe module is mainly responsible for physical link, transmission and communication of physical data packets, etc., the NVMe module is mainly responsible for analysis, sending and receiving, command caching and sorting, etc. of Host commands, the PCIe module and the NVMe module must be tightly coupled and cannot work independently without the other;

[0066] The PCIe module, i.e. Peripheral Component Interconnect Express, is a hardware component based on the high-speed serial computer expansion bus standard. The NVMe module is a module or component related to the NVMe (Non-Volatile Memory Express) technology. NVMe is a high-performance, low-latency storage protocol based on PCIe, designed for non-volatile memories such as SSDs.

[0067] 2.2) DPM module (Data Path Management), used for management, priority control, command state conversion, data encryption and decryption conversion, etc. of the data path.

[0068] 2.3) DM module (Data Management), used for caching, format conversion, scheduling of various data paths of user data and system internal data.

[0069] 2.4) LDPC module (Low-Density Parity-Check), used for encoding, decoding, scrambling of user raw data, and constructing data suitable for the characteristics of NAND Flash media;

[0070] The LDPC module is a hardware or software module based on low-density parity-check code, widely used in communication and storage systems to enhance the reliability and efficiency of data transmission.

[0071] 2.5) Flash Controller module, used for management of Flash media, generation of media command sequences, management of media bandwidth and IO throughput, etc.

[0072] The following is an embodiment description of the existing data transmission process based on the modules of the above data path. Figure 1As shown, Figure 1 An embodiment of the prior art data transmission is shown in the figure.

[0073] (I) When data is transmitted from the Host to the Nand, it corresponds to a write data transmission. As shown in the figure, the existing write data transmission process includes:

[0074] W1: The Host issues an IO command, wherein through the protocol field in the IO command, it can be known that the IO is a write and the necessary information of the command such as the starting LBA, LBA length, etc.

[0075] W2: The NVMe module receives the WriteCommand and dispatches it to the DPM for priority scheduling, channel confirmation, data encryption, etc.

[0076] W3: The data is output to the DM module and buffered in the DM module.

[0077] W4: The DM gives the original user data to the LDPC module for LDPC encoding.

[0078] W5: The LDPC module returns the encoded data and the scrambled data to the DM.

[0079] W6: The Flash Controller acquires the data that meets the NAND requirements and has completed encoding and scrambling from the DM according to the constructed NAND Program command sequence.

[0080] W7: The data is sent to the NAND Flash medium for Program operation.

[0081] The above is each data stage in the write command processing process, and the write data transmission is briefly described as WD, which is composed of multiple data transmission paths, and the specific transmission paths include W1-W7.

[0082] (II) When data is transmitted from the Nand to the Host, it corresponds to a read data transmission. As shown in the figure, the existing read data transmission process includes:

[0083] R1: The Host issues an IO command, wherein through the protocol field in the IO command, it can be known that the IO is a read and the necessary information of the command such as the starting LBA, LBA length, etc.

[0084] R2: The physical position to be read is determined through the software internal mapping table lookup, and the Flash Controller reads the target physical position.

[0085] R3: The medium data is output to the LDPC module.

[0086] R4: The LDPC module prepares to decode and applies for cache space from the DM to store data after subsequent decoding;

[0087] R5: The DM informs the LDPC of the address for storing data after decoding and receives the decoded data;

[0088] R6: The DM outputs user data after successful decoding to the DPM module according to the channel information;

[0089] R7: The DPM outputs target data read by the Host to the Host through PCIe and NVMe;

[0090] The above are the data stages in the read command processing process, and the read data transmission is briefly described as RD, which is composed of multiple data transmission paths, and the specific transmission paths include R1-R7.

[0091] From the above Figure 1 read data transmission process and the write data transmission process, it can be seen that different operations of multiple modules are involved in the data transmission process, and thus data errors are prone to occur. For example, in the write data process, if data is wrong in a certain module and subsequent modules do not perceive or analyze the physical meaning of the data of the previous module, the wrong data of the previous module is output to the subsequent module, and for the subsequent module, the wrong data of the previous module is still a legal input. Thus, the subsequent module performs the subsequent action based on the wrong data, which ultimately leads to the wrong data being carried to the storage medium, and then the data is not correct until the read process reaches the data. To solve the problem of data errors in the data transmission process of the solid state disk, the embodiment of the present application provides a data transmission method for realizing the integrity protection of the data transmission of the solid state disk, and thus ensuring the accuracy in the data read / write process.

[0092] Please refer to Figure 2 , Figure 2 is a module diagram with relative superior-inferior relationship of the data channel in the embodiment of the present application. In the embodiment, the modules (such as the PCIe / NVMe module, the DPM module, the DM module, the LDPC module and the Flash Controller module) in the SSD controller in Figure 1 are abstracted as modules with relative superior-inferior relationship, and the input and output of the modules are redefined, that is, the data transmitted in the data channel is redefined.

[0093] As Figure 2As shown, the modules M and N are any two modules in the data path having a data transmission superior-inferior relationship. Among them, the module input is Input, the module output is Output, the input of the M module is IM, the output is OM, the input of the N module is IN, and the output is ON. Since the two are in a relative superior-inferior relationship, the output of the previous stage module is the input of the next stage module, that is, OM = IN.

[0094] On the basis of not changing the unit module composition of the traditional SSD controller, the embodiment re-designs the information packet structure and the information structure transmitted between modules, so as to realize the integrity verification of the data to be transmitted in the data path, and further ensure the accuracy of the transmitted data. The specific information structure design is as follows:

[0095] (1) Source module: Source, indicating the source module of the current data to be transmitted, that is, the data output end; assuming that the current data to be transmitted is output by the M module, the M module is taken as the source module, denoted as SM, and there are SN and the like by analogy;

[0096] (2) Destination module: Destination, indicating the destination module of the current data to be transmitted, that is, the data receiving end; assuming that the current data to be transmitted is received by the N module, the N module is taken as the destination module, denoted as DN, and there are DM and the like by analogy;

[0097] (3) Redundant data: Parity, used for protecting the data to be transmitted, such as using CRC (Cyclic Redundancy Check, cyclic redundancy check), ECC (Error Correction Code, error correction code) and the like to protect the data to be transmitted, the redundant data added by the M module is denoted as PM, and the redundant data added by the N module is denoted as PN;

[0098] (4) Verification position: Verify, indicating the control enable bit of the integrity verification of the data to be transmitted at the specified destination module. Assuming that the integrity verification of the data to be transmitted is performed at the N module, it is denoted as VN. For example, the data in the write direction can be specified to perform integrity verification at the end of LDPC encoding, or can perform integrity verification at the LDPC encoding and the Flash controller entrance.

[0099] The following takes the module M in the LDPC encoding as an example to further illustrate the above design method. Figure 2

[0100] In the embodiment, the output of the module M is defined as:

[0101] OM = IM + SM + DN + PM + VN

[0102] ​Wherein, OM represents the output data of M module, which is also the to-be-transmitted data in the data path that needs to be transmitted to the lower module, and IM represents the input data of module M, which is also the output data of the upper module; SM and DN respectively represent the source module M and the destination module N corresponding to the to-be-transmitted data; PM represents the redundant data generated by the source module M; and VN represents the integrity check in the destination module N. For the convenience of subsequent description, therefore, SM+DN+PM+VN are combined and referred to as Meta information.

[0103] Please refer to Figure 3 , Figure 3 is a data structure diagram adopted by data transmission in the embodiment of the application. The meanings of the fields involved in the above table will be described below. Figure 3

[0104] (1) IO direction, which is related to the IO command type issued by the Host, such as the IO write command corresponding to the write direction of the IO direction, and the IO read command corresponding to the read direction of the IO direction.

[0105] (2) The local module refers to the starting module of data transmission, and the local module is not fixed, but is relative to different nodes of data transmission. Different data nodes can be used as the local module. The local module is only for data transmission, and therefore the local module can include the Host and the Nand.

[0106] (3) The opposite module refers to the module receiving the data transmitted by the local module, and the opposite module is not fixed, but is relative to the local module. Different data nodes can be used as the opposite module. The opposite module is only for data transmission, and therefore the opposite module can include the Host and the Nand.

[0107] (4) Input refers to the input data of the local module. User data refers to user data. Output Host refers to the output data of the Host, and other data is similar. Raw data refers to the original data stored in the medium.

[0108] (5) Source refers to the source module.

[0109] (6) Destination refers to the destination module. The integrity check of the data transmitted between different modules is performed in the destination module.

[0110] (7) Parity refers to redundant data. This field is of the Option type, that is, one or more integrity check methods can be selected, such as Parity Option1=CRC, Parity Option2=ECC, and the like.

[0111] ​(8) Verify refers to the verification location. This field can be configured with one or more verification locations (i.e., the target module to be verified). Verify can be in the form of a combination of multiple segments, such as a lower-level module or multiple different lower-level modules, so as to achieve the effect of layer-by-layer verification or layer-by-layer multiple verification.

[0112] Additionally, it should be noted that Null represents an empty value. Source, Destination, Parity, and Verify are all empty values, indicating that the corresponding local module does not need to generate additional data, that is, it does not generate meta information. For example, when writing data, redundant data is not generated in the Host and Flash Controller modules, and when reading data, redundant data is not generated in the Nand and PCIe / NVMe modules.

[0113] For ease of understanding, the specific flow of an embodiment of the data transmission method of the present invention will be described below based on the above design of the present invention. Please refer to [link / reference]. Figure 4 , Figure 4 This is a flowchart illustrating the first embodiment of the data transmission method in this invention. This embodiment specifically applies to the read data path of a solid-state drive (SSD), where the data transmission direction is Nand -> Host. The data obtained from the Nand is the first transmitted data, specifically the raw data (RawData) stored in the Nand medium. The data transmission method of this embodiment includes:

[0114] 401. Obtain the first input data of any module at this level, wherein the first input data is the first transmission data or the first output data of the upper-level module, and the first output data includes the first transmission data and several first additional data.

[0115] This embodiment specifically applies to read data transfer of solid-state drives (SSDs), meaning the data transfer direction is Nand -> Host. This level module is the output module for the data to be transferred; therefore, it can be any one of the following: Flash Controller module, LDPC module, DM module, DPM module, or PCIe / NVMe module. When the level module is a Flash Controller module, it has no parent module. Other modules do have parent modules; for example, the parent module of the LDPC module is the Flash Controller module, the parent module of the DM module is the LDPC module, the parent module of the DPM module is the DM module, and the parent module of the PCIe / NVMe module is any one of the DPM modules.

[0116] For example, assuming this level module is the Flash Controller module, its input is the output `Output_Nand` of the Nand, which is the RawData (original data) read from the Nand. As another example, assuming this level module is the LDPC module, its input is the output `Output_Flash Controller` of the parent module, the Flash Controller module. Other modules are similar, so further details are omitted.

[0117] In this embodiment, when the current module is the first module in the read data path, such as the Flash Controller module, the input data of the current module is the raw data. When the current module is not the first module in the read data path, such as the LDPC module, DM module, DPM module, or PCIe / NVMe module, the input data of the current module is the output data of the upper-level module. The output data of the upper-level module specifically includes the raw data and several additional data. During data transmission, each module (except the last module in the read data path) generates corresponding additional data (i.e., the Meta information described in the above embodiment). The more modules the data transmission passes through, the more additional data is included in the module's output data.

[0118] In one embodiment, the first additional data in the output data of the upper-level module adopts the following data structure:

[0119] (1) Source Module Identifier (SM), used to identify the source module of the data to be transmitted. For example, SM = LDPC, which means that the data to be transmitted comes from the LDPC module.

[0120] (2) Destination Module Identifier (DN), used to identify the destination module of the data to be transmitted. For example, DN = DM, which means that the destination module of the data to be transmitted is DM;

[0121] (3) The redundant data (PM) generated by the source module is used to protect the data to be transmitted by generating redundant data. For example, the redundant data to be transmitted is generated by PM=CRC, or PM=ECC, or PM=CRC+ECC.

[0122] (4) Destination module identifier (VN) for integrity verification, which specifies the location where integrity verification is performed on the data to be transmitted, i.e., which destination module the verification is performed on. For example, if VN = LDPC, then integrity verification is required when the data is transmitted to LDPC.

[0123] In this embodiment, the source module identifier SM and the destination module identifier DN are used to identify the data transmission path in the data path. For example, if SM = LDPC and DN = DM, the corresponding data transmission path is from LDPC to DM. If a data integrity check fails, the location of the data transmission error can be quickly located. The redundant data PM generated by the source module is used to protect the data to be transmitted in the data transmission path (SM → DN). For example, it generates redundant data such as CRC and ECC for the data to be transmitted. The destination module identifier VN for integrity check is used to identify the module that performs integrity check on the data to be transmitted. For example, if VN = LDPC + DM, then integrity check is required when data is transmitted to LDPC and DM.

[0124] 402. If the first input data is the first output data, then based on the first data in each of the first additional data, determine whether to perform integrity verification on the first input data in this module.

[0125] As can be seen from step 401 above, the first input data of this module is the original data or the first output data of the upper-level module. The first output data of the upper-level module includes the original data and several first supplementary data. Since the original data does not contain the first supplementary data (i.e., Meta information), there is no need to perform integrity verification, and the next step 404 can be executed directly.

[0126] In this embodiment, each set of first supplementary data in the first output data output by the upper-level module contains first data. This first data is used to determine whether the first input data needs to be verified for integrity in this level module. The specific format of the first data is not limited in this embodiment and can be set according to actual needs.

[0127] In one embodiment, the first additional data adopts the data structure designed in this invention. If the first data uses the destination module identifier VN for integrity verification, then step 402 above further includes:

[0128] 4021. If the first input data is the first output data, then determine whether the target module identifier for integrity verification in each of the first additional data matches the module identifier of the current module.

[0129] 4022. If a match is found, then the integrity of the first input data is determined to be verified in this module. If a match is not found, then the integrity of the data is not verified in this module, and step 404 is executed.

[0130] In this embodiment, when data is transmitted to the current module, if the first input data is the first output data of the upper module, the first additional data (i.e., the Meta information designed in this invention) in the first input data is extracted, and then the target module identifier VN for integrity verification in the first additional data is obtained. Then, it is compared whether VN matches the current module. If they match, it is determined that the integrity verification of the first input data is performed in the current module.

[0131] For example, in the input data of this level module, the target module identifier VN = LDPC corresponding to the integrity verification in the first additional data, and this level module is an LDPC module, then the two are determined to match, that is, the integrity verification of the currently transmitted input data needs to be performed in the LDPC module.

[0132] 403. If integrity verification is performed, then based on the second data corresponding to the first additional data, the first input data is verified for integrity in this module and the corresponding first additional data is deleted.

[0133] In this embodiment, when it is determined through step 402 that the integrity of the currently transmitted data needs to be verified in this module, the second data in the first additional data that needs to be verified is used to verify the integrity of the first input data in this module. The verification method used for the integrity verification is determined by the second data in the first additional data.

[0134] In one embodiment, step 403 further includes:

[0135] 4031. If integrity verification is performed, then based on the redundant data generated by the source module in the first additional data, determine several verification methods to be used for integrity verification.

[0136] 4032. The first input data is checked for integrity by calling each of the above verification methods in sequence in this module until the integrity check is completed. When the integrity check is completed and there is no destination module identifier that has not been checked for integrity in the first additional data, the corresponding first additional data is deleted.

[0137] In this embodiment, as described in the previous embodiments, the redundant data generated by the source module is used to protect the integrity of the input data. Therefore, the verification method used for integrity verification can be determined through the redundant data generated by the source module in the first supplementary data. Multiple redundant data can be generated from the same supplementary data, and different redundant data require different verification methods for integrity verification.

[0138] For example, if the current module is DPM, the first output data of its superior module DM includes the first additional data generated by the Flash Controller module and the LDPC module, which are two pieces of Meta information. In the Meta information corresponding to the Flash Controller module, VN = PCIe / NVMe, and in the Meta information corresponding to the LDPC module, VN = DPM. Then, by matching the module identifiers, it is determined that the data protected by the LDPC module in the transmitted data needs to be verified for integrity in the current module DPM.

[0139] Assuming PM = ECC in the Meta information corresponding to the LDPC module, then in the DPM module at this level, the ECC verification method is used to perform integrity verification on the data protected by the LDPC module in the first input data.

[0140] In this embodiment, during the data reading process (Nand → Host), to ensure the accuracy of data transmission, corresponding Meta information needs to be added during the data transmission process for integrity verification. Since the data finally transmitted to the Host no longer needs to be verified for integrity, that is, the data finally given to the Host is the original data, when each integrity verification is completed and there is a destination module identifier that has not been verified for integrity in the first additional data (Meta information), the corresponding first additional data (Meta information) can be retained. If there is no destination module identifier that has not been verified for integrity in the first additional data (Meta information), the corresponding first additional data (Meta information) is deleted.

[0141] In one embodiment, to facilitate rapid location of data transmission anomalies, when an integrity check fails, a check failure message is generated and stored in a status register or memory for real-time reporting of the current data transmission status. The check failure message includes the source module identifier, the destination module identifier, the redundant data generated by the source module, and the currently generated actual redundant data.

[0142] In this embodiment, integrity verification can detect erroneous data in a timely manner during data transmission. Specifically, if the integrity verification fails, a verification failure message is generated and stored in the status register or memory, thereby enabling real-time reporting of the current abnormal data transmission status.

[0143] 404. If the integrity check is completed or not, determine whether this module is the last module of the data path.

[0144] In this embodiment, considering that when data read from Nand is transmitted to the Host, integrity verification is not required in the Host, the last module in the data path (i.e., the module adjacent to the Host) does not need to generate additional data (i.e., Meta information). Therefore, when integrity verification is completed or not, it is necessary to determine whether the current module is the last module in the data path, so as to determine whether to generate the corresponding second additional data in the current module.

[0145] When all integrity checks required to be performed in this module have been completed—for example, if data transmitted from the LDPC, DM, and DPM modules is specified to be checked in the PCIe / NVMe module—then when all integrity checks are completed in the PCIe / NVMe module, it is necessary to determine whether this module is the last module in the data path. Alternatively, if integrity checks are not specified to be performed in the current module or if the current module is the first module in the data path, then integrity checks are not required, and therefore it is necessary to determine whether this module is the last module in the data path.

[0146] Since the order of the modules in the data path is fixed, the order of each module can be predetermined, which can then be used to determine whether the current module is the last module in the data path.

[0147] 405. If the current module is not the last module in the data path, then the second additional data corresponding to the current module is generated and used together with the first input data as the second output data of the current module. The second output data is the second input data of the next lower module.

[0148] In this embodiment, except for the last module of the data path, regardless of whether integrity verification is performed or not, other modules will generate second additional data (Meta information) corresponding to the input data, i.e., Meta = SM + DN + PM + VN. SM and DN are specifically determined according to the module corresponding to the data transmission. For example, if the current data needs to be transmitted from the LDPC module to the DM module, then SM = LDPC and DN = DM. PM and VN are used to perform integrity verification on the transmitted data. The verification method used for integrity verification can be configured according to the actual application scenario; any one or more verification methods can be configured, such as PM = ECC, PM = CRC, or PM = ECC + CRC, etc. Furthermore, the location of integrity verification can also be configured according to the actual application scenario; any one or more modules in the data transmission direction can be configured, such as VN = DM, VN = DPM, VN = PCIe / NVMe, VN = DM + DPM, VN = DM + PCIe / NVMe, VN = DPM + PCIe / NVMe, or VN = DM + DPM + PCIe / NVMe.

[0149] In this embodiment, the module output OM = module input IM + additional data Meta. Assuming data is transmitted from the LDPC module to the DM module, the LDPC module's input is input1, output is output1, and additional data is meta1 (used to protect the input data input1). The DM module's input is input2, output is output2, and additional data is meta2 (used to protect the input data input2). The output of the upper-level module is the input of the lower-level module: output1 = input2, output1 = input1 + meta1, output2 = input2 + meta2. Therefore, output2 = input2 + meta2 = (input1 + meta1) + meta2. It can be seen that the more modules the data to be transmitted passes through, the more additional data it contains. Furthermore, after each integrity check, the corresponding additional data is deleted. For example, if VN = DMP in meta2, when the data is transmitted to the DMP module, the DMP module needs to perform an integrity check on the transmitted data and delete meta2 after the check is completed.

[0150] In this embodiment, the second additional data generated by the current module will be transmitted to the next lower module along with the first input data as the second output data of the current module, and will also serve as the second input data of the next lower module. As a result, each node (i.e., each module) on the subsequent data transmission path will execute the above steps 401-405 once when it receives new input data, thereby completing the data transmission through each node on the transmission path and achieving integrity protection of solid-state drive data, thus improving data accuracy.

[0151] Please see Figure 5 , Figure 5 This is a flowchart illustrating the second embodiment of the data transmission method in this invention. This embodiment specifically applies to the write data path of a solid-state drive, i.e., the data transmission direction is Host -> NAND. The data obtained from the Host is the second transmitted data, specifically the user data (UserData) received by the Host. The data transmission method in this embodiment includes:

[0152] 501. Obtain the third input data of any module at this level, wherein the third input data is the second transmission data or the third output data of the upper-level module, and the third output data includes the second transmission data and several third additional data;

[0153] This embodiment specifically applies to write data transfer of solid-state drives (SSDs), meaning the data transfer direction is Host -> Nand. This level module is the output module for the data to be transferred; therefore, it can be any one of a PCIe / NVMe module, DPM module, DM module, LDPC module, or Flash Controller module. When this level module is a PCIe / NVMe module, it has no parent module. Other modules do have parent modules; for example, the parent module of the DPM module is a PCIe / NVMe module, the parent module of the DM module is a DPM module, the parent module of the LDPC module is a DM module, and the parent module of the Flash Controller module can be any one of the LDPC modules.

[0154] For example, assuming this level module is a PCIe / NVMe module, its input is the host's output, Output_Host, which is the user data UserData obtained from the host. As another example, assuming this level module is an LDPC module, its input is the output, Output_DM, of the parent module, DM. Other modules are similar, so further details are omitted.

[0155] In this embodiment, when the current module is the first module in the write data path, such as a PCIe / NVMe module, the input data of the current module is user data. When the current module is not the first module in the write data path, such as a DPM module, DM module, LDPC module, or Flash Controller module, the input data of the current module is the output data of the upper-level module. The output data of the upper-level module specifically includes user data and several additional data. During data transmission, each module (except the last module in the write data path) generates corresponding additional data (i.e., the Meta information described in the above embodiment). The more modules the data transmission passes through, the more additional data is included in the module's output data.

[0156] In this embodiment, the third additional data in the output data of the upper-level module adopts the same data structure as the first and second additional data, that is, source module identifier (SM) + destination module identifier (DN) + redundant data generated by the source module (PM) + destination module identifier (VN) for integrity verification. For details, please refer to the above embodiment, so we will not go into too much detail.

[0157] 502. If the third input data is the third output data, then based on the third data in each of the third additional data, determine whether to perform integrity verification on the third input data in this module.

[0158] When the current module is the first module on the data transmission path, such as the Host module, it does not have a parent module, that is, there is no third additional data, and therefore no integrity check is required.

[0159] As can be seen from step 501 above, the third input data of this module is user data or the third output data of the upper module. The third output data of the upper module includes user data and several third additional data. Since the original data does not contain third additional data (i.e. Meta information), there is no need to perform integrity verification, and the next step 504 can be executed directly.

[0160] In this embodiment, each set of third supplementary data in the third output data output by the upper-level module contains third data. This third data is used to determine whether the integrity of the third input data should be verified in this module. The specific format of the third data is not limited in this embodiment and can be set according to actual needs.

[0161] In one embodiment, the third additional data adopts the data structure designed in this invention. If the third data uses the target module identifier VN for integrity verification, then step 502 above further includes:

[0162] 5021. If the third input data is the third output data, then determine whether the target module identifier for integrity verification in each of the third additional data matches the module identifier of the current module.

[0163] 5022. If a match is found, then the integrity of the third input data is determined to be checked in this module. If a match is not found, then the integrity of the data is not checked in this module, and step 504 is executed.

[0164] In this embodiment, when data is transmitted to the current module, if the third input data is the third output data, the third additional data (i.e., the Meta information designed in this invention) is extracted from the third input data, and then the target module identifier VN for integrity verification in the third additional data is obtained. Then, it is compared whether VN matches the current module. If they match, it is determined that the integrity verification of the third input data is performed in the current module.

[0165] For example, in the input data of this module, the target module identifier VN = LDPC corresponding to the integrity verification in the third additional data, and this module is an LDPC module, then the two are determined to match, that is, the integrity verification of the currently transmitted input data needs to be performed in the LDPC module.

[0166] 503. If integrity verification is performed, then based on the fourth data in the corresponding third additional data, the integrity verification of the third input data is performed in this module and the corresponding third additional data is deleted.

[0167] In this embodiment, when it is determined through step 502 that the integrity of the currently transmitted data needs to be verified in this module, the fourth data in the third supplementary data that needs to be verified is used to verify the integrity of the third input data in this module. The verification method used for the integrity verification is determined through the fourth data in the third supplementary data.

[0168] In one embodiment, step 503 further includes:

[0169] 5031. If integrity verification is performed, then based on the redundant data generated by the source module in the corresponding third supplementary data, determine several verification methods to be used for integrity verification.

[0170] 5032. The verification methods described above are called sequentially to perform integrity verification on the third input data in this module until the integrity verification is completed. When each integrity verification is completed and there is no destination module identifier in the third additional data that has not been verified, the corresponding third additional data is deleted.

[0171] As can be seen from the above embodiments, the redundant data generated by the source module is used to protect the integrity of the input data. Therefore, the verification method used for integrity verification can be determined through the redundant data generated by the source module in the third supplementary data. Multiple redundant data can be generated from the same supplementary data, and different verification methods are required for integrity verification of different redundant data.

[0172] For example, if the current module is LDPC, the third output data of its superior module DM includes the third additional data generated by the PCIe / NVMe module and the DPM module, which are two pieces of Meta information. In the Meta information corresponding to the PCIe / NVMe module, VN = DPM, and in the Meta information corresponding to the DPM module, VN = LDPC. Then, by matching the module identifiers, it is determined that the integrity verification of the data protected by the DPM module in the transmitted data needs to be performed in the LDPC module (i.e., the current module).

[0173] Assuming PM = ECC in the Meta information corresponding to the DPM module, then in the LDPC module at this level, the ECC verification method is used to perform integrity verification on the data protected by the DPM module in the third input data.

[0174] In this embodiment, during the data writing process (Host → Nand), to ensure data transmission accuracy, corresponding Meta information needs to be added during data transmission for integrity verification. Since the data ultimately written to Nand no longer requires integrity verification (i.e., the data ultimately written to Nand is user data), when each integrity verification is completed, if the third supplementary data (Meta information) contains a destination module identifier that has not undergone integrity verification, the corresponding third supplementary data (Meta information) can be retained. If the third supplementary data (Meta information) does not contain a destination module identifier that has not undergone integrity verification, the corresponding third supplementary data (Meta information) can be deleted.

[0175] In one embodiment, to facilitate rapid location of data transmission anomalies, when an integrity check fails, a check failure message is generated and stored in a status register or memory for real-time reporting of the current data transmission status. The check failure message includes the source module identifier, the destination module identifier, the redundant data generated by the source module, and the currently generated actual redundant data.

[0176] In this embodiment, integrity verification can detect erroneous data in a timely manner during data transmission. Specifically, if the integrity verification fails, a verification failure message is generated and stored in the status register or memory, thereby enabling real-time reporting of the current abnormal data transmission status.

[0177] 504. If the integrity check is completed or not, determine whether this module is the last module of the data path.

[0178] In this embodiment, considering that when data obtained from the Host is written to the Nand, integrity verification is not required in the Nand, the last module in the data path (i.e., the module adjacent to the Nand) does not need to generate additional data (i.e., Meta information). Therefore, when integrity verification is completed or not, it is necessary to determine whether the current module is the last module in the data path, so as to determine whether to generate the corresponding fourth additional data in the current module.

[0179] When all integrity checks required to be performed in this module have been completed—for example, if data transmitted from the PCIe / NVMe module, DPM module, DM module, and LDPC module is specified to be checked in the LDPC module—then when all integrity checks are completed in the LDPC module, it is necessary to determine whether this module is the last module in the data path. Alternatively, if integrity checks are not specified to be performed in the current module or if the current module is the first module in the data path, then integrity checks are not required, and therefore it is necessary to determine whether the current module is the last module in the data path.

[0180] Since the order of modules in the data path is fixed, the order of each module can be predetermined, which can then be used to determine whether the current module is the last module in the data path.

[0181] 505. If the current module is not the last module in the data path, then the fourth additional data corresponding to the current module is generated and used together with the third input data as the fourth output data of the current module. The fourth output data is the fourth input data of the next lower module.

[0182] In this embodiment, except for the last module of the data path, regardless of whether integrity verification is performed or not, other modules will generate a fourth additional data (Meta information) corresponding to the input data, i.e., Meta = SM + DN + PM + VN. SM and DN are specifically determined according to the module corresponding to the data transmission. For example, if the current data needs to be transmitted from the PCIe / NVMe module to the DPM module, then SM = PCIe / NVMe and DN = DPM. PM and VN are used to perform integrity verification on the transmitted data. The verification method used for integrity verification can be configured according to the actual application scenario. Any one or more verification methods can be configured, such as PM = ECC, PM = CRC, or PM = ECC + CRC, etc. The location of integrity verification can also be configured according to the actual application scenario. Any one or more modules in the data transmission direction can be configured, such as VN = DPM, VN = DM, VN = LDPC, VN = DPM + DM, VN = DPM + LDPC, VN = DM + LDPC, or VN = DPM + DM + LDPC.

[0183] In this embodiment, the module output OM = module input IM + additional data Meta. Assuming data is transmitted from the PCIe / NVMe module to the DPM module, the PCIe / NVMe module has input3 as input, output3 as output, and additional data meta3 (used to protect the input data input3). The DPM module has input4 as input, output4 as output, and additional data meta4 (used to protect the input data input4). The output of the upper-level module is the input of the lower-level module: output3 = input4, output3 = input3 + meta3, output4 = input4 + meta4. Therefore, output4 = input4 + meta4 = (input3 + meta3) + meta4. It can be seen that the more modules the data to be transmitted passes through, the more additional data is contained in the data to be transmitted. Furthermore, after each integrity check, the corresponding additional data can be deleted or retained. For example, if VN = DM in meta4 above, then when data is transmitted to the DM module, the DM module needs to perform integrity verification on the transmitted data, and then delete meta4 after the verification is completed; however, if VN = DM + LDPC in meta4, then when data is transmitted to the DM module, the DM module needs to perform integrity verification on the transmitted data, and then retain meta4 after the integrity verification is completed (it needs to be deleted after the integrity verification is completed in the LDPC module).

[0184] In this embodiment, the fourth additional data generated by the current module, together with the third input data, is transmitted to the next lower module as the fourth output data of the current module, and also serves as the fourth input data of the next lower module. Consequently, each node (i.e., each module) on the subsequent data transmission path will execute the above steps 501-505 once when it receives new input data, thereby completing the data transmission through each node on the transmission path and achieving integrity protection of solid-state drive data, thus improving data accuracy.

[0185] The data transmission method in the embodiments of the present invention has been described above. The data transmission device in the embodiments of the present invention is described below. The data transmission device in the embodiments of the present invention is applied to the data path of a solid-state drive, and this data path has multiple modules with a relative hierarchical relationship. Please refer to... Figure 6 One embodiment of the data transmission device in this invention includes:

[0186] The acquisition module 601 is used to acquire first input data of any module at this level. The first input data is the original data to be transmitted or the first output data of the upper-level module. The first output data includes the original data to be transmitted and several first additional data.

[0187] The first judgment module 602 is used to determine whether to perform integrity verification on the first input data in this module based on the first data in each of the first additional data if the first input data is the first output data.

[0188] The verification module 603 is used to perform integrity verification on the first input data and delete the corresponding first additional data in this module if integrity verification is to be performed.

[0189] The second judgment module 604 is used to determine whether the current module is the last module of the data path if the integrity check is completed or not.

[0190] The generation module 605 is used to generate second additional data corresponding to the current module if the current module is not the last module of the data path, and use it together with the first input data as the second output data of the current module. The second output data is the second input data of the next level module.

[0191] Optionally, in one embodiment, the first additional data and the second additional data adopt the same data structure, the data structure including: source module identifier, destination module identifier, redundant data generated by the source module and destination module identifier for integrity verification;

[0192] The source module identifier and the destination module identifier are used to identify the data transmission path in the data path. The redundant data generated by the source module is used to protect the data to be transmitted in the data transmission path. The destination module identifier for integrity verification is used to identify the module that performs integrity verification on the data to be transmitted.

[0193] Optionally, in one embodiment, the first determining module 602 is specifically used for:

[0194] Determine whether the target module identifier for integrity verification in each of the first additional data matches the module identifier of the current module; if they match, determine whether to perform integrity verification on the first input data in the current module.

[0195] Optionally, in one embodiment, the verification module 603 is specifically used for:

[0196] If integrity verification is performed, several verification methods are determined based on the redundant data generated by the source module in the corresponding first supplementary data. Each verification method is called sequentially to perform integrity verification on the first input data in this module until the integrity verification is completed. When each integrity verification is completed and there is no destination module identifier in the first supplementary data that has not been verified, the corresponding first supplementary data is deleted.

[0197] Optionally, in one embodiment, the data transmission device further includes:

[0198] The status reporting module 606 is used to generate verification failure information and store it in the status register or memory when there is a failed integrity check, so as to report the current data transmission status in real time; wherein, the verification failure information includes the source module identifier, the destination module identifier, the redundant data generated by the source module, and the currently generated actual redundant data.

[0199] Optionally, in one embodiment, the data path includes a read data path and a write data path;

[0200] When the data path is a read data path, the original data to be transmitted is the first transmission data read from the storage medium; when the data path is a write data path, the original data to be transmitted is the second transmission data obtained from the host.

[0201] Optionally, in one embodiment, the output of any module M in the data path is defined as:

[0202] OM = IM + SM + DN + PM + VN;

[0203] Wherein, OM represents the output data of module M, OM is the data to be transmitted to the next level module in the data path, IM represents the input data of module M, and IM is the output data of the upper level module; SM and DN represent the source module M and the destination module N corresponding to the data to be transmitted, respectively; PM represents the redundant data generated by the source module M; VN represents the integrity verification performed in the destination module N.

[0204] Since the embodiments of the device part correspond to the embodiments of the above method, the description of the data transmission device provided by the present invention should refer to the above method embodiments. The present invention will not be described again here, but it has the same beneficial effects as the above data transmission method.

[0205] above Figure 6 The data transmission device in the embodiments of the present invention will be described in detail from the perspective of modular functional entities. The computer device in the embodiments of the present invention will be described in detail from the perspective of hardware processing.

[0206] Figure 7 This is a schematic diagram of the structure of a computer device 700 provided in an embodiment of the present invention. The computer device 700 can vary significantly due to different configurations or performance characteristics. It may include one or more central processing units (CPUs) 710 (e.g., one or more processors) and a memory 720, and one or more storage media 730 (e.g., one or more mass storage devices) for storing application programs 733 or data 732. The memory 720 and storage media 730 can be temporary or persistent storage. The program stored in the storage media 730 may include one or more modules (not shown in the diagram), each module including a series of instruction operations on the computer device 700. Furthermore, the processor 710 may be configured to communicate with the storage media 730 and execute the series of instruction operations in the storage media 730 on the computer device 700.

[0207] Computer device 700 may also include one or more power supplies 740, one or more wired or wireless network interfaces 750, one or more input / output interfaces 760, and / or one or more operating systems 731, such as Windows Server, Mac OS X, Unix, Linux, FreeBSD, etc. Those skilled in the art will understand that... Figure 7 The computer device structure shown does not constitute a limitation on the computer device and may include more or fewer components than shown, or combine certain components, or have different component arrangements.

[0208] The present invention also provides a computer device, the computer device including a memory and a processor, the memory storing computer-readable instructions, which, when executed by the processor, cause the processor to perform the steps of the data transmission method described in the above embodiments.

[0209] The present invention also provides a computer-readable storage medium, which may be a non-volatile computer-readable storage medium or a volatile computer-readable storage medium, wherein the computer-readable storage medium stores instructions that, when the instructions are executed on a computer, cause the computer to perform the steps of the data transmission method.

[0210] Those skilled in the art will clearly understand that, for the sake of convenience and brevity, the specific working processes of the systems, devices, and units described above can be referred to the corresponding processes in the foregoing method embodiments, and will not be repeated here.

[0211] 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 computer-readable 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, server, or network device, etc.) to execute all or part of the steps of the methods described in the various embodiments of the present invention. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.

[0212] The above-described embodiments are only used to illustrate the technical solutions of the present invention, and are not intended to limit it. Although the present invention has been described in detail with reference to the foregoing embodiments, those skilled in the art should understand that modifications can still be made to the technical solutions described in the foregoing embodiments, or equivalent substitutions can be made to some of the technical features. Such modifications or substitutions do not cause the essence of the corresponding technical solutions to deviate from the spirit and scope of the technical solutions of the embodiments of the present invention.

Claims

1. A data transmission method applied to the data path of a solid-state drive, wherein the data path contains multiple modules with a relative hierarchical relationship, characterized in that, The data transmission method includes: Obtain the first input data of any module at this level. The first input data is either the original data to be transmitted or the first output data of the upper-level module. The first output data includes the original data to be transmitted and several first additional data. If the first input data is the first output data, then based on the first data in each of the first additional data, it is determined whether to perform integrity verification on the first input data in this module. If integrity verification is performed, then based on the second data corresponding to the first additional data, the first input data is verified for integrity in this module and the corresponding first additional data is deleted. If the integrity check is completed or not, determine whether this module is the last module in the data path. If the current module is not the last module in the data path, then the second additional data corresponding to the current module is generated and used together with the first input data as the second output data of the current module. The second output data is the second input data of the next lower module. The data structure used by the first additional data and the second additional data includes: source module identifier, destination module identifier, redundant data generated by the source module, and destination module identifier for integrity verification. The destination module identifier for integrity verification is used to identify the module that performs integrity verification on the data to be transmitted. If integrity verification is performed, then based on the second data corresponding to the first additional data, performing integrity verification on the first input data and deleting the corresponding first additional data in this module includes: If integrity verification is performed, several verification methods are determined based on the redundant data generated by the source module in the first additional data. Each of the aforementioned verification methods is sequentially invoked to perform integrity verification on the first input data in this module until the integrity verification is completed. When each integrity verification is completed and there is no destination module identifier in the first additional data that has not been verified for integrity, the corresponding first additional data is deleted.

2. The data transmission method according to claim 1, characterized in that, The first additional data and the second additional data use the same data structure; The source module identifier and the destination module identifier are used to identify the data transmission path in the data path, and the redundant data generated by the source module is used to protect the data to be transmitted in the data transmission path.

3. The data transmission method according to claim 1, characterized in that, If the first input data is the first output data, then determining whether to perform integrity verification on the first input data in this module based on the first data in each of the first additional data includes: If the first input data is the first output data, then determine whether the target module identifier for integrity verification in each of the first additional data matches the module identifier of the current module; If a match is found, then the integrity of the first input data is determined to be verified in this module.

4. The data transmission method according to claim 1, characterized in that, The data transmission method further includes: When an integrity check fails, a check failure message is generated and stored in the status register or memory for real-time reporting of the current data transmission status. The verification failure information includes the source module identifier, destination module identifier, redundant data generated by the source module, and the currently generated actual redundant data.

5. The data transmission method according to claim 1, characterized in that, The data path includes a read data path and a write data path; When the data path is a read data path, the original data to be transmitted is the first transmission data read from the storage medium; when the data path is a write data path, the original data to be transmitted is the second transmission data obtained from the host.

6. The data transmission method according to claim 1, characterized in that, The output of any module M in the data path is defined as: OM = IM + SM + DN + PM + VN; Wherein, OM represents the output data of module M, OM is the data to be transmitted to the next level module in the data path, IM represents the input data of module M, and IM is the output data of the upper level module; SM and DN represent the source module M and the destination module N corresponding to the data to be transmitted, respectively; PM represents the redundant data generated by the source module M; VN represents the integrity verification performed in the destination module N.

7. A data transmission device applied to the data path of a solid-state drive, wherein the data path contains multiple modules with a relative hierarchical relationship, characterized in that, The data transmission device includes: The acquisition module is used to acquire the first input data of any module at this level. The first input data is the original data to be transmitted or the first output data of the upper-level module. The first output data includes the original data to be transmitted and several first additional data. The first judgment module is used to determine whether to perform integrity verification on the first input data in this module based on the first data in each of the first additional data if the first input data is the first output data. The verification module is used to perform integrity verification on the first input data and delete the corresponding first additional data in this module if integrity verification is required. The second judgment module is used to determine whether this module is the last module of the data path if the integrity check is completed or not. A generation module is used to generate second additional data corresponding to the current-level module if the current-level module is not the last module of the data path, and to use this data, together with the first input data, as the second output data of the current-level module. The second output data is the second input data of the next-level module. The data structure adopted by the first additional data and the second additional data includes: source module identifier, destination module identifier, redundant data generated by the source module, and destination module identifier for integrity verification. The destination module identifier for integrity verification is used to identify the module that performs integrity verification on the data to be transmitted. Specifically, the verification module is used to: if integrity verification is to be performed, determine several verification methods to be used for integrity verification based on the redundant data generated by the source module in the corresponding first additional data; sequentially call each of the verification methods to perform integrity verification on the first input data in this module until the integrity verification is completed, wherein when each integrity verification is completed and there is no destination module identifier in the first additional data that has not been integrity verified, delete the corresponding first additional data.

8. A computer device, characterized in that, The computer device includes: a memory and at least one processor, wherein the memory stores instructions; The at least one processor invokes the instructions in the memory to cause the computer device to perform the data transfer method as described in any one of claims 1-6.

9. A computer-readable storage medium storing instructions thereon, characterized in that, When the instruction is executed by the processor, it implements the data transmission method as described in any one of claims 1-6.

Citation Information

Patent Citations

  • Database backup verification method and device

    CN107193683A

  • Method and device for improving reliability of data path of solid state disk, computer equipment and storage medium

    CN111625199A