Abstract:
A solid state drive includes: a processing circuit for receiving a read command from the host; a flash memory connected to the processing circuit; and a buffer connected to the processing circuit. An error check and correction method includes following steps. Firstly, a read data retrieved from the flash memory is verified according to a predetermined algorithm when receiving the read command. Then, the read data is outputted by the processing circuit when the read data has no uncorrectable error. Furthermore, a retry action is performed according to a retry table when an error of the read data is uncorrectable. A usage order of a plurality of algorithms is defined in the retry table.

Description:
This application claims the benefits of People&#39;s Republic of China Application Serial No. 201410133835.4, filed Apr. 3, 2014, and Serial No. 201410344519.1, filed Jul. 18, 2014, the subject matters of which are incorporated herein by reference. 
     FIELD OF THE INVENTION 
     The present invention relates to a solid state drive and associated method, and more particularly to a solid state drive and associated error check and correction method. 
     BACKGROUND OF THE INVENTION 
     As is well known, a solid state drive (hereinafter, SSD) is a data storage drive that uses NAND flash memories to store data. Solid state drive with NAND flash memories is a non-volatile memory device. After being written to the non-volatile memory, the data are retained in the solid state drive even if power supply system is off. 
     It is well known that the flash memory includes a memory cell array composed of plural memory cells. Each memory cell in the flash memory includes a floating gate transistor. 
     In a program cycle, hot carriers, such as electronics, are injected to a floating gate of the floating gate transistor. With the injected hot carriers, the threshold voltage of the floating gate transistor will change and various storage states are accordingly generated. Different storage states are corresponding to various distributions of threshold voltage. 
       FIG. 1  is a schematic diagram illustrating storage state versus threshold voltage distribution of the flash memory. Take a flash memory with single-level cell (hereinafter, SLC) as an example, a memory cell may have two storage states, that is, a first storage state (E) and a second storage state (A). 
     By calculating the threshold voltage of all memory cells, it is found that distributions of the threshold voltages of the memory cells at the first storage state (E) are close to a first threshold voltage level V THE , and distributions of the threshold voltages of the memory cells at the second storage state (A) are close to a second threshold voltage level V THA . Thus, a slice voltage (Vs) can be utilized to determine storage states of most of the memory cells. That is to say, the memory cells with threshold voltage less than the slice voltage are determined to be at the first storage state (E), and the memory cells with threshold voltage greater than the slice voltage are determined to be at the second storage state (A). 
     However, when threshold voltages of some memory cells at the first storage state (E) are greater than the slice voltage (Vs), these memory cells will be mistakenly determined as being at the second storage state (A). Similarly, when threshold voltages of some memory cells at the second storage state (A) are less than the slice voltage (Vs), these memory cells will be mistakenly determined as being at the first storage state (E). 
     Similarly, storage states of a flash memory with multi-level cell (hereinafter, MLC) may be mistakenly determined. In such case, the solid state drive needs a mechanism to correct the error. 
       FIG. 2  is a schematic diagram illustrating a conventional solid state drive. The solid state drive  10  includes a processing circuit  101 , a buffer  107  and a flash memory  105 . Between the processing circuit  101  and the host  12 , an external bus  14  is used to transmit command and data. The external bus  14  may be a USB bus, an IEEE 1394 bus or a SATA bus etc. 
     When the host  12  writes data to the flash memory  105 , the host  12  will transmit a write command and write data to the solid state drive  10 . Meanwhile, the ECC controller  103  in the processing circuit  101  will generate an error check and correction (hereinafter, ECC) code corresponding to the write data. Afterward, the processing circuit  101  will write both the write data and the ECC code to the flash memory  105 . 
     When the host  12  needs to read the data stored in the flash memory  105 , the host  12  will generate a read command to the solid state drive  10 . After retrieving a read data and its corresponding ECC code from the flash memory  105 , the processing circuit  101  temporarily stores the read data and the ECC code to the buffer  107 . Then, the ECC controller  103  will verify the read data according to the ECC code. After the ECC controller  103  confirms correctness of the read data, the processing circuit  101  will output the read data to the host  12 . 
     In general, a conventional ECC controller  103  corrects read data by utilizing only one ECC algorithm. When the ECC controller  103  confirms the error of the read data is uncorrectable, the processing circuit  101  cannot output correct read data. Meanwhile, the processing circuit  101  will mark a position of the incorrect read data in the flash memory  105 . Later, the processing circuit  101  will retry to correct the incorrect read data when the solid state drive  10  is in a standby mode. 
     Therefore, in a case that the error of the read data is uncorrectable, the processing circuit  101  cannot recover the read data in real time but has to wait until the standby mode to retry to correct the error. An attempt of correcting the error of the read data in real time results in dramatic drop of data throughput of the solid state drive  10  and seriously affects performance of the solid state drive  10 . 
     SUMMARY OF THE INVENTION 
     A first embodiment of the present invention provides a solid state drive. The solid state drive is connected to a host through an external bus. The solid state drive includes: a processing circuit, connected to the external bus for receiving a read command from the host; a flash memory, connected to the processing circuit; and a buffer, connected to the processing circuit, wherein the processing circuit further comprises an error check and correction (hereinafter, ECC) controller, wherein a read data and a corresponding ECC code are retrieved from the flash memory and temporarily stored to the buffer by the processing circuit, and the ECC controller verifies the read data according to a predetermined algorithm and the ECC code, wherein when an error of the read data is uncorrectable, a retry action is performed according to a retry table, wherein a usage order of a plurality of algorithms is defined in the retry table. 
     A second embodiment of the present invention provides an error check and correction method of a solid state drive. The solid stage drive includes a processing circuit for receiving a read command from a host; a flash memory connected to the processing circuit; and the processing circuit comprises an error check and correction controller. The method comprises steps of: verifying a read data retrieved from the flash memory according to a predetermined algorithm when receiving the read command; outputting the read data by the processing circuit when the read data has no uncorrectable error, and performing a retry action according to a retry table when an error of the read data is uncorrectable, wherein a usage order of a plurality of algorithms is defined in the retry table. 
     A third embodiment of the present invention provides an error check and correction method of a solid state drive. The solid stage drive includes a processing circuit for receiving a read command from a host; a flash memory connected to the processing circuit; and the processing circuit comprises an error check and correction controller. The method includes steps of: retrieving a block usage information of a block corresponding to a read address in the read command; utilizing a first algorithm to verify a read data retrieved from the flash memory when the block usage information is abnormal; outputting the read data when the read data has no uncorrectable error; and performing a retry action according to a first retry table when an error of the read data is uncorrectable. A usage order of a plurality of algorithms is defined in the first retry table. 
     Numerous objects, features and advantages of the present invention will be readily apparent upon a reading of the following detailed description of embodiments of the present invention when taken in conjunction with the accompanying drawings. However, the drawings employed herein are for the purpose of descriptions and should not be regarded as limiting. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The above objects and advantages of the present invention will become more readily apparent to those ordinarily skilled in the art after reviewing the following detailed description and accompanying drawings, in which: 
         FIG. 1  (prior art) is a schematic diagram illustrating storage state versus threshold voltage distribution of the flash memory; 
         FIG. 2  (prior art) is a schematic diagram illustrating a conventional solid state drive; 
         FIG. 3  is a schematic diagram illustrating a solid state drive according to an embodiment of the present invention; 
         FIG. 4  is a schematic diagram illustrating the retry table for the retry action according to the embodiment of the present invention; 
         FIG. 5  is a schematic diagram illustrating the ECC method according to the first embodiment of the present invention; 
         FIG. 6  is a schematic diagram illustrating a retry action is performed according to the retry table; and 
         FIG. 7  is a schematic diagram illustrating the ECC method according to a second embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     The present invention provides a solid state drive capable of maintaining data throughput of the solid state drive itself. A retry action is previously defined in the solid state drive so that the ECC controller can change the algorithm for calibration according to the retry action even when an error of the read data is uncorrectable. Thus, the read data can be outputted in a real time manner and the high data throughput of the solid state drive is maintained. 
       FIG. 3  is a schematic diagram illustrating a solid state drive according to an embodiment of the present invention. The solid state drive  20  includes a processing circuit  210 , a buffer  220  and a flash memory  205 . An external bus  14  is outside the SSD  20 , for transmitting command and data between the processing circuit  210  and the host  12 . The external bus  14  may be a USB bus, an IEEE 1394 bus or a SATA bus etc. 
     When the host  12  needs to read data stored in the flash memory  205 , the host will transmit a read command to the SSD  20 . Meanwhile, the processing circuit  210  retrieves the read data and corresponding ECC code from the flash memory  205 . The read data and the ECC code are thus temporarily stored in the buffer  220 . Consequently, the ECC controller  212  will verify the read data according to ECC code stored in the buffer  220 . According to an embodiment of the present invention, the SSD  20  further comprises a retry table  214  previously defined in the processing circuit  210 , and the ECC controller  212  can correct the error of the read data by using plural ECC algorithms in real time based on instructions predefined in the retry table  214 . 
     When the ECC controller  212  confirms the error of the read data is uncorrectable, the ECC controller  212  will change the algorithm for correction according to content of the retry table  214 . Or, the ECC controller  212  will change other control factors and retry to correct the error of the read data according to content of the retry table  214 . Furthermore, a min-sum hard algorithm, a min-sum soft algorithm, a sum-product hard algorithm, a sum-product soft algorithm, a bit flipping hard algorithm, or a bit flipping soft algorithm can be applied. The ECC algorithms used in the present invention are not limited and the ECC controller  212  may also execute other ECC algorithms. 
       FIG. 4  is a schematic diagram illustrating the retry table for the retry action according to the embodiment of the present invention. The retry table shown in  FIG. 4  is only an example and should not be a limitation of the present invention. For instance, when the ECC controller  212  confirms the error of the read data is uncorrectable according to a predetermined algorithm, the ECC controller  212  will perform the retry action according to the content of the retry table. 
     According to the first instruction (1) shown in the retry table, the ECC algorithm executed by the ECC controller  212  is a min-sum hard algorithm. Furthermore, the processing circuit  210  transmits a hard read command to the flash memory  205  to retrieve a hard bit of read data and a corresponding ECC code for updating the buffer  220 . The processing circuit  210  again attempts to correct the error of the read data according to the hard bit of read data and the ECC code. If the ECC controller  212  successfully corrects the error of the read data, the processing circuit  210  outputs the corrected read data to the host. Otherwise, a second instruction (2) is executed when the error of the read data is uncorrectable by the min-sum hard algorithm according to the first instruction (1). 
     According to the second instruction (2) in the retry table, the algorithm executed by the ECC controller  212  is changed to a min-sum soft algorithm. Furthermore, the processing circuit  210  transmits a soft read command to the flash memory  205  to retrieve a soft bit of read data and corresponding ECC code for updating the buffer  220 . The processing circuit  210  again attempts to correct the error of the read data according to the soft bit of read data and the ECC code. If the ECC controller  212  successfully corrects the error of the read data this time, the processing circuit  210  outputs the corrected read data to the host. Otherwise, a third instruction (3) is executed when the error of the read data is uncorrectable by the min-sum soft algorithm according to the second instruction (2). 
     According to the third instruction (3) in the retry table, the algorithm executed by the ECC controller  212  is changed to min-sum soft algorithm. Furthermore, the processing circuit  210  transmits a hard and a soft read commands to the flash memory  205  to retrieve a hard bit of the read data and a soft bit of read data and corresponding ECC code for updating the buffer  220 . The processing circuit  210  again attempts to correct the error of the read data according to the hard bit and the soft bit of read data and the ECC code. If the ECC controller  212  successfully corrects the error of the read data this time, the processing circuit  210  outputs the corrected read data to the host. Otherwise, a fourth instruction (4) is executed when the error of the read data is uncorrectable by the min-sum soft algorithm according to the third instruction (3). 
     In the embodiment, the fourth instruction (4) of the retry table does not execute another error correction algorithm but a calibration procedure. Since changing ECC algorithms in the previous instructions cannot produce correct read data, the retry table thus requires the processing circuit  210  to perform the calibration procedure to the flash memory  205 . In the calibration procedure, the processing circuit  210  calibrates the slice voltage Vs for retrieving a calibrated slice voltage. The calibrated slice voltage is used later. Whether the calibration procedure is provided is dependent on practical applications. That is, the calibration procedure in the retry table is optional according to the present invention. 
     Furthermore, the retry table after the fourth instruction (4) can also adopt other ECC algorithms to proceed the retry action. The instructions may be similar to the above instructions and not redundantly described. 
     Basically, when designing instruction content of the retry table, a designer of the SSD  20  can refer to characteristics of the flash memory  205 . Therefore, error of the read data can be calibrated during the retry action in real time by following the instructions defined in the retry table and outputted to the host  12  immediately. Consequentially, the high data throughput of the SSD  10  will be maintained. 
       FIG. 5  is a schematic diagram illustrating the ECC method according to the first embodiment of the present invention. The ECC method is proceeded when the processing circuit  210  receives the read command. Then, the ECC controller  212  will verify the read data retrieved from the flash memory  205  according to the predetermined algorithm (step S 401 ). 
     When the ECC controller  212  confirms the read data does not have uncorrectable error (step S 403 ), the processing circuit  210  will output the read data (step S 405 ). On the other hand, when the ECC controller  212  confirms the read data has uncorrectable error (step S 403 ), the ECC controller  212  will perform a retry action according to the content of the retry table (step S 407 ). 
       FIG. 6  is a schematic diagram illustrating a retry action is performed according to the retry table. When the retry action is performed, the algorithm executed by the ECC controller  212  is changed to a first algorithm (step S 407   a ). A read command corresponding to the first algorithm is generated to verify the read data retrieved from the flash memory  205  (step S 407   b ). 
     When the ECC controller  212  confirms the read data does not have uncorrectable error (step S 407   c ), the processing circuit  210  outputs the read data (step S 407   d ). 
     On the other hand, when the ECC controller  212  confirms the error of the read data is uncorrectable (step S 407   c ), the algorithm executed by the ECC controller  212  will change to a second algorithm (step S 407   e ). Furthermore, a read command corresponding to the second algorithm is accordingly generated to verify the read data retrieved from the flash memory  205  (step S 407   f ). 
     According to the above illustrations, the usage order of the ECC algorithms is determined according to the content of the retry table. However, the present invention is not limited to changing usage order of the ECC algorithms. The instruction content predetermined in the retry table comprises but not limited to the retry actions of changing the ECC algorithm, updating the hard bit of the read data, updating the soft bit of the read data, and/or proceeding the calibration procedure before verify the read data again. Furthermore, when the ECC controller  212  confirms the read data has no error, the processing circuit  210  can output the read data immediately and terminate the retry action. 
     Based on the above illustrations, a solid state drive and associated ECC method are provided by the present invention. When the error of the read data is uncorrectable, the ECC controller will perform a retry action according to instructions in the retry table to correct error of the read data in a real time manner. Consequently, the read data can be outputted in real time, and the high data throughput of the solid state drive can be maintained. 
     Furthermore, after repeatedly data programming and erasing of the flash memory  205 , characteristics of memory cells in the flash memory  205  become worse. Thus, another set of algorithm and retry table are provided to memory cells with worse characteristics according to the present invention. In other words, varied from characteristics of the memory cells, different retry actions are correspondingly provided based on the present invention. 
     Basically, the flash memory  205  uses a block as a unit of erasing. Size of the block may be defined as 2 Kbyte, 4 Kbyte, 8 Kbyte or the like. In the flash memory  205 , each block is corresponding to a block usage information. The block usage information may represent erase count of the block, data retention characteristic of the block, etc. Certainly, voltage level of the slice voltage may also be a type of the block usage information. Furthermore, the block usage information may be environmental condition such as environment temperature or environment humidity, etc. The block usage information according to the present invention is not limited to above types. 
     According to the embodiment of the present invention, when the erase count of the block is greater than a threshold count, the data retention characteristic of the block becomes worse, or the voltage level of the slice voltage is lower than a threshold slice voltage, the block usage information is considered as abnormal. Thus, the block corresponding to the abnormal block usage information contains memory cells with worse characteristics and the block should adopt another set of ECC algorithm and retry table. 
       FIG. 7  is a schematic diagram illustrating the ECC method according to a second embodiment of the present invention. First, when the processing circuit  210  receives the read command, a block and its corresponding block usage information are retrieved according to a read address (step S 701 ). In addition, the block usage information is determined to be normal or abnormal (step S 703 ). 
     When the processing circuit  210  confirms the block usage information is normal, the memory cells in the block are considered to be healthy/good. Thus, the ECC controller  210  verifies correctness of the read data retrieved from the flash memory  205  according to the predetermined algorithm (step S 711 ). 
     When the ECC controller  212  confirms the read data does not have any uncorrectable error (step S 713 ), the processing circuit  210  outputs the read data (step S 730 ). In contrast, when the ECC controller  212  confirms the read data has uncorrectable error (step S 713 ), the ECC controller  212  performs the retry action according to the content of the first retry table (step S 719 ). 
     Furthermore, when the processing circuit  210  confirms the block usage information is abnormal, it implies characteristics of the memory cells in the block become unhealthy/worse. Meanwhile, the ECC controller  212  verifies the read data retrieved from the flash memory  205  according to a third algorithm (step S 721 ). 
     When the ECC controller  212  confirms the read data does not have uncorrectable error (step S 723 ), the processing circuit  201  outputs the read data (S 730 ). On the other hand, when the ECC controller  212  confirms the read data has uncorrectable error (step S 723 ), the ECC controller  212  will perform the retry action according to content of the second retry table (step S 729 ). 
     Furthermore, the retry action in the second embodiment can be implemented according to the flow shown in  FIG. 6 . Thus, details are not redundantly described. 
     Based on the above illustrations, depending on characteristics of memory cells, different algorithms are provided for verifying the read data according to the second embodiment of the present invention. In addition, when an uncorrectable error exists in the read data, another retry table is provided to perform the retry action. 
     While the disclosure has been described in terms of what is presently considered to be the most practical and preferred embodiments, it is to be understood that the disclosure needs not be limited to the disclosed embodiment. On the contrary, it is intended to cover various modifications and similar arrangements included within the spirit and scope of the appended claims which are to be accorded with the broadest interpretation so as to encompass all such modifications and similar structures.