固態(tài)儲存裝置及其錯誤更正控制方法【
技術領域:
】[0001]本發(fā)明是有關于一種固態(tài)儲存裝置與其控制方法,且特別是有關于一種固態(tài)儲存裝置及其錯誤更正控制方法?!?br>背景技術:
】[0002]眾所周知,現(xiàn)今的固態(tài)儲存裝置(SolidStateDrive,SSD)一般使用與非門閃存(NANDflashmemory)為主要存儲組件,而此類的閃存為一種非揮發(fā)性(non-volatile)的內存組件。也就是說,當數(shù)據(jù)寫入閃存后,一旦系統(tǒng)電源關閉,數(shù)據(jù)仍保存在閃存中。[0003]眾所周知,閃存包含由多個存儲單元所組成的存儲單元數(shù)組,其中的每個存儲單兀(memorycell)皆包括一個浮動閘晶體管(floatinggatetransistor)。[0004]于程序周期(programcycle)時,利用熱載子(hotcarrier),例如電子,注入(inject)浮動閘晶體管中的浮動閘極(floatinggate),用以改變浮動閘晶體管的閾值電壓(thresholdvoltage),進而產(chǎn)生不同的儲存狀態(tài)。而不同的儲存狀態(tài)會有不同的閾值電壓分布。[0005]請參照圖1,其所繪示為閃存中的儲存狀態(tài)與閾值電壓分布的關系示意圖。以單層存儲單元(Single-LevelCell,簡稱SLC)閃存為例,一個存儲單元可以有兩種儲存狀態(tài),例如第一儲存狀態(tài)(E)與第二儲存狀態(tài)(A)。[0006]再者,統(tǒng)計第一儲存狀態(tài)(E)的所有存儲單元的閾值電壓可知,第一儲存狀態(tài)(E)的閾值電壓分布約在VTHE附近,而統(tǒng)計第二儲存狀態(tài)(A)的所有存儲單元的閾值電壓可知,第二儲存狀態(tài)(A)的閾值電壓分布約在VTHA附近。因此,在讀取存儲單元的儲存狀態(tài)時,利用一切割電壓(slicevoltage,Vs)即可判斷出大部分存儲單元的儲存狀態(tài)。換句話說,于讀取周期時,閾值電壓小于切割電壓(Vs)的存儲單元即被判定為第一儲存狀態(tài)(E),而閾值電壓大于切割電壓(Vs)的存儲單元即被判定為第二儲存狀態(tài)(A)。[0007]然而,某些第一儲存狀態(tài)(E)的存儲單元的閾值電壓大于切割電壓(Vs),這些存儲單元會被誤判為第二儲存狀態(tài)(A)。同理,某些第二儲存狀態(tài)(A)的存儲單元的閾值電壓小于切割電壓(Vs),這些存儲單元會被誤判為第一儲存狀態(tài)(E)。[0008]當然,每個存儲單元儲存多位的多層存儲單元(Mult1-LevelCell,簡稱MLC)閃存也會出現(xiàn)誤判的情況。此時,固態(tài)儲存裝置就需要進行錯誤更正。[0009]請參照圖2,其所繪示為已知的固態(tài)儲存裝置示意圖。固態(tài)儲存裝置10中包括一控制單元101、緩沖單元(bufferingunit)107與一閃存105。而在固態(tài)儲存裝置10外部,控制單元101通過一外部總線14與主機(host)12之間進行指令與數(shù)據(jù)的傳遞。其中,夕卜部總線14可為USB總線、IEEE1394總線或SATA總線等等。[0010]當主機12將寫入數(shù)據(jù)儲存至閃存105時,主機12會發(fā)出寫入指令與寫入數(shù)據(jù)至固態(tài)儲存裝置10。此時,控制單元101中的錯誤更正單元103會根據(jù)寫入數(shù)據(jù)產(chǎn)生一錯誤更正碼(ECCcode)0之后,控制單元101會將寫入數(shù)據(jù)與錯誤更正碼一并寫入閃存105。[0011]當主機12需要讀取閃存105中的數(shù)據(jù)時,主機12會發(fā)出讀取指令至固態(tài)儲存裝置10。此時,控制單元101由閃存105中取得讀取數(shù)據(jù)以及對應的錯誤更正碼并暫存于緩沖單元107中。接著,錯誤更正單元103會根據(jù)錯誤更正碼來驗證讀取數(shù)據(jù)。當錯誤更正單元103確定讀取數(shù)據(jù)的正確性之后,控制單元101輸出讀取數(shù)據(jù)至主機12。[0012]一般來說,已知的錯誤更正單元103是利用單一的算法則來進行數(shù)據(jù)錯誤更正。當錯誤更正單元103確定讀取數(shù)據(jù)中的錯誤無法被更正(uncorrectable)時,控制單元101無法輸出正確的讀取數(shù)據(jù)。此時,控制單元101會將閃存105中儲存讀取數(shù)據(jù)的位置作一標記(mark),直到固態(tài)儲存裝置10待機(standby)時再嘗試更正讀取數(shù)據(jù)。[0013]因此,當錯誤無法被錯誤更正單元103更正時,控制單元101無法實時的修復讀取數(shù)據(jù),需要在待機時嘗試更正讀取數(shù)據(jù)。如果想要實時(realtime)的更正讀取數(shù)據(jù)中的錯誤時,將會造成固態(tài)儲存裝置10的數(shù)據(jù)吞吐率(throughput)大幅下降,嚴重影響固態(tài)儲存裝置10的效能?!?br/>發(fā)明內容】[0014]本發(fā)明提出一種固態(tài)儲存裝置,利用一外部總線連接至一主機,該固態(tài)儲存裝置包括:一控制單元,連接至該外部總線以接收該主機的一讀取指令;一閃存,連接至該控制單元;以及一緩沖單元,連接至該控制單元;其中,該控制單元更包括一錯誤更正單元,該控制單元根據(jù)該讀取指令由該閃存取出一讀取數(shù)據(jù)以及對應的一錯誤更正碼并暫儲于該緩沖單元,該錯誤更正單元利用一預設算法并根據(jù)該錯誤更正碼來驗證該讀取數(shù)據(jù);其中,當該讀取數(shù)據(jù)中的錯誤無法被更正時,根據(jù)一重試表來啟動一重試流程,其中該重試表中定義多個算法則的使用次序。[0015]本發(fā)明提出一種固態(tài)儲存裝置的錯誤更正控制方法,該固態(tài)儲存裝置包括:一控制單元用以接收一主機的一讀取指令;一閃存連接至該控制單元;以及,一緩沖單元連接至該控制單元,該方法包括下列步驟:于收到該讀取指令時,利用一預設算法來驗證由該閃存取得的一讀取數(shù)據(jù);于該讀取數(shù)據(jù)中沒有無法更正的錯誤時,控制單元輸出該讀取數(shù)據(jù);以及于該讀取數(shù)據(jù)中有無法更正的錯誤時,根據(jù)一重試表來啟動一重試流程;其中,該重試表中定義多個算法則的使用次序。[0016]為了對本發(fā)明的上述及其它方面有更佳的了解,下文特舉較佳實施例,并配合附圖,作詳細說明如下:【附圖說明】[0017]圖1所繪示為閃存中的儲存狀態(tài)與閾值電壓分布的關系示意圖。[0018]圖2所繪示為已知的固態(tài)儲存裝置示意圖。[0019]圖3所繪示為本發(fā)明實施例的固態(tài)儲存裝置示意圖。[0020]圖4所繪示為本發(fā)明實施例的重試表示意圖。[0021]圖5所繪示為本發(fā)明實施例的錯誤更正控制方法。[0022]圖6所示為根據(jù)重試表所啟動的重試流程示意圖。[0023]圖7所繪示為本發(fā)明第二實施例的錯誤更正控制方法。【具體實施方式】[0024]為了在不影響固態(tài)儲存裝置的數(shù)據(jù)吞吐率(throughput)下進行實時數(shù)據(jù)錯誤更正,本發(fā)明提出一種固態(tài)儲存裝置,其可定義一重試流程。于讀取數(shù)據(jù)中的錯誤無法被更正(uncorrectable)時,錯誤更正單元可根據(jù)重試流程來實時改變錯誤更正的算法則,并且更正讀取數(shù)據(jù)中的錯誤。如此,可以實時輸出讀取數(shù)據(jù),并且維持固態(tài)儲存裝置的高數(shù)據(jù)吞吐率。[0025]請參照圖3,其所繪示為本發(fā)明實施例的固態(tài)儲存裝置示意圖。固態(tài)儲存裝置20中包括一控制單元201、緩沖單元220與一閃存205。而在固態(tài)儲存裝置20外部,控制單元210通過一外部總線14與主機12之間進行指令與數(shù)據(jù)的傳遞。其中,外部總線14可為USB總線、IEEE1394總線或SATA總線等等。[0026]當主機12需要讀取閃存205中的數(shù)據(jù)時,主機12會發(fā)出讀取指令至固態(tài)儲存裝置20。此時,控制單元210由閃存205中取得讀取數(shù)據(jù)以及對應的錯誤更正碼并暫存于緩沖單元220中。接著,錯誤更正單元212會根據(jù)緩沖單元220中的錯誤更正碼來驗證讀取數(shù)據(jù)。根據(jù)本發(fā)明的實施例,錯誤更正單元212可以利用多種算法來更正讀取數(shù)據(jù)中的錯誤。[0027]當錯誤更正單元212確定讀取數(shù)據(jù)中的錯誤無法被更正(uncorrectable)時,錯誤更正單元212會根據(jù)重試表(retrytable)214的內容規(guī)范來改變算法則,或者改變其它控制因素來試著再次進行讀取數(shù)據(jù)的錯誤更正。再者,上述的算法可為硬式最小值總合算法(min-sumhardalgorithm)、軟式最小值總合算法(min-sumsoftalgorithm)、硬式總合乘積算法(sum-producthardalgorithm)、軟式總合乘積算法(sum-productsoftalgorithm)、硬式位反轉算法(bitflippinghardalgorithm)、或者軟式位反轉算法(bitflippingsoftalgorithm)。當然本發(fā)明并未限定于特定的算法,其它算法也可以運用于本發(fā)明的錯誤更正單元212。[0028]請參照圖4,其所繪示為本發(fā)明實施例的重試表示意圖。其中,圖4的重試表僅為本發(fā)明的一個示例而已,并非用來限定本發(fā)明。舉例來說,當錯誤更正單元212利用預設的算法來驗證讀取數(shù)據(jù)且確認錯誤無法被更正(uncorrectable)時,錯誤更正單元212即根據(jù)重試表的內容來啟動重試流程。[0029]如重試表中所示的第一步驟⑴,錯誤更正單元212的算法則為硬式最小值總合算法(min-sumhardalgorithm)。并且,控制單元210對閃存205發(fā)出硬式讀取命令(hardreadcommand),以取得硬式位的讀取數(shù)據(jù)(hardbitofreaddata)以及對應的錯誤更正碼并更新于緩沖單元220中,并再次進行讀取數(shù)據(jù)的錯誤更正。如果錯誤更正單元212可順利更正讀取數(shù)據(jù)中的錯誤,控制單元210即可輸出正確的讀取數(shù)據(jù)至主機;反之,如果讀取數(shù)據(jù)中的錯誤無法被更正時,則繼續(xù)進行第二步驟(2)。[0030]如重試表中所示的第二步驟(2),錯誤更正單元212的算法更改為軟式最小值總合算法(min-sumsoftalgorithm)。并且,控制單元210對閃存205發(fā)出軟式讀取命令(softreadcommand),以取得軟式位的讀取數(shù)據(jù)(softbitofreaddata)以及對應的錯誤更正碼并更新于緩沖單元220中,并再次進行讀取數(shù)據(jù)的錯誤更正。如果錯誤更正單元212可順利更正讀取數(shù)據(jù)中的錯誤,控制單元210即可輸出正確的讀取數(shù)據(jù)至主機;反之,如果讀取數(shù)據(jù)中的錯誤無法被更正時,則繼續(xù)進行第三步驟(3)。[0031]如重試表中所示的第三步驟(3),錯誤更正單元212的算法更改為軟式最小值總合算法(min-sumsoftalgorithm)。并且,控制單元210對閃存205發(fā)出硬式與軟式讀取命令(hardandsoftreadcommands),并同時取得軟式與硬式的讀取數(shù)據(jù)以及對應的錯誤更正碼并更新于緩沖單元220中,并再次進行讀取數(shù)據(jù)的錯誤更正。如果錯誤更正單元212可順利更正讀取數(shù)據(jù)中的錯誤,控制單元210即可輸出正確的讀取數(shù)據(jù)至主機;反之,如果讀取數(shù)據(jù)中的錯誤無法被更正時,則繼續(xù)進行第四步驟(4)。[0032]在此實施例中,重試表的第四步驟(4)并非提出另一種算法以進行再次的錯誤更正,而是提出一校正程序。由于先前變更算法的步驟皆無法輸出正確的讀取數(shù)據(jù),因此重試表提出要控制單元210對閃存205進行校正程序。于校正程序中,控制當前第1頁1 2