本發(fā)明涉及一種數(shù)據(jù)校正方法,尤其涉及一種用于可復(fù)寫式非易失性內(nèi)存模塊的數(shù)據(jù)校正方法、內(nèi)存控制電路單元與內(nèi)存儲存裝置。
背景技術(shù):
數(shù)碼相機、移動電話與mp3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由于可復(fù)寫式非易失性內(nèi)存模塊(例如,閃存)具有數(shù)據(jù)非易失性、省電、體積小,以及無機械結(jié)構(gòu)等特性,所以非常適合內(nèi)建于上述所舉例的各種可攜式多媒體裝置中。
一般來說,當(dāng)欲將用戶數(shù)據(jù)寫入至可復(fù)寫式非易失性內(nèi)存模塊的一個實體程序化單元時,內(nèi)存控制電路單元會產(chǎn)生對應(yīng)此用戶數(shù)據(jù)的錯誤校正碼并且將用戶數(shù)據(jù)與對應(yīng)的錯誤校正碼一并被寫入至同一個程序化單元中。然而,當(dāng)讀取實體程序化單元中的用戶數(shù)據(jù)時,可能會因為錯誤位過多(例如,錯誤位數(shù)超過錯誤檢查與校正電路可校正的錯誤位數(shù)),而造成所讀取的數(shù)據(jù)無法被正確校正。因此,如何能夠在用戶數(shù)據(jù)無法依據(jù)實體程序化單元中的錯誤校正碼來正確校正時,還能將正確數(shù)據(jù)傳送給主機系統(tǒng),為此領(lǐng)域技術(shù)人員所致力的目標(biāo)。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種數(shù)據(jù)校正方法、內(nèi)存控制電路單元與內(nèi)存儲存裝置,其夠在緩沖存儲器的空間有限時,在數(shù)據(jù)校正時,使用多實體程序化單元的群組同位碼來正確地校正無法依據(jù)單實體程序化單元的同位碼校正的數(shù)據(jù)。
本發(fā)明的一范例實施例提出一種用于可復(fù)寫式非易失性內(nèi)存模塊的數(shù)據(jù)校正方法,此可復(fù)寫式非易失性內(nèi)存模塊包括多個實體程序化單元,并且此些實體程序化單元被分組為多個編碼群組。本數(shù)據(jù)校正方法包括:從此些實體程序化單元之中的第一實體程序化單元中讀取第一用戶數(shù)據(jù)與對應(yīng)此第一 用戶數(shù)據(jù)的第一同位碼至緩沖存儲器,其中此第一實體程序化單元屬于該些編碼群組之中的第一編碼群組。本數(shù)據(jù)校正方法還包括:倘若第一校正電路無法依據(jù)所讀取的第一同位碼來校正從第一實體程序化單元中所讀取的第一用戶數(shù)據(jù)時,從此些實體程序化單元之中的至少另一實體程序化單元中讀取至少一第一群組同位碼至緩沖存儲器以將第一群組同位碼傳送至第二校正電路,并且分批從屬于第一編碼群組的實體程序化單元中讀取用戶數(shù)據(jù)至緩沖存儲器以將所讀取的用戶數(shù)據(jù)之中的多個已校正用戶數(shù)據(jù)傳送至第二校正電路,其中第一群組同位碼是藉由編碼儲存在該第一編碼群組的實體程序化單元中的多個用戶數(shù)據(jù)所產(chǎn)生。本方法還包括,藉由第二校正電路分批譯碼所接收的已校正用戶數(shù)據(jù)與第一群組同位碼以獲取對應(yīng)第一用戶數(shù)據(jù)的已校正第一用戶數(shù)據(jù),并且輸出對應(yīng)第一用戶數(shù)據(jù)的已校正第一用戶數(shù)據(jù)。
在本發(fā)明的一范例實施例中,上述藉由第二校正電路分批譯碼所接收的已校正用戶數(shù)據(jù)與第一群組同位碼以獲取對應(yīng)第一用戶數(shù)據(jù)的已校正第一用戶數(shù)據(jù)的步驟包括:藉由第二校正電路分批譯碼所接收的已校正用戶數(shù)據(jù)與第一群組同位碼以獲得待使用數(shù)據(jù);以及藉由第二校正電路利用此待使用數(shù)據(jù)及第一用戶數(shù)據(jù)及第一群組同位碼獲得對應(yīng)第一用戶數(shù)據(jù)的已校正第一用戶數(shù)據(jù)。
在本發(fā)明的一范例實施例中,上述的數(shù)據(jù)校正方法還包括:在緩沖存儲器中配置一第一暫存區(qū)以暫存上述第一群組同位碼;在緩沖存儲器中配置一第二暫存區(qū)以暫存分批從屬于第一編碼群組的實體程序化單元中讀取的用戶數(shù)據(jù);以及在緩沖存儲器中配置第三暫存區(qū)以暫存對應(yīng)該第一用戶數(shù)據(jù)的該已校正第一用戶數(shù)據(jù)。在此,第二暫存區(qū)的大小小于儲存在屬于第一編碼群組的所有實體程序化單元的大小。
在本發(fā)明的一范例實施例中,屬于該第一編碼群組的實體程序化單元的個數(shù)為n,該至少一第一群組同位碼的個數(shù)為m,該第一暫存區(qū)的大小為m個實體程序化單元的可儲存容量,該第二暫存區(qū)的大小為t個實體程序化單元的可儲存容量,并且該第三暫存區(qū)的大小為x個實體程序化單元的可儲存容量,其中x為第二校正電路的最大可校正數(shù)據(jù)數(shù)并且n大于x與t的總和。
在本發(fā)明的一范例實施例中,其中t為1。
在本發(fā)明的一范例實施例中,上述從至少另一實體程序化單元中讀取第一群組同位碼至緩沖存儲器以將第一群組同位碼傳送至第二校正電路,并且分批從屬于第一編碼群組的實體程序化單元中讀取用戶數(shù)據(jù)至緩沖存儲器以將所讀取的用戶數(shù)據(jù)之中的已校正用戶數(shù)據(jù)傳送至第二校正電路的步驟包括:(a)從至少另一實體程序化單元中讀取第一群組同位碼至緩沖存儲器;(b)傳送一譯碼初始化指令至第二校正電路;(c)從該緩沖存儲器中傳送第一群組同位碼至第二校正電路;(d)依序從第一編碼群組的實體程序化單元中選取一個實體程序化單元,并且從所選擇的實體程序化單元中讀取對應(yīng)用戶數(shù)據(jù)與對應(yīng)同位碼;(e)倘若所讀取的對應(yīng)用戶數(shù)據(jù)可依據(jù)所讀取的對應(yīng)同位碼被校正而產(chǎn)生一已校正用戶數(shù)據(jù)時,將所產(chǎn)生的已校正用戶數(shù)據(jù)傳送至第二校正電路;以及(f)判斷第一編碼群組的所有實體程序化單元是否都已選取,其中倘若第一編碼群組的至少一實體程序化單元尚未被選取時,則重復(fù)執(zhí)行上述步驟(d)、步驟(e)與步驟(f),并且倘若第一編碼群組的所有實體程序化單元皆已選取,則從第二校正電路中取得對應(yīng)第一用戶數(shù)據(jù)的已校正第一用戶數(shù)據(jù)。
本發(fā)明的一范例實施例提出一種用于控制可復(fù)寫式非易失性內(nèi)存模塊的內(nèi)存控制電路單元,其中此可復(fù)寫式非易失性內(nèi)存模塊包括多個實體程序化單元。此內(nèi)存控制電路單元包括用以電性連接至主機系統(tǒng)的主機接口、用以電性連接至該可復(fù)寫式非易失性內(nèi)存模塊的內(nèi)存接口、包括一第一校正電路與一第二校正電路的錯誤檢查與校正電路、緩沖存儲器和內(nèi)存管理電路。內(nèi)存管理電路電性連接至主機接口、錯誤檢查與校正電路、內(nèi)存接口、錯誤檢查與校正電路與緩沖存儲器。內(nèi)存管理電路用以將此些實體程序化單元分組為多個編碼群組。內(nèi)存管理電路更用以從此些實體程序化單元之中的第一實體程序化單元中讀取第一用戶數(shù)據(jù)與對應(yīng)第一用戶數(shù)據(jù)的第一同位碼至緩沖存儲器,其中第一實體程序化單元屬于此些編碼群組之中的第一編碼群組。此外,錯誤檢查與校正電路的第一校正電路用以根據(jù)第一同位碼校正第一用戶數(shù)據(jù)。倘若第一校正電路無法依據(jù)所讀取的第一同位碼來正確校正從第一實體程序化單元中所讀取的第一用戶數(shù)據(jù)時,內(nèi)存管理電路更用以從此些實體程序化單元之中的至少另一實體程序化單元中讀取至少一第一群組同位碼至緩沖存儲器以將第一群組同位碼傳送至第二校正電路,并且分批從屬于第一編碼群組的實體程序化單元中讀取用戶數(shù)據(jù)至緩沖存儲器以將所讀取的用 戶數(shù)據(jù)之中的多個已校正用戶數(shù)據(jù)傳送至第二校正電路,以及第二校正電路分批譯碼所接收的已校正用戶數(shù)據(jù)與第一群組同位碼以獲取對應(yīng)第一用戶數(shù)據(jù)的已校正第一用戶數(shù)據(jù),其中第一群組同位碼是藉由編碼儲存在第一編碼群組的實體程序化單元中的多個用戶數(shù)據(jù)所產(chǎn)生。再者,內(nèi)存管理電路更用以輸出從第二校正電路中接收的對應(yīng)第一用戶數(shù)據(jù)的已校正第一用戶數(shù)據(jù)至主機系統(tǒng)。
在本發(fā)明的一范例實施例中,在分批解碼所接收的已校正用戶數(shù)據(jù)與第一群組同位碼以獲取對應(yīng)第一用戶數(shù)據(jù)的已校正第一用戶數(shù)據(jù)的運作中,第二校正電路分批譯碼所接收的已校正用戶數(shù)據(jù)與第一群組同位碼以獲得待使用數(shù)據(jù),并且利用此待使用數(shù)據(jù)及第一用戶數(shù)據(jù)及第一群組同位碼獲得對應(yīng)第一用戶數(shù)據(jù)的已校正第一用戶數(shù)據(jù)。
在本發(fā)明的一范例實施例中,內(nèi)存管理電路在緩沖存儲器中配置第一暫存區(qū)、第二暫存區(qū)與第三暫存區(qū),其中第一暫存區(qū)暫存第一群組同位碼,第二暫存區(qū)暫存分批從屬于第一編碼群組的實體程序化單元中讀取的用戶數(shù)據(jù),并且第三暫存區(qū)暫存對應(yīng)第一用戶數(shù)據(jù)的已校正第一用戶數(shù)據(jù)。在此,第二暫存區(qū)的大小小于屬于第一編碼群組的所有實體程序化單元的容量。
在本發(fā)明的一范例實施例中,在從至少另一實體程序化單元中讀取第一群組同位碼至緩沖存儲器以將第一群組同位碼傳送至第二校正電路,并且分批從屬于第一編碼群組的實體程序化單元中讀取用戶數(shù)據(jù)至緩沖存儲器以將所讀取的用戶數(shù)據(jù)之中的已校正用戶數(shù)據(jù)傳送至第二校正電路的運作中,內(nèi)存管理電路執(zhí)行下列運作:(a)從至少另一實體程序化單元中讀取第一群組同位碼至緩沖存儲器;(b)傳送一譯碼初始化指令至第二校正電路;(c)從該緩沖存儲器中傳送第一群組同位碼至第二校正電路;(d)依序從第一編碼群組的實體程序化單元中選取一個實體程序化單元,并且從所選擇的實體程序化單元中讀取對應(yīng)用戶數(shù)據(jù)與對應(yīng)同位碼;(e)倘若所讀取的對應(yīng)用戶數(shù)據(jù)可依據(jù)所讀取的對應(yīng)同位碼被校正而產(chǎn)生一已校正用戶數(shù)據(jù)時,將所產(chǎn)生的已校正用戶數(shù)據(jù)傳送至第二校正電路;以及(f)判斷第一編碼群組的所有實體程序化單元是否都已選取,其中倘若第一編碼群組的至少一實體程序化單元尚未被選取時,則重復(fù)執(zhí)行上述運作(d)、運作(e)與運作(f),并且倘若第一編碼群組的所有實體程序化單元皆已選取,則從第二校正電路中取得對應(yīng)第一用戶數(shù)據(jù) 的已校正第一用戶數(shù)據(jù)。
本發(fā)明的一范例實施例提出一種內(nèi)存儲存裝置,其包括用以電性連接至主機系統(tǒng)的連接接口單元、具有多個實體程序化單元的可復(fù)寫式非易失性內(nèi)存模塊以及上述內(nèi)存控制電路單元。
基于上述,本發(fā)明的數(shù)據(jù)校正方法、內(nèi)存控制電路單元、內(nèi)存儲存裝置能夠在緩沖存儲器空間有限時,在從實體程序化單元中所讀取的數(shù)據(jù)無法依據(jù)其對應(yīng)的同位碼正確校正時,更依據(jù)儲存在另一個實體程序化單元的群組同位碼來校正數(shù)據(jù),由此有效提升內(nèi)存儲存裝置的可靠度。
為讓本發(fā)明的上述特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合附圖作詳細說明如下。
附圖說明
圖1是根據(jù)一范例實施例所顯示的主機系統(tǒng)、內(nèi)存儲存裝置及輸入/輸出(i/o)裝置的示意圖;
圖2是根據(jù)另一范例實施例所顯示的主機系統(tǒng)、內(nèi)存儲存裝置及輸入/輸出(i/o)裝置的示意圖;
圖3是根據(jù)另一范例實施例所顯示的主機系統(tǒng)與內(nèi)存儲存裝置的示意圖;
圖4是根據(jù)一范例實施例所顯示的主機系統(tǒng)與內(nèi)存儲存裝置的概要方框圖;
圖5是根據(jù)一范例實施例所顯示的內(nèi)存控制電路單元的概要方框圖;
圖6與圖7是根據(jù)一范例實施例所顯示的管理實體抹除單元的范例示意圖;
圖8是根據(jù)本發(fā)明一范例實施例所顯示的寫入數(shù)據(jù)至可復(fù)寫式非易失性內(nèi)存模塊的范例;
圖9是根據(jù)本發(fā)明一范例實施例所顯示的讀取數(shù)據(jù)的范例;
圖10是根據(jù)本發(fā)明一范例實施例所顯示的數(shù)據(jù)校正方法的流程圖。
附圖標(biāo)記:
10:內(nèi)存儲存裝置
11:主機系統(tǒng)
12:輸入/輸出(i/o)裝置
110:系統(tǒng)總線
111:處理器
112:隨機存取內(nèi)存(ram)
113:只讀存儲器(rom)
114:數(shù)據(jù)傳輸接口
20:主板
201:隨身碟
202:記憶卡
203:固態(tài)硬盤
204:無線內(nèi)存儲存裝置
205:全球定位系統(tǒng)模塊
206:網(wǎng)絡(luò)適配器
207:無線傳輸裝置
208:鍵盤
209:屏幕
210:喇叭
30:內(nèi)存儲存裝置
31:主機系統(tǒng)
32:sd卡
33:cf卡
34:嵌入式儲存裝置
341:嵌入式多媒體卡
342:嵌入式多芯片封裝儲存裝置
402:連接接口單元
404:內(nèi)存控制電路單元
406:可復(fù)寫式非易失性內(nèi)存模塊
410(0)~410(n):實體抹除單元
502:內(nèi)存管理電路
504:主機接口
506:內(nèi)存接口
508:緩沖存儲器
510:電源管理電路
512:錯誤檢查與校正電路
512-1:第一校正電路
512-2:第二校正電路
602:數(shù)據(jù)區(qū)
604:閑置區(qū)
606:系統(tǒng)區(qū)
608:取代區(qū)
lba(0)~lba(h):邏輯單元
lz(0)~lz(m):邏輯區(qū)域
ud(0)~ud(7):用戶數(shù)據(jù)
ecc(0)~ecc(7):同位碼
gpc(0):群組同位碼
901:第一暫存區(qū)
902:第二暫存區(qū)
903:第三暫存區(qū)
810(0)~810(8):實體程序化單元
s1001:“根據(jù)邏輯地址-實體地址映射表從所映射的實體程序化單元(以下稱為第一實體程序化單元)中將用戶數(shù)據(jù)(以下稱為第一用戶數(shù)據(jù))與對應(yīng)的同位碼(以下稱為第一同位碼)讀取至緩沖存儲器”的步驟
s1003:“判斷所讀取的第一用戶數(shù)據(jù)是否可依據(jù)所讀取的第一同位碼來被正確地校正”的步驟
s1005:“將已校正的第一用戶數(shù)據(jù)傳送給主機系統(tǒng)”的步驟
s1007:“從可復(fù)寫式非易失性內(nèi)存模塊的至少另一實體程序化單元中讀取第一群組同位碼至緩沖存儲器,將第一群組同位碼傳送至錯誤檢查與校正電路的第二錯誤校正電路,分批從屬于第一編碼群組的實體程序化單元中讀取用戶數(shù)據(jù)至緩沖存儲器,將所讀取的用戶數(shù)據(jù)之中的多個已校正用戶數(shù)據(jù)傳送至錯誤檢查與校正電路的第二錯誤校正電路”的步驟
s1009:“判斷錯誤檢查與校正電路的第二錯誤校正電路是否可依據(jù)第一群組同位碼正確校正第一用戶數(shù)據(jù)”的步驟
s1011:“傳送讀取錯誤信息給主機系統(tǒng)”的步驟
具體實施方式
一般而言,內(nèi)存儲存裝置(亦稱,內(nèi)存儲存系統(tǒng))包括可復(fù)寫式非易失性內(nèi)存模塊與控制器(亦稱,控制電路單元)。通常內(nèi)存儲存裝置是與主機系統(tǒng)一起使用,以使主機系統(tǒng)可將數(shù)據(jù)寫入至內(nèi)存儲存裝置或從內(nèi)存儲存裝置中讀取數(shù)據(jù)。
圖1是根據(jù)一范例實施例所顯示的主機系統(tǒng)、內(nèi)存儲存裝置及輸入/輸出(i/o)裝置的示意圖,且圖2是根據(jù)另一范例實施例所顯示的主機系統(tǒng)、內(nèi)存儲存裝置及輸入/輸出(i/o)裝置的示意圖。
請參照圖1與圖2,主機系統(tǒng)11一般包括處理器111、隨機存取內(nèi)存(randomaccessmemory,ram)112、只讀存儲器(readonlymemory,rom)113及數(shù)據(jù)傳輸接口114。處理器111、隨機存取內(nèi)存112、只讀存儲器113及數(shù)據(jù)傳輸接口114皆電性連接至系統(tǒng)總線(systembus)110。
在本范例實施例中,主機系統(tǒng)11是通過數(shù)據(jù)傳輸接口114與內(nèi)存儲存裝置10電性連接。例如,主機系統(tǒng)11可經(jīng)由數(shù)據(jù)傳輸接口114將數(shù)據(jù)寫入至內(nèi)存儲存裝置10或從內(nèi)存儲存裝置10中讀取數(shù)據(jù)。此外,主機系統(tǒng)11是通過系統(tǒng)總線110與i/o裝置12電性連接。例如,主機系統(tǒng)11可經(jīng)由系統(tǒng)總線110將輸出信號傳送至i/o裝置12或從i/o裝置12接收輸入信號。
在本范例實施例中,處理器111、隨機存取內(nèi)存112、只讀存儲器113及數(shù)據(jù)傳輸接口114是可設(shè)置在主機系統(tǒng)11的主板20上。數(shù)據(jù)傳輸接口114的數(shù)目可以是一或多個。通過數(shù)據(jù)傳輸接口114,主板20可以經(jīng)由有線或無線方式電性連接至內(nèi)存儲存裝置10。內(nèi)存儲存裝置10可例如是隨身碟201、記憶卡202、固態(tài)硬盤(solidstatedrive,ssd)203或無線內(nèi)存儲存裝置204。無線內(nèi)存儲存裝置204可例如是近距離無線通信(nearfieldcommunicationstorage,nfc)內(nèi)存儲存裝置、無線傳真(wifi)內(nèi)存儲存裝置、藍牙(bluetooth)內(nèi)存儲存裝置或低功耗藍牙內(nèi)存儲存裝置(例如,ibeacon)等以各式無線通信技術(shù)為基礎(chǔ)的內(nèi)存儲存裝置。此外,主板20也可以通過系統(tǒng)總線110電性 連接至全球定位系統(tǒng)(globalpositioningsystem,gps)模塊205、網(wǎng)絡(luò)適配器206、無線傳輸裝置207、鍵盤208、屏幕209、喇叭210等各式i/o裝置。例如,在一范例實施例中,主板20可通過無線傳輸裝置207存取無線內(nèi)存儲存裝置204。
在一范例實施例中,所提及的主機系統(tǒng)為可實質(zhì)地與內(nèi)存儲存裝置配合以儲存數(shù)據(jù)的任意系統(tǒng)。雖然在上述范例實施例中,主機系統(tǒng)是以計算機系統(tǒng)來作說明,然而,圖3是根據(jù)另一范例實施例所顯示的主機系統(tǒng)與內(nèi)存儲存裝置的示意圖。請參照圖3,在另一范例實施例中,主機系統(tǒng)31也可以是數(shù)碼相機、攝影機、通信裝置、音頻播放器、視頻播放器或平板電腦等系統(tǒng),而內(nèi)存儲存裝置30可為其所使用的sd卡32、cf卡33或嵌入式儲存裝置34等各式非易失性內(nèi)存儲存裝置。嵌入式儲存裝置34包括嵌入式多媒體卡(embeddedmmc,emmc)341和/或嵌入式多芯片封裝儲存裝置(embeddedmultichippackage,emcp)342等各類型將內(nèi)存模塊直接電性連接于主機系統(tǒng)的基板上的嵌入式儲存裝置。
圖4是根據(jù)一范例實施例所顯示的內(nèi)存儲存裝置的概要方框圖。
請參照圖4,內(nèi)存儲存裝置10包括連接接口單元402、內(nèi)存控制電路單元404與可復(fù)寫式非易失性內(nèi)存模塊406。
在本范例實施例中,連接接口單元402是兼容于序列先進附件(serialadvancedtechnologyattachment,sata)標(biāo)準(zhǔn)。然而,必須了解的是,本發(fā)明不限于此,連接接口單元402亦可以是符合并列先進附件(paralleladvancedtechnologyattachment,pata)標(biāo)準(zhǔn)、電氣和電子工程師協(xié)會(instituteofelectricalandelectronicengineers,ieee)1394標(biāo)準(zhǔn)、高速周邊零件連接接口(peripheralcomponentinterconnectexpress,pciexpress)標(biāo)準(zhǔn)、通用串行總線(universalserialbus,usb)標(biāo)準(zhǔn)、超高速一代(ultrahighspeed-i,uhs-i)接口標(biāo)準(zhǔn)、超高速二代(ultrahighspeed-ii,uhs-ii)接口標(biāo)準(zhǔn)、安全數(shù)字(securedigital,sd)接口標(biāo)準(zhǔn)、記憶棒(memorystick,ms)接口標(biāo)準(zhǔn)、多芯片封裝(multi-chippackage)接口標(biāo)準(zhǔn)、多媒體儲存卡(multimediacard,mmc)接口標(biāo)準(zhǔn)、嵌入式多媒體儲存卡(embeddedmultimediacard,emmc)接口標(biāo)準(zhǔn)、通用閃存(universalflashstorage,ufs)接口標(biāo)準(zhǔn)、嵌入式多芯片封裝(embeddedmultichippackage,emcp)接口標(biāo)準(zhǔn)、小型快閃(compactflash, cf)接口標(biāo)準(zhǔn)、整合式驅(qū)動電子接口(integrateddeviceelectronics,ide)標(biāo)準(zhǔn)或其他適合的標(biāo)準(zhǔn)。在本范例實施例中,連接接口單元402可與內(nèi)存控制電路單元404封裝在一個芯片中,或者連接接口單元402是布設(shè)于一包含內(nèi)存控制電路單元的芯片外。
內(nèi)存控制電路單元404用以執(zhí)行以硬件型式或固件型式實作的多個邏輯門或控制指令,并且根據(jù)主機系統(tǒng)11的指令在可復(fù)寫式非易失性內(nèi)存模塊406中進行數(shù)據(jù)的寫入、讀取與抹除等操作。
可復(fù)寫式非易失性內(nèi)存模塊406是電性連接至內(nèi)存控制電路單元404,并且用以儲存主機系統(tǒng)11所寫入的數(shù)據(jù)??蓮?fù)寫式非易失性內(nèi)存模塊406具有實體抹除單元410(0)~410(n)。每一實體抹除單元分別具有多個實體程序化單元,其中屬于同一個實體抹除單元的實體程序化單元可被獨立地寫入且被同時地抹除。然而,必須了解的是,本發(fā)明不限于此,每一實體抹除單元是可由64個實體程序化單元、256個實體程序化單元或其他任意個實體程序化單元所組成。
更詳細來說,實體抹除單元為抹除的最小單位。即,每一實體抹除單元含有最小數(shù)目之一并被抹除的記憶胞。實體程序化單元為程序化的最小單元。即,實體程序化單元為寫入數(shù)據(jù)的最小單元。每一實體程序化單元通常包括數(shù)據(jù)位區(qū)與冗余位區(qū)。數(shù)據(jù)位區(qū)包含多個實體存取地址用以儲存用戶的數(shù)據(jù),而冗余位區(qū)用以儲存系統(tǒng)的數(shù)據(jù)(例如,控制信息與錯誤更正碼)。在本范例實施例中,每一個實體程序化單元的數(shù)據(jù)位區(qū)中會包含8個實體存取地址,且一個實體存取地址的大小為512字節(jié)(byte)。然而,在其他范例實施例中,數(shù)據(jù)位區(qū)中也可包含數(shù)目更多或更少的實體存取地址,本發(fā)明并不限制實體存取地址的大小以及個數(shù)。例如,在一范例實施例中,實體抹除單元為實體區(qū)塊,并且實體程序化單元為實體頁面或?qū)嶓w扇區(qū),但本發(fā)明不以此為限。
在本范例實施例中,可復(fù)寫式非易失性內(nèi)存模塊406為多階記憶胞(multilevelcell,mlc)nand型閃存模塊(即,一個記憶胞中可儲存2個數(shù)據(jù)位的閃存模塊)。然而,本發(fā)明不限于此,可復(fù)寫式非易失性內(nèi)存模塊406亦可是單階記憶胞(singlelevelcell,slc)nand型閃存模塊(即,一個記憶胞中可儲存1個數(shù)據(jù)位的閃存模塊)、三階記憶胞(trinarylevelcell,tlc) nand型閃存模塊(即,一個記憶胞中可儲存3個數(shù)據(jù)位的閃存模塊)、其他閃存模塊或其他具有相同特性的內(nèi)存模塊。
圖5是根據(jù)一范例實施例所顯示的內(nèi)存控制電路單元的概要方框圖。
請參照圖5,內(nèi)存控制電路單元404包括內(nèi)存管理電路502、主機接口504與內(nèi)存接口506、緩沖存儲器508、電源管理電路510與錯誤檢查與校正電路512。
內(nèi)存管理電路502用以控制內(nèi)存控制電路單元404的整體操作。具體來說,內(nèi)存管理電路502具有多個控制指令,并且在內(nèi)存儲存裝置10操作時,此些控制指令會被執(zhí)行以進行數(shù)據(jù)的寫入、讀取與抹除等操作。
在本范例實施例中,內(nèi)存管理電路502的控制指令是以固件型式來實作。例如,內(nèi)存管理電路502具有微處理器單元(未顯示)與只讀存儲器(未顯示),并且此些控制指令是被刻錄至此只讀存儲器中。當(dāng)內(nèi)存儲存裝置10操作時,此些控制指令會由微處理器單元來執(zhí)行以進行數(shù)據(jù)的寫入、讀取與抹除等操作。
在本發(fā)明另一范例實施例中,內(nèi)存管理電路502的控制指令亦可以程序代碼型式儲存于可復(fù)寫式非易失性內(nèi)存模塊406的特定區(qū)域(例如,內(nèi)存模塊中專用于存放系統(tǒng)數(shù)據(jù)的系統(tǒng)區(qū))中。此外,內(nèi)存管理電路502具有微處理器單元(未顯示)、只讀存儲器(未顯示)及隨機存取內(nèi)存(未顯示)。特別是,此只讀存儲器具有驅(qū)動碼,并且當(dāng)內(nèi)存控制電路單元404被致能時,微處理器單元會先執(zhí)行此驅(qū)動碼段來將儲存于可復(fù)寫式非易失性內(nèi)存模塊406中的控制指令加載至內(nèi)存管理電路502的隨機存取內(nèi)存中。之后,微處理器單元會運轉(zhuǎn)此些控制指令以進行數(shù)據(jù)的寫入、讀取與抹除等操作。
此外,在本發(fā)明另一范例實施例中,內(nèi)存管理電路502的控制指令亦可以一硬件型式來實作。例如,內(nèi)存管理電路502包括微控制器、記憶胞管理電路、內(nèi)存寫入電路、內(nèi)存讀取電路、內(nèi)存抹除電路與數(shù)據(jù)處理電路。記憶胞管理電路、內(nèi)存寫入電路、內(nèi)存讀取電路、內(nèi)存抹除電路與數(shù)據(jù)處理電路是電性連接至微控制器。其中,記憶胞管理電路用以管理可復(fù)寫式非易失性內(nèi)存模塊406的實體抹除單元;內(nèi)存寫入電路用以對可復(fù)寫式非易失性內(nèi)存模塊406下達寫入指令以將數(shù)據(jù)寫入至可復(fù)寫式非易失性內(nèi)存模塊406中;內(nèi)存讀取電路用以對可復(fù)寫式非易失性內(nèi)存模塊406下達讀取指令以從可復(fù) 寫式非易失性內(nèi)存模塊406中讀取數(shù)據(jù);內(nèi)存抹除電路用以對可復(fù)寫式非易失性內(nèi)存模塊406下達抹除指令以將數(shù)據(jù)從可復(fù)寫式非易失性內(nèi)存模塊406中抹除;而數(shù)據(jù)處理電路用以處理欲寫入至可復(fù)寫式非易失性內(nèi)存模塊406的數(shù)據(jù)以及從可復(fù)寫式非易失性內(nèi)存模塊406中讀取的數(shù)據(jù)。
主機接口504是電性連接至內(nèi)存管理電路502并且用以電性連接至連接接口單元402,以接收與識別主機系統(tǒng)11所傳送的指令與數(shù)據(jù)。也就是說,主機系統(tǒng)11所傳送的指令與數(shù)據(jù)會通過主機接口504來傳送至內(nèi)存管理電路502。在本范例實施例中,主機接口504是兼容于sata標(biāo)準(zhǔn)。然而,必須了解的是本發(fā)明不限于此,主機接口504亦可以是兼容于pata標(biāo)準(zhǔn)、ieee1394標(biāo)準(zhǔn)、pciexpress標(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)。
內(nèi)存接口506是電性連接至內(nèi)存管理電路502并且用以存取可復(fù)寫式非易失性內(nèi)存模塊406。也就是說,欲寫入至可復(fù)寫式非易失性內(nèi)存模塊406的數(shù)據(jù)會經(jīng)由內(nèi)存接口506轉(zhuǎn)換為可復(fù)寫式非易失性內(nèi)存模塊406所能接受的格式。
緩沖存儲器508是電性連接至內(nèi)存管理電路502并且用以暫存來自于主機系統(tǒng)11的數(shù)據(jù)與指令或來自于可復(fù)寫式非易失性內(nèi)存模塊406的數(shù)據(jù)。
電源管理電路510是電性連接至內(nèi)存管理電路502并且用以控制內(nèi)存儲存裝置10的電源。
錯誤檢查與校正電路512是電性連接至內(nèi)存管理電路502并且具有第一校正電路512-1與第二校正電路512-2,以執(zhí)行錯誤檢查與校正程序以確保數(shù)據(jù)的正確性。具體來說,當(dāng)內(nèi)存管理電路502從主機系統(tǒng)11中接收到寫入指令時,錯誤檢查與校正電路512的第一校正電路512-1會為對應(yīng)此寫入指令的用戶數(shù)據(jù)產(chǎn)生對應(yīng)的錯誤檢查與校正碼(errorcheckingandcorrectingcode,ecccode),并且內(nèi)存管理電路502會將對應(yīng)此寫入指令的數(shù)據(jù)與對應(yīng)的錯誤檢查與校正碼寫入至可復(fù)寫式非易失性內(nèi)存模塊406中。此外,在本范例實施例中,第二校正電路514會根據(jù)多個實體程序化單元(此些實體程序化單元是可稱為一個編碼群組)的用戶數(shù)據(jù)來產(chǎn)生至少一個校正碼,并且內(nèi)存管理電路502會將所產(chǎn)生的校正碼寫入至可復(fù)寫式非易失性內(nèi)存模塊406 中。之后,當(dāng)內(nèi)存管理電路502從可復(fù)寫式非易失性內(nèi)存模塊406中讀取用戶會同時讀取此數(shù)據(jù)對應(yīng)的錯誤檢查與校正碼,并且錯誤檢查與校正電路512會根據(jù)此錯誤檢查與校正碼對所讀取的用戶數(shù)據(jù)錯誤檢查與校正程序。特別是,若使用對應(yīng)的錯誤檢查與校正碼無法成功校正所讀取的用戶數(shù)據(jù),內(nèi)存管理電路502會從可復(fù)寫式非易失性內(nèi)存模塊406中讀取儲存在對應(yīng)編碼群組的實體程序化單元的用戶數(shù)據(jù)以及對應(yīng)的校正碼,并且第二校正電路514會根據(jù)對應(yīng)編碼群組內(nèi)的其他實體程序化單元的用戶數(shù)據(jù)和對應(yīng)的校正碼來校正第一校正電路512-1無法成功校正的用戶數(shù)據(jù)。
也就是說,錯誤檢查與校正電路512的第一校正電路512-1執(zhí)行編碼程序的基本單位是一個框架(frame)并且是對儲存于一個實體程序化單元中的數(shù)據(jù)進行單框架(single-frame)編碼。而錯誤檢查與校正電路512的第二校正電路514是對儲存于多個實體程序化單元中的數(shù)據(jù)進行多框架(multi-frame)編碼。在此,一個框架包括多個數(shù)據(jù)位。在本范例實施例中,一個框架包括256個位。然而,在另一范例實施例中,一個框架也可以包括更多或更少的位。例如,在本范例實施例中,單框架編碼是采用低密度奇偶檢查校正碼(lowdensityparitycode,ldpc)、bch碼、回旋碼(convolutionalcode)或渦輪碼(turbocode)等編碼算法的至少其中之一,并且多框架編碼是采用里德-所羅門碼(reed-solomoncodes,rscodes)算法。必須了解的,上述編碼算法僅為范例,在另一范例實施例中,更多未列于上的編碼算法也可以被采用,在此便不贅述。根據(jù)所采用的編碼算法,錯誤檢查與校正電路512可以編碼欲保護的數(shù)據(jù)來產(chǎn)生相對應(yīng)的錯誤校正碼和/或錯誤檢查碼。在本范例實施例中,經(jīng)由單框架編碼產(chǎn)生的錯誤校正碼和/或錯誤檢查碼將統(tǒng)稱為同位碼(paritycode),并且經(jīng)由多框架編碼產(chǎn)生的錯誤校正碼和/或錯誤檢查碼將統(tǒng)稱為群組同位碼(paritycode)。
圖6與圖7是根據(jù)一范例實施例所顯示的管理實體抹除單元的范例示意圖。
必須了解的是,在此描述可復(fù)寫式非易失性內(nèi)存模塊406的實體抹除單元的操作時,以“提取”、“分組”、“劃分”、“關(guān)聯(lián)”等詞來操作實體抹除單元是邏輯上的概念。也就是說,可復(fù)寫式非易失性內(nèi)存模塊的實體抹除單元的實際位置并未更動,而是邏輯上對可復(fù)寫式非易失性內(nèi)存模塊的實體抹除單元 進行操作。
請參照圖6,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將實體抹除單元410(0)~410(n)邏輯地分組為數(shù)據(jù)區(qū)602、閑置區(qū)604、系統(tǒng)區(qū)606與取代區(qū)608。
邏輯上屬于數(shù)據(jù)區(qū)602與閑置區(qū)604的實體抹除單元是用以儲存來自于主機系統(tǒng)11的數(shù)據(jù)。具體來說,數(shù)據(jù)區(qū)602的實體抹除單元是被視為已儲存數(shù)據(jù)的實體抹除單元,而閑置區(qū)604的實體抹除單元是用以替換數(shù)據(jù)區(qū)602的實體抹除單元。也就是說,當(dāng)從主機系統(tǒng)11接收到寫入指令與欲寫入的數(shù)據(jù)時,內(nèi)存管理電路502會從閑置區(qū)604中提取實體抹除單元,并且將數(shù)據(jù)寫入至所提取的實體抹除單元中,以替換數(shù)據(jù)區(qū)602的實體抹除單元。
邏輯上屬于系統(tǒng)區(qū)606的實體抹除單元是用以記錄系統(tǒng)數(shù)據(jù)。例如,系統(tǒng)數(shù)據(jù)包括關(guān)于可復(fù)寫式非易失性內(nèi)存模塊的制造商與型號、可復(fù)寫式非易失性內(nèi)存模塊的實體抹除單元數(shù)、每一實體抹除單元的實體程序化單元數(shù)等。
邏輯上屬于取代區(qū)608中的實體抹除單元是用于壞實體抹除單元取代程序,以取代損壞的實體抹除單元。具體來說,倘若取代區(qū)608中仍存有正常的實體抹除單元并且數(shù)據(jù)區(qū)602的實體抹除單元損壞時,內(nèi)存管理電路502會從取代區(qū)608中提取正常的實體抹除單元來更換損壞的實體抹除單元。
特別是,數(shù)據(jù)區(qū)602、閑置區(qū)604、系統(tǒng)區(qū)606與取代區(qū)608的實體抹除單元的數(shù)量會根據(jù)不同的內(nèi)存規(guī)格而有所不同。此外,必須了解的是,在內(nèi)存儲存裝置10的操作中,實體抹除單元關(guān)聯(lián)至數(shù)據(jù)區(qū)602、閑置區(qū)604、系統(tǒng)區(qū)606與取代區(qū)608的分組關(guān)系會動態(tài)地變動。例如,當(dāng)閑置區(qū)604中的實體抹除單元損壞而被取代區(qū)608的實體抹除單元取代時,則原本取代區(qū)608的實體抹除單元會被關(guān)聯(lián)至閑置區(qū)604。
請參照圖7,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會配置邏輯單元lba(0)~lba(h)以映射數(shù)據(jù)區(qū)602的實體抹除單元,其中每一邏輯單元具有多個邏輯子單元以映射對應(yīng)的實體抹除單元的實體程序化單元。并且,當(dāng)主機系統(tǒng)11欲寫入數(shù)據(jù)至邏輯單元或更新儲存于邏輯單元中的數(shù)據(jù)時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會從閑置區(qū)604中提取一個實體抹除單元來寫入數(shù)據(jù),以輪替數(shù)據(jù)區(qū)602的實體抹除單元。在本范例實施例中,邏輯子單元可以是邏輯頁面或邏輯扇區(qū)。
為了識別每個邏輯單元的數(shù)據(jù)被儲存在哪個實體抹除單元,在本范例實施例中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會記錄邏輯單元與實體抹除單元之間的映射。并且,當(dāng)主機系統(tǒng)11欲在邏輯子單元中存取數(shù)據(jù)時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會確認此邏輯子單元所屬的邏輯單元,并且在此邏輯單元所映射的實體抹除單元中來存取數(shù)據(jù)。例如,在本范例實施例中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會在可復(fù)寫式非易失性內(nèi)存模塊406中儲存邏輯地址-實體地址映射表來記錄每一邏輯單元所映射的實體抹除單元,并且當(dāng)欲存取數(shù)據(jù)時內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將邏輯地址-實體地址映射表加載至緩沖存儲器508來維護。
值得一提的是,由于緩沖存儲器508的容量有限無法儲存記錄所有邏輯單元的映射關(guān)系的映射表,因此,在本范例實施例中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將邏輯單元lba(0)~lba(h)分組為多個邏輯區(qū)域lz(0)~lz(m),并且為每一邏輯區(qū)域配置一個邏輯地址-實體地址映射表。特別是,當(dāng)內(nèi)存控制電路單元404(或內(nèi)存管理電路502)欲更新某個邏輯單元的映射時,對應(yīng)此邏輯單元所屬的邏輯區(qū)域的邏輯地址-實體地址映射表會被加載至緩沖存儲器508來被更新。
如上所述,在本范例實施例中,可復(fù)寫式非易失性內(nèi)存模塊406的每一個實體程序化單元的數(shù)據(jù)位區(qū)可儲存用戶數(shù)據(jù),并且每一個實體程序化單元的冗余位區(qū)可儲存對應(yīng)的用戶數(shù)據(jù)的同位碼。特別是,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)更會將此些實體程序化單元指派(或分組)為多個編碼群組(即,每一個編碼群組可包括一個或多個實體程序化單元)。進一步地,錯誤檢查與校正電路512會根據(jù)分組至同一個編碼群組的實體程序化單元中所儲存的數(shù)據(jù)來額外產(chǎn)生分別對應(yīng)各編碼群組的群組同位碼。例如,內(nèi)存控制電路單元404(或錯誤檢查與校正電路512)會根據(jù)分組至同一個編碼群組的實體程序化單元的數(shù)據(jù)位區(qū)中所儲存的數(shù)據(jù)來產(chǎn)生對應(yīng)各編碼群組的群組同位碼。另外,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將所產(chǎn)生的群組同位碼儲存至可復(fù)寫式非易失性內(nèi)存模塊406中的實體程序化單元中。之后,若實體程序化單元的冗余位區(qū)的同位碼無法校正從此實體程序化單元的數(shù)據(jù)位區(qū)中讀取的數(shù)據(jù)時,內(nèi)存控制電路單元404(或錯誤檢查與 校正電路512)可使用對應(yīng)的群組同位碼來校正所讀取的數(shù)據(jù)。
圖8是根據(jù)本發(fā)明一范例實施例所顯示的寫入數(shù)據(jù)至可復(fù)寫式非易失性內(nèi)存模塊的范例。在此假設(shè)實體抹除單元410(0)的實體程序化單元810(0)~810(7)被分組為同一個編碼群組(以下可參考為第一編碼群組)并且當(dāng)收到來自于主機系統(tǒng)11的寫入指令時,目前屬于閑置區(qū)604的實體抹除單元410(0)會被選擇作為作動實體抹除單元來寫入數(shù)據(jù)。
請參照圖8,當(dāng)從主機系統(tǒng)11接到從某個邏輯地址(即,邏輯子單元)開始寫入數(shù)據(jù)的寫入指令及對應(yīng)的用戶數(shù)據(jù)ud(0)~ud(7)時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會先在緩沖存儲器508配置一個暫存區(qū),并且將用戶數(shù)據(jù)ud(0)~ud(7)暫存至在緩沖存儲器508中所配置的暫存區(qū)。
之后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將用戶數(shù)據(jù)ud(0)與編碼初始化指令傳送至錯誤檢查與校正電路512的第一校正電路512-1,而第一校正電路512-1會根據(jù)用戶數(shù)據(jù)ud(0)產(chǎn)生對應(yīng)的同位碼ecc(0)。此外,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會傳送用戶數(shù)據(jù)ud(0)與一編碼初始化指令給錯誤檢查與校正電路512的第二校正電路512-2,而第二校正電路512-2會根據(jù)用戶數(shù)據(jù)ud(0)執(zhí)行編碼運算(即,用于上述群組編碼的編碼運算)并保留運算結(jié)果。在獲取對應(yīng)用戶數(shù)據(jù)ud(0)的同位碼ecc(0)后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會下達寫入指令序列以將用戶數(shù)據(jù)ud(0)與同位碼ecc0寫入至實體程序化單元810(0)中。
接著,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將用戶數(shù)據(jù)ud(1)與編碼初始化指令傳送至錯誤檢查與校正電路512的第一校正電路512-1,而第一校正電路512-1會根據(jù)用戶數(shù)據(jù)ud(1)產(chǎn)生對應(yīng)的同位碼ecc(1)。此外,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會傳送用戶數(shù)據(jù)ud(1)給錯誤檢查與校正電路512的第二校正電路512-2,而第二正電路512-2會依據(jù)先前的運算結(jié)果與用戶數(shù)據(jù)ud(1)執(zhí)行編碼運算(即,用于上述群組編碼的編碼運算)并保留運算結(jié)果。在獲取對應(yīng)用戶數(shù)據(jù)ud(1)的同位碼ecc(1)后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會下達寫入指令序列以將用戶數(shù)據(jù)ud(1)與同位碼ecc(1)寫入至實體程序化單元810(1)中。
后續(xù),以此類推,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將用戶數(shù)據(jù)ud(2)~ud(7)和同位碼ecc(2)~ecc(7)寫入至實體程序化單元 810(2)~810(7)中。特別是,在完成第一編碼群組的實體程序化單元的寫入操作后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會下達一指令以從錯誤檢查與校正電路512的第二校正電路512-2取得群組編碼的運算結(jié)果作為第一編碼群組的群組同位碼gpc(0),并且將群組同位碼gpc(0)寫入至只少另一個實體程序化單元(例如,實體程序化單元810(8))。
必須了了解的是,圖8僅為一個范例,在本范例實施例中,一個編碼群組可以包含n筆用戶數(shù)據(jù)及對應(yīng)的m筆群組同位碼,而第二校正電路512-2依據(jù)m筆群組同位碼最多可校正x筆用戶數(shù)據(jù)(即,第二校正電路512-2的最大可校正數(shù)據(jù)數(shù)為x),其中x、n與m會根據(jù)所采用的編碼算法而設(shè)定,本發(fā)明不加以限定。特別是,當(dāng)產(chǎn)生越多筆群組同位碼時,可校正的用戶數(shù)據(jù)的筆數(shù)越多。
圖9是根據(jù)本發(fā)明一范例實施例所顯示的讀取數(shù)據(jù)的范例。在此假設(shè)從主機系統(tǒng)11接收到讀取指令時,而從實體程序化單元810(0)中讀取用戶數(shù)據(jù)。
請參照圖9,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會在緩沖存儲器508中配置一暫存區(qū)(以下可參考為第二暫存區(qū)902)并且將從實體程序化單元810(0)中讀取的用戶數(shù)據(jù)ud(0)與同位碼ecc(0)暫存在第一暫存區(qū)901(即,第一次讀取)。在此,第二暫存區(qū)902是用以暫存所讀取的實體程序化單元的用戶數(shù)據(jù),并且其大小會被設(shè)定為t個實體程序化單元的大小,其中t與x的總和會小于n。例如,在每次僅處理1個實體程序化單元的用戶數(shù)據(jù)的例子中,t會被設(shè)定為1。
之后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將譯碼初始化指令、用戶數(shù)據(jù)ud(0)與同位碼ecc(0)傳送至錯誤檢查與校正電路512的第一校正電路512-1來進行錯誤檢查與校正操作(在此亦可參考為第一錯誤檢查與校正操作)。若用戶數(shù)據(jù)ud(0)可依據(jù)同位碼ecc(0)被正確校正時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將校正后的用戶數(shù)據(jù)ud(0)傳送給主機系統(tǒng)11,以響應(yīng)所接收的讀取指令。
倘若用戶數(shù)據(jù)ud(0)無法依據(jù)同位碼ecc(0)來被正確校正時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會使用群組同位碼來執(zhí)行再一次的錯誤檢查與校正操作(在此亦可參考為第二錯誤檢查與校正操作),來嘗試校正錯誤的數(shù)據(jù)。
具體來說,在第二錯誤檢查與校正操作中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會在緩沖存儲器508中配置一暫存區(qū)(以下可參考為第一暫存區(qū)901),從實體程序化單元810(8)中讀取第一群組同位碼gpc(0)并且將第一群組同位碼gpc(0)暫存在第一暫存區(qū)901。在此,第一暫存區(qū)901是用以暫存所讀取的群組同位碼,并且其大小會被設(shè)定為m個實體程序化單元的大小。例如,如圖8的范例中,在編碼運作中僅產(chǎn)生一筆群組同位碼的例子中,m會被設(shè)定為1。此外,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會在緩沖存儲器508中配置一暫存區(qū)(以下可參考為第三暫存區(qū)903)。在此,第三暫存區(qū)903是用以暫存第二校正電路所校正的用戶數(shù)據(jù),并且其大小會被設(shè)定為x個實體程序化單元的大小。如上所述,m筆群組同位碼可校正x筆用戶數(shù)據(jù),因此,第三暫存區(qū)903的大小是根據(jù)可能產(chǎn)生的最多已校正用戶數(shù)據(jù)的筆數(shù)來設(shè)定。
在緩沖存儲器508配置對應(yīng)暫存區(qū)域后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會分批將第一編碼群組的實體程序化單元的用戶數(shù)據(jù)與對應(yīng)同位碼讀取至第二暫存區(qū)902。具體來說,由于第二暫存區(qū)902的大小僅為一個實體程序單元的大小,因此,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)每次僅會處理一個實體程序化單元的數(shù)據(jù)。
在本范例實施例中,第二校正電路512-2會分批譯碼所接收的已校正用戶數(shù)據(jù)與群組同位碼以獲得一個待使用數(shù)據(jù),其中,此待使用數(shù)據(jù)可以為譯碼過程中產(chǎn)生的校驗子(syndrome)或其他用以解碼的參數(shù)。獲得此待使用數(shù)據(jù)后,第二校正電路512-2會利用此待使用數(shù)據(jù)及用戶數(shù)據(jù)及群組同位碼獲得對應(yīng)用戶數(shù)據(jù)的已校正用戶數(shù)據(jù)。例如,在圖9的例子中,在第二錯誤檢查與校正操作中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將譯碼初始化指令和暫存在第一暫存區(qū)901的第一群組同位碼gpc(0)傳送至第二校正電路512-2。然后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會讀取實體程序化單元810(1)中的用戶數(shù)據(jù)ud(1)與同位碼ecc(1)至第二暫存區(qū)902,并且將實體程序化單元810(1)中的用戶數(shù)據(jù)ud(1)與同位碼ecc(1)傳送至第一校正電路512-1。若第一校正電路512-1可依據(jù)同位碼ecc(1)正確校正用戶數(shù)據(jù)ud(1),內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將已校正的用戶數(shù)據(jù)ud(1)傳送至第二校正電路512-2,并且第二校正電路512-2會根據(jù) 第一群組同位碼與用戶數(shù)據(jù)ud(1)執(zhí)行譯碼運算并保留運算結(jié)果。若第一校正電路512-1無法依據(jù)同位碼ecc(1)正確校正用戶數(shù)據(jù)ud(1),則此表示此筆用戶數(shù)據(jù)不會被輸入至第二校正電路512-2。
之后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會讀取實體程序化單元810(2)中的用戶數(shù)據(jù)ud(2)與同位碼ecc(2)至第二暫存區(qū)902,并且將實體程序化單元810(1)中的用戶數(shù)據(jù)ud(2)與同位碼ecc(2)傳送至第一校正電路512-1。類似地,若第一校正電路512-1可依據(jù)同位碼ecc(2)正確校正用戶數(shù)據(jù)ud(2),內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將已校正的用戶數(shù)據(jù)ud(2)傳送至第二校正電路512-2,并且第二校正電路512-2會根據(jù)先前的計算結(jié)果和已校正的用戶數(shù)據(jù)ud(2)繼續(xù)執(zhí)行譯碼運算并保留運算結(jié)果。
以此類推,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會分批讀取實體程序化單元810(3)~810(7)中的用戶數(shù)據(jù)ud(2)~ud(7)與同位碼ecc(2)~ecc(7)至第二暫存區(qū)902,并且將實體程序化單元810(3)~810(7)中的用戶數(shù)據(jù)ud(2)~ud(7)與同位碼ecc(2)~ecc(7)傳送至第一校正電路512-1。若用戶數(shù)據(jù)ud(2)~ud(7)可被校正,則內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將已校正的用戶數(shù)據(jù)傳送至第二校正電路512-2繼續(xù)進行譯碼運算。
在完成上述譯碼運算后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會傳送校正完成指令給第二校正電路512-2,并且第二校正電路512-2會輸出已校正用戶數(shù)據(jù)。具體來說,在用戶數(shù)據(jù)ud(0)~ud(7)之中錯誤的數(shù)據(jù)數(shù)小于第二校正電路512-2最大可校正的數(shù)據(jù)數(shù)下,第二校正電路512-2在上述譯碼運算中可輸出錯誤用戶數(shù)據(jù)的校正用戶數(shù)據(jù)。以圖9為例,在用戶數(shù)據(jù)ud(0)無法被第一校正電路512-1正確校正且用戶數(shù)據(jù)ud(1)~ud(7)可被第一校正電路512-1正確校正而輸入第二校正電路512-2下,第二校正電路512-2可依據(jù)第一群組同位碼gpc(0)和用戶數(shù)據(jù)ud(1)~ud(7)輸出已校正的用戶數(shù)據(jù)ud(0)。
值得一提的是,在本范例實施例中,由于再進行第二錯誤檢查與校正操作時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)是分批從實體程序化單元中讀取用戶數(shù)據(jù),因此,緩沖存儲器508所配置的第二暫存區(qū)902僅為分 批讀取的實體程序化單元的大小(例如,1個實體程序化單元的大小),無需配置大量的儲存空間(例如,足以儲存編碼群組的所有實體程序化單元的用戶數(shù)據(jù)的空間),因此,可以在緩沖存儲器508的容量有限下,執(zhí)行上述第二錯誤檢查與校正操作。
圖10是根據(jù)本發(fā)明一范例實施例所顯示的數(shù)據(jù)校正方法的流程圖。
請參照圖10,當(dāng)內(nèi)存儲存裝置10從主機系統(tǒng)11接收到讀取指令時,在步驟s1001中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會根據(jù)邏輯地址-實體地址映射表從所映射的實體程序化單元(以下稱為第一實體程序化單元)中將用戶數(shù)據(jù)(以下稱為第一用戶數(shù)據(jù))與對應(yīng)的同位碼(以下稱為第一同位碼)讀取至緩沖存儲器508。
在步驟s1003中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會判斷所讀取的第一用戶數(shù)據(jù)是否可依據(jù)所讀取的第一同位碼來被正確地校正。具體來說,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將第一用戶數(shù)據(jù)與第一同位碼傳送至錯誤檢查與校正電路512來進行錯誤校正操作(即,上述第一錯誤校正操作)。詳細的運作方式已配合附圖詳細描述如上,在此不再重復(fù)說明。
倘若所讀取的第一用戶數(shù)據(jù)可依據(jù)所讀取的第一同位碼來被正確地校正時,在步驟s1005中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將已校正的第一用戶數(shù)據(jù)傳送給主機系統(tǒng)11。
倘若所讀取的第一用戶數(shù)據(jù)無法依據(jù)所讀取的第一同位碼來被正確地校正時,在步驟s1007中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會從可覆寫非易失性內(nèi)存模塊406的至少另一實體程序化單元中讀取第一群組同位碼gpc(0)至緩沖存儲器508,將第一群組同位碼gpc(0)傳送至錯誤檢查與校正電路512的第二錯誤校正電路512-2,分批從屬于第一編碼群組的實體程序化單元中讀取用戶數(shù)據(jù)至緩沖存儲器508,將所讀取的用戶數(shù)據(jù)之中的多個已校正用戶數(shù)據(jù)傳送至錯誤檢查與校正電路512的第二錯誤校正電路512-2。分批讀取與傳送屬于同一編碼群組的實體程序化單元的已校正用戶數(shù)據(jù)至錯誤檢查與校正電路512的第二錯誤校正電路512-2的方式已配合圖9詳細描述如上,在此不再重復(fù)描述。
在步驟s1009中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會判斷 錯誤檢查與校正電路512的第二錯誤校正電路512-2是否可依據(jù)第一群組同位碼正確校正第一用戶數(shù)據(jù)。
倘若第二錯誤校正電路512-2可依據(jù)第一群組同位碼正確校正第一用戶數(shù)據(jù)時,上述步驟s1005會被執(zhí)行。
倘若第二錯誤校正電路512-2無法依據(jù)第一群組同位碼正確校正第一用戶數(shù)據(jù)時,在步驟s1011中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會傳送讀取錯誤信息給主機系統(tǒng)11。
綜上所述,本發(fā)明的數(shù)據(jù)校正方法、內(nèi)存控制電路單元、內(nèi)存儲存裝置在從實體程序化單元中所讀取的數(shù)據(jù)無法依據(jù)其對應(yīng)的同位碼正確校正時,可更依據(jù)儲存在另一個實體程序化單元的群組同位碼來校正。此外,本發(fā)明的數(shù)據(jù)校正方法、內(nèi)存控制電路單元、內(nèi)存儲存裝置在使用對應(yīng)多個實體程序化單元的群組同位碼來校正數(shù)據(jù)時,可以少量的緩沖存儲器空間來完成數(shù)據(jù)的校正,有效降低的內(nèi)存儲存裝置的成本。
雖然本發(fā)明已以實施例揭示如上,然其并非用以限定本發(fā)明,任何所屬技術(shù)領(lǐng)域中普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的改動與潤飾,故本發(fā)明的保護范圍當(dāng)視所附權(quán)利要求界定范圍為準(zhǔn)。