本發(fā)明涉及一種用于可復(fù)寫式非易失性存儲(chǔ)器模塊的數(shù)據(jù)讀取方法、存儲(chǔ)器控制電路單元及存儲(chǔ)器儲(chǔ)存裝置。
背景技術(shù):
數(shù)碼相機(jī)、移動(dòng)電話與MP3播放器在這幾年來的成長(zhǎng)十分迅速,使得消費(fèi)者對(duì)儲(chǔ)存媒體的需求也急速增加。由于可復(fù)寫式非易失性存儲(chǔ)器模塊(例如,快閃存儲(chǔ)器)具有數(shù)據(jù)非易失性、省電、體積小,以及無機(jī)械結(jié)構(gòu)等特性,所以非常適合內(nèi)建于上述所舉例的各種可攜式多媒體裝置中。
一般來說,寫入至可復(fù)寫式非易失性存儲(chǔ)器模塊的數(shù)據(jù)都會(huì)根據(jù)一個(gè)錯(cuò)誤更正碼來編碼,并且從可復(fù)寫式非易失性存儲(chǔ)器模塊中所讀取的數(shù)據(jù)也會(huì)經(jīng)過對(duì)應(yīng)的程序來解碼。然而,錯(cuò)誤更正碼的更正能力有其上限。例如,若使用渦輪碼算法或是低密度奇偶檢查校正碼算法經(jīng)由迭代方式來實(shí)施錯(cuò)誤更正碼,隨著迭代解碼的次數(shù)增加至一定次數(shù)后,在后續(xù)的迭代解碼過程中會(huì)出現(xiàn)錯(cuò)誤比特?cái)?shù)目不隨著迭代次數(shù)的增加而減少的現(xiàn)象。此現(xiàn)象也稱為錯(cuò)誤飽和(error floor)?;?,如何能夠?qū)λx取的數(shù)據(jù)順利地進(jìn)行解碼,以獲取原始數(shù)據(jù)是此領(lǐng)域技術(shù)人員所致力的目標(biāo)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種數(shù)據(jù)讀取方法、存儲(chǔ)器控制電路單元及存儲(chǔ)器儲(chǔ)存裝置,其能夠有效地校正所讀取的數(shù)據(jù)。
本發(fā)明的一范例實(shí)施例提出一種用于可復(fù)寫式非易失性存儲(chǔ)器模塊的數(shù)據(jù)讀取方法。此方法包括從可復(fù)寫式非易失性存儲(chǔ)器模塊讀取數(shù)據(jù),其中此數(shù)據(jù)包括使用者數(shù)據(jù)串與錯(cuò)誤檢查與校正碼組,此使用者數(shù)據(jù)包括多個(gè)子數(shù)據(jù)單元,錯(cuò)誤檢查與校正碼組包括多個(gè)行錯(cuò)誤校正碼與多個(gè)列錯(cuò)誤校正碼,此些行錯(cuò)誤校正碼是分別地對(duì)應(yīng)在以矩陣形式排列的此些子數(shù)據(jù)單元之中的多個(gè)行數(shù)據(jù)段,且此些列錯(cuò)誤校正碼是分別地對(duì)應(yīng)在以矩陣形式排列的此些子數(shù)據(jù)單元之中的多個(gè)列數(shù)據(jù)段。本方法還包括依據(jù)此錯(cuò)誤檢查與校正碼對(duì)此使用者數(shù)據(jù)串執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第一已解碼數(shù)據(jù)串,其中此第一已解碼數(shù)據(jù)串包括對(duì)應(yīng)此些子數(shù)據(jù)中至少部分的多個(gè)已解碼子數(shù)據(jù)單元。本方法也包括搜索此些已解碼子數(shù)據(jù)單元之中的至少一個(gè)無法校正子數(shù)據(jù)單元,從無法校正子數(shù)據(jù)單元之中選出至少一目標(biāo)子數(shù)據(jù)單元,在第一已解碼數(shù)據(jù)串中調(diào)整此至少一目標(biāo)子數(shù)據(jù)單元以產(chǎn)生已調(diào)整使用者數(shù)據(jù)串,并且對(duì)已調(diào)整使用者數(shù)據(jù)串重新執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第二已解碼數(shù)據(jù)串。本方法還包括,將第二已解碼數(shù)據(jù)串作為已校正數(shù)據(jù)串傳送給主機(jī)系統(tǒng)以響應(yīng)讀取指令。
在本發(fā)明的一范例實(shí)施例中,上述依據(jù)錯(cuò)誤檢查與校正碼組對(duì)使用者數(shù)據(jù)串執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第一已解碼數(shù)據(jù)串的步驟包括依據(jù)此些行錯(cuò)誤校正碼與列錯(cuò)誤校正碼使用 區(qū)塊渦輪碼算法解碼此些行數(shù)據(jù)段與列數(shù)據(jù)段以獲得上述已解碼子數(shù)據(jù)單元。
在本發(fā)明的一范例實(shí)施例中,上述數(shù)據(jù)讀取方法還包括:判斷在第一已解碼數(shù)據(jù)串中是否存有錯(cuò)誤比特;若在第一已解碼數(shù)據(jù)串中無錯(cuò)誤比特時(shí),將第一已解碼數(shù)據(jù)串作為已校正數(shù)據(jù)串傳送給主機(jī)系統(tǒng);以及若在第一已解碼數(shù)據(jù)串中存有錯(cuò)誤比特時(shí),依據(jù)第一已解碼數(shù)據(jù)串判斷此些行數(shù)據(jù)段之中無法校正的行數(shù)據(jù)段的數(shù)目與此些列數(shù)據(jù)段之中無法校正的列數(shù)據(jù)段的數(shù)目是否小于預(yù)先定義值。其中上述搜索此些已解碼子數(shù)據(jù)單元之中的無法校正子數(shù)據(jù)單元,識(shí)別此些無法校正子數(shù)據(jù)單元之中的目標(biāo)子數(shù)據(jù)單元,在第一已解碼數(shù)據(jù)串中調(diào)整目標(biāo)子數(shù)據(jù)單元以產(chǎn)生已調(diào)整使用者數(shù)據(jù)串,對(duì)已調(diào)整使用者數(shù)據(jù)串重新執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第二已解碼數(shù)據(jù)串的步驟,是在此些行數(shù)據(jù)段之中無法校正的行數(shù)據(jù)段的數(shù)目小于預(yù)先定義值或此些列數(shù)據(jù)段之中無法校正的列數(shù)據(jù)段的數(shù)目小于預(yù)先定義值時(shí)被執(zhí)行。
在本發(fā)明的一范例實(shí)施例中,上述數(shù)據(jù)讀取方法還包括:若此些行數(shù)據(jù)段之中無法校正的行數(shù)據(jù)段的數(shù)目與此些列數(shù)據(jù)段之中無法校正的列數(shù)據(jù)段的數(shù)目都不小于預(yù)先定義值,傳送一錯(cuò)誤信息給主機(jī)系統(tǒng)。
在本發(fā)明的一范例實(shí)施例中,上述識(shí)別此些無法校正子數(shù)據(jù)單元之中的目標(biāo)子數(shù)據(jù)單元的步驟包括:根據(jù)此些行數(shù)據(jù)段之中無法校正的行數(shù)據(jù)段與此些列數(shù)據(jù)段之中無法校正的列數(shù)據(jù)段將此些無法校正子數(shù)據(jù)單元之中的第一無法校正子數(shù)據(jù)單元作為目標(biāo)子數(shù)據(jù)單元,其中此第一無法校正子數(shù)據(jù)單元是包括在此些行數(shù)據(jù)段之中的第一行數(shù)據(jù)段中且包括在此些列數(shù)據(jù)段之中的第一列數(shù)據(jù)段中,此些行錯(cuò)誤校正碼之中對(duì)應(yīng)此第一行數(shù)據(jù)段的第一行錯(cuò)誤校正碼無法校正此第一行數(shù)據(jù)段并且此些列錯(cuò)誤校正碼之中對(duì)應(yīng)此第一列數(shù)據(jù)段的第一列錯(cuò)誤校正碼無法校正此第一列數(shù)據(jù)段。
在本發(fā)明的一范例實(shí)施例中,上述在第一已解碼數(shù)據(jù)串中調(diào)整目標(biāo)子數(shù)據(jù)單元以產(chǎn)生已調(diào)整使用者數(shù)據(jù)串的步驟包括:使用調(diào)整數(shù)據(jù)串與第一無法校正子數(shù)據(jù)單元進(jìn)行互斥運(yùn)算以調(diào)整第一無法校正子數(shù)據(jù)單元的至少一比特的值。
本發(fā)明的一范例實(shí)施例提出一種用于控制可復(fù)寫式非易失性存儲(chǔ)器模塊的憶體控制電路單元。此存儲(chǔ)器控制電路單元包括主機(jī)接口、存儲(chǔ)器接口、存儲(chǔ)器管理電路與錯(cuò)誤檢查與校正電路。主機(jī)接口用以電性連接至主機(jī)系統(tǒng)。存儲(chǔ)器接口用以電性連接至可復(fù)寫式非易失性存儲(chǔ)器模塊。存儲(chǔ)器管理電路電性連接至主機(jī)接口與存儲(chǔ)器接口。錯(cuò)誤檢查與校正電路電性連接至存儲(chǔ)器管理電路。存儲(chǔ)器管理電路發(fā)送讀取指令序列以從可復(fù)寫式非易失性存儲(chǔ)器模塊讀取數(shù)據(jù),其中此數(shù)據(jù)包括使用者數(shù)據(jù)串與錯(cuò)誤檢查與校正碼組,此使用者數(shù)據(jù)包括多個(gè)子數(shù)據(jù)單元,錯(cuò)誤檢查與校正碼組包括多個(gè)行錯(cuò)誤校正碼與多個(gè)列錯(cuò)誤校正碼,此些行錯(cuò)誤校正碼是分別地對(duì)應(yīng)在以矩陣形式排列的此些子數(shù)據(jù)單元之中的多個(gè)行數(shù)據(jù)段,且此些列錯(cuò)誤校正碼是分別地對(duì)應(yīng)在以矩陣形式排列的此些子數(shù)據(jù)單元之中的多個(gè)列數(shù)據(jù)段。錯(cuò)誤檢查與校正電路依據(jù)此錯(cuò)誤檢查與校正碼對(duì)此使用者數(shù)據(jù)串執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第一已解碼數(shù)據(jù)串,其中此第一已解碼數(shù)據(jù)串包括對(duì)應(yīng)此些子數(shù)據(jù)中至少部分的多個(gè)已解碼子數(shù)據(jù)單元。錯(cuò)誤檢查與校正電路搜索此些已解碼子數(shù)據(jù)單元之中的至少一個(gè)無法校正子數(shù)據(jù)單元,從此些無法校正子數(shù)據(jù)單元之中選出至少一目標(biāo)子數(shù)據(jù)單元,在第一已解碼數(shù)據(jù)串中調(diào)整此目標(biāo)子數(shù)據(jù)單元以產(chǎn)生已調(diào)整使用者數(shù)據(jù)串,并且對(duì)已調(diào)整使用者數(shù)據(jù)串重新執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第二已解碼數(shù)據(jù)串。再者,若在第二已解碼數(shù)據(jù)串中已無錯(cuò)誤比特時(shí),存儲(chǔ)器管理電路將第二已解碼數(shù)據(jù)串作為已校正數(shù)據(jù)串傳送給主機(jī)系統(tǒng)。
在本發(fā)明的一范例實(shí)施例中,在上述依據(jù)錯(cuò)誤檢查與校正碼對(duì)使用者數(shù)據(jù)串執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第一已解碼數(shù)據(jù)串的操作中,上述錯(cuò)誤檢查與校正電路依據(jù)此些行錯(cuò)誤校正碼與列錯(cuò)誤校正碼使用區(qū)塊渦輪碼算法解碼此些行數(shù)據(jù)段與列數(shù)據(jù)段以獲得上述已解碼子數(shù)據(jù)單元。
在本發(fā)明的一范例實(shí)施例中,上述錯(cuò)誤檢查與校正電路判斷在第一已解碼數(shù)據(jù)串中是否存有錯(cuò)誤比特。其中若在第一已解碼數(shù)據(jù)串中無錯(cuò)誤比特時(shí),存儲(chǔ)器管理電路將第一已解碼數(shù)據(jù)串作為已校正數(shù)據(jù)串傳送給主機(jī)系統(tǒng)。若在第一已解碼數(shù)據(jù)串中存有錯(cuò)誤比特時(shí),上述錯(cuò)誤檢查與校正電路依據(jù)第一已解碼數(shù)據(jù)串判斷此些行數(shù)據(jù)段之中無法校正的行數(shù)據(jù)段的數(shù)目與此些列數(shù)據(jù)段之中無法校正的列數(shù)據(jù)段的數(shù)目是否小于預(yù)先定義值。其中,上述錯(cuò)誤檢查與校正電路是在此些行數(shù)據(jù)段之中無法校正的行數(shù)據(jù)段的數(shù)目小于預(yù)先定義值或此些列數(shù)據(jù)段之中無法校正的列數(shù)據(jù)段的數(shù)目小于預(yù)先定義值時(shí),才執(zhí)行上述搜索已解碼子數(shù)據(jù)單元之中的無法校正子數(shù)據(jù)單元,從無法校正子數(shù)據(jù)單元之中選出目標(biāo)子數(shù)據(jù)單元,在第一已解碼數(shù)據(jù)串中調(diào)整目標(biāo)子數(shù)據(jù)單元以產(chǎn)生已調(diào)整使用者數(shù)據(jù)串,對(duì)已調(diào)整使用者數(shù)據(jù)串重新執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第二已解碼數(shù)據(jù)串的操作。
在本發(fā)明的一范例實(shí)施例中,若此些行數(shù)據(jù)段之中無法校正的行數(shù)據(jù)段的數(shù)目與此些列數(shù)據(jù)段之中無法校正的列數(shù)據(jù)段的數(shù)目都不小于預(yù)先定義值時(shí),上述存儲(chǔ)器管理電路傳送錯(cuò)誤信息給主機(jī)系統(tǒng)。
在本發(fā)明的一范例實(shí)施例中,在上述從無法校正子數(shù)據(jù)單元之中選出目標(biāo)子數(shù)據(jù)單元的操作中,上述錯(cuò)誤檢查與校正電路根據(jù)此些行數(shù)據(jù)段之中無法校正的行數(shù)據(jù)段與此些列數(shù)據(jù)段之中無法校正的列數(shù)據(jù)段將此些無法校正子數(shù)據(jù)單元之中的第一無法校正子數(shù)據(jù)單元作為目標(biāo)子數(shù)據(jù)單元,其中此第一無法校正子數(shù)據(jù)單元是包括在此些行數(shù)據(jù)段之中的第一行數(shù)據(jù)段中且包括在此些列數(shù)據(jù)段之中的第一列數(shù)據(jù)段中,此些行錯(cuò)誤校正碼之中對(duì)應(yīng)第一行數(shù)據(jù)段的第一行錯(cuò)誤校正碼無法校正第一行數(shù)據(jù)段并且此些列錯(cuò)誤校正碼之中對(duì)應(yīng)第一列數(shù)據(jù)段的第一列錯(cuò)誤校正碼無法校正第一列數(shù)據(jù)段。
在本發(fā)明的一范例實(shí)施例中,上述在第一已解碼數(shù)據(jù)串中調(diào)整目標(biāo)子數(shù)據(jù)單元以產(chǎn)生已調(diào)整使用者數(shù)據(jù)串的操作中,上述錯(cuò)誤檢查與校正電路使用調(diào)整數(shù)據(jù)串與第一無法校正子數(shù)據(jù)單元進(jìn)行互斥運(yùn)算以調(diào)整第一無法校正子數(shù)據(jù)單元的至少一比特的值。
本發(fā)明的一范例實(shí)施例提出一種存儲(chǔ)器儲(chǔ)存裝置,其包括連接接口單元、可復(fù)寫式非易失性存儲(chǔ)器模塊與存儲(chǔ)器控制電路單元。連接接口單元用以電性連接至主機(jī)系統(tǒng)。存儲(chǔ)器控制電路單元電性連接至連接接口單元與可復(fù)寫式非易失性存儲(chǔ)器模塊。存儲(chǔ)器控制電路單元發(fā)送讀取指令序列以從可復(fù)寫式非易失性存儲(chǔ)器模塊讀取數(shù)據(jù),其中此數(shù)據(jù)包括使用者數(shù)據(jù)串與錯(cuò)誤檢查與校正碼組,此使用者數(shù)據(jù)包括多個(gè)子數(shù)據(jù)單元,錯(cuò)誤檢查與校正碼組包括多個(gè)行錯(cuò)誤校正碼與多個(gè)列錯(cuò)誤校正碼,此些行錯(cuò)誤校正碼是分別地對(duì)應(yīng)在以矩陣形式排列的此些子數(shù)據(jù)單元之中的多個(gè)行數(shù)據(jù)段,且此些列錯(cuò)誤校正碼是分別地對(duì)應(yīng)在以矩陣形式排列的此些子數(shù)據(jù)單元之中的多個(gè)列數(shù)據(jù)段。存儲(chǔ)器控制電路單元依據(jù)此錯(cuò)誤檢查與校正碼對(duì)此使用者數(shù)據(jù)串執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第一已解碼數(shù)據(jù)串,其中此第一已解碼數(shù)據(jù)串包括對(duì)應(yīng)此些子數(shù)據(jù)中至少部分的多個(gè)已解碼子數(shù)據(jù)單元。此外,存儲(chǔ)器控制電路單元搜索此些已解碼子數(shù)據(jù)單元之中的至少一個(gè)無法校正子數(shù)據(jù)單元,從此些無法校正子數(shù)據(jù)單元之中選出至少一目標(biāo)子數(shù)據(jù)單元,在第一已解碼數(shù)據(jù)串中調(diào)整此目標(biāo)子數(shù)據(jù)單元以產(chǎn)生已調(diào)整使 用者數(shù)據(jù)串,并且對(duì)已調(diào)整使用者數(shù)據(jù)串重新執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第二已解碼數(shù)據(jù)串。再者,若在第二已解碼數(shù)據(jù)串中已無錯(cuò)誤比特時(shí),存儲(chǔ)器控制電路單元將第二已解碼數(shù)據(jù)串作為已校正數(shù)據(jù)串傳送給主機(jī)系統(tǒng)。
在本發(fā)明的一范例實(shí)施例中,在上述依據(jù)錯(cuò)誤檢查與校正碼對(duì)使用者數(shù)據(jù)串執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第一已解碼數(shù)據(jù)串的操作中,上述存儲(chǔ)器控制電路單元依據(jù)此些行錯(cuò)誤校正碼與列錯(cuò)誤校正碼使用區(qū)塊渦輪碼算法解碼此些行數(shù)據(jù)段與列數(shù)據(jù)段以獲得上述已解碼子數(shù)據(jù)單元。
在本發(fā)明的一范例實(shí)施例中,上述存儲(chǔ)器控制電路單元判斷在第一已解碼數(shù)據(jù)串中是否存有錯(cuò)誤比特。其中若在第一已解碼數(shù)據(jù)串中無錯(cuò)誤比特時(shí),存儲(chǔ)器控制電路單元將第一已解碼數(shù)據(jù)串作為已校正數(shù)據(jù)串傳送給主機(jī)系統(tǒng)。若在第一已解碼數(shù)據(jù)串中存有錯(cuò)誤比特時(shí),上述存儲(chǔ)器控制電路單元依據(jù)第一已解碼數(shù)據(jù)串判斷此些行數(shù)據(jù)段之中無法校正的行數(shù)據(jù)段的數(shù)目與此些列數(shù)據(jù)段之中無法校正的列數(shù)據(jù)段的數(shù)目是否小于預(yù)先定義值。其中,上述存儲(chǔ)器控制電路單元是在此些行數(shù)據(jù)段之中無法校正的行數(shù)據(jù)段的數(shù)目小于預(yù)先定義值或此些列數(shù)據(jù)段之中無法校正的列數(shù)據(jù)段的數(shù)目小于預(yù)先定義值時(shí),才執(zhí)行上述搜索已解碼子數(shù)據(jù)單元之中的無法校正子數(shù)據(jù)單元,從無法校正子數(shù)據(jù)單元之中選出目標(biāo)子數(shù)據(jù)單元,在第一已解碼數(shù)據(jù)串中調(diào)整目標(biāo)子數(shù)據(jù)單元以產(chǎn)生已調(diào)整使用者數(shù)據(jù)串,對(duì)已調(diào)整使用者數(shù)據(jù)串重新執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第二已解碼數(shù)據(jù)串的操作。
在本發(fā)明的一范例實(shí)施例中,若此些行數(shù)據(jù)段之中無法校正的行數(shù)據(jù)段的數(shù)目與此些列數(shù)據(jù)段之中無法校正的列數(shù)據(jù)段的數(shù)目都不小于預(yù)先定義值時(shí),上述存儲(chǔ)器控制電路單元傳送錯(cuò)誤信息給主機(jī)系統(tǒng)。
在本發(fā)明的一范例實(shí)施例中,在上述從此些無法校正子數(shù)據(jù)單元之中選出目標(biāo)子數(shù)據(jù)單元的操作中,上述存儲(chǔ)器控制電路單元根據(jù)此些行數(shù)據(jù)段之中無法校正的行數(shù)據(jù)段與此些列數(shù)據(jù)段之中無法校正的列數(shù)據(jù)段將此些無法校正子數(shù)據(jù)單元之中的第一無法校正子數(shù)據(jù)單元作為目標(biāo)子數(shù)據(jù)單元,其中此第一無法校正子數(shù)據(jù)單元是包括在此些行數(shù)據(jù)段之中的第一行數(shù)據(jù)段中且包括在此些列數(shù)據(jù)段之中的第一列數(shù)據(jù)段中,此些行錯(cuò)誤校正碼之中對(duì)應(yīng)第一行數(shù)據(jù)段的第一行錯(cuò)誤校正碼無法校正第一行數(shù)據(jù)段并且此些列錯(cuò)誤校正碼之中對(duì)應(yīng)第一列數(shù)據(jù)段的第一列錯(cuò)誤校正碼無法校正第一列數(shù)據(jù)段。
在本發(fā)明的一范例實(shí)施例中,上述在第一已解碼數(shù)據(jù)串中調(diào)整目標(biāo)子數(shù)據(jù)單元以產(chǎn)生已調(diào)整使用者數(shù)據(jù)串的操作中,上述存儲(chǔ)器控制電路單元使用調(diào)整數(shù)據(jù)串與第一無法校正子數(shù)據(jù)單元進(jìn)行互斥運(yùn)算以調(diào)整第一無法校正子數(shù)據(jù)單元的至少一比特的值。
基于上述,本發(fā)明所提供的數(shù)據(jù)讀取方法、存儲(chǔ)器控制電路單元及存儲(chǔ)器儲(chǔ)存裝置可以在解碼的過程中,通過翻轉(zhuǎn)錯(cuò)誤比特來對(duì)未能成功解碼數(shù)據(jù)進(jìn)行再次解碼以成功地解碼且讀取數(shù)據(jù),進(jìn)而增進(jìn)數(shù)據(jù)讀取的正確性與對(duì)于所儲(chǔ)存的數(shù)據(jù)的保護(hù)能力。
為讓本發(fā)明的上述特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉實(shí)施例,并配合附圖作詳細(xì)說明如下。
附圖說明
圖1是根據(jù)一范例實(shí)施例所示出的主機(jī)系統(tǒng)、存儲(chǔ)器儲(chǔ)存裝置及輸入/輸出(I/O)裝置的示意圖;
圖2是根據(jù)另一范例實(shí)施例所示出的主機(jī)系統(tǒng)、存儲(chǔ)器儲(chǔ)存裝置及輸入/輸出(I/O)裝置的示意圖;
圖3是根據(jù)本發(fā)明范例實(shí)施例所示出的主機(jī)系統(tǒng)與存儲(chǔ)器儲(chǔ)存裝置的示意圖;
圖4是根據(jù)一范例實(shí)施例所示出的主機(jī)系統(tǒng)與存儲(chǔ)器儲(chǔ)存裝置的概要方塊圖;
圖5是根據(jù)一范例實(shí)施例所示出的存儲(chǔ)器控制電路單元的概要方塊圖;
圖6與圖7是根據(jù)一范例實(shí)施例所示出的管理物理抹除單元的范例示意圖;
圖8是根據(jù)本發(fā)明的一范例實(shí)施例所示出的錯(cuò)誤檢查與校正碼框的示意圖;
圖9是根據(jù)本發(fā)明的一范例實(shí)施例所示出的使用區(qū)塊渦輪碼進(jìn)行錯(cuò)誤校正編碼程序的示意圖;
圖10是根據(jù)本發(fā)明的一范例實(shí)施例所示出的選取目標(biāo)子數(shù)據(jù)單元的范例;
圖11是根據(jù)一范例實(shí)施例所示出的數(shù)據(jù)讀取的流程圖。
附圖標(biāo)記說明:
10:存儲(chǔ)器儲(chǔ)存裝置;
11:主機(jī)系統(tǒng);
12:輸入/輸出(I/O)裝置;
110:系統(tǒng)總線;
111:處理器;
112:隨機(jī)存取存儲(chǔ)器(RAM);
113:只讀存儲(chǔ)器(ROM);
114:數(shù)據(jù)傳輸接口;
20:主機(jī)板;
201:隨身碟;
202:記憶卡;
203:固態(tài)硬盤(SSD);
204:無線存儲(chǔ)器儲(chǔ)存裝置;
205:全球定位系統(tǒng)模塊;
206:網(wǎng)絡(luò)接口卡;
207:無線傳輸裝置;
208:鍵盤;
209:屏幕;
210:喇叭;
30:存儲(chǔ)器儲(chǔ)存裝置;
31:主機(jī)系統(tǒng);
32:SD卡;
33:CF卡;
34:嵌入式儲(chǔ)存裝置;
341:嵌入式多媒體卡;
342:嵌入式多芯片封裝儲(chǔ)存裝置;
402:連接接口單元;
404:存儲(chǔ)器控制電路單元;
406:可復(fù)寫式非易失性存儲(chǔ)器模塊;
410(0)~410(N):物理抹除單元;
502:存儲(chǔ)器管理電路;
504:主機(jī)接口;
506:存儲(chǔ)器接口;
508:緩沖存儲(chǔ)器;
510:電源管理電路;
512:錯(cuò)誤檢查與校正電路;
602:數(shù)據(jù)區(qū);
604:閑置區(qū);
606:系統(tǒng)區(qū);
608:取代區(qū);
LBA(0)~LBA(H):邏輯地址;
LZ(0)~LZ(M):邏輯區(qū)域;
ECCF1:錯(cuò)誤檢查與校正碼框;
ECC1:錯(cuò)誤檢查與校正碼組;
UD1:數(shù)據(jù);
DB1~DB32:子數(shù)據(jù)單元;
RG1~RG4:列數(shù)據(jù)段;
CG1~CG8:行數(shù)據(jù)段;
BCH1~BCH12:錯(cuò)誤校正碼;
700:二維數(shù)據(jù)矩陣;
710:二維數(shù)據(jù)矩陣;
S1101、S1103、S1105、S1107、S1109、S1111、S1113、S1115、S1117、S1119:步驟。
具體實(shí)施方式
一般而言,存儲(chǔ)器儲(chǔ)存裝置(也稱,存儲(chǔ)器儲(chǔ)存系統(tǒng))包括可復(fù)寫式非易失性存儲(chǔ)器模塊與控制器(也稱,控制電路單元)。通常存儲(chǔ)器儲(chǔ)存裝置是與主機(jī)系統(tǒng)一起使用,以使主機(jī)系統(tǒng)可將數(shù)據(jù)寫入至存儲(chǔ)器儲(chǔ)存裝置或從存儲(chǔ)器儲(chǔ)存裝置中讀取數(shù)據(jù)。
圖1是根據(jù)一范例實(shí)施例所示出的主機(jī)系統(tǒng)、存儲(chǔ)器儲(chǔ)存裝置及輸入/輸出(I/O)裝置的示意圖。且圖2是根據(jù)另一范例實(shí)施例所示出的主機(jī)系統(tǒng)、存儲(chǔ)器儲(chǔ)存裝置及輸入/輸出(I/O)裝置的示意圖。
請(qǐng)參照?qǐng)D1與圖2,主機(jī)系統(tǒng)11一般包括處理器111、隨機(jī)存取存儲(chǔ)器(random access memory,簡(jiǎn)稱:RAM)112、只讀存儲(chǔ)器(read only memory,簡(jiǎn)稱:ROM)113及數(shù)據(jù)傳輸接口114。處理器111、隨機(jī)存取存儲(chǔ)器112、只讀存儲(chǔ)器113及數(shù)據(jù)傳輸接口114都電性連接至系統(tǒng)總線(system bus)110。
在本范例實(shí)施例中,主機(jī)系統(tǒng)11是通過數(shù)據(jù)傳輸接口114與存儲(chǔ)器儲(chǔ)存裝置10電性連接。例如,主機(jī)系統(tǒng)11可經(jīng)由數(shù)據(jù)傳輸接口114將數(shù)據(jù)寫入至存儲(chǔ)器儲(chǔ)存裝置10或從存儲(chǔ) 器儲(chǔ)存裝置10中讀取數(shù)據(jù)。此外,主機(jī)系統(tǒng)11是通過系統(tǒng)總線110與I/O裝置12電性連接。例如,主機(jī)系統(tǒng)11可經(jīng)由系統(tǒng)總線110將輸出信號(hào)傳送至I/O裝置12或從I/O裝置12接收輸入信號(hào)。
在本范例實(shí)施例中,處理器111、隨機(jī)存取存儲(chǔ)器112、只讀存儲(chǔ)器113及數(shù)據(jù)傳輸接口114是可設(shè)置在主機(jī)系統(tǒng)11的主機(jī)板20上。數(shù)據(jù)傳輸接口114的數(shù)目可以是一或多個(gè)。通過數(shù)據(jù)傳輸接口114,主機(jī)板20可以經(jīng)由有線或無線方式電性連接至存儲(chǔ)器儲(chǔ)存裝置10。存儲(chǔ)器儲(chǔ)存裝置10可例如是隨身碟201、記憶卡202、固態(tài)硬盤(Solid State Drive,簡(jiǎn)稱:SSD)203或無線存儲(chǔ)器儲(chǔ)存裝置204。無線存儲(chǔ)器儲(chǔ)存裝置204可例如是近距離無線通信(Near Field Communication Storage,簡(jiǎn)稱:NFC)存儲(chǔ)器儲(chǔ)存裝置、無線傳真(WiFi)存儲(chǔ)器儲(chǔ)存裝置、藍(lán)牙(Bluetooth)存儲(chǔ)器儲(chǔ)存裝置或低功耗藍(lán)牙存儲(chǔ)器儲(chǔ)存裝置(例如,iBeacon)等以各式無線通信技術(shù)為基礎(chǔ)的存儲(chǔ)器儲(chǔ)存裝置。此外,主機(jī)板20也可以通過系統(tǒng)總線110電性連接至全球定位系統(tǒng)(Global Positioning System,簡(jiǎn)稱:GPS)模塊205、網(wǎng)絡(luò)接口卡206、無線傳輸裝置207、鍵盤208、屏幕209、喇叭210等各式I/O裝置。例如,在一范例實(shí)施例中,主機(jī)板20可通過無線傳輸裝置207存取無線存儲(chǔ)器儲(chǔ)存裝置204。
在一范例實(shí)施例中,所提及的主機(jī)系統(tǒng)為可實(shí)質(zhì)地與存儲(chǔ)器儲(chǔ)存裝置配合以儲(chǔ)存數(shù)據(jù)的任意系統(tǒng)。雖然在上述范例實(shí)施例中,主機(jī)系統(tǒng)是以電腦系統(tǒng)來作說明,然而,圖3是根據(jù)另一范例實(shí)施例所示出的主機(jī)系統(tǒng)與存儲(chǔ)器儲(chǔ)存裝置的示意圖。請(qǐng)參照?qǐng)D3,在另一范例實(shí)施例中,主機(jī)系統(tǒng)31也可以是數(shù)碼相機(jī)、攝影機(jī)、通信裝置、音頻播放器、視頻播放器或平板電腦等系統(tǒng),而存儲(chǔ)器儲(chǔ)存裝置30可為其所使用的SD卡32、CF卡33或嵌入式儲(chǔ)存裝置34等各式非易失性存儲(chǔ)器儲(chǔ)存裝置。嵌入式儲(chǔ)存裝置34包括嵌入式多媒體卡(embedded MMC,簡(jiǎn)稱:eMMC)341和/或嵌入式多芯片封裝儲(chǔ)存裝置(embedded Multi Chip Package,簡(jiǎn)稱:eMCP)342等各類型將存儲(chǔ)器模塊直接電性連接于主機(jī)系統(tǒng)的基板上的嵌入式儲(chǔ)存裝置。
圖4是根據(jù)一范例實(shí)施例所示出的主機(jī)系統(tǒng)與存儲(chǔ)器儲(chǔ)存裝置的概要方塊圖。
請(qǐng)參照?qǐng)D4,存儲(chǔ)器儲(chǔ)存裝置10包括連接接口單元402、存儲(chǔ)器控制電路單元404與可復(fù)寫式非易失性存儲(chǔ)器模塊406。
在本范例實(shí)施例中,連接接口單元402是相容于串行高級(jí)技術(shù)附件(Serial Advanced Technology Attachment,簡(jiǎn)稱:SATA)標(biāo)準(zhǔn)。然而,必須了解的是,本發(fā)明不限于此,連接接口單元402也可以是符合并行高級(jí)技術(shù)附件(Parallel Advanced Technology Attachment,簡(jiǎn)稱:PATA)標(biāo)準(zhǔn)、電氣和電子工程師協(xié)會(huì)(Institute of Electrical and Electronic Engineers,簡(jiǎn)稱:IEEE)1394標(biāo)準(zhǔn)、高速周邊零件連接接口(Peripheral Component Interconnect Express,簡(jiǎn)稱:PCI Express)標(biāo)準(zhǔn)、通用串行總線(Universal Serial Bus,簡(jiǎn)稱:USB)標(biāo)準(zhǔn)、超高速一代(Ultra High Speed-I,簡(jiǎn)稱:UHS-I)接口標(biāo)準(zhǔn)、超高速二代(Ultra High Speed-II,簡(jiǎn)稱:UHS-II)接口標(biāo)準(zhǔn)、安全數(shù)字(Secure Digital,簡(jiǎn)稱:SD)接口標(biāo)準(zhǔn)、記憶棒(Memory Stick,簡(jiǎn)稱:MS)接口標(biāo)準(zhǔn)、多芯片封裝(Multi-Chip Package)接口標(biāo)準(zhǔn)、多媒體儲(chǔ)存卡(Multi Media Card,簡(jiǎn)稱:MMC)接口標(biāo)準(zhǔn)、崁入式多媒體儲(chǔ)存卡(Embedded Multimedia Card,簡(jiǎn)稱:eMMC)接口標(biāo)準(zhǔn)、通用快閃存儲(chǔ)器(Universal Flash Storage,簡(jiǎn)稱:UFS)接口標(biāo)準(zhǔn)、嵌入式多芯片封裝(embedded Multi Chip Package,簡(jiǎn)稱:eMCP)接口標(biāo)準(zhǔn)、小型快閃(Compact Flash,簡(jiǎn)稱:CF)接口標(biāo)準(zhǔn)、整合式驅(qū)動(dòng)電子接口(Integrated Device Electronics,簡(jiǎn)稱:IDE)標(biāo)準(zhǔn)或其他適合的標(biāo)準(zhǔn)。在本范例實(shí)施例中,連接接口單元402可與存儲(chǔ)器控制電路單元404封 裝在一個(gè)芯片中,或者連接接口單元402是布設(shè)于一包含存儲(chǔ)器控制電路單元的芯片外。
存儲(chǔ)器控制電路單元404用以執(zhí)行以硬件形式或固件形式實(shí)現(xiàn)的多個(gè)邏輯門或控制指令,并且根據(jù)主機(jī)系統(tǒng)11的指令在可復(fù)寫式非易失性存儲(chǔ)器模塊406中進(jìn)行數(shù)據(jù)的寫入、讀取與抹除等操作。
可復(fù)寫式非易失性存儲(chǔ)器模塊406是電性連接至存儲(chǔ)器控制電路單元404,并且用以儲(chǔ)存主機(jī)系統(tǒng)11所寫入的數(shù)據(jù)??蓮?fù)寫式非易失性存儲(chǔ)器模塊406具有物理抹除單元410(0)~410(N)。例如,物理抹除單元410(0)~410(N)可屬于同一個(gè)存儲(chǔ)器晶粒(die)或者屬于不同的存儲(chǔ)器晶粒。每一物理抹除單元分別具有多個(gè)物理編程單元,其中屬于同一個(gè)物理抹除單元的物理編程單元可被獨(dú)立地寫入且被同時(shí)地抹除。然而,必須了解的是,本發(fā)明不限于此,每一物理抹除單元是可由64個(gè)物理編程單元、256個(gè)物理編程單元或其他任意個(gè)物理編程單元所組成。
更詳細(xì)來說,物理抹除單元為抹除的最小單位。也就是,每一物理抹除單元含有最小數(shù)目的一并被抹除的存儲(chǔ)單元。物理編程單元為編程的最小單元。即,物理編程單元為寫入數(shù)據(jù)的最小單元。每一物理編程單元通常包括數(shù)據(jù)比特區(qū)與冗余比特區(qū)。數(shù)據(jù)比特區(qū)包含多個(gè)物理存取地址用以儲(chǔ)存使用者的數(shù)據(jù),而冗余比特區(qū)用以儲(chǔ)存系統(tǒng)的數(shù)據(jù)(例如,控制信息與錯(cuò)誤更正碼)。在本范例實(shí)施例中,每一個(gè)物理編程單元的數(shù)據(jù)比特區(qū)中會(huì)包含8個(gè)物理存取地址,且一個(gè)物理存取地址的大小為512字節(jié)(byte)。然而,在其他范例實(shí)施例中,數(shù)據(jù)比特區(qū)中也可包含數(shù)目更多或更少的物理存取地址,本發(fā)明并不限制物理存取地址的大小以及個(gè)數(shù)。例如,在一范例實(shí)施例中,物理抹除單元為物理區(qū)塊,并且物理編程單元為物理頁面或物理扇區(qū),但本發(fā)明不以此為限。
在本范例實(shí)施例中,可復(fù)寫式非易失性存儲(chǔ)器模塊406為多階存儲(chǔ)單元(Multi Level Cell,簡(jiǎn)稱:MLC)NAND型快閃存儲(chǔ)器模塊(即,一個(gè)存儲(chǔ)單元中可儲(chǔ)存2個(gè)數(shù)據(jù)比特的快閃存儲(chǔ)器模塊)。然而,本發(fā)明不限于此,可復(fù)寫式非易失性存儲(chǔ)器模塊406也可是單階存儲(chǔ)單元(Single Level Cell,簡(jiǎn)稱:SLC)NAND型快閃存儲(chǔ)器模塊(即,一個(gè)存儲(chǔ)單元中可儲(chǔ)存1個(gè)數(shù)據(jù)比特的快閃存儲(chǔ)器模塊)、三階存儲(chǔ)單元(Trinary Level Cell,簡(jiǎn)稱:TLC)NAND型快閃存儲(chǔ)器模塊(即,一個(gè)存儲(chǔ)單元中可儲(chǔ)存3個(gè)數(shù)據(jù)比特的快閃存儲(chǔ)器模塊)、其他快閃存儲(chǔ)器模塊或其他具有相同特性的存儲(chǔ)器模塊。
圖5是根據(jù)一范例實(shí)施例所示出的存儲(chǔ)器控制電路單元的概要方塊圖。
請(qǐng)參照?qǐng)D5,存儲(chǔ)器控制電路單元404包括存儲(chǔ)器管理電路502、主機(jī)接口504與存儲(chǔ)器接口506、緩沖存儲(chǔ)器508、電源管理電路510與錯(cuò)誤檢查與校正電路512。
存儲(chǔ)器管理電路502用以控制存儲(chǔ)器控制電路單元404的整體操作。具體來說,存儲(chǔ)器管理電路502具有多個(gè)控制指令,并且在存儲(chǔ)器儲(chǔ)存裝置10操作時(shí),此些控制指令會(huì)被執(zhí)行以進(jìn)行數(shù)據(jù)的寫入、讀取與抹除等操作。
在本范例實(shí)施例中,存儲(chǔ)器管理電路502的控制指令是以固件形式來實(shí)現(xiàn)。例如,存儲(chǔ)器管理電路502具有微處理器單元(未示出)與只讀存儲(chǔ)器(未示出),并且此些控制指令是被燒錄至此只讀存儲(chǔ)器中。當(dāng)存儲(chǔ)器儲(chǔ)存裝置10操作時(shí),此些控制指令會(huì)由微處理器單元來執(zhí)行以進(jìn)行數(shù)據(jù)的寫入、讀取與抹除等操作。
圖6與圖7是根據(jù)一范例實(shí)施例所示出的管理物理抹除單元的范例示意圖。
必須了解的是,在此描述可復(fù)寫式非易失性存儲(chǔ)器模塊106的物理抹除單元的操作時(shí), 以“提取”、“分組”、“劃分”、“關(guān)聯(lián)”等詞來操作物理抹除單元是邏輯上的概念。也就是說,可復(fù)寫式非易失性存儲(chǔ)器模塊的物理抹除單元的實(shí)際位置并未更動(dòng),而是邏輯上對(duì)可復(fù)寫式非易失性存儲(chǔ)器模塊的物理抹除單元進(jìn)行操作。
請(qǐng)參照?qǐng)D6,存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)將物理抹除單元410(0)~410(N)邏輯地分組為數(shù)據(jù)區(qū)602、閑置區(qū)604、系統(tǒng)區(qū)606與取代區(qū)608。
邏輯上屬于數(shù)據(jù)區(qū)602與閑置區(qū)604的物理抹除單元是用以儲(chǔ)存來自于主機(jī)系統(tǒng)11的數(shù)據(jù)。具體來說,數(shù)據(jù)區(qū)602的物理抹除單元是被視為已儲(chǔ)存數(shù)據(jù)的物理抹除單元,而閑置區(qū)604的物理抹除單元是用以替換數(shù)據(jù)區(qū)602的物理抹除單元。也就是說,當(dāng)從主機(jī)系統(tǒng)11接收到寫入指令與欲寫入的數(shù)據(jù)時(shí),存儲(chǔ)器管理電路502會(huì)從閑置區(qū)604中提取物理抹除單元,并且將數(shù)據(jù)寫入至所提取的物理抹除單元中,以替換數(shù)據(jù)區(qū)602的物理抹除單元。
邏輯上屬于系統(tǒng)區(qū)606的物理抹除單元是用以記錄系統(tǒng)數(shù)據(jù)。例如,系統(tǒng)數(shù)據(jù)包括關(guān)于可復(fù)寫式非易失性存儲(chǔ)器模塊的制造商與型號(hào)、可復(fù)寫式非易失性存儲(chǔ)器模塊的物理抹除單元數(shù)、每一物理抹除單元的物理編程單元數(shù)等。
邏輯上屬于取代區(qū)608中的物理抹除單元是用于壞物理抹除單元取代程序,以取代損壞的物理抹除單元。具體來說,倘若取代區(qū)608中仍存有正常的物理抹除單元并且數(shù)據(jù)區(qū)602的物理抹除單元損壞時(shí),存儲(chǔ)器管理電路502會(huì)從取代區(qū)608中提取正常的物理抹除單元來更換損壞的物理抹除單元。
特別是,數(shù)據(jù)區(qū)602、閑置區(qū)604、系統(tǒng)區(qū)606與取代區(qū)608的物理抹除單元的數(shù)量會(huì)根據(jù)不同的存儲(chǔ)器規(guī)格而有所不同。此外,必須了解的是,在存儲(chǔ)器儲(chǔ)存裝置10的操作中,物理抹除單元關(guān)聯(lián)至數(shù)據(jù)區(qū)602、閑置區(qū)604、系統(tǒng)區(qū)606與取代區(qū)608的分組關(guān)系會(huì)動(dòng)態(tài)地變動(dòng)。例如,當(dāng)閑置區(qū)604中的物理抹除單元損壞而被取代區(qū)608的物理抹除單元取代時(shí),則原本取代區(qū)608的物理抹除單元會(huì)被關(guān)聯(lián)至閑置區(qū)604。
請(qǐng)參照?qǐng)D7,存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)配置邏輯地址LBA(0)~LBA(H)以映射數(shù)據(jù)區(qū)602的物理抹除單元,其中每一邏輯地址具有多個(gè)邏輯單元以映射對(duì)應(yīng)的物理抹除單元的物理編程單元。并且,當(dāng)主機(jī)系統(tǒng)11欲寫入數(shù)據(jù)至邏輯地址或更新儲(chǔ)存于邏輯地址中的數(shù)據(jù)時(shí),存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)從閑置區(qū)604中提取一個(gè)物理抹除單元來寫入數(shù)據(jù),以輪替數(shù)據(jù)區(qū)602的物理抹除單元。在本范例實(shí)施例中,邏輯單元可以是邏輯頁面或邏輯扇區(qū)。
為了識(shí)別每個(gè)邏輯地址的數(shù)據(jù)被儲(chǔ)存在哪個(gè)物理抹除單元,在本范例實(shí)施例中,存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)記錄邏輯地址與物理抹除單元之間的映射。并且,當(dāng)主機(jī)系統(tǒng)11欲在邏輯單元中存取數(shù)據(jù)時(shí),存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)確認(rèn)此邏輯單元所屬的邏輯地址,并且在此邏輯地址所映射的物理抹除單元中來存取數(shù)據(jù)。例如,在本范例實(shí)施例中,存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)在可復(fù)寫式非易失性存儲(chǔ)器模塊406中儲(chǔ)存邏輯地址-物理地址映射表來記錄每一邏輯地址所映射的物理抹除單元,并且當(dāng)欲存取數(shù)據(jù)時(shí)存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)將邏輯地址-物理地址映射表載入至緩沖存儲(chǔ)器508來維護(hù)。
值得一提的是,由于緩沖存儲(chǔ)器508的容量有限無法儲(chǔ)存記錄所有邏輯地址的映射關(guān)系的映射表,因此,在本范例實(shí)施例中,存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)將邏輯地址LBA(0)~LBA(H)分組為多個(gè)邏輯區(qū)域LZ(0)~LZ(M),并且為每一邏輯區(qū)域配置一 個(gè)邏輯地址-物理地址映射表。特別是,當(dāng)存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)欲更新某個(gè)邏輯地址的映射時(shí),對(duì)應(yīng)此邏輯地址所屬的邏輯區(qū)域的邏輯地址-物理地址映射表會(huì)被載入至緩沖存儲(chǔ)器508來被更新。
在本發(fā)明另一范例實(shí)施例中,存儲(chǔ)器管理電路502的控制指令也可以代碼形式儲(chǔ)存于可復(fù)寫式非易失性存儲(chǔ)器模塊406的特定區(qū)域(例如,存儲(chǔ)器模塊中專用于存放系統(tǒng)數(shù)據(jù)的系統(tǒng)區(qū))中。此外,存儲(chǔ)器管理電路502具有微處理器單元(未示出)、只讀存儲(chǔ)器(未示出)及隨機(jī)存取存儲(chǔ)器(未示出)。特別是,此只讀存儲(chǔ)器具有驅(qū)動(dòng)碼,并且當(dāng)存儲(chǔ)器控制電路單元404被致能時(shí),微處理器單元會(huì)先執(zhí)行此驅(qū)動(dòng)碼段來將儲(chǔ)存于可復(fù)寫式非易失性存儲(chǔ)器模塊406中的控制指令載入至存儲(chǔ)器管理電路502的隨機(jī)存取存儲(chǔ)器中。之后,微處理器單元會(huì)運(yùn)轉(zhuǎn)此些控制指令以進(jìn)行數(shù)據(jù)的寫入、讀取與抹除等操作。
此外,在本發(fā)明另一范例實(shí)施例中,存儲(chǔ)器管理電路502的控制指令也可以一硬件形式來實(shí)現(xiàn)。例如,存儲(chǔ)器管理電路502包括微控制器、存儲(chǔ)單元管理電路、存儲(chǔ)器寫入電路、存儲(chǔ)器讀取電路、存儲(chǔ)器抹除電路與數(shù)據(jù)處理電路。存儲(chǔ)單元管理電路、存儲(chǔ)器寫入電路、存儲(chǔ)器讀取電路、存儲(chǔ)器抹除電路與數(shù)據(jù)處理電路是電性連接至微控制器。其中,存儲(chǔ)單元管理電路用以管理可復(fù)寫式非易失性存儲(chǔ)器模塊406的物理抹除單元;存儲(chǔ)器寫入電路用以對(duì)可復(fù)寫式非易失性存儲(chǔ)器模塊406下達(dá)寫入指令以將數(shù)據(jù)寫入至可復(fù)寫式非易失性存儲(chǔ)器模塊406中;存儲(chǔ)器讀取電路用以對(duì)可復(fù)寫式非易失性存儲(chǔ)器模塊406下達(dá)讀取指令以從可復(fù)寫式非易失性存儲(chǔ)器模塊406中讀取數(shù)據(jù);存儲(chǔ)器抹除電路用以對(duì)可復(fù)寫式非易失性存儲(chǔ)器模塊406下達(dá)抹除指令以將數(shù)據(jù)從可復(fù)寫式非易失性存儲(chǔ)器模塊406中抹除;而數(shù)據(jù)處理電路用以處理欲寫入至可復(fù)寫式非易失性存儲(chǔ)器模塊406的數(shù)據(jù)以及從可復(fù)寫式非易失性存儲(chǔ)器模塊406中讀取的數(shù)據(jù)。
請(qǐng)?jiān)賲⒄請(qǐng)D5,主機(jī)接口504是電性連接至存儲(chǔ)器管理電路502并且用以電性連接至連接接口單元402,以接收與識(shí)別主機(jī)系統(tǒng)11所傳送的指令與數(shù)據(jù)。也就是說,主機(jī)系統(tǒng)11所傳送的指令與數(shù)據(jù)會(huì)通過主機(jī)接口504來傳送至存儲(chǔ)器管理電路502。在本范例實(shí)施例中,主機(jī)接口504是相容于SATA標(biāo)準(zhǔn)。然而,必須了解的是本發(fā)明不限于此,主機(jī)接口504也可以是相容于PATA標(biāo)準(zhǔn)、IEEE 1394標(biāo)準(zhǔn)、PCI Express標(biāo)準(zhǔn)、USB標(biāo)準(zhǔn)、UHS-I接口標(biāo)準(zhǔn)、UHS-II接口標(biāo)準(zhǔn)、SD標(biāo)準(zhǔn)、MS標(biāo)準(zhǔn)、MMC標(biāo)準(zhǔn)、CF標(biāo)準(zhǔn)、IDE標(biāo)準(zhǔn)或其他適合的數(shù)據(jù)傳輸標(biāo)準(zhǔn)。
存儲(chǔ)器接口506是電性連接至存儲(chǔ)器管理電路502并且用以存取可復(fù)寫式非易失性存儲(chǔ)器模塊406。也就是說,欲寫入至可復(fù)寫式非易失性存儲(chǔ)器模塊406的數(shù)據(jù)會(huì)經(jīng)由存儲(chǔ)器接口506轉(zhuǎn)換為可復(fù)寫式非易失性存儲(chǔ)器模塊406所能接受的格式。
緩沖存儲(chǔ)器508是電性連接至存儲(chǔ)器管理電路502并且用以暫存來自于主機(jī)系統(tǒng)11的數(shù)據(jù)與指令或來自于可復(fù)寫式非易失性存儲(chǔ)器模塊406的數(shù)據(jù)。
電源管理電路510是電性連接至存儲(chǔ)器管理電路502并且用以控制存儲(chǔ)器儲(chǔ)存裝置10的電源。
錯(cuò)誤檢查與校正電路512是電性連接至存儲(chǔ)器管理電路502并且用以執(zhí)行錯(cuò)誤檢查與校正程序以確保數(shù)據(jù)的正確性。具體來說,當(dāng)存儲(chǔ)器管理電路502從主機(jī)系統(tǒng)11中接收到寫入指令時(shí),錯(cuò)誤檢查與校正電路512會(huì)為對(duì)應(yīng)此寫入指令的數(shù)據(jù)產(chǎn)生對(duì)應(yīng)的錯(cuò)誤檢查與校正碼(Error Checking and Correcting Code,簡(jiǎn)稱:ECC Code),并且存儲(chǔ)器管理電路502會(huì)將對(duì)應(yīng)此寫入指令的數(shù)據(jù)與對(duì)應(yīng)的錯(cuò)誤檢查與校正碼寫入至可復(fù)寫式非易失性存儲(chǔ)器模塊406中。 之后,當(dāng)存儲(chǔ)器管理電路502從可復(fù)寫式非易失性存儲(chǔ)器模塊406中讀取數(shù)據(jù)時(shí)會(huì)同時(shí)讀取此數(shù)據(jù)對(duì)應(yīng)的錯(cuò)誤檢查與校正碼,并且錯(cuò)誤檢查與校正電路512會(huì)根據(jù)此錯(cuò)誤檢查與校正碼對(duì)所讀取的數(shù)據(jù)執(zhí)行錯(cuò)誤檢查與校正程序。
在本范例實(shí)施例中,當(dāng)存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)接收到數(shù)據(jù)時(shí),存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)先將數(shù)據(jù)分割為多個(gè)子數(shù)據(jù)單元,之后錯(cuò)誤檢查與校正電路512再進(jìn)行錯(cuò)誤校正編碼程序以產(chǎn)生對(duì)應(yīng)的錯(cuò)誤校正碼,并且將這些子數(shù)據(jù)單元與此些錯(cuò)誤校正碼編碼形成為錯(cuò)誤檢查與校正碼框。例如,每個(gè)錯(cuò)誤檢查與校正碼框內(nèi)的數(shù)據(jù)(也稱為使用者數(shù)據(jù))的長(zhǎng)度可以是4仟字節(jié)(kilobyte,簡(jiǎn)稱:KB)、2B、1KB或其他大小。
在本范例實(shí)施例中,存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)以錯(cuò)誤檢查與校正碼框?yàn)閱挝粊韺?duì)數(shù)據(jù)解碼以讀取數(shù)據(jù)。舉例來說,假設(shè)主機(jī)系統(tǒng)11發(fā)送讀取指令給存儲(chǔ)器儲(chǔ)存裝置10,其中讀取指令指示從某個(gè)邏輯地址中讀取數(shù)據(jù),并且此欲讀取的數(shù)據(jù)被編碼至1個(gè)錯(cuò)誤檢查與校正碼框。在接收到此讀取指令后,存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)發(fā)送讀取指令序列至可復(fù)寫式非易失性存儲(chǔ)器模塊406以從映射此邏輯地址的物理編程單元中讀取數(shù)據(jù),從所讀取的數(shù)據(jù)中獲取使用者數(shù)據(jù)串,對(duì)此使用者數(shù)據(jù)串執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生對(duì)應(yīng)的已校正數(shù)據(jù)串,并且將已校正數(shù)據(jù)串傳送給主機(jī)系統(tǒng)以響應(yīng)讀取指令。應(yīng)注意的是,若欲讀取的數(shù)據(jù)被編碼至2個(gè)以上的錯(cuò)誤檢查與校正碼框中時(shí),存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)讀取對(duì)應(yīng)每一錯(cuò)誤檢查與校正碼框的數(shù)據(jù)串,對(duì)所讀取的數(shù)據(jù)串進(jìn)行錯(cuò)誤校正解碼操作,并且在成功地校正所讀取的數(shù)據(jù)串后合并數(shù)據(jù)串成為已校正數(shù)據(jù)串并且傳送至主機(jī)系統(tǒng)以響應(yīng)讀取指令。
特別是,在本范例實(shí)施例中,錯(cuò)誤檢查與校正電路512所使用的是區(qū)塊渦輪碼(block turbo code,簡(jiǎn)稱:BTC)算法來進(jìn)行錯(cuò)誤校正編碼/解碼操作。以下將配合附圖說明區(qū)塊渦輪碼算法的詳細(xì)流程。
圖8是根據(jù)本發(fā)明的一范例實(shí)施例所示出的錯(cuò)誤檢查與校正碼框的示意圖,并且圖9是根據(jù)本發(fā)明的一范例實(shí)施例所示出的使用區(qū)塊渦輪碼進(jìn)行錯(cuò)誤校正編碼程序的示意圖。必須了解的是,在此描述錯(cuò)誤檢查與校正電路512對(duì)數(shù)據(jù)的操作時(shí),“選擇”、“分割”、“劃分”、“關(guān)聯(lián)”、“排列”等詞是邏輯上的概念。也就是說,錯(cuò)誤檢查與校正電路512所處理的數(shù)據(jù)本身的儲(chǔ)存位置并未更動(dòng),而是邏輯上對(duì)數(shù)據(jù)進(jìn)行操作。
請(qǐng)參照?qǐng)D8與圖9,錯(cuò)誤檢查與校正電路512對(duì)數(shù)據(jù)串UD1進(jìn)行錯(cuò)誤校正編碼程序,以產(chǎn)生錯(cuò)誤檢查與校正碼組ECC1,其中錯(cuò)誤檢查碼ECC1會(huì)與數(shù)據(jù)串UD1一起形成錯(cuò)誤與檢查校正碼框ECCF1而被編程至可復(fù)寫式揮發(fā)性存儲(chǔ)器模塊406的物理編程單元中。如上所述,在本范例實(shí)施例中,錯(cuò)誤檢查與校正電路512會(huì)使用區(qū)塊渦輪碼算法來對(duì)數(shù)據(jù)串UD1。在執(zhí)行區(qū)塊渦輪碼算法的過程中,錯(cuò)誤檢查與校正電路512會(huì)將數(shù)據(jù)串UD1劃分為多個(gè)子數(shù)據(jù)單元,將所劃分的子數(shù)據(jù)單元以矩陣形式排列,分別為以矩陣形式排列的子數(shù)據(jù)單元產(chǎn)生對(duì)應(yīng)的行錯(cuò)誤檢查碼與列錯(cuò)誤檢查碼,并且合并所產(chǎn)生的行錯(cuò)誤檢查碼與列錯(cuò)誤檢查碼來形成錯(cuò)誤檢查與校正碼組ECC1。
舉例來說,首先,錯(cuò)誤檢查與校正電路512會(huì)將數(shù)據(jù)串UD1分割為子數(shù)據(jù)單元DB1~DB32。應(yīng)注意的是,在本范例實(shí)施例中,為了便于說明,每一子數(shù)據(jù)單元包含2個(gè)字節(jié)的數(shù)據(jù)(即,8個(gè)比特的數(shù)據(jù)),但本發(fā)明不限于此。例如,在其他實(shí)施例中,每一子數(shù)據(jù)單元也可包含1個(gè) 或是多于2個(gè)的字節(jié)的數(shù)據(jù)。
接著,錯(cuò)誤檢查與校正電路512將子數(shù)據(jù)單元DB1~DB32排列為一個(gè)8乘以4的二維(橫向與縱向)數(shù)據(jù)矩陣,并且依照維度來劃分為多個(gè)行數(shù)據(jù)段與列數(shù)據(jù)段。例如,橫向排列的子數(shù)據(jù)單元DB1~DB8會(huì)被劃分為列數(shù)據(jù)段RG1;子數(shù)據(jù)單元DB9~DB16會(huì)被劃分為列數(shù)據(jù)段RG2;子數(shù)據(jù)單元DB17~DB24會(huì)被劃分為列數(shù)據(jù)段RG3;子數(shù)據(jù)單元DB25~DB32會(huì)被劃分為列數(shù)據(jù)段RG4。此外,縱向排列的子數(shù)據(jù)單元DB1、DB9、DB17、DB25會(huì)被劃分為行數(shù)據(jù)段CG1;子數(shù)據(jù)單元DB2、DB10、DB18、DB26會(huì)被劃分為行數(shù)據(jù)段CG2;子數(shù)據(jù)單元DB3、DB11、DB19、DB27會(huì)被劃分為行數(shù)據(jù)段CG3;子數(shù)據(jù)單元DB4、DB12、DB20、DB28會(huì)被劃分為行數(shù)據(jù)段CG4;子數(shù)據(jù)單元DB5、DB13、DB21、DB29會(huì)被劃分為行數(shù)據(jù)段CG5;子數(shù)據(jù)單元DB6、DB14、DB22、DB30會(huì)被劃分為行數(shù)據(jù)段CG6;子數(shù)據(jù)單元DB7、DB15、DB23、DB31會(huì)被劃分為行數(shù)據(jù)段CG7;子數(shù)據(jù)單元DB8、DB16、DB24、DB32會(huì)被劃分為行數(shù)據(jù)段CG8。
在本范例實(shí)施例中,在將子數(shù)據(jù)單元DB1~DB32劃分為橫向的列數(shù)據(jù)段RG1~RG4與縱向的行數(shù)據(jù)段CG1~CG8后,錯(cuò)誤檢查與校正電路512會(huì)使用博斯-喬赫里-霍克碼(以下稱BCH)作為輔助編碼算法來分別對(duì)此些子數(shù)據(jù)單元做編碼,以產(chǎn)生對(duì)應(yīng)此些列數(shù)據(jù)段與行數(shù)據(jù)段的錯(cuò)誤校正碼。也就是說,對(duì)于橫向的列數(shù)據(jù)段RG1~RG4,錯(cuò)誤檢查與校正電路512會(huì)經(jīng)由BCH算法對(duì)劃分至列數(shù)據(jù)段RG1的數(shù)據(jù)(即,子數(shù)據(jù)單元DB1~DB8)進(jìn)行編碼以產(chǎn)生對(duì)應(yīng)列數(shù)據(jù)段RG1的列錯(cuò)誤校正碼BCH1。依此類推,錯(cuò)誤檢查與校正電路512會(huì)產(chǎn)生對(duì)應(yīng)列數(shù)據(jù)段RG2的列錯(cuò)誤校正碼BCH2;產(chǎn)生對(duì)應(yīng)列數(shù)據(jù)段RG3的列錯(cuò)誤校正碼BCH3;產(chǎn)生對(duì)應(yīng)列數(shù)據(jù)段RG4的列錯(cuò)誤校正碼BCH4。此外,對(duì)于縱向的行數(shù)據(jù)段CG1~CG8,錯(cuò)誤檢查與校正電路512亦會(huì)產(chǎn)生對(duì)應(yīng)行數(shù)據(jù)段CG1的行錯(cuò)誤校正碼BCH5;產(chǎn)生對(duì)應(yīng)行數(shù)據(jù)段CG2的行錯(cuò)誤校正碼BCH6;產(chǎn)生對(duì)應(yīng)行數(shù)據(jù)段CG3的行錯(cuò)誤校正碼BCH7;產(chǎn)生對(duì)應(yīng)行數(shù)據(jù)段CG4的行錯(cuò)誤校正碼BCH8;產(chǎn)生對(duì)應(yīng)行數(shù)據(jù)段CG5的行錯(cuò)誤校正碼BCH9;產(chǎn)生對(duì)應(yīng)行數(shù)據(jù)段CG6的行錯(cuò)誤校正碼BCH10;產(chǎn)生對(duì)應(yīng)行數(shù)據(jù)段CG7的行錯(cuò)誤校正碼BCH11;并且產(chǎn)生對(duì)應(yīng)行數(shù)據(jù)段CG8的行錯(cuò)誤校正碼BCH12。藉此,列數(shù)據(jù)段RG1~RG4與行數(shù)據(jù)段CG1~CG8中的數(shù)據(jù)可分別被對(duì)應(yīng)的列錯(cuò)誤校正碼BCH1~BCH4與行錯(cuò)誤校正碼BCH5~BCH12保護(hù)。應(yīng)注意的是,本發(fā)明并不限于使用博斯-喬赫里-霍克碼作為輔助編碼算法來分別對(duì)此些子數(shù)據(jù)單元做編碼。例如,在另一范例實(shí)施例中,錯(cuò)誤檢查與校正電路512會(huì)使用低密度奇偶檢查校正碼作為輔助編碼算法來分別對(duì)此些子數(shù)據(jù)單元做編碼。
值得一提的是,在本范例實(shí)施例中,錯(cuò)誤檢查與校正電路512會(huì)先將子數(shù)據(jù)單元?jiǎng)澐种炼鄠€(gè)行數(shù)據(jù)段與列數(shù)據(jù)段之后,再對(duì)每一行數(shù)據(jù)段與列數(shù)據(jù)段進(jìn)行編碼以產(chǎn)生對(duì)應(yīng)每一行數(shù)據(jù)段與列數(shù)據(jù)段的行錯(cuò)誤校正碼與列錯(cuò)誤校正碼,但本發(fā)明不限于此。例如,在另一范例實(shí)施例中,錯(cuò)誤檢查與校正電路512可不先將子數(shù)據(jù)單元?jiǎng)澐譃榇诵┬袛?shù)據(jù)段與列數(shù)據(jù)段,并且直接根據(jù)子數(shù)據(jù)單元的排列方式來對(duì)子數(shù)據(jù)單元作錯(cuò)誤校正編碼。舉例來說,錯(cuò)誤檢查與校正電路512會(huì)直接對(duì)子數(shù)據(jù)單元DB1~DB8來進(jìn)行錯(cuò)誤校正編碼程序,以產(chǎn)生對(duì)應(yīng)子數(shù)據(jù)單元DB1~DB8的列錯(cuò)誤校正碼BCH1。
請(qǐng)參照?qǐng)D8,在本范例實(shí)施例中,錯(cuò)誤檢查與校正電路512會(huì)將列錯(cuò)誤校正碼BCH1~BCH4和行錯(cuò)誤校正碼BCH5~BCH12合并成為錯(cuò)誤檢查與校正碼組ECC1,并且將包含數(shù)據(jù)串UD1(即,子數(shù)據(jù)單元DB1~DB32)與錯(cuò)誤檢查與校正碼組ECC1的錯(cuò)誤檢查與校正碼框ECCF1 儲(chǔ)存至可復(fù)寫式非易失性存儲(chǔ)器模塊406。爾后,存儲(chǔ)器控制電路單元404從可復(fù)寫式非易失性存儲(chǔ)器模塊406中讀取錯(cuò)誤檢查與校正碼框ECCF1后,可使用錯(cuò)誤檢查與校正碼組ECC1對(duì)錯(cuò)誤檢查與校正碼框ECCF1所讀取到的數(shù)據(jù)串進(jìn)行錯(cuò)誤校正解碼程序以獲得正確的數(shù)據(jù)串UD1。
舉例來說,當(dāng)從主機(jī)系統(tǒng)接收到讀取指令時(shí),存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)根據(jù)讀取指令從可復(fù)寫式非易失性存儲(chǔ)器模塊406的物理編程單元中讀取對(duì)應(yīng)的錯(cuò)誤檢查與校正碼框ECCF1并且獲取未校正的數(shù)據(jù)串UD1及對(duì)應(yīng)的錯(cuò)誤檢查與校正碼組ECC1。接著,錯(cuò)誤檢查與校正電路512會(huì)執(zhí)行錯(cuò)誤校正解碼操作,以將未校正的數(shù)據(jù)串UD1分割為32個(gè)子數(shù)據(jù)單元DB1~DB32,并且將子數(shù)據(jù)單元DB1~DB32排列成二維數(shù)據(jù)矩陣700,并且從錯(cuò)誤檢查與校正碼組ECC1中獲取對(duì)應(yīng)每一行數(shù)據(jù)段的行錯(cuò)誤校正碼BCH5~BCH12與每一列數(shù)據(jù)段的列錯(cuò)誤校正碼BCH1~BCH4。然后,錯(cuò)誤檢查與校正電路512會(huì)使用對(duì)應(yīng)的行錯(cuò)誤校正碼對(duì)每一行數(shù)據(jù)段進(jìn)行解碼并使用對(duì)應(yīng)的列錯(cuò)誤校正碼對(duì)對(duì)列數(shù)據(jù)段進(jìn)行解碼。例如,錯(cuò)誤檢查與校正電路512會(huì)先根據(jù)對(duì)應(yīng)此些列數(shù)據(jù)段的列錯(cuò)誤校正碼對(duì)橫向排列的子數(shù)據(jù)單元所形成的多個(gè)列數(shù)據(jù)段進(jìn)行解碼。即,錯(cuò)誤檢查與校正電路512會(huì)使用列錯(cuò)誤校正碼BCH1來解碼子數(shù)據(jù)單元DB1~DB8;使用列錯(cuò)誤校正碼BCH2來解碼子數(shù)據(jù)單元DB9~DB16;使用列錯(cuò)誤校正碼BCH3來解碼子數(shù)據(jù)單元DB17~DB24;并且使用列錯(cuò)誤校正碼BCH4來解碼子數(shù)據(jù)單元DB25~DB32。倘若在經(jīng)過第一次橫向解碼之后,子數(shù)據(jù)單元DB1~DB32之中存有無法校正的子數(shù)據(jù)單元時(shí),錯(cuò)誤檢查與校正電路512會(huì)再根據(jù)對(duì)應(yīng)此些行數(shù)據(jù)段的行錯(cuò)誤校正碼對(duì)包含有無法校正的子數(shù)據(jù)單元的行數(shù)據(jù)段數(shù)據(jù)進(jìn)行第一次縱向解碼。例如,錯(cuò)誤檢查與校正電路512會(huì)使用行錯(cuò)誤校正碼BCH5來解碼子數(shù)據(jù)單元DB1、DB9、DB17、DB25;或使用行錯(cuò)誤校正碼BCH6來解碼子數(shù)據(jù)單元DB2、DB10、DB18、DB26;或使用行錯(cuò)誤校正碼BCH7來解碼子數(shù)據(jù)單元DB3、DB11、DB19、DB27;或使用行錯(cuò)誤校正碼BCH8來解碼子數(shù)據(jù)單元DB4、DB12、DB20、DB28;或使用行錯(cuò)誤校正碼BCH9來解碼子數(shù)據(jù)單元DB5、DB13、DB21、DB29;或使用行錯(cuò)誤校正碼BCH10來解碼子數(shù)據(jù)單元DB6、DB14、DB22、DB30;或使用行錯(cuò)誤校正碼BCH11來解碼子數(shù)據(jù)單元DB7、DB15、DB23、DB31;或使用行錯(cuò)誤校正碼BCH12來解碼子數(shù)據(jù)單元DB8、DB16、DB24、DB32。在執(zhí)行第一次縱向解碼之后,錯(cuò)誤檢查與校正電路512會(huì)以相同方式,再次執(zhí)行橫向解碼(即,第二次橫向解碼),之后再執(zhí)行縱向解碼(即,第二次縱向解碼),并且以此類推直到所有子數(shù)據(jù)單元被校正或解碼終止條件到達(dá)(例如,迭代次數(shù)超過一預(yù)定次數(shù))。由于在前次橫向解碼部分無法校正的子數(shù)據(jù)單元,可能在目前縱向解碼被校正,因此,在下次橫向解碼中,會(huì)有更多原先無法校正的子數(shù)據(jù)單元被校正?;耍ㄟ^橫項(xiàng)與縱向的迭代解碼可快速地對(duì)檢查與校正碼框中的使用者數(shù)據(jù)進(jìn)行解碼并產(chǎn)生校正后的使用者數(shù)據(jù)。
值得一提的是,在上述區(qū)塊渦輪碼算法迭代過程中,若在一個(gè)子數(shù)據(jù)單元中出現(xiàn)的錯(cuò)誤比特的數(shù)目大于錯(cuò)誤檢查與校正電路512能夠校正的上限值(即,最大可校正錯(cuò)誤比特?cái)?shù))時(shí),上述的迭代無法使此子數(shù)據(jù)單元內(nèi)的數(shù)據(jù)被校正。也就是說,既使整個(gè)使用者數(shù)據(jù)內(nèi)錯(cuò)誤比特?cái)?shù)目不多,但此些錯(cuò)誤比特集中在同一個(gè)子數(shù)據(jù)單元時(shí),也會(huì)造成解碼失敗。基此,在本范例實(shí)施例中,當(dāng)解碼終止條件到達(dá)(例如,迭代次數(shù)超過一預(yù)定次數(shù))時(shí),錯(cuò)誤檢查與校正電路512會(huì)從目前的已解碼數(shù)據(jù)串的多個(gè)已解碼子數(shù)據(jù)單元中,搜索無法校正子數(shù)據(jù)單元并且將其中一個(gè)無法校正子數(shù)據(jù)單元設(shè)定為目標(biāo)子數(shù)據(jù)單元。特別是,錯(cuò)誤檢查與校正電路512 會(huì)調(diào)整此目標(biāo)子數(shù)據(jù)單元內(nèi)的數(shù)據(jù)串的值,并且再重新執(zhí)行上述區(qū)塊渦輪碼算法來解碼調(diào)整后的行數(shù)據(jù)段與列數(shù)據(jù)段,由此正確輸出校正后的使用者數(shù)據(jù)。具體來說,在本發(fā)明范例實(shí)施例中,錯(cuò)誤檢查與校正電路512會(huì)根據(jù)最后解碼的結(jié)果搜索無法校正子數(shù)據(jù)單元,并且根據(jù)無法解碼成功的行數(shù)據(jù)段與列數(shù)據(jù)段來選擇目標(biāo)子數(shù)據(jù)單元來進(jìn)行調(diào)整。
圖10是根據(jù)本發(fā)明的一范例實(shí)施例所輸出的選取目標(biāo)子數(shù)據(jù)單元的范例。
請(qǐng)參照?qǐng)D10,假設(shè)所讀取的錯(cuò)誤檢查與校正碼框ECCF1中的使用者數(shù)據(jù)經(jīng)過區(qū)塊渦輪碼算法解碼后所輸出的解碼數(shù)據(jù)串(以下稱為第一已解碼數(shù)據(jù)串)會(huì)排列成二維數(shù)據(jù)矩陣710,并且錯(cuò)誤檢查與校正電路512無法根據(jù)列錯(cuò)誤校正碼BCH2正確校正列數(shù)據(jù)段RG2且無法根據(jù)行錯(cuò)誤校正碼BCH8正確校正行數(shù)據(jù)段CG4。在此例子中,錯(cuò)誤檢查與校正電路512會(huì)先搜索出無法校正的子數(shù)據(jù)單元為子數(shù)據(jù)單元DB4、DB9、DB10、DB11、DB12、DB13、DB14、DB15、DB16、DB20、DB28(如斜線所示)。然后,錯(cuò)誤檢查與校正電路512會(huì)依據(jù)無法校正的列數(shù)據(jù)段RG2與行數(shù)據(jù)段CG4識(shí)別出交界的子數(shù)據(jù)單元DB12作為目標(biāo)子數(shù)據(jù)單元。
在選出目標(biāo)子數(shù)據(jù)單元后,錯(cuò)誤檢查與校正電路512會(huì)改變目標(biāo)子數(shù)據(jù)單元內(nèi)的至少一個(gè)比特的值,以產(chǎn)生調(diào)整后的使用者數(shù)據(jù)(以下稱為已調(diào)整使用者數(shù)據(jù))。例如,在每個(gè)子數(shù)據(jù)單元內(nèi)包括2個(gè)字節(jié)的數(shù)據(jù)的例子中,錯(cuò)誤檢查與校正電路512每次會(huì)調(diào)整1個(gè)比特的值,將其從’0’改變?yōu)椤?’或從’1’改變?yōu)椤?’。在本發(fā)明一范例實(shí)施例中,錯(cuò)誤檢查與校正電路512可產(chǎn)生一個(gè)對(duì)應(yīng)的調(diào)整數(shù)據(jù)串來與目標(biāo)子數(shù)據(jù)單元內(nèi)的數(shù)據(jù)串進(jìn)行互斥運(yùn)算,以改變其比特的值。例如,若目標(biāo)子數(shù)據(jù)單元內(nèi)的數(shù)據(jù)串為’11111111’且要將第一個(gè)比特改變?yōu)椤?’時(shí),錯(cuò)誤檢查與校正電路512可產(chǎn)生調(diào)整數(shù)據(jù)串’10000000’并與數(shù)據(jù)串’11111111’執(zhí)行互斥運(yùn)算,則可獲得數(shù)據(jù)串’01111111’。在調(diào)整完目標(biāo)子數(shù)據(jù)單元內(nèi)的值后,錯(cuò)誤檢查與校正電路512會(huì)將調(diào)整后的目標(biāo)子數(shù)據(jù)單元的數(shù)據(jù)串與第一已解碼數(shù)據(jù)串內(nèi)其他子數(shù)據(jù)單元的數(shù)據(jù)串整合為已調(diào)整使用者數(shù)據(jù),并重新進(jìn)行上述區(qū)塊渦輪碼解碼操作,以判斷目標(biāo)子數(shù)據(jù)單元是否可以被正確校正。若目標(biāo)子數(shù)據(jù)單元無法被正確校正,錯(cuò)誤檢查與校正電路512會(huì)反復(fù)調(diào)整目標(biāo)區(qū)塊內(nèi)的每個(gè)比特值,并進(jìn)行上述區(qū)塊渦輪碼解碼操作。也就是說,第一次調(diào)整目標(biāo)子數(shù)據(jù)單元內(nèi)的第1個(gè)比特;第一次調(diào)整目標(biāo)子數(shù)據(jù)單元內(nèi)的第2個(gè)比特;第三次調(diào)整目標(biāo)子數(shù)據(jù)單元內(nèi)的第3個(gè)比特;并且以此類推。若在重新執(zhí)行區(qū)塊渦輪碼解碼操作的過程中,目標(biāo)子數(shù)據(jù)單元可以被正確校正且使用已調(diào)整使用者數(shù)據(jù)內(nèi)的其他無法校正子數(shù)據(jù)單元皆可被校正時(shí),錯(cuò)誤檢查與校正電路512會(huì)輸出校正后的數(shù)據(jù)串(以下稱為已校正數(shù)據(jù)串)。
必須了解的是,在上述例子中,錯(cuò)誤檢查與校正電路512是一次改變1個(gè)比特的值,但本發(fā)明不限于此,在另一范例實(shí)施例中,錯(cuò)誤檢查與校正電路512亦可一次改變目標(biāo)子數(shù)據(jù)單元內(nèi)2個(gè)比特的值。
基于上述,在本發(fā)明范例實(shí)施例中,當(dāng)錯(cuò)誤檢查與校正電路512對(duì)使用者數(shù)據(jù)串執(zhí)行完區(qū)塊渦輪碼解碼操作后識(shí)別無法產(chǎn)生正確校正的數(shù)據(jù)串時(shí),錯(cuò)誤檢查與校正電路512會(huì)搜索出可能存有大量錯(cuò)誤比特的子數(shù)據(jù)單元,并且以比特翻轉(zhuǎn)(bit flipping)方式調(diào)整此子數(shù)據(jù)單元內(nèi)的比特值,由此再嘗試解碼?;?,本發(fā)明范例實(shí)施例的錯(cuò)誤檢查與校正電路512可提升正確校正數(shù)據(jù)的效能。在此,上述找出目標(biāo)子數(shù)據(jù)單元、調(diào)整目標(biāo)子數(shù)據(jù)單元的比特值、重新執(zhí)行區(qū)塊渦輪碼解碼的操作也稱為比特翻轉(zhuǎn)解碼操作。
圖11是根據(jù)一范例實(shí)施例所示出的數(shù)據(jù)讀取的流程圖。
請(qǐng)參照?qǐng)D11,在步驟S1101中,存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)從主機(jī) 系統(tǒng)11接收指示從邏輯地址讀取數(shù)據(jù)的讀取指令。
在步驟S1103中,存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)發(fā)送讀取指令序列以從可復(fù)寫式非易失性存儲(chǔ)器模塊406讀取對(duì)應(yīng)此邏輯地址的數(shù)據(jù)。
在步驟S1105中,存儲(chǔ)器控制電路單元404(或錯(cuò)誤檢查與校正電路512)依據(jù)所讀取的錯(cuò)誤檢查與校正碼組對(duì)所讀取的使用者數(shù)據(jù)串執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生已解碼數(shù)據(jù)串(以下稱為第一已解碼數(shù)據(jù)串)。例如,在本范例實(shí)施例中,存儲(chǔ)器控制電路單元404(或錯(cuò)誤檢查與校正電路512)是使用區(qū)塊渦輪碼算法來解碼使用者數(shù)據(jù)串,并且其解碼步驟已配合圖式詳細(xì)描述如前,在此不在重復(fù)說明。
在步驟S1107中,存儲(chǔ)器控制電路單元404(或錯(cuò)誤檢查與校正電路512)會(huì)判斷第一已解碼數(shù)據(jù)串是否存有無法校正的錯(cuò)誤比特。
倘若第一已解碼數(shù)據(jù)串無存有無法校正的錯(cuò)誤比特時(shí),在步驟S1109中,存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)將第一已解碼數(shù)據(jù)串作為已校正數(shù)據(jù)串傳送給主機(jī)系統(tǒng)11以響應(yīng)此讀取指令。
倘若第一已解碼數(shù)據(jù)串存有無法校正的錯(cuò)誤比特時(shí),在步驟S1111中,存儲(chǔ)器控制電路單元404(或錯(cuò)誤檢查與校正電路512)會(huì)判斷是否執(zhí)行比特翻轉(zhuǎn)操作。例如,在一范例實(shí)施例中,存儲(chǔ)器控制電路單元404(或錯(cuò)誤檢查與校正電路512)會(huì)判斷第一已解碼數(shù)據(jù)串中無法校正的行數(shù)據(jù)段的數(shù)目與無法校正的列數(shù)據(jù)段的數(shù)目是否小于預(yù)先定義值。例如,此預(yù)先定義值會(huì)被設(shè)定為1。倘若第一已解碼數(shù)據(jù)串中無法校正的行數(shù)據(jù)段的數(shù)目或無法校正的列數(shù)據(jù)段的數(shù)目小于預(yù)先定義值時(shí),存儲(chǔ)器控制電路單元404(或錯(cuò)誤檢查與校正電路512)會(huì)決定執(zhí)行比特翻轉(zhuǎn)解碼操作。此外,存儲(chǔ)器控制電路單元404(或錯(cuò)誤檢查與校正電路512)也會(huì)判斷執(zhí)行比特翻轉(zhuǎn)操作的次數(shù)是否已經(jīng)達(dá)到比特翻轉(zhuǎn)次數(shù)門檻值,并且若執(zhí)行比特翻轉(zhuǎn)操作的次數(shù)已經(jīng)達(dá)到比特翻轉(zhuǎn)次數(shù)門檻值時(shí),則存儲(chǔ)器控制電路單元404(或錯(cuò)誤檢查與校正電路512)會(huì)決定不執(zhí)行比特翻轉(zhuǎn)解碼操作。
倘若決定不執(zhí)行比特翻轉(zhuǎn)解碼操作時(shí),在步驟S1113中存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)輸出指示無法順利讀取數(shù)據(jù)的錯(cuò)誤信息給主機(jī)系統(tǒng)11以響應(yīng)此讀取指令。必須了解是,在決定不執(zhí)行比特翻轉(zhuǎn)解碼操作時(shí)后就傳送錯(cuò)誤信息給主機(jī)系統(tǒng)11僅是一范例,在另一范例實(shí)施例中,存儲(chǔ)器控制電路單元404亦可在不執(zhí)行比特翻轉(zhuǎn)解碼操作之后,執(zhí)行其他輔助解碼機(jī)制來繼續(xù)解碼。例如,存儲(chǔ)器控制電路單元404也為多個(gè)錯(cuò)誤校正與檢查碼框產(chǎn)生外部錯(cuò)誤校正碼,并且當(dāng)一個(gè)錯(cuò)誤校正與檢查碼框的使用者數(shù)據(jù)無法被校正時(shí),存儲(chǔ)器控制電路單元404可讀取其他錯(cuò)誤校正與檢查碼框且使用外部錯(cuò)誤校正碼對(duì)此些錯(cuò)誤校正與檢查碼框執(zhí)行錯(cuò)誤校正操作,以嘗試校正無法被校正錯(cuò)誤校正與檢查碼框。
倘若決定執(zhí)行比特翻轉(zhuǎn)解碼操作時(shí),在步驟S1115中存儲(chǔ)器控制電路單元404(或錯(cuò)誤檢查與校正電路512)會(huì)搜索第一已解碼數(shù)據(jù)串的已解碼子數(shù)據(jù)單元之中的多個(gè)無法校正子數(shù)據(jù)單元,從無法校正子數(shù)據(jù)單元之中選擇目標(biāo)子數(shù)據(jù)單元,在第一已解碼數(shù)據(jù)串中調(diào)整所選擇的目標(biāo)子數(shù)據(jù)單元的至少一比特值以產(chǎn)生已調(diào)整使用者數(shù)據(jù)串,并且對(duì)該已調(diào)整使用者數(shù)據(jù)串重新執(zhí)行錯(cuò)誤校正解碼操作以產(chǎn)生第二已解碼數(shù)據(jù)串。在步驟S1115中搜索無法校正子數(shù)據(jù)單元、選擇目標(biāo)子數(shù)據(jù)單元以及調(diào)整目標(biāo)子數(shù)據(jù)單元的至少一比特值的方式已詳細(xì)描述如上,在此不再重復(fù)描述。
之后,在步驟S1117中,存儲(chǔ)器控制電路單元404(或錯(cuò)誤檢查與校正電路512)會(huì)判斷第 二已解碼數(shù)據(jù)串是否存有無法校正的錯(cuò)誤比特。倘若第二已解碼數(shù)據(jù)串無存有無法校正的錯(cuò)誤比特時(shí),在步驟S1119中,存儲(chǔ)器控制電路單元404(或存儲(chǔ)器管理電路502)會(huì)將第二已解碼數(shù)據(jù)串作為已校正數(shù)據(jù)串傳送給主機(jī)系統(tǒng)11以響應(yīng)此讀取指令。倘若第二已解碼數(shù)據(jù)串存有無法校正的錯(cuò)誤比特時(shí),步驟S1111會(huì)被執(zhí)行。
綜上所述,本發(fā)明范例實(shí)施例的數(shù)據(jù)讀取方法、存儲(chǔ)器控制電路單元及存儲(chǔ)器儲(chǔ)存裝置在所讀取的數(shù)據(jù)無法被校正時(shí),通過對(duì)可能集中出現(xiàn)過多錯(cuò)誤比特的子數(shù)據(jù)單元執(zhí)行比特翻轉(zhuǎn),以正確地讀取數(shù)據(jù)。基此,本發(fā)明范例實(shí)施例的數(shù)據(jù)讀取方法、存儲(chǔ)器控制電路單元及存儲(chǔ)器儲(chǔ)存裝置整夠有效提升錯(cuò)誤校正的效能,避免數(shù)據(jù)遺失。
最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。