本發(fā)明系關(guān)于一種數(shù)據(jù)儲存裝置,特別是關(guān)于可對同一芯片中的不同存儲器平面以不同的錯誤校正能力進(jìn)行存取的數(shù)據(jù)儲存裝置。
背景技術(shù):
快閃存儲器為一種可以被電抹除并且重新寫入的非易失性存儲器,并且主要是應(yīng)用在存儲卡、USB隨身盤、eMMC以及固態(tài)硬盤(Solid-State Disk)中,借以作為一般的儲存與電腦裝置和數(shù)字產(chǎn)品間的數(shù)據(jù)的轉(zhuǎn)運(yùn)。
快閃存儲器于生產(chǎn)過程中,會因?yàn)榉蹓m或是光罩問題,使得快閃存儲單元中的一整列(column)的數(shù)據(jù)都無法正確存取。傳統(tǒng)上,可以掃描的方式檢測出壞列的數(shù)量。但是,一旦無法存取的數(shù)據(jù)列數(shù)目太多,則會影響到錯誤檢查碼進(jìn)行修正的能力。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所提供的數(shù)據(jù)儲存裝置以及錯誤校正方法,可實(shí)施具有不同的錯誤比特更正能力的錯誤校正(Error Correction)在同一芯片的不同存儲器平面上。
本發(fā)明提供一種數(shù)據(jù)儲存裝置包括一快閃存儲器以及一控制器??扉W存儲器包括多個(gè)芯片(die),并且每一芯片包括一第一存儲器平面(plane)以及一第二存儲器平面(plane),其中第一存儲器平面以及第二存儲器平面分別包括多個(gè)頁面(page)??刂破鞅辉O(shè)置為用以根據(jù)一錯誤校正能力表,對第一存儲器平面以及第二存儲器平面中所儲存的數(shù)據(jù)進(jìn)行錯誤校正,其中錯誤校正能力表用以記錄第一存儲器平面的一第一錯誤比特校正能力值以及第二存儲器平面所相應(yīng)的一第二錯誤比特校正能力值。
在一實(shí)施例中,控制器更包括一隨機(jī)存取存儲器,并且控制器更用以將錯誤校正能力表載入隨機(jī)存取存儲器,以根據(jù)隨機(jī)存取存儲器中的錯誤校正能力 表,對第一存儲器平面以及第二存儲器平面中的頁面的數(shù)據(jù)進(jìn)行錯誤校正以及編碼。
在另一實(shí)施例中,控制器更包括一錯誤校正引擎,控制器更被設(shè)置為根據(jù)對第一存儲器平面進(jìn)行讀取的一第一讀取命令,傳送隨機(jī)存取存儲器所儲存的錯誤校正能力表中相應(yīng)于第一存儲器平面的第一錯誤比特校正能力值至錯誤校正引擎,使得錯誤校正引擎依照第一錯誤比特校正能力值對第一存儲器平面中的頁面的數(shù)據(jù)進(jìn)行錯誤校正,或者根據(jù)對第二存儲器平面進(jìn)行讀取的一第二讀取命令,傳送隨機(jī)存取存儲器所儲存的錯誤校正能力表中相應(yīng)于第二存儲器平面的第二錯誤比特校正能力值至錯誤校正引擎,使得錯誤校正引擎依照第二錯誤比特校正能力值對第二存儲器平面中的頁面的數(shù)據(jù)進(jìn)行錯誤校正。
又另一實(shí)施例中,控制器更包括一第一錯誤校正引擎以及一第二錯誤校正引擎,其中第一錯誤校正引擎是以第一錯誤比特校正能力值對數(shù)據(jù)進(jìn)行編碼以及錯誤校正,并且第二錯誤校正引擎是以第二錯誤比特校正能力值對數(shù)據(jù)進(jìn)行編碼以及錯誤校正??刂破鞲辉O(shè)置為用以根據(jù)錯誤校正能力表,將第一存儲器平面的頁面的數(shù)據(jù)分配給第一錯誤校正引擎進(jìn)行編碼以及錯誤校正,并且將第二存儲器平面的頁面的數(shù)據(jù)分配給第二錯誤校正引擎進(jìn)行編碼以及錯誤校正。
另外,第一存儲器平面以及第二存儲器平面中的每一頁面分別包括多個(gè)數(shù)據(jù)塊(chunk),每一數(shù)據(jù)塊包括一數(shù)據(jù)段以及一校驗(yàn)碼(parity),其中第一存儲器平面中的校驗(yàn)碼具有一第一長度,第二存儲器平面中的校驗(yàn)碼具有一第二長度,并且第一長度不同于第二長度。
本發(fā)明亦提供一種錯誤校正方法,適用于一數(shù)據(jù)儲存裝置,其中數(shù)據(jù)儲存裝置包括一快閃存儲器,快閃存儲器包括多個(gè)芯片(die),并且每一芯片包括一第一存儲器平面(plane)以及一第二存儲器平面(plane),其中每一第一存儲器平面以及第二存儲器平面分別包括多個(gè)頁面(page)。數(shù)據(jù)存取方法包括:根據(jù)一第一錯誤比特校正能力值,對第一存儲器平面的頁面的數(shù)據(jù)進(jìn)行錯誤校正;以及根據(jù)一第二錯誤比特校正能力值,對第二存儲器平面的頁面的數(shù)據(jù)進(jìn)行錯誤校正。
在一實(shí)施例中,錯誤校正方法更包括:將一錯誤校正能力表,載入一隨機(jī) 處理存儲器;根據(jù)用以對第一存儲器平面進(jìn)行讀取的一第一讀取命令,傳送隨機(jī)存取存儲器所儲存的錯誤校正能力表中相應(yīng)于第一存儲器平面的第一錯誤比特校正能力值至一錯誤校正引擎;以及根據(jù)用以對第二存儲器平面進(jìn)行讀取的一第二讀取命令,傳送隨機(jī)存取存儲器中的錯誤校正能力表中相應(yīng)于第二存儲器平面的第二錯誤比特校正能力值至錯誤校正引擎,其中錯誤校正引擎是用以對第一存儲器平面以及第二存儲器平面中的頁面的數(shù)據(jù)進(jìn)行錯誤校正。
在另一實(shí)施例中,錯誤校正方法更包括:將一錯誤校正能力表,載入一隨機(jī)處理存儲器,其中錯誤校正能力表用以記錄第一存儲器平面的第一錯誤比特校正能力值以及第二存儲器平面所相應(yīng)的第二錯誤比特校正能力值;根據(jù)對第一存儲器平面進(jìn)行讀取的一第一讀取命令以及錯誤校正能力表,將第一存儲器平面的頁面的數(shù)據(jù)分配給一第一錯誤校正引擎進(jìn)行編碼以及錯誤校正;以及根據(jù)對第二存儲器平面進(jìn)行讀取的一第二讀取命令以及錯誤校正能力表,將第二存儲器平面的頁面的數(shù)據(jù)分配給一第二錯誤校正引擎進(jìn)行編碼以及錯誤校正。
另外,第一存儲器平面以及第二存儲器平面中的每一頁面分別包括多個(gè)數(shù)據(jù)塊(chunk),每一數(shù)據(jù)塊包括一數(shù)據(jù)段以及一校驗(yàn)碼(parity),其中錯誤校正方法更包括:根據(jù)第一存儲器平面中的數(shù)據(jù)塊中的校驗(yàn)碼,對第一存儲器平面中的數(shù)據(jù)塊中的數(shù)據(jù)段進(jìn)行錯誤校正;以及根據(jù)第二存儲器平面中的數(shù)據(jù)塊中的校驗(yàn)碼,對第二存儲器平面中的數(shù)據(jù)塊中的數(shù)據(jù)段進(jìn)行錯誤校正,其中第一存儲器平面中的校驗(yàn)碼具有一第一長度,第二存儲器平面中的校驗(yàn)碼具有一第二長度,并且第一長度不同于第二長度。
又另一實(shí)施例中,錯誤校正方法更包括根據(jù)第一存儲器平面以及第二存儲器平面中的壞列(bad column),定義第一存儲器平面所相應(yīng)的第一錯誤校正能力以及第二存儲器平面所相應(yīng)的第二錯誤校正能力。
附圖說明
圖1為本發(fā)明所提供的一電子系統(tǒng)的一種實(shí)施例的方塊圖。
圖2為本發(fā)明所提供的芯片的一種實(shí)施例的示意圖。
圖3為本發(fā)明所提供的頁面的一種實(shí)施例的示意圖。
圖4為本發(fā)明所提供的頁面的另一種實(shí)施例的示意圖。
圖5為本發(fā)明所提供的一錯誤校正方法的一種實(shí)施例的流程圖。
圖6為本發(fā)明所提供的一錯誤校正方法的另一種實(shí)施例的流程圖。
附圖標(biāo)記說明:
100 電子系統(tǒng);
120 主機(jī);
140 數(shù)據(jù)儲存裝置;
160 控制器;
162 運(yùn)算單元;
164 永久存儲器;
166 隨機(jī)存取存儲器;
180 快閃存儲器;
182 錯誤校正能力表;
D0~DN 芯片;
BU 緩沖器;
PL0、PL1 存儲器平面;
S500~S512、S600~S612 步驟。
具體實(shí)施方式
以下將詳細(xì)討論本發(fā)明各種實(shí)施例的裝置及使用方法。然而值得注意的是,本發(fā)明所提供的許多可行的發(fā)明概念可實(shí)施在各種特定范圍中。這些特定實(shí)施例僅用于舉例說明本發(fā)明的裝置及使用方法,但非用于限定本發(fā)明的范圍。
圖1為本發(fā)明所提供的一電子系統(tǒng)的一種實(shí)施例的方塊圖。電子系統(tǒng)100包括一主機(jī)120以及一數(shù)據(jù)儲存裝置140。數(shù)據(jù)儲存裝置140包括一快閃存儲器180以及一控制器160,且可根據(jù)主機(jī)110所下達(dá)的命令操作??刂破?60包括一運(yùn)算單元162、一永久存儲器(如,只讀存儲器ROM)164以及隨機(jī)存取存儲器(RAM)166。永久存儲器164與所載的程序碼、數(shù)據(jù)組成固件(firmware),由運(yùn)算單元162執(zhí)行,使控制器160基于該固件控制該快閃存儲器180。隨機(jī)存取存儲器(RAM)166用以載入程序碼與參數(shù)以提供控制器160根據(jù)所載入的 程序碼與參數(shù)動作??扉W存儲器180包括多個(gè)芯片(die)D0~DN,如圖2所示。每一芯片D0~DN包括一緩沖器BU、一第一存儲器平面(plane)PL0以及一第二存儲器平面(plane)PL1。每一第一存儲器平面PL0以及第二存儲器平面PL1分別包括多個(gè)頁面(page)P0~PN。值得注意的是,在本實(shí)施例中,每一芯片D0~DN包括一緩沖器BU,用以緩沖第一存儲器平面PL0以及第二存儲器平面PL1的數(shù)據(jù),但本發(fā)明不限于此。在其他實(shí)施例中,每一芯片D0~DN可包括兩個(gè)緩沖器,分別用以緩沖第一存儲器平面PL0以及第二存儲器平面PL1的數(shù)據(jù)。
快閃存儲器于生產(chǎn)過程中,會因?yàn)榉蹓m或是光罩問題,使得快閃存儲單元中的一整列(column)的數(shù)據(jù)都無法正確存取,損毀的列稱為壞列(bad column)。然而,在同一芯片中的存儲器平面所具有壞列的數(shù)量可能彼此不同。壞列的數(shù)量越多,存儲器平面中的頁面里可利用的存儲器空間則越少,其中存儲器空間的大小影響到錯誤比特校正能力。詳細(xì)而言,具有越高的錯誤比特校正能力的錯誤校正(Error Correction)的編碼,會產(chǎn)生長度越長的校驗(yàn)碼(Parity)。
圖3為本發(fā)明所提供的頁面的一種實(shí)施例的示意圖。在本實(shí)施例中,第一存儲器平面PL0的每一頁面中,分別具有1000字節(jié)(Byte)無法使用的壞列,第二存儲器平面PL1每一頁面中,分別具有900字節(jié)(Byte)無法使用的壞列。值得注意的是,圖3示意性的將壞列顯示于頁面P0尾端,但實(shí)際上壞列是隨機(jī)散落于頁面中。在本實(shí)施例中,產(chǎn)品設(shè)計(jì)者將同一芯片中具有不同壞列數(shù)量的第一存儲器平面PL0以及第二存儲器平面PL1的錯誤比特校正能力,皆定義為同一錯誤比特校正能力值。舉例而言,在本實(shí)施例中,第一存儲器平面PL0以及第二存儲器平面PL1的錯誤比特校正能力值皆為59比特(Bit),59比特的錯誤比特校正能力值需要長度為104字節(jié)的校驗(yàn)碼。以第一存儲器平面PL0以及第二存儲器平面PL1的頁面P0為例,頁面P0分別具有7個(gè)數(shù)據(jù)塊(Chunk)C0~C6以及一元數(shù)據(jù)段(Meta data)MD。每一數(shù)據(jù)塊C0~C6分別具有一數(shù)據(jù)段以及一校驗(yàn)碼段(parity)。數(shù)據(jù)段的長度為1024字節(jié)。校驗(yàn)碼的長度為104字節(jié)。元數(shù)據(jù)段MD的長度為32字節(jié)。如圖3所示,具有較少壞列的第二存儲器平面PL1由于配合具有較多壞列的第一存儲器平面PL0,會損失可使用的100字節(jié),造成資源的浪費(fèi)。值得注意的是,壞列的數(shù)量、元數(shù)據(jù)段MD的長度、數(shù)據(jù)段的長度、以及錯誤比特校正能力值皆為本發(fā)明的一種實(shí)施例,但本發(fā)明不限于 此。每一個(gè)不同的存儲器平面皆可能由于不同的生產(chǎn)環(huán)境具有不同數(shù)量的壞列。頁面中數(shù)據(jù)塊的數(shù)量、錯誤比特校正能力值以及數(shù)據(jù)段的長度皆可由產(chǎn)品開發(fā)者自行決定,其中元數(shù)據(jù)段MD的長度則是由所決定的錯誤比特校正能力值以及錯誤校驗(yàn)的種類而決定的。
圖4為本發(fā)明所提供的頁面的另一種實(shí)施例的示意圖。在本實(shí)施例中,第一存儲器平面PL0的每一頁面中,分別具有1000字節(jié)(Byte)無法使用的壞列,第二存儲器平面PL1每一頁面中,分別具有900字節(jié)(Byte)無法使用的壞列。值得注意的是,圖4示意性的將壞列顯示于頁面P0尾端,但實(shí)際上壞列是隨機(jī)散落于頁面中。在本實(shí)施例中,相應(yīng)于不同的壞列數(shù)量,第一存儲器平面PL0以及第二存儲器平面PL1具有不同的錯誤比特校正能力值。第一存儲器平面PL0具有一第一錯誤比特校正能力值并且第二存儲器平面PL1具有一第二錯誤比特校正能力值。另外,由于第一存儲器平面PL0以及第二存儲器平面PL1具有不同的錯誤比特校正能力值,因此第一存儲器平面PL0以及第二存儲器平面PL1中的校驗(yàn)碼具有不同的長度。換言之,第一存儲器平面PL0中的校驗(yàn)碼具有一第一長度,第二存儲器平面PL1中的校驗(yàn)碼具有一第二長度,并且第一長度不同于第二長度。舉例而言,在本實(shí)施例中,第一存儲器平面PL0的錯誤比特校正能力值為59比特,第二存儲器平面PL1的錯誤比特校正能力值為67比特(Bit),但本發(fā)明不限于此。59比特的錯誤比特校正能力值需要長度為104字節(jié)的校驗(yàn)碼。67比特的錯誤比特校正能力值需要長度為118字節(jié)的校驗(yàn)碼。以第一存儲器平面PL0以及第二存儲器平面PL1的頁面P0為例,頁面P0分別具有7個(gè)數(shù)據(jù)塊(Chunk)C0~C6以及一元數(shù)據(jù)段(Meta data)MD。每一數(shù)據(jù)塊C0~C6分別具有一數(shù)據(jù)段以及一校驗(yàn)碼段(parity)。在第一存儲器平面PL0中,數(shù)據(jù)段的長度為1024字節(jié)、校驗(yàn)碼的長度為104字節(jié)以及元數(shù)據(jù)段MD的長度為32字節(jié)。在第二存儲器平面PL1中,數(shù)據(jù)段的長度為1024字節(jié)、校驗(yàn)碼的長度為118字節(jié)以及元數(shù)據(jù)段MD的長度為32字節(jié)。如圖4所示,具有較少壞列的第二存儲器平面PL1具有較多的空間可以儲存具有較高錯誤比特校正能力的校驗(yàn)碼。相較于圖3的實(shí)施例,本實(shí)施例可較有效的利用存儲器空間。值得注意的是,壞列的數(shù)量、元數(shù)據(jù)段MD的長度、數(shù)據(jù)段的長度、以及錯誤比特校正能力值皆為本發(fā)明的一種實(shí)施例,但本發(fā)明不限于此。每一個(gè)不同的存儲器 平面皆可能由于不同的生產(chǎn)環(huán)境具有不同數(shù)量的壞列。頁面中數(shù)據(jù)塊的數(shù)量、錯誤比特校正能力值以及數(shù)據(jù)段的長度皆可由產(chǎn)品開發(fā)者自行決定,其中元數(shù)據(jù)段MD的長度則是由所決定的錯誤比特校正能力值以及錯誤校驗(yàn)的種類決定。
在圖4的實(shí)施例中,快閃存儲器180更包括一錯誤校正能力表182,其中錯誤校正能力表182用以記錄第一存儲器平面PL0的第一錯誤比特校正能力值以及第二存儲器平面PL1所相應(yīng)的第二錯誤比特校正能力值。在數(shù)據(jù)儲存裝置140上電后,控制器160被設(shè)置為將錯誤校正能力表182載入隨機(jī)存取存儲器166,以根據(jù)隨機(jī)存取存儲器166中的錯誤校正能力表182,對第一存儲器平面PL0以及第二存儲器平面PL1中的頁面進(jìn)行編碼以及錯誤校正。換言之,在讀取數(shù)據(jù)時(shí),控制器160被設(shè)置為用以根據(jù)錯誤校正能力表182,對第一存儲器平面PL0以及第二存儲器平面PL1中所儲存的數(shù)據(jù)進(jìn)行錯誤校正。在寫入數(shù)據(jù)時(shí),控制器160被設(shè)置為用以根據(jù)錯誤校正能力表182,對將寫入第一存儲器平面PL0以及第二存儲器平面PL1中的數(shù)據(jù)進(jìn)行編碼,以分別獲得具有不同長度的校驗(yàn)碼,并且在獲得校驗(yàn)碼后,將數(shù)據(jù)與校驗(yàn)碼寫入第一存儲器平面PL0以及第二存儲器平面PL1中。
在一實(shí)施例中,控制器160具有一錯誤校正引擎(未圖示)。在本實(shí)施例中,該一個(gè)錯誤校正引擎用以分別進(jìn)行具有不同錯誤比特校正能力的錯誤校正。舉例而言,當(dāng)控制器160接收到一讀取命令時(shí),控制器160可根據(jù)讀取命令的地址判斷讀取命令是用以對第一存儲器平面PL0進(jìn)行讀取的一第一讀取命令或者用以對第二存儲器平面PL1進(jìn)行讀取的一第二讀取命令。當(dāng)讀取命令為用以對第一存儲器平面PL0進(jìn)行讀取的第一讀取命令時(shí),控制器160被設(shè)置為根據(jù)對第一存儲器平面PL0進(jìn)行讀取的第一讀取命令,傳送隨機(jī)存取存儲器166所儲存的錯誤校正能力表182中相應(yīng)于第一存儲器平面PL0的第一錯誤比特校正能力值至錯誤校正引擎,使得錯誤校正引擎可依照第一錯誤比特校正能力值對第一存儲器平面PL0中的頁面的數(shù)據(jù)進(jìn)行錯誤校正。當(dāng)讀取命令為用以對第二存儲器平面PL1進(jìn)行讀取的第二讀取命令時(shí),控制器160被設(shè)置為根據(jù)對第二存儲器平面PL1進(jìn)行讀取的第二讀取命令,傳送隨機(jī)存取存儲器166中所儲存的錯誤校正能力表182中相應(yīng)于第二存儲器平面PL1的第二錯誤比特校正能力值 至錯誤校正引擎,使得錯誤校正引擎依照第二錯誤比特校正能力值對第二存儲器平面PL1中的頁面的數(shù)據(jù)進(jìn)行錯誤校正。同理,當(dāng)控制器160接收到一寫入命令時(shí),控制器160可根據(jù)數(shù)據(jù)寫入的地址判斷數(shù)據(jù)是預(yù)計(jì)被寫入第一存儲器平面PL0或者第二存儲器平面PL1。當(dāng)數(shù)據(jù)是預(yù)計(jì)被寫入第一存儲器平面PL0時(shí),控制器160被設(shè)置為傳送隨機(jī)存取存儲器166中的錯誤校正能力表182中相應(yīng)于第一存儲器平面PL0的第一錯誤比特校正能力值至錯誤校正引擎,使得錯誤校正引擎可依照第一錯誤比特校正能力值對預(yù)計(jì)寫入的數(shù)據(jù)進(jìn)行編碼,并獲得符合第一錯誤比特校正能力值的校驗(yàn)碼,以將數(shù)據(jù)以及校驗(yàn)碼儲存至第一存儲器平面PL0。當(dāng)數(shù)據(jù)是預(yù)計(jì)被寫入第二存儲器平面PL1時(shí),控制器160被設(shè)置為傳送隨機(jī)存取存儲器166中所儲存的錯誤校正能力表182中相應(yīng)于第二存儲器平面PL1的第二錯誤比特校正能力值至錯誤校正引擎,使得錯誤校正引擎依照第二錯誤比特校正能力值對預(yù)計(jì)寫入的數(shù)據(jù)進(jìn)行編碼,并獲得符合第二錯誤比特校正能力值的校驗(yàn)碼,以將數(shù)據(jù)以及校驗(yàn)碼儲存至第二存儲器平面PL1。
在另一實(shí)施例中,控制器160更包括一第一錯誤校正引擎(未圖示)以及一第二錯誤校正引擎(未圖示),其中第一錯誤校正引擎具有第一錯誤比特校正能力值,并且第二錯誤校正引擎具有第二錯誤比特校正能力值。換言之,第一錯誤校正引擎是用以對第一存儲器平面PL0的數(shù)據(jù)進(jìn)行編碼以及錯誤校正,而第二錯誤校正引擎是用以對第二存儲器平面PL1的數(shù)據(jù)進(jìn)行編碼以及錯誤校正。在本實(shí)施例中,控制器160更被設(shè)置為用以根據(jù)錯誤校正能力表182,將第一存儲器平面PL0的頁面的數(shù)據(jù)分配給第一錯誤校正引擎進(jìn)行編碼以及錯誤校正,并且將第二存儲器平面PL1的頁面的數(shù)據(jù)分配給第二錯誤校正引擎進(jìn)行編碼以及錯誤校正。舉例而言,當(dāng)控制器160接收到一讀取命令時(shí),控制器160可根據(jù)讀取命令的地址判斷讀取命令為對第一存儲器平面PL0進(jìn)行讀取的一第一讀取命令或者對第二存儲器平面PL1進(jìn)行讀取的一第二讀取命令。當(dāng)讀取命令為用以對第一存儲器平面PL0進(jìn)行讀取的第一讀取命令時(shí),控制器160被設(shè)置為根據(jù)對第一存儲器平面PL0進(jìn)行讀取的第一讀取命令,將所讀取的第一存儲器平面PL0的頁面的數(shù)據(jù)分配給第一錯誤校正引擎進(jìn)行錯誤校正(解碼)。當(dāng)讀取命令為用以對第二存儲器平面PL1進(jìn)行讀取的第二讀取命令時(shí),控制器 160被設(shè)置為根據(jù)對第二存儲器平面PL1進(jìn)行讀取的第二讀取命令,將所讀取的第二存儲器平面PL1的頁面的數(shù)據(jù)分配給第二錯誤校正引擎進(jìn)行錯誤校正(解碼)。同理,當(dāng)控制器160接收到一寫入命令時(shí),控制器160可根據(jù)數(shù)據(jù)寫入的地址判斷數(shù)據(jù)是預(yù)計(jì)被寫入第一存儲器平面PL0或者第二存儲器平面PL1。當(dāng)數(shù)據(jù)是預(yù)計(jì)被寫入第一存儲器平面PL0時(shí),控制器160被設(shè)置為將預(yù)計(jì)寫入第一存儲器平面PL0的數(shù)據(jù)傳送至第一錯誤校正引擎,使得第一錯誤校正引擎可依照第一錯誤比特校正能力值對預(yù)計(jì)寫入的數(shù)據(jù)進(jìn)行編碼,并獲得符合第一錯誤比特校正能力值的校驗(yàn)碼,以將數(shù)據(jù)以及校驗(yàn)碼儲存至第一存儲器平面PL0。當(dāng)數(shù)據(jù)是預(yù)計(jì)被寫入第二存儲器平面PL1時(shí),控制器160被設(shè)置為將預(yù)計(jì)寫入第二存儲器平面PL1的數(shù)據(jù)傳送至第二錯誤比特校正引擎,使得第二錯誤校正引擎依照第二錯誤比特校正能力值對預(yù)計(jì)寫入的數(shù)據(jù)進(jìn)行編碼,并獲得符合第二錯誤比特校正能力值的校驗(yàn)碼,以將數(shù)據(jù)以及校驗(yàn)碼儲存至第二存儲器平面PL1。
圖5為本發(fā)明所提供的一錯誤校正方法的一種實(shí)施例的流程圖。錯誤校正方法適用于圖1所示的電子系統(tǒng)100。流程開始于步驟S500。在步驟S500開始之前,產(chǎn)品設(shè)計(jì)者可根據(jù)第一存儲器平面PL0以及第二存儲器平面PL1中的壞列(bad column)的數(shù)量,定義第一存儲器平面PL0所相應(yīng)的第一錯誤校正能力以及相應(yīng)于第二存儲器平面PL1所相應(yīng)的第二錯誤校正能力。另外,在本實(shí)施例中,控制器160具有一錯誤校正引擎(未圖示),并且該一個(gè)錯誤校正引擎用以分別進(jìn)行具有不同錯誤比特校正能力的錯誤校正。
在步驟S500中,在數(shù)據(jù)儲存裝置140上電后,控制器160被設(shè)置為將錯誤校正能力表182載入隨機(jī)存取存儲器166中,其中錯誤校正能力表182用以記錄第一存儲器平面PL0的第一錯誤比特校正能力值以及第二存儲器平面PL1所相應(yīng)的第二錯誤比特校正能力值。
接著,在步驟S502中,控制器160判斷數(shù)據(jù)儲存裝置140是否自主機(jī)120接收到一讀取命令。當(dāng)數(shù)據(jù)儲存裝置140自主機(jī)120接收到讀取命令時(shí),流程進(jìn)行至步驟S504;否則,控制器160繼續(xù)判斷數(shù)據(jù)儲存裝置140是否自主機(jī)120接收到一讀取命令。
在步驟S504中,控制器160可根據(jù)讀取命令的地址判斷讀取命令為對第 一存儲器平面PL0進(jìn)行讀取的一第一讀取命令或者對第二存儲器平面PL1進(jìn)行讀取的一第二讀取命令。當(dāng)讀取命令為第一讀取命令時(shí),流程進(jìn)行至步驟S506。當(dāng)讀取命令為第二讀取命令時(shí),流程進(jìn)行至步驟S510。
在步驟S506中,控制器160被設(shè)置為傳送隨機(jī)存取存儲器166中所儲存的錯誤校正能力表182中相應(yīng)于第一存儲器平面PL0的第一錯誤比特校正能力值至錯誤校正引擎。
接著,在步驟S508中,錯誤校正引擎依照第一錯誤比特校正能力值對第一存儲器平面PL0中的頁面的數(shù)據(jù)進(jìn)行錯誤校正,其中錯誤校正引擎是根據(jù)第一存儲器平面PL0中的數(shù)據(jù)塊中的校驗(yàn)碼,對第一存儲器平面PL0中的數(shù)據(jù)塊中的數(shù)據(jù)段進(jìn)行錯誤校正。流程結(jié)束于步驟S508。
在步驟S510中,控制器160被設(shè)置為傳送隨機(jī)存取存儲器166中所儲存的錯誤校正能力表182中相應(yīng)于第二存儲器平面PL1的第二錯誤比特校正能力值至錯誤校正引擎。
接著,在步驟S512中,錯誤校正引擎依照第二錯誤比特校正能力值對第二存儲器平面PL1中的頁面的數(shù)據(jù)進(jìn)行錯誤校正,其中錯誤校正引擎是根據(jù)第二存儲器平面PL1中的數(shù)據(jù)塊中的校驗(yàn)碼,對第二存儲器平面PL1中的數(shù)據(jù)塊中的數(shù)據(jù)段進(jìn)行錯誤校正。值得注意的是,第二存儲器平面PL1的校驗(yàn)碼與第一存儲器平面PL0的校驗(yàn)碼的長度不同。流程結(jié)束于步驟S512。
圖6為本發(fā)明所提供的一錯誤校正方法的另一種實(shí)施例的流程圖。錯誤校正方法適用于圖1所示的電子系統(tǒng)100。流程開始于步驟S600。在步驟S600開始之前,產(chǎn)品設(shè)計(jì)者可根據(jù)第一存儲器平面PL0以及第二存儲器平面PL1中的壞列(bad column)的數(shù)量,定義第一存儲器平面PL0所相應(yīng)的第一錯誤校正能力以及相應(yīng)于第二存儲器平面PL1所相應(yīng)的第二錯誤校正能力。在本實(shí)施例中,控制器160包括一第一錯誤校正引擎(未圖示)以及一第二錯誤校正引擎(未圖示),其中第一錯誤校正引擎是以第一錯誤比特校正能力值對數(shù)據(jù)進(jìn)行編碼以及錯誤校正,并且第二錯誤校正引擎是以第二錯誤比特校正能力值對數(shù)據(jù)進(jìn)行編碼以及錯誤校正。值得注意的是,步驟S600~S604相似于圖5的步驟S500~S504,步驟S600~S604的詳細(xì)說明請參考圖5的說明,在此不在贅述。
在步驟S606中,控制器160讀取在隨機(jī)存取存儲器166中所儲存的錯誤 校正能力表182中相應(yīng)于第一存儲器平面PL0的第一錯誤比特校正能力值。
接著,在步驟S608中,控制器160根據(jù)第一錯誤比特校正能力值,將第一存儲器平面PL0的頁面的數(shù)據(jù)分配給第一錯誤校正引擎,使得第一錯誤校正引擎依照第一錯誤比特校正能力值對第一存儲器平面PL0中的頁面的數(shù)據(jù)進(jìn)行解碼,其中錯誤校正引擎是根據(jù)第一存儲器平面PL0中的數(shù)據(jù)塊中的校錯誤校正,對第一存儲器平面PL0中的數(shù)據(jù)塊中的數(shù)據(jù)段進(jìn)行錯誤校正。流程結(jié)束于步驟S608。
在步驟S610中,控制器160讀取在隨機(jī)存取存儲器166中所儲存的錯誤校正能力表182中相應(yīng)于第二存儲器平面PL0的第二錯誤比特校正能力值。
接著,在步驟S612中,控制器160根據(jù)第二錯誤比特校正能力值,將第二存儲器平面PL1的頁面的數(shù)據(jù)分配給第二錯誤校正引擎,使得第二錯誤校正引擎依照第二錯誤比特校正能力值對第二存儲器平面PL0中的頁面的數(shù)據(jù)進(jìn)行解碼,其中錯誤校正引擎是根據(jù)第二存儲器平面PL1中的數(shù)據(jù)塊中的校驗(yàn)碼,對第二存儲器平面PL1中的數(shù)據(jù)塊中的數(shù)據(jù)段進(jìn)行錯誤校正。流程結(jié)束于步驟S612。
本發(fā)明所提供的數(shù)據(jù)儲存裝置140以及錯誤校正方法,可實(shí)施具有不同的錯誤比特更正能力的錯誤校正(Error Correction)在同一芯片的不同存儲器平面上。
本發(fā)明的方法,或特定型態(tài)或其部分,可以以程序碼的型態(tài)存在。程序碼可儲存于實(shí)體媒體,如軟盤、光盤片、硬盤、或是任何其他機(jī)器可讀取(如電腦可讀取)儲存媒體,亦或不限于外在形式的電腦程序產(chǎn)品,其中,當(dāng)程序碼被機(jī)器,如電腦載入且執(zhí)行時(shí),此機(jī)器變成用以參與本發(fā)明的裝置。程序碼也可通過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態(tài)進(jìn)行傳送,其中,當(dāng)程序碼被機(jī)器,如電腦接收、載入且執(zhí)行時(shí),此機(jī)器變成用以參與本發(fā)明的裝置。當(dāng)在一般用途處理單元實(shí)作時(shí),程序碼結(jié)合處理單元提供一操作類似于應(yīng)用特定邏輯電路的獨(dú)特裝置。
惟以上所述者,僅為本發(fā)明的較佳實(shí)施例而已,當(dāng)不能以此限定本發(fā)明實(shí)施的范圍,即大凡依本發(fā)明權(quán)利要求及發(fā)明說明內(nèi)容所作的簡單的等效變化與修飾,皆仍屬本發(fā)明專利涵蓋的范圍內(nèi)。另外本發(fā)明的任一實(shí)施例或權(quán)利要求 不須達(dá)成本發(fā)明所揭露的全部目的或優(yōu)點(diǎn)或特點(diǎn)。此外,摘要部分和標(biāo)題僅是用來輔助專利文件搜尋之用,并非用來限制本發(fā)明的權(quán)利范圍。