固態(tài)儲存裝置及其錯誤更正控制方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明是有關(guān)于一種固態(tài)儲存裝置與其控制方法,且特別是有關(guān)于一種固態(tài)儲存裝置及其錯誤更正控制方法?!?br>背景技術(shù):
】[0002]眾所周知,現(xiàn)今的固態(tài)儲存裝置(SolidStateDrive,SSD)一般使用與非門閃存(NANDflashmemory)為主要存儲元件,而此類的閃存為一種非易失性(non-volatile)的存儲器元件。也就是說,當(dāng)數(shù)據(jù)寫入閃存后,一旦系統(tǒng)電源關(guān)閉,數(shù)據(jù)仍保存在閃存中。[0003]眾所周知,閃存包含由多個存儲單元所組成的存儲單元陣列,其中的每個存儲單兀(memorycell)皆包括一個浮動?xùn)啪w管(floatinggatetransistor)。[0004]于程序周期(programcycle)時,利用熱載子(hotcarrier),例如電子,注入(inject)浮動?xùn)啪w管中的浮動?xùn)艠O(floatinggate),用以改變浮動?xùn)啪w管的臨限電壓(thresholdvoltage),進而產(chǎn)生不同的儲存狀態(tài)。而不同的儲存狀態(tài)會有不同的臨限電壓分布。[0005]請參照圖1,其所繪示為閃存中的儲存狀態(tài)與臨限電壓分布的關(guān)系示意圖。以單層晶胞(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]當(dāng)然,每個晶胞儲存多位的多層晶胞(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]當(dāng)主機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]當(dāng)主機12需要讀取閃存105中的數(shù)據(jù)時,主機12會發(fā)出讀取指令至固態(tài)儲存裝置10。此時,控制單元101由閃存105中取得讀取數(shù)據(jù)以及對應(yīng)的錯誤更正碼并暫存于緩沖單元107中。接著,錯誤更正單元103會根據(jù)錯誤更正碼來驗證讀取數(shù)據(jù)。當(dāng)錯誤更正單元103確定讀取數(shù)據(jù)的正確性之后,控制單元101輸出讀取數(shù)據(jù)至主機12。[0012]一般來說,已知錯誤更正單元103是利用單一的算法則來進行數(shù)據(jù)錯誤更正。當(dāng)錯誤更正單元103確定讀取數(shù)據(jù)中的錯誤無法被更正(uncorrectable)時,控制單元101無法輸出正確的讀取數(shù)據(jù)。此時,控制單元101會將閃存105中儲存讀取數(shù)據(jù)的位置作一標(biāo)記(mark),直到固態(tài)儲存裝置10待機(standby)時再嘗試更正讀取數(shù)據(jù)。[0013]因此,當(dāng)錯誤無法被錯誤更正單元103更正時,控制單元101無法實時的修復(fù)讀取數(shù)據(jù),需要在待機時嘗試更正讀取數(shù)據(jù)。如果想要實時(realtime)的更正讀取數(shù)據(jù)中的錯誤時,將會造成固態(tài)儲存裝置10的數(shù)據(jù)吞吐率(throughput)大幅下降,嚴重影響固態(tài)儲存裝置10的效能?!?br/>發(fā)明內(nèi)容】[0014]本發(fā)明提出一種固態(tài)儲存裝置,利用一外部總線連接至一主機,該固態(tài)儲存裝置包括:一控制單元,連接至該外部總線以接收該主機的一讀取指令;一閃存,連接至該控制單元;以及一緩沖單元,連接至該控制單元;其中,該控制單元還包括一錯誤更正單元,該控制單元根據(jù)該讀取指令由該閃存取出一讀取數(shù)據(jù)以及對應(yīng)的一錯誤更正碼并暫儲于該緩沖單元,該錯誤更正單元利用一預(yù)設(shè)算法并根據(jù)該錯誤更正碼來驗證該讀取數(shù)據(jù);其中,當(dāng)該讀取數(shù)據(jù)中的錯誤無法被更正時,根據(jù)一重試表來啟動一重試流程,其中該重試表中定義多個算法則的使用次序。[0015]本發(fā)明提出一種固態(tài)儲存裝置的錯誤更正控制方法,該固態(tài)儲存裝置包括:一控制單元用以接收一主機的一讀取指令;一閃存連接至該控制單元;以及,一緩沖單元連接至該控制單元,該方法包括下列步驟:于收到該讀取指令時,利用一預(yù)設(shè)算法來驗證由該閃存取得的一讀取數(shù)據(jù);于該讀取數(shù)據(jù)中沒有無法更正的錯誤時,控制單元輸出該讀取數(shù)據(jù);以及于該讀取數(shù)據(jù)中有無法更正的錯誤時,根據(jù)一重試表來啟動一重試流程;其中,該重試表中定義多個算法則的使用次序。[0016]為了對本發(fā)明的上述及其它方面有更佳的了解,下文特舉較佳實施例,并配合所附圖式,作詳細說明如下?!靖綀D說明】[0017]圖1所繪示為閃存中的儲存狀態(tài)與臨限電壓分布的關(guān)系示意圖。[0018]圖2所繪示為已知固態(tài)儲存裝置示意圖。[0019]圖3所繪示為本發(fā)明實施例的固態(tài)儲存裝置示意圖。[0020]圖4所繪示為本發(fā)明實施例的重試表示意圖。[0021]圖5所繪示為本發(fā)明實施例的錯誤更正控制方法。[0022]圖6所示,其為根據(jù)重試表所啟動的重試流程示意圖?!揪唧w實施方式】[0023]為了在不影響固態(tài)儲存裝置的數(shù)據(jù)吞吐率(throughput)下進行實時數(shù)據(jù)錯誤更正,本發(fā)明提出一種固態(tài)儲存裝置,其可定義一重試流程。于讀取數(shù)據(jù)中的錯誤無法被更正(uncorrectable)時,錯誤更正單元可根據(jù)重試流程來實時改變錯誤更正的算法則,并且更正讀取數(shù)據(jù)中的錯誤。如此,可以實時輸出讀取數(shù)據(jù),并且維持固態(tài)儲存裝置的高數(shù)據(jù)吞吐率。[0024]請參照圖3,其所繪示為本發(fā)明實施例的固態(tài)儲存裝置示意圖。固態(tài)儲存裝置20中包括一控制單元201、緩沖單元220與一閃存205。而在固態(tài)儲存裝置20外部,控制單元210通過一外部總線14與主機12之間進行指令與數(shù)據(jù)的傳遞。其中,外部總線14可為USB總線、IEEE1394總線或SATA總線等等。[0025]當(dāng)主機12需要讀取閃存205中的數(shù)據(jù)時,主機12會發(fā)出讀取指令至固態(tài)儲存裝置20。此時,控制單元210由閃存205中取得讀取數(shù)據(jù)以及對應(yīng)的錯誤更正碼并暫存于緩沖單元220中。接著,錯誤更正單元212會根據(jù)緩沖單元220中的錯誤更正碼來驗證讀取數(shù)據(jù)。根據(jù)本發(fā)明的實施例,錯誤更正單元212可以利用多種算法來更正讀取數(shù)據(jù)中的錯誤。[0026]當(dāng)錯誤更正單元212確定讀取數(shù)據(jù)中的錯誤無法被更正(uncorrectable)時,錯誤更正單元212會根據(jù)重試表(retrytable)214的內(nèi)容規(guī)范來改變算法則,或者改變其它控制因素來試著再次進行讀取數(shù)據(jù)的錯誤更正。再者,上述的算法可為硬式最小值總合算法(min-sumhardalgorithm)、軟式最小值總合算法(min_sumsoftalgorithm)、硬式總合乘積算法(sum-producthardalgorithm)、軟式總合乘積算法(sum-productsoftalgorithm)、硬式位反轉(zhuǎn)算法(bitflippinghardalgorithm)、或者軟式位反轉(zhuǎn)算法(bitflippingsoftalgorithm)。當(dāng)然本發(fā)明并未限定于特定的算法,其它算法也可以運用于本發(fā)明的錯誤更正單元212。[0027]請參照圖4,其所繪示為本發(fā)明實施例的重試表示意圖。其中,圖4的重試表僅為本發(fā)明的一個范例而已,并非用來限定本發(fā)明。舉例來說,當(dāng)錯誤更正單元212利用預(yù)設(shè)的算法來驗證讀取數(shù)據(jù)且確認錯誤無法被更正(uncorrectable)時,錯誤更正單元212即根據(jù)重試表的內(nèi)容來啟動重試流程。[0028]如重試表中所示的第一步驟(I),錯誤更正單元212的算法則為硬式最小值總合算法(min-s當(dāng)前第1頁1 2