Detailed Description
Embodiments of the present invention are described in detail below, examples of which are illustrated in the accompanying drawings, wherein like or similar reference numerals refer to like or similar elements or elements having like or similar functions throughout. The embodiments described below are exemplary and intended to illustrate the present invention and should not be construed as limiting the invention, and all other embodiments, based on the embodiments of the present invention, which may be obtained by persons of ordinary skill in the art without inventive effort, are within the scope of the present invention.
The present invention proposes a bad block processing method, in an embodiment, referring to fig. 1, the bad block processing method includes:
step S10, reading storage data in a target block; the flash memory includes blocks (blocks) for storing data, the data to be stored are written in the blocks, and when the data in the flash memory needs to be called, the data are read from the corresponding blocks. It should be noted that the target block mentioned in this embodiment refers to a block in which data reading is currently being performed.
Step S20, when ECC failure occurs in the read storage data, obtaining an error code of a target block; after the command of reading the storage data is completed, corresponding data feedback exists, if ECC information exists in the data, the condition that ECC failure occurs when the storage data is read is indicated, and then the error code of the target block can be acquired.
Step S30, according to the data recorded by the error codes, analyzing the read error type of the target block, and determining the read error type of the target block; it should be noted that the error code of the target block is recorded with the type of data read, from which the cause of the read error of the target block can be analyzed to determine the type of read error of the target block.
Step S40, according to the read error type of the target block, the state identification is carried out on the target block. In this embodiment, after confirming the read error type of the target block, the target block of the read error type caused by the software cause may be identified as the block to be determined, and the target block of the read error type caused by the non-software cause may be identified as the bad block, so that the system may remove the bad block from the operation chain. For the block to be determined caused by the software cause, it may be verified thereafter to perform targeted optimization on the software, such as resetting write command parameters, or changing read-write operation modes, etc., including but not limited to. If the ECC failure condition does not occur any more after the software is optimized, the block to be determined is a usable block, which is a read error caused by the software reason, and is not a bad block which is not operable.
In an embodiment, referring to fig. 2, according to the data recorded by the error code, performing read error type analysis on the target block, and determining the read error type of the target block includes:
step S31, if all the data recorded by the error code are the first numerical value, the write command parameter of the target block is obtained; in this embodiment, the first value is 1, that is, if all the data recorded by the error code is 1, it indicates that an error has occurred in the process of writing the data, so that the data is not written into the target block, and the read data is all 1 after the erasure. It should be noted that 1 here represents a stored form of data, which is represented in binary. The available blocks can set all the bits of one erasure block to 1 at a time when the erasure operation is performed, and can write 1 of a single bit to 0 when the write operation is performed, but can not write 0 to 1, so that the original content of the whole erasure block is erased and new data is written in the normal write operation.
Step S32, judging whether the target writing block in the writing command parameter is consistent with the target block;
step S33, if the read error types of the target blocks are inconsistent, determining that the read error types of the target blocks are first error types, wherein the first error types indicate that the storage data of the target blocks are incorrect;
in this embodiment, it is first confirmed whether the addresses of the target write block and the target block are identical. If the storage data read from the target block is inconsistent, the storage error indicates that the storage position of the storage data read from the target block is wrong, the correct storage position of the storage data is the target writing block and is not the target block, and in practical application, the data stored in two different blocks are different. Therefore, in the present embodiment, if all of the storage data BBB read from the target block a has the first value of 1, the write command parameter of the target block is acquired, the target write block a 'of the read storage data BBB is acquired from the write command parameter, and if the address of the target block a matches the address of the target write block a', this indicates that the storage position of the storage data read from the target block a is correct, and if the address of the target block a does not match the address of the target write block a ', this indicates that the storage position of the storage data read from the target block a is incorrect, that is, the storage position of the storage data BBB should be the target write block a', but this is stored in the target block a. Since the storage data BBB is stored in a wrong position, all the read-out storage data BBBs are 1 in the present read operation. In this step, if the target block a is inconsistent with the target write block a', it is determined that the first error type occurs in the read operation from the target block a.
Step S34, if the data are consistent, a target writing page in the target block is obtained, and whether the target writing page finishes data writing or not is judged;
and if the address of the target writing block is consistent with that of the target block, acquiring a target writing page in the target block, and judging whether the target writing page finishes data writing. Note that a Block (Block) includes several pages (pages), and in different Flash protocols, a plurality of pages form one Word Line (WL). When judging whether the target writing page finishes data writing, namely judging whether a plurality of pages of the same word line write data according to the specificity of Flash, if not writing data according to the specificity of Flash, the data is not written into the target block, so that a reading command is failed, and the read data is all 1. For example, assuming that three pages form one WL, in general, if three pages of the same WL do not write data together, a read command fails, so that all data read from the target block is 1. However, in some Flash specifics, some Flash's Low Page (lower Page) may be written separately and allow read operations, upper Page (Upper Page) and Extra Page (Extra Page) to operate together.
Step S35, if not, determining that the read error type of the target block is a second error type, wherein the second error type represents that the target write page of the target block does not complete data writing;
step S36, if the read error type of the target block is determined to be a bad block error type, wherein the bad block error type indicates that the target block is a bad block.
In this embodiment, after determining that the target write page does not complete the data writing, that is, the target write page indicating that the data is not written in the target block, the target block is determined as the second error type. After determining that the target write page completes writing data, that is, indicating that data has been written in this target block, since the data read out from the target block is all 1's, it can be determined that the target block is a bad block.
In the above embodiment, referring to fig. 3, according to the read error type of the target block, performing the status identification on the target block includes:
step S41, if the read error type is the first error type or the second error type, marking the target block as a block to be determined;
in step S42, if the read error type is a bad block error type, the target block is marked as a bad block.
In this embodiment, if the read error type is the first error type or the second error type, the target block is marked as the block to be determined. After the status identification is completed, a determination operation may be performed on the block to be determined of the first error type and the second error type to verify whether the block to be determined is a read data error caused by a software cause, thereby determining whether the block to be determined can be used continuously. Specifically, for the first error type, correct storage data can be stored in the target block and the reading operation of the storage data is repeated, if the read data is correct, the ECC failure cannot occur, and the block to be determined is an available block, which is the last reading error caused by software reasons. Otherwise, if ECC failure still occurs when reading data, the block to be determined is a bad block. And for the second error type, the block to be determined can be read and written again according to the Specific of Flash, and if the read data is correct, the ECC failure cannot occur, the block to be determined is an available block, and the last read error is caused by software reasons. If ECC failure still occurs when data is read, the block to be determined is a bad block.
In another embodiment, referring to fig. 4, according to the data recorded by the error code, performing read error type analysis on the target block, and determining the read error type of the target block includes:
step S37, if all the data recorded by the error code are the second numerical value, judging whether all the stored data of the target block are the second numerical value; in this embodiment, the second value is 0, that is, if all the data recorded by the error code is 0, the data that may be written is all 0, which results in all 0 after erasing the data that is read. It should be noted that 0 here represents a stored form of data, which is represented in binary.
Step S38, if yes, determining that the read error type of the target block is a third error type, wherein the third error type indicates that the target block is abnormal;
step S39, if not, the write operation mode and the read operation mode of the target block are obtained, and the write operation mode and the read operation mode are judged to be inconsistent;
in this embodiment, if the data written in the target block is all 0, it indicates that the target block is an available block without any exception, and the error type of the target block is determined to be the third error type. If the data written in the target block is not all 0, the write operation mode and the read operation mode of the target block are acquired, so as to judge whether the operation modes of the target block during writing and reading are consistent or not respectively. Data writing and data reading generally include the following four modes: a Slc (Single level cell, single-tier storage) mode, a Tlc (Trinary level cell, three-tier storage) mode, a Mlc (Multi-tier storage) mode, and a Qlc (Quad-tier storage) mode. If the data write mode is different from the data read mode, it means that the write mode and the read mode of the target block do not match. For example, data is written in the Slc mode and read out in the Tlc mode; alternatively, data is written in Tlc mode and read out in Slc mode.
Step S310, if the read error types of the target blocks are consistent, determining that the read error types of the target blocks are bad block error types, wherein the bad block error types indicate that the target blocks are bad blocks;
in step S311, if the read error type of the target block is inconsistent, it is determined that the read error type of the target block is a fourth error type, and the fourth error type indicates that the current read operation mode and the write operation mode of the target block are inconsistent.
In this embodiment, if the write operation mode of the target block is consistent with the read operation mode, it may be determined that the read error type of the target block is a bad block error type. If the write operation mode and the read operation mode of the target block are inconsistent, the current read operation mode and the write operation mode of the target block are inconsistent, and the error type of the target block is determined to be a fourth error type.
In the above-mentioned another embodiment, referring to fig. 5, the bad block processing method according to the present invention further includes:
step S312, if the stored data of the target block is not all the second value, the scrambling parameters of the stored data of the target block in the writing operation and the reading operation are obtained, and whether the scrambling parameters of the target block in the writing operation and the reading operation are consistent is judged; in this embodiment, if the scrambling parameters set by the target block in the data writing operation and the data reading operation are inconsistent, the read data is all 0. For example, data is written with the scrambling parameters open and read with the scrambling parameters closed; alternatively, the data is written with the ram closed and read with the ram open.
Step S313, if the read error types of the target blocks are consistent, determining that the read error types of the target blocks are bad block error types, wherein the bad block error types indicate that the target blocks are bad blocks;
in step S314, if the read error type of the target block is inconsistent, it is determined that the read error type of the target block is a fifth error type, and the fifth error type indicates that the scrambling parameters of the current read operation and the write operation of the target block are inconsistent.
In this embodiment, if the scrambling parameters set by the target block during the data writing operation are consistent with those set during the data reading operation, the data reading error caused by inconsistent scrambling parameters can be eliminated, so that the reading error type of the target block is determined as a bad block error type. If the scrambling parameters set by the target block in the data writing operation and the data reading operation are inconsistent, the reading error type of the target block is determined to be a fifth error type.
In another embodiment, referring to fig. 3, the identifying the status of the target block according to the read error type of the target block includes:
step S43, if the read error type is the third error type, the fourth error type or the fifth error type, marking the target block as the block to be determined;
in step S44, if the read error type is a bad block error type, the target block is marked as a bad block.
In this embodiment, if the read error type is the third error type, the fourth error type, or the fifth error type, the target block is marked as the block to be determined. After the status identification is completed, a determination operation may be performed on the block to be determined of the third error type, the fourth error type, and the fifth error type to verify whether the block to be determined is a read data error caused by a software cause, thereby determining whether the block to be determined can be used continuously. Specifically, for the third error type, the target block may be re-read and written, before that, all the data stored in the target block needs to be erased, the erased data type is all 1, and then the data is written, that is, the 1 is rewritten to 0 correspondingly. After the data is rewritten, the data in the target block is read again, if the read data is correct, and ECC failure does not occur, the block to be determined is an available block, and the last reading error is caused by software reasons. Otherwise, if ECC failure still occurs when reading data, the block to be determined is a bad block. Likewise, for the fourth error type and the fifth error type, the data stored in the target block can be read again by changing the operation mode and the scrambling code parameter of the target block to be opposite to the current read command, if the read data is correct, the ECC failure will not occur, and the block to be determined is an available block, which is the last read error caused by the software reason. Otherwise, if ECC failure still occurs when reading data, the block to be determined is a bad block.
In yet another embodiment, referring to fig. 6, performing read error type parsing on the target block according to the error code data, determining the read error type of the target block includes:
step S315, if the data recorded by the error code comprises a first value and a second value, determining an operation page of the target block for reading operation currently; in this embodiment, when there are both 1 and 0 in the data recorded by the error code, three cases are mainly considered, the first: confirming whether the current Block is an Open Block; second,: confirming whether the number of ECC failures in adjacent pages or adjacent word lines exceeds a preset value of low density parity check error correction capability (LDPC); third,: and confirming whether the Program/Erase times of the currently operated Block exceeds the preset erasing times. That is, if there are both 1 and 0 in the data read out from the target block, the cause of the ECC failure in this case is mainly the three cases.
Step S316, reading the adjacent pages within the preset range of the operation page according to the reading strategy;
step S317, the ECC failure number of the adjacent pages is obtained, and whether the ECC failure number of all the adjacent pages is larger than a preset value of the low density parity check error correction capability is judged;
In this embodiment, the above second case is first identified, and the reading policy includes reading a preset number of pages from the Page number currently operated, typically 12 pages, and it should be understood that this number of pages is only exemplary and not limiting. After the reading is finished, checking whether the ECC failure number in all 12 pages is larger than a preset value of the low-density parity check error correction capability, and analyzing the reading error type of the target block according to the ECC failure number.
Step S318, if the ECC failure number of all the adjacent pages is smaller than the preset value of the low density parity check error correction capability, determining that the read error type of the target block is a bad block error type, wherein the bad block error type indicates that the target block is a bad block;
in step S319, if the number of ECC failures of all the adjacent pages is greater than or equal to the preset value of the low-density parity check error correction capability, the read error type of the target block is determined to be a sixth error type, where the sixth error type indicates that the read algorithm of the target block is to be optimized.
When the number of ECC failures in the 12 pages read before is greater than or equal to the preset value of the error correction capability of the low-density parity check, the ECC failure condition occurring when the stored data of the target block is read is indicated, and the relationship between the ECC failure condition and the higher number of ECC failures in the adjacent pages exists. That is, the number of ECC failures in adjacent pages will affect the data reading of the current Page, resulting in ECC failure of the Page of the current read data. Further, the read error type of the target block may be determined as a sixth error type, the sixth error type indicating that the read algorithm of the target block is to be optimized. Otherwise, when the number of ECC failures in the 12 pages read forward is smaller than the preset value of the error correction capability of the low-density parity check, the ECC failure condition occurring when the data stored in the target block is read due to the fact that the number of ECC failures in the adjacent pages is high can be eliminated, namely the target block is an inoperable bad block. Preferably, the preset value of the low density parity check error correction capability according to the present embodiment uses half of the low density parity check error correction capability as a reference threshold, and it should be understood that this value is only exemplary and not limiting.
In yet another embodiment, referring to fig. 7, according to the data recorded by the error code, performing read error type analysis on the target block, and determining the read error type of the target block includes:
step S320, if the data recorded by the error code comprises a first value and a second value, the maintenance parameters of the target block are obtained, and the erasing times of the target block are determined;
step S321, judging whether the erasing times of the target block is larger than or equal to the preset erasing times;
in this embodiment, for the third case, whether the erasing frequency of the target block is higher is checked by checking the software maintenance parameter. It will be appreciated that if the number of erasures of the target block is high, there is a possibility that the data read error may be caused by the reason that if the number of erasures of the target block exceeds the preset number of erasures, the data stored in the target block may have an error itself, rather than the data read error caused by the bad block.
Step S322, if the erasing times of the target block is smaller than the preset erasing times, determining that the read error type of the target block is a bad block error type, wherein the bad block error type indicates that the target block is a bad block;
In step S323, if the number of times of erasing the target block is greater than or equal to the preset number of times of erasing, the read error type of the target block is determined to be a seventh error type, and the seventh error type indicates that the target block needs wear leveling.
In this embodiment, if it is determined that the number of times of erasing the target block is smaller than the preset number of times of erasing, the error of the stored data in the target block caused by the number of times of erasing the target block exceeding the preset number of times of erasing can be eliminated, so that the read error type of the target block is determined as a bad block error type. Otherwise, if the number of times of erasing the target block is determined to be greater than or equal to the preset number of times of erasing, the reason for indicating that the data reading error occurs in the target block may be caused by a software wear-leveling algorithm error, so that the target block is identified as a seventh error type instead of being directly identified as a bad block error type.
As for the first case mentioned above, it should be noted that Open Block refers to a Block that does not write a full Page, for example, 1 Block has 200 pages, and only 100 or 199 blocks are written during data writing, and all blocks belong to the category of Open Block. In the case of Open Block, this also results in both 1 and 0 data being read from the target Block. For this reason, if the data read from the target Block has both 1 and 0, it is necessary to confirm whether all the pages in the target Block are completely written, or send a read command to read the last page of the target Block to determine whether the target Block is an Open Block. Whether the target Block is an Open Block can be determined based on the last page of the read target Block because data is written one by one in page order during the writing process. For this case, the data stored in the target Block may be erased completely, the data in the erased target Block is all 1, and then the data is read again from the target Block, if the read data is all 1 or the data of the last page of the target Block is all 1, it means that the target Block is an Open Block, which is an available Block capable of continuing operation, but not a bad Block.
In still another embodiment or another embodiment of the foregoing, referring to fig. 3, the identifying the status of the target block according to the read error type of the target block includes:
step S45, if the read error type is a sixth error type or a seventh error type, marking the target block as a block to be determined;
in step S46, if the read error type is a bad block error type, the target block is marked as a bad block.
In this embodiment, if the read error type is the sixth error type or the seventh error type, the target block is marked as the block to be determined. After the status identification is completed, a determination operation may be performed on the block to be determined of the sixth error type or the seventh error type to verify whether the block to be determined is a read data error caused by a software cause, thereby determining whether the block to be determined can be used continuously. Specifically, for the sixth error type, the data stored in the target block may be re-read after optimizing the re-reading algorithm of the software, that is, under the condition of not being affected by the number of ECC failures of adjacent pages, the stored data in the target block may be re-read, and if the read data is correct, the ECC failure will not occur, which indicates that the block to be determined is an available block, which is the last reading error caused by the software cause. Otherwise, if ECC failure still occurs when reading data, the block to be determined is a bad block. Similarly, for the seventh error type, after wear-leveling is performed on the target block, the stored data in the target block is read again, and if the read data is correct, no ECC failure occurs, the block to be determined is an available block, which is the last read error caused by software reasons. If ECC failure still occurs when data is read, the block to be determined is a bad block.
Based on the foregoing proposed bad block processing method, the present invention further proposes a bad block processing device, referring to fig. 8, the bad block processing device includes:
a data reading module 1 for reading the stored data in the target block;
the data acquisition module 2 is used for acquiring error codes of the target blocks when ECC failure occurs in the read storage data;
the error analysis module 3 is used for analyzing the read error type of the target block according to the data recorded by the error code and determining the read error type of the target block;
and the error identification module 4 is used for carrying out state identification on the target block according to the read error type of the target block.
In one embodiment, the error resolution module 3 according to the present invention includes:
the first acquisition unit is used for acquiring write command parameters of the target block if all the data recorded by the error code are the first numerical value;
a first judging unit for judging whether the target writing block in the writing command parameter is consistent with the target block;
the first determining unit is used for determining that the read error type of the target block is a first error type if the read error type is inconsistent, and the first error type indicates that the storage data of the target block is incorrect;
the second judging unit is used for acquiring a target writing page in the target block if the target writing page is consistent with the target writing page, and judging whether the target writing page finishes data writing;
A second determining unit configured to determine that a read error type of the target block is a second error type, the second error type indicating that the target write page of the target block does not complete data writing;
and the third determining unit is used for determining that the read error type of the target block is a bad block error type if the read error type of the target block is finished, wherein the bad block error type indicates that the target block is a bad block.
In the above-described embodiment, the error identification module 4 according to the present invention includes:
a first marking unit, configured to mark the target block as a block to be determined if the read error type is the first error type or the second error type;
and the second marking unit is used for marking the target block as a bad block if the read error type is a bad block error type.
In another embodiment, the error resolution module 3 according to the present invention further includes:
the third judging unit is used for judging whether the stored data of the target block are all the second numerical values if the data recorded by the error codes are all the second numerical values;
a fourth determining unit, configured to determine, if yes, that the read error type of the target block is a third error type, where the third error type indicates that the target block is not abnormal;
a fourth judging unit, configured to obtain a write operation mode and a read operation mode of the target block if not, and judge that the write operation mode is inconsistent with the read operation mode;
A fifth determining unit, configured to determine that the read error type of the target block is a bad block error type if the read error type is consistent, where the bad block error type indicates that the target block is a bad block;
and the sixth determining unit is used for determining that the read error type of the target block is a fourth error type if the read error type is inconsistent, wherein the fourth error type indicates that the current read operation mode and the write operation mode of the target block are inconsistent.
In the above-described another embodiment, the error resolution module 3 according to the present invention further includes:
a fifth judging unit, configured to obtain scrambling parameters of the stored data of the target block during the write operation and the read operation if it is judged that the stored data of the target block is not all the second values, and judge whether the scrambling parameters of the target block during the write operation and the read operation are consistent;
a seventh determining unit, configured to determine that the read error type of the target block is a bad block error type if the read error type is consistent, where the bad block error type indicates that the target block is a bad block;
and an eighth determining unit, configured to determine that the read error type of the target block is a fifth error type if the read error type is inconsistent, where the fifth error type indicates that the current scrambling parameters of the read operation and the write operation of the target block are inconsistent.
In the above-described other embodiment, the error identification module 4 according to the present invention further includes:
a third marking unit, configured to mark the target block as a block to be determined if the read error type is a third error type, a fourth error type, or a fifth error type;
and the fourth marking unit is used for marking the target block as a bad block if the read error type is a bad block error type.
In yet another embodiment, the error resolution module 3 according to the present invention further includes:
a ninth determining unit, configured to determine an operation page of the target block that is currently performing the read operation if the data recorded by the error code includes the first value and the second value;
the reading unit is used for reading the adjacent pages within the preset range of the operation page according to the reading strategy;
a sixth judging unit, configured to obtain the number of ECC failures of adjacent pages, and judge whether the number of ECC failures of all adjacent pages is greater than a preset value of low-density parity check error correction capability;
a tenth determining unit, configured to determine that the read error type of the target block is a bad block error type if the number of ECC failures of all adjacent pages is smaller than a preset value of the low density parity check error correction capability, where the bad block error type indicates that the target block is a bad block;
And the eleventh determining unit is configured to determine that the read error type of the target block is a sixth error type if the number of ECC failures of all adjacent pages is greater than or equal to a preset value of the low-density parity check error correction capability, where the sixth error type indicates that the read algorithm of the target block is to be optimized.
In still another embodiment, the error resolution module 3 according to the present invention further includes:
a twelfth determining unit, configured to obtain a maintenance parameter of the target block if the data recorded by the error code includes the first value and the second value, and determine the erasing times of the target block;
a seventh judging unit, configured to judge whether the number of erasing times of the target block is greater than or equal to a preset number of erasing times;
a thirteenth determining unit, configured to determine that the read error type of the target block is a bad block error type if the number of times of erasing the target block is less than the preset number of times of erasing, where the bad block error type indicates that the target block is a bad block;
and a fourteenth determining unit, configured to determine that the read error type of the target block is a seventh error type if the number of times of erasing the target block is greater than or equal to the preset number of times of erasing, where the seventh error type indicates that wear leveling is required for the target block.
In the above-described further embodiment or another embodiment, the error identification module 4 according to the present invention further includes:
A fifth marking module, configured to mark the target block as a block to be determined if the read error type is the sixth error type or the seventh error type;
and the sixth marking module is used for marking the target block as a bad block if the read error type is a bad block error type.
Based on the bad block processing method, the invention also provides bad block processing equipment, which comprises:
a memory for storing a computer program;
and a processor, configured to implement the steps of the bad block processing method in the foregoing embodiment when executing the computer program, where the steps of the bad block processing method at least include:
step S10, reading storage data in a target block;
step S20, when ECC failure occurs in the read storage data, obtaining an error code of a target block;
step S30, according to the data recorded by the error codes, analyzing the read error type of the target block, and determining the read error type of the target block;
step S40, according to the read error type of the target block, the state identification is carried out on the target block.
Based on the bad block processing method proposed by the foregoing, the present invention further proposes a computer readable storage medium, where a computer program is stored on the computer readable storage medium, and when the computer program is executed by a processor, the steps of the bad block processing method in the foregoing embodiment are implemented, and the steps of the bad block processing method at least include:
Step S10, reading storage data in a target block;
step S20, when ECC failure occurs in the read storage data, obtaining an error code of a target block;
step S30, according to the data recorded by the error codes, analyzing the read error type of the target block, and determining the read error type of the target block;
step S40, according to the read error type of the target block, the state identification is carried out on the target block.
In the several embodiments provided in the present application, it should be understood that the disclosed method and apparatus may be implemented in other manners. For example, the apparatus embodiments described above are merely illustrative, and for example, the division of the modules is merely a logical function division, and there may be additional divisions when actually implemented, for example, multiple modules or components may be combined or integrated into another apparatus, or some features may be omitted or not performed. Alternatively, the coupling or direct coupling or communication connection shown or discussed with each other may be an indirect coupling or communication connection via some interfaces, devices or modules, which may be in electrical, mechanical, or other forms.
The modules described as separate components may or may not be physically separate, and components shown as modules may or may not be physical modules, i.e., may be located in one place, or may be distributed over a plurality of network modules. Some or all of the modules may be selected according to actual needs to achieve the purpose of the solution of this embodiment.
In addition, each functional module in each embodiment of the present invention may be integrated into one processing module, or each module may exist alone physically, or two or more modules may be integrated into one module. The integrated modules may be implemented in hardware or in software functional modules.
The integrated modules, if implemented in the form of software functional modules and sold or used as a stand-alone product, may be stored in a computer readable storage medium. Based on such understanding, the technical solution of the present invention may be embodied essentially or in part or all of the technical solution or in part in the form of a software product stored in a storage medium, including instructions for causing a computer device (which may be a personal computer, a server, or a network device, etc.) to perform all or part of the steps of the method according to the embodiments of the present invention. And the aforementioned storage medium includes: a U-disk, a removable hard disk, a Read-Only Memory (ROM), a random access Memory (RAM, random Access Memory), a magnetic disk, or an optical disk, or other various media capable of storing program codes.
The above description of the preferred embodiments of the present invention should not be taken as limiting the scope of the invention, but rather should be understood to cover all modifications, variations and adaptations of the present invention using its general principles and the following detailed description and the accompanying drawings, or the direct/indirect application of the present invention to other relevant arts and technologies.