TWI521531B - 資料讀取方法、記憶體控制電路單元與記憶體儲存裝置 - Google Patents
資料讀取方法、記憶體控制電路單元與記憶體儲存裝置 Download PDFInfo
- Publication number
- TWI521531B TWI521531B TW104106033A TW104106033A TWI521531B TW I521531 B TWI521531 B TW I521531B TW 104106033 A TW104106033 A TW 104106033A TW 104106033 A TW104106033 A TW 104106033A TW I521531 B TWI521531 B TW I521531B
- Authority
- TW
- Taiwan
- Prior art keywords
- data string
- data
- memory
- decoded
- control circuit
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Microelectronics & Electronic Packaging (AREA)
Description
本發明是有關於一種資料讀取方法,且特別是有關於用於可複寫式非揮發性記憶體的一種資料讀取方法、記憶體控制電路單元與記憶體儲存裝置。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,寫入至可複寫式非揮發性記憶體模組的資料都會根據一個錯誤更正碼來編碼,並且從可複寫式非揮發性記憶體模組中所讀取的資料也會經過對應的程序來解碼。然而,錯誤更正碼的更正能力有其上限。例如,若使用渦輪碼演算法或是低密度奇偶檢查校正碼演算法經由迭代方式來實施錯誤更正碼,隨
著迭代解碼的次數增加至一定次數後,在後續的迭代解碼過程中會出現錯誤位元數目不隨著迭代次數的增加而減少的現象。此現象亦稱為錯誤飽和(error floor)。基此,如何能夠對所讀取的資料順利地進行解碼,以獲取原始資料是此領域技術人員所致力的目標。
本發明提供一種資料讀取方法、記憶體控制電路單元與記憶體儲存裝置,可以減少錯誤飽和的發生並且增加資料讀取的正確性。
本發明的一範例實施例提供一種用於可複寫式非揮發性記憶體模組的資料讀取方法,其中可複寫式非揮發性記憶體模組包括多個記憶胞。所述資料讀取方法包括從主機系統接收讀取指令,其中讀取指令指示從此些記憶胞中的多個第一記憶胞讀取資料;發送第一讀取指令序列以從此些第一記憶胞中獲取第一資料串;以及對第一資料串執行錯誤校正解碼程序以產生已解碼第一資料串。所述資料讀取方法還包括若在已解碼第一資料串中已無錯誤位元時,將已解碼第一資料串作為已校正資料傳送給主機系統以回應讀取指令。以及,若在已解碼第一資料串中存有錯誤位元時,發送第二讀取指令序列以從此些第一記憶胞中獲取第二資料串,對已解碼第一資料串與第二資料串進行邏輯運算以獲得調整資料串,依據調整資料串調整已解碼第一資料串以獲得已調整
第一資料串,並且對已調整第一資料串再次執行錯誤校正解碼程序而將解碼後所獲得的資料串作為已解碼第一資料串。
在本發明的一範例實施例中,其中上述發送第一讀取指令序列以從此些第一記憶胞中獲取第一資料串的步驟包括依據第一讀取指令序列使用第一讀取電壓讀取此些第一記憶胞以從此些第一記憶胞中獲取第一資料串。此外,上述發送第二讀取指令序列以從此些第一記憶胞中獲取第二資料串的步驟包括依據第二讀取指令序列使用第二讀取電壓讀取此些第一記憶胞以從此些第一記憶胞中獲取第二資料串,其中第二讀取電壓的電壓值不等於第一讀取電壓的電壓值。
在本發明的一範例實施例中,其中將第一資料串與第二資料串進行邏輯運算以獲得調整資料串的步驟包括對第一資料串與第二資料串進行互斥運算以產生調整資料串。
在本發明的一範例實施例中,其中上述依據調整資料串調整已解碼第一資料串以獲得已調整第一資料串的步驟包括識別已解碼第一資料串之中多個無法識別資料與對應此些無法識別資料的多個無法識別資料位址,並且經由使用調整資料串中對應此些無法識別資料位址的資料對已解碼第一資料串中的此些無法識別資料進行互斥運算來調整已解碼第一資料串以獲得已調整第一資料串。
在本發明的一範例實施例中,所述的資料讀取方法還包括記錄對已調整第一資料串執行錯誤校正解碼程序的次數。以
及,若所述次數大於預定次數時,傳送錯誤訊息。
在本發明的一範例實施例中,其中對第一資料串執行錯誤校正解碼程序以產生已解碼第一資料串的步驟包括使用區塊渦輪碼演算法來執行該錯誤校正解碼程序。
在本發明的一範例實施例中,其中使用區塊渦輪碼演算法來執行該錯誤校正解碼程序的步驟包括經由迭代方式對第一資料串使用博斯-喬赫里-霍克演算法或低密度奇偶檢查校正碼演算法作為輔助解碼演算法以獲得對應第一資料串的最終解碼結果。以及,將最終解碼結果作為已解碼第一資料串。
本發明的一範例實施例提供一種用於控制可複寫式非揮發性記憶體模組的記憶體控制電路單元。所述記憶體控制電路單元包括主機介面、記憶體介面與記憶體管理電路。主機介面用以耦接至主機系統。記憶體介面用以耦接至可複寫式非揮發性記憶體模組,其中可複寫式非揮發性記憶體模組具有多個記憶胞。記憶體管理電路耦接至主機介面與記憶體介面。記憶體管理電路用以從主機系統接收讀取指令,其中讀取指令指示從此些記憶胞中的多個第一記憶胞讀取資料。記憶體管理電路更用以發送第一讀取指令序列以從此些第一記憶胞中獲取第一資料串,並且對第一資料串執行錯誤校正解碼程序以產生已解碼第一資料串。若在已解碼第一資料串中已無錯誤位元時,記憶體管理電路更用以將已解碼第一資料串作為已校正資料傳送給主機系統以回應讀取指令。若在已解碼第一資料串中存有錯誤位元時,記憶體管理電路
更用以發送第二讀取指令序列以從此些第一記憶胞中獲取第二資料串,對已解碼第一資料串與第二資料串進行邏輯運算以獲得調整資料串,依據調整資料串調整已解碼第一資料串以獲得已調整第一資料串,並且對已調整第一資料串再次執行錯誤校正解碼程序而將解碼後所獲得的資料串作為已解碼第一資料串。
在本發明的一範例實施例中,在上述記憶體管理電路更用以發送第一讀取指令序列以從此些第一記憶胞中獲取第一資料串的運作中,記憶體管理電路依據第一讀取指令序列使用第一讀取電壓讀取此些第一記憶胞以從此些第一記憶胞中獲取第一資料串。此外,在上述記憶體管理電路更用以發送第二讀取指令序列以從此些第一記憶胞中獲取第二資料串的運作中,記憶體管理電路依據第二讀取指令序列使用第二讀取電壓讀取此些第一記憶胞以從此些第一記憶胞中獲取第二資料串,其中第二讀取電壓的電壓值不等於第一讀取電壓的電壓值。
在本發明的一範例實施例中,在上述記憶體管理電路將第一資料串與第二資料串進行邏輯運算以獲得調整資料串的運作中,記憶體管理電路對第一資料串與第二資料串進行互斥運算以產生調整資料串。
在本發明的一範例實施例中,在上述記憶體管理電路依據調整資料串調整已解碼第一資料串以獲得已調整第一資料串的運作中,記憶體管理電路識別已解碼第一資料串之中的多個無法識別資料與對應此些無法識別資料的多個無法識別資料位址,並
且經由使用調整資料串中對應此些無法識別資料位址的資料對已解碼第一資料串中的此些無法識別資料進行互斥運算來調整已解碼第一資料串以獲得已調整第一資料串。
在本發明的一範例實施例中,記憶體管理電路記錄對已調整第一資料串執行錯誤校正解碼程序的次數。以及,若所述次數大於預定次數時,記憶體管理電路傳送錯誤訊息至主機系統。
在本發明的一範例實施例中,在上述記憶體管理電路更用以對第一資料串執行錯誤校正解碼程序以產生已解碼第一資料串的運作中,記憶體管理電路使用區塊渦輪碼演算法來執行該錯誤校正解碼程序。
在本發明的一範例實施例中,在上述記憶體管理電路使用區塊渦輪碼演算法來執行該錯誤校正解碼程序的運作中,記憶體管理電路經由迭代方式對第一資料串使用博斯-喬赫里-霍克演算法或低密度奇偶檢查校正碼演算法作為輔助解碼演算法以獲得對應第一資料串的最終解碼結果,並且將最終解碼結果作為已解碼第一資料串。
本發明的一範例實施例提供一種記憶體儲存裝置,其包括連接介面單元、可複寫式非揮發性記憶體模組與記憶體控制電路單元。連接介面單元用以耦接至主機系統。可複寫式非揮發性記憶體模組具有多個記憶胞。記憶體控制電路單元耦接至連接介面單元與可複寫式非揮發性記憶體模組。記憶體控制電路單元用以從主機系統接收讀取指令,其中讀取指令指示從此些記憶胞中
的多個第一記憶胞讀取資料。其中記憶體控制電路單元更用以發送第一讀取指令序列以從此些第一記憶胞中獲取第一資料串,並且對第一資料串執行錯誤校正解碼程序以產生已解碼第一資料串。若在已解碼第一資料串中已無錯誤位元時,記憶體控制電路單元更用以將已解碼第一資料串作為已校正資料傳送給主機系統以回應讀取指令。以及,若在已解碼第一資料串中存有錯誤位元時,記憶體控制電路單元更用以發送第二讀取指令序列以從此些第一記憶胞中獲取第二資料串,對已解碼第一資料串與第二資料串進行邏輯運算以獲得調整資料串,依據調整資料串調整已解碼第一資料串以獲得已調整第一資料串,並且對已調整第一資料串再次執行錯誤校正解碼程序而將解碼後所獲得的資料串作為已解碼第一資料串。
在本發明的一範例實施例中,在上述記憶體控制電路單元更用以發送第一讀取指令序列以從此些第一記憶胞中獲取第一資料串的運作中,記憶體控制電路單元依據第一讀取指令序列使用第一讀取電壓讀取此些第一記憶胞以從此些第一記憶胞中獲取第一資料串。此外,在上述記憶體控制電路單元更用以發送第二讀取指令序列以從此些第一記憶胞中獲取第二資料串的運作中,記憶體控制電路單元依據第二讀取指令序列使用第二讀取電壓讀取此些第一記憶胞以從此些第一記憶胞中獲取第二資料串,其中第二讀取電壓的電壓值不等於第一讀取電壓的電壓值。
在本發明的一範例實施例中,在上述記憶體控制電路單
元將第一資料串與第二資料串進行邏輯運算以獲得調整資料串的運作中,記憶體控制電路單元對第一資料串與第二資料串進行互斥運算以產生調整資料串。
在本發明的一範例實施例中,在上述記憶體控制電路單元依據調整資料串調整已解碼第一資料串以獲得已調整第一資料串的運作中,記憶體控制電路單元識別已解碼第一資料串之中多個無法識別資料與對應此些無法識別資料的多個無法識別資料位址,並且經由使用調整資料串中對應此些無法識別資料位址的資料對已解碼第一資料串中的此些無法識別資料進行互斥運算來調整已解碼第一資料串以獲得已調整第一資料串。
在本發明的一範例實施例中,記憶體控制電路單元記錄對已調整第一資料串執行錯誤校正解碼程序的次數。以及,若所述次數大於預定次數時,記憶體控制電路單元傳送錯誤訊息至主機系統。
在本發明的一範例實施例中,在上述記憶體控制電路單元更用以對第一資料串執行錯誤校正解碼程序以產生已解碼第一資料串的運作中,記憶體控制電路單元使用區塊渦輪碼演算法來執行該錯誤校正解碼程序。
在本發明的一範例實施例中,在上述記憶體控制電路單元使用區塊渦輪碼演算法來執行該錯誤校正解碼程序的運作中,記憶體控制電路單元經由迭代方式對第一資料串使用博斯-喬赫里-霍克演算法或低密度奇偶檢查校正碼演算法作為輔助解碼演
算法以獲得對應第一資料串的最終解碼結果,並且將最終解碼結果作為已解碼第一資料串。
基於上述,本發明所提供的資料讀取方法、記憶體控制電路單元與記憶體儲存裝置,除了可以利用使用區塊渦輪碼來作錯誤校正編碼以保護資料,更可以在解碼的過程中,藉由再次讀取資料來對未能成功解碼資料進行再次解碼以成功地解碼且讀取資料,進而增進資料讀取的正確性與對於所儲存的資料的保護能力。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
11‧‧‧主機系統
12‧‧‧電腦
122‧‧‧微處理器
124‧‧‧隨機存取記憶體
13‧‧‧輸入/輸出裝置
126‧‧‧系統匯流排
128‧‧‧資料傳輸介面
21‧‧‧滑鼠
22‧‧‧鍵盤
23‧‧‧顯示器
24‧‧‧印表機
25‧‧‧隨身碟
26‧‧‧記憶卡
27‧‧‧固態硬碟
31‧‧‧數位相機
32‧‧‧SD卡
33‧‧‧MMC卡
34‧‧‧記憶棒
35‧‧‧CF卡
36‧‧‧嵌入式儲存裝置
10‧‧‧記憶體儲存裝置
402‧‧‧連接介面單元
404‧‧‧記憶體控制電路單元
406‧‧‧可複寫式非揮發性記憶體模組
502‧‧‧記憶體管理電路
504‧‧‧主機介面
506‧‧‧記憶體介面
508‧‧‧緩衝記憶體
510‧‧‧電源管理電路
512‧‧‧錯誤檢查與校正電路
ECCF1‧‧‧錯誤檢查與校正碼框
ECC1‧‧‧錯誤檢查與校正碼
UD‧‧‧資料
DB1~DB32‧‧‧資料區塊
RG1~RG4、CG1~CG8‧‧‧資料群組
BCH1~BCH12‧‧‧錯誤校正碼
700、710、711、712、713、714、720、730、740、741、742‧‧‧資料矩陣
1200‧‧‧無法識別資料
1400‧‧‧對應無法識別資料位址的資料
S1801、S1803、S1805、S1807、S1809、S1811‧‧‧資料讀取方法的步驟
圖1是根據本發明的一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖2是根據本發明的一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
圖3是根據本發明的一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖4是繪示圖1所示的記憶體儲存裝置的概要方塊圖。
圖5是根據本發明的一範例實施例所繪示的可複寫式非揮發性記憶體模組的概要方塊圖。
圖6是根據本發明的一範例實施例所繪示的錯誤檢查與校正碼框的示意圖。
圖7是根據本發明的一範例實施例所繪示的使用區塊渦輪碼進行錯誤校正編碼程序的示意圖。
圖8~圖17是根據本發明的一範例實施例所繪示的使用區塊渦輪碼進行錯誤校正解碼程序的示意圖。
圖18是根據本發明的一範例實施例所繪示的資料讀取方法的流程圖。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1是根據本發明的一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖,並且圖2是根據本發明的一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
請參照圖1,主機系統11一般包括電腦12與輸入/輸出(input/output,I/O)裝置13。電腦12包括微處理器122、隨機存取記憶體(random access memory,RAM)124、系統匯流排126與資料傳輸介面128。輸入/輸出裝置13包括如圖2的滑鼠21、鍵盤22、顯示器23與印表機24。必須瞭解的是,圖2所示的裝置非限制輸
入/輸出裝置13,輸入/輸出裝置13可更包括其他裝置。
在一範例實施例中,記憶體儲存裝置10是透過資料傳輸介面128與主機系統11的其他元件耦接。藉由微處理器122、隨機存取記憶體124與輸入/輸出裝置13的運作可將資料寫入至記憶體儲存裝置10或從記憶體儲存裝置10中讀取資料。例如,記憶體儲存裝置10可以是如圖2所示的隨身碟25、記憶卡26或固態硬碟(Solid State Drive,SSD)27等的可複寫式非揮發性記憶體儲存裝置。
圖3是根據本發明的一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
一般而言,主機系統11為可實質地與記憶體儲存裝置10配合以儲存資料的任意系統。雖然在本範例實施例中,主機系統11是以電腦系統來作說明,然而,另一範例實施例中,主機系統11可以是數位相機、攝影機、通信裝置、音訊播放器或視訊播放器等系統。例如,在主機系統為數位相機(攝影機)31時,可複寫式非揮發性記憶體儲存裝置則為其所使用的SD卡32、MMC卡33、記憶棒(memory stick)34、CF卡35或嵌入式儲存裝置36(如圖3所示)。嵌入式儲存裝置36包括嵌入式多媒體卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒體卡是直接耦接於主機系統的基板上。
圖4是繪示圖1所示的記憶體儲存裝置的概要方塊圖。
請參照圖4,記憶體儲存裝置10包括連接介面單元402、
記憶體控制電路單元404與可複寫式非揮發性記憶體模組406,其中可複寫式非揮發性記憶體模組406具有多個實體抹除單元410(0)~410(N)。
在本範例實施例中,連接介面單元402是相容於序列先進附件(Serial Advanced Technology Attachment,SATA)標準。然而,必須瞭解的是,本發明不限於此,連接介面單元402亦可以是符合並列先進附件(Parallel Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)1394標準、高速周邊零件連接介面(Peripheral Component Interconnect Express,PCI Express)標準、通用序列匯流排(Universal Serial Bus,USB)標準、安全數位(Secure Digital,SD)介面標準、超高速一代(Ultra High Speed-I,UHS-I)介面標準、超高速二代(Ultra High Speed-II,UHS-II)介面標準、記憶棒(Memory Stick,MS)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、嵌入式多媒體儲存卡(Embedded Multimedia Card,eMMC)介面標準、通用快閃記憶體(Universal Flash Storage,UFS)介面標準、小型快閃(Compact Flash,CF)介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。連接介面單元402可與記憶體控制電路單元404封裝在一個晶片中,或者連接介面單元402是佈設於一包含記憶體控制電路單元404之晶片外。
記憶體控制電路單元404用以執行以硬體型式或韌體型
式實作的多個邏輯閘或控制指令,並且根據主機系統11的指令在可複寫式非揮發性記憶體模組406中進行資料的寫入、讀取與抹除等運作。
可複寫式非揮發性記憶體模組406是耦接至記憶體控制電路單元404,並且用以儲存主機系統11所寫入之資料。可複寫式非揮發性記憶體模組406可以是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組、多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元資料的快閃記憶體模組)、複數階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元資料的快閃記憶體模組)、其他快閃記憶體模組或其他具有相同特性的記憶體模組。
圖5是根據本發明實施例所繪示之記憶體控制電路單元的概要方塊圖。
請參照圖5,記憶體控制電路單元404包括記憶體管理電路502、主機介面504、記憶體介面506、緩衝記憶體508、電源管理電路510與錯誤檢查與校正電路512。
記憶體管理電路502用以控制記憶體控制電路單元404的整體運作。具體來說,記憶體管理電路502具有多個控制指令,並且在記憶體儲存裝置100運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。
在本範例實施例中,記憶體管理電路502的控制指令是
以韌體型式來實作。例如,記憶體管理電路502具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置100運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在本發明另一範例實施例中,記憶體管理電路502的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組406的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路502具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有驅動碼,並且當記憶體控制電路單元404被致能時,微處理器單元會先執行此驅動碼段來將儲存於可複寫式非揮發性記憶體模組406中之控制指令載入至記憶體管理電路502的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。
此外,在本發明另一範例實施例中,記憶體管理電路502的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路502包括微控制器、記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路。記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路是電性連接至微控制器。其中,記憶胞管理電路用以管理可複寫式非揮發性記憶體模組406的實體抹除單元;記憶體寫入電路用以對可複寫式非揮發性記憶體模組406下達寫入指令以將資料寫
入至可複寫式非揮發性記憶體模組406中;記憶體讀取電路用以對可複寫式非揮發性記憶體模組406下達讀取指令以從可複寫式非揮發性記憶體模組406中讀取資料;記憶體抹除電路用以對可複寫式非揮發性記憶體模組406下達抹除指令以將資料從可複寫式非揮發性記憶體模組406中抹除;而資料處理電路用以處理欲寫入至可複寫式非揮發性記憶體模組406的資料以及從可複寫式非揮發性記憶體模組406中讀取的資料。
主機介面504是電性連接至記憶體管理電路502並且用以接收與識別主機系統1000所傳送的指令與資料。也就是說,主機系統1000所傳送的指令與資料會透過主機介面504來傳送至記憶體管理電路502。在本範例實施例中,主機介面504是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面504亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、UHS-I介面標準、UHS-II介面標準、MS標準、MMC標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面506是電性連接至記憶體管理電路502並且用以存取可複寫式非揮發性記憶體模組406。也就是說,欲寫入至可複寫式非揮發性記憶體模組406的資料會經由記憶體介面506轉換為可複寫式非揮發性記憶體模組406所能接受的格式。具體來說,若記憶體管理電路502要存取可複寫式非揮發性記憶體模組406時,記憶體介面506會傳送對應的指令序列。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。例如,在讀取
指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
緩衝記憶體508是電性連接至記憶體管理電路502並且用以暫存來自於主機系統1000的資料與指令或來自於可複寫式非揮發性記憶體模組406的資料。記憶體控制電路單元404在緩衝記憶體508中規劃暫存來自於主機系統1000的資料或來自於可複寫式非揮發性記憶體模組406的資料,以使資料組織成預定單位大小或是成為傳輸單元大小,並寫入到可複寫式非揮發性記憶體模組406或是回傳到主機系統。此外,緩衝記憶體508還可暫存記憶體控制電路單元404所使用的系統管理資料,例如,檔案配置表或是邏輯-單元映射表等等。
電源管理電路510是電性連接至記憶體管理電路502並且用以控制記憶體儲存裝置100的電源。
錯誤檢查與校正電路512是電性連接至記憶體管理電路502並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路502從主機系統1000中接收到寫入指令時,錯誤檢查與校正電路512會為對應此寫入指令的資料執行錯誤校正編碼程序以產生對應的錯誤校正碼(error correcting code,ECC code)及/或錯誤檢查碼(error detecting code,EDC),並且記憶體管理電路502會將對應此寫入指令的資料與對應的錯誤校正碼或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組406中。之後,當記憶體管理電路502從可複寫式非揮發性記憶體模組406中讀取資料時會同時讀取此資料對應的錯誤校正碼及/或錯誤檢查碼,
並且錯誤檢查與校正電路512會依據此錯誤校正碼及/或錯誤檢查碼對所讀取的資料執行錯誤校正解碼程序。
如上所述,在記憶體儲存裝置100的錯誤檢查與校正電路512會被配置來驗證可複寫式非揮發性記憶體模組406中所儲存的資料是否正確。然而,在執行錯誤校正程序時,無論是編碼或解碼步驟,錯誤檢查與校正電路512都是需要清楚知道所要保護的資料長度為何,如此才能計算出正確的特徵碼,以檢查出正確的錯誤位置,進而更正錯誤位元。在本範例實施例中,當記憶體控制電路單元404(或記憶體管理電路502)接收到資料時,記憶體控制電路單元404(或記憶體管理電路502)會先將資料分割為多個碼框(frame),之後錯誤檢查與校正電路512再進行錯誤校正編碼程序以產生各碼框對應的錯誤校正碼,以將這些碼框與其各自所對應的錯誤校正碼分別編碼形成為錯誤檢查與校正碼框。在此,錯誤檢查與校正碼框的大小是根據傳輸單位的大小來分割,且此傳輸單位的大小是依據可複寫式非揮發性記憶體模組406的規格書來決定。也就是說,每個傳輸單位須保護(protect)多少個位元(bit)。例如,傳輸單位為512bytes,保護12個位元,記憶體控制電路單元404(或記憶體管理電路502)會將資料切割為每單位為512bytes。而錯誤檢查與校正電路512則會針對每512bytes的資料進行錯誤校正編碼程序,故每個錯誤檢查與校正碼框的大小就是512bytes。但必須了解的是,本發明不限於此,在另一範例實施例中,錯誤檢查與校正碼框的大小亦可以是1K bytes或2K bytes
等等。
在本範例實施例中,記憶體控制電路單元404(或記憶體管理電路502)會以錯誤檢查與校正碼框為單位來對資料解碼以讀取資料。舉例來說,假設記憶體控制電路單元404(或記憶體管理電路502)從主機系統接收到讀取指令,其中讀取指令指示從可複寫式非揮發性記憶體模組406中的多個記憶胞(亦稱,第一記憶胞)中讀取資料。在本範例實施例中,假設此欲讀取的資料被劃分為1個錯誤檢查與校正碼框,且儲存在此些第一記憶胞中。記憶體控制電路單元404(或記憶體管理電路502)會發送讀取指令序列(亦稱,第一讀取指令序列)至可複寫式非揮發性記憶體模組406以從儲存對應欲讀取資料的錯誤檢查與校正碼框的此些第一記憶胞中獲取資料串(亦稱,第一資料串),對第一資料串執行錯誤校正解碼程序以產生對應欲讀取資料的解碼成功的已校正資料,並且將已校正資料傳送給主機系統以回應讀取指令。應注意的是,若欲讀取的資料被劃分為2個以上的錯誤檢查與校正碼框,記憶體控制電路單元404(或記憶體管理電路502)會讀取對應每一錯誤檢查與校正碼框的資料串,對所讀取的資料串進行錯誤校正解碼程序,並且在成功地校正所讀取的資料串後合併資料串成為已校正資料並且傳送至主機系統以回應讀取指令。
在本範例實施例中,錯誤檢查與校正電路512所使用的是區塊渦輪碼(block turbo code,BTC)來進行錯誤校正編碼/解碼程序。
圖6是根據本發明的一範例實施例所繪示的錯誤檢查與校正碼框的示意圖,並且圖7是根據本發明的一範例實施例所繪示的使用區塊渦輪碼進行錯誤校正編碼程序的示意圖。必須瞭解的是,在此描述錯誤檢查與校正電路512對資料之運作時,“選擇”、“分割”、“劃分”、“關聯”、“排列”等詞是邏輯上的概念。也就是說,錯誤檢查與校正電路512所處理的資料本身的儲存位置並未更動,而是邏輯上對資料進行操作。
請參照圖6,假設錯誤檢查與校正電路512對資料UD進行錯誤校正編碼程序,且資料UD被劃分為1個錯誤檢查與校正框ECCF1以進行錯誤校正編碼程序,其中錯誤檢查與校正框ECCF1被儲存於多個記憶胞(亦稱,第一記憶胞)中。在本範例實施例中,錯誤檢查與校正電路512會使用區塊渦輪碼演算法來對資料UD執行錯誤校正編碼程序,將資料UD劃分為多個資料群組,並且分別對此些資料群組進行編碼以獲得對應錯誤檢查與校正碼框ECCF1的錯誤校正碼ECC1。
請參照圖6與圖7,舉例來說,首先,錯誤檢查與校正電路512會將資料UD分割為多個資料區塊(data bits),如圖6所繪示的資料區塊DB1~DB32。應注意的是,在本範例實施例中,為了便於說明,每一資料區塊包含1個位元資料,但本發明不限於此。例如,在其他實施例中,每一資料區塊亦可包含2個或是多於2個的位元資料。
接著,錯誤檢查與校正電路512將資料區塊DB1~DB32
排列為一個8乘以4的二維(橫向與縱向)資料矩陣,並且依照維度來劃分為多個縱向與橫向的資料群組。例如,橫向排列的資料區塊DB1~DB8會被劃分為資料群組RG1;資料區塊DB9~DB16會被劃分為資料群組RG2;資料區塊DB17~DB24會被劃分為資料群組RG3;資料區塊DB25~DB32會被劃分為資料群組RG4。此外,縱向排列的資料區塊DB1、DB9、DB17、DB25會被劃分為資料群組CG1;資料區塊DB2、DB10、DB18、DB26會被劃分為資料群組CG2;資料區塊DB3、DB11、DB19、DB27會被劃分為資料群組CG3;資料區塊DB4、DB12、DB20、DB28會被劃分為資料群組CG4;資料區塊DB5、DB13、DB21、DB29會被劃分為資料群組CG5;資料區塊DB6、DB14、DB22、DB30會被劃分為資料群組CG6;資料區塊DB7、DB15、DB23、DB31會被劃分為資料群組CG7;資料區塊DB8、DB16、DB24、DB32會被劃分為資料群組CG8。
在本範例實施例中,在將資料區塊DB1~DB32劃分為橫向的資料群組RG1~RG4與縱向的資料群組CG1~CG8後,錯誤檢查與校正電路512會使用博斯-喬赫里-霍克碼(以下稱BCH)作為輔助編碼演算法來分別對此些資料群組做編碼,以產生對應此些資料群組的錯誤校正碼。也就是說,對於橫向的資料群組RG1~RG4,錯誤檢查與校正電路512會經由BCH演算法對劃分至資料群組RG1的資料(即,資料區塊DB1~DB8)進行編碼以產生對應資料群組RG1的資料的錯誤校正碼BCH1。依此類推,錯誤檢查與校正
電路512會產生對應資料群組RG2的錯誤校正碼BCH2;產生對應資料群組RG3的錯誤校正碼BCH3;產生對應資料群組RG4的錯誤校正碼BCH4。此外,對於縱向的資料群組CG1~CG8,錯誤檢查與校正電路512亦會產生對應資料群組CG1的錯誤校正碼BCH5;產生對應資料群組CG2的錯誤校正碼BCH6;產生對應資料群組CG3的錯誤校正碼BCH7;產生對應資料群組CG4的錯誤校正碼BCH8;產生對應資料群組CG5的錯誤校正碼BCH9;產生對應資料群組CG6的錯誤校正碼BCH10;產生對應資料群組CG7的錯誤校正碼BCH11;產生對應資料群組CG8的錯誤校正碼BCH12。藉此,資料群組RG1~RG4與資料群組CG1~CG8中的資料可分別被對應的錯誤校正碼BCH1~BCH4與錯誤校正碼BCH5~BCH12保護。應注意的是,本發明並不限於使用博斯-喬赫里-霍克碼作為輔助編碼演算法來分別對此些資料群組做編碼。例如,在另一範例實施例中,錯誤檢查與校正電路512會使用低密度奇偶檢查校正碼作為輔助編碼演算法來分別對此些資料群組做編碼。
值得一提的是,在本範例實施例中,錯誤檢查與校正電路512會先將資料區塊劃分至多個資料群組之後,再對每一資料群組進行編碼以產生對應每一資料群組的錯誤校正碼,但本發明不限於此。例如,在另一範例實施例中,錯誤檢查與校正電路512可不先將資料區塊劃分為此些資料群組,並且直接根據資料區塊的排列方式來對資料區塊作錯誤校正編碼。舉例來說,錯誤檢查
與校正電路512會直接對資料區塊DB1~DB8來進行錯誤校正編碼程序,以產生對應資料區塊DB1~DB8的錯誤校正碼BCH1。
請參照圖6,在本範例實施例中,錯誤檢查與校正電路512會將錯誤校正碼BCH1~BCH12合併成為對應錯誤檢查與校正碼框ECCF1的錯誤檢查與校正碼ECC1,並且儲存已完成錯誤校正編碼程序的錯誤檢查與校正碼框ECCF1與錯誤檢查與校正碼ECC1。爾後,記憶體控制電路單元404(或記憶體管理電路502)可透過錯誤檢查與校正碼ECC1對錯誤檢查與校正碼框ECCF1進行錯誤校正解碼程序以讀取資料UD。
圖8~圖17是根據本發明的一範例實施例所繪示的使用區塊渦輪碼進行錯誤校正解碼程序的示意圖。
請同時參照圖6、圖7與圖8,舉例來說,假設記憶體控制電路單元404(或記憶體管理電路502)從主機系統接收到讀取指令,其中讀取指令指示從可複寫式非揮發性記憶體模組406的多個記憶胞(亦稱,第一記憶胞)中讀取資料UD。記憶體控制電路單元404(或記憶體管理電路502)會發送讀取指令序列以從此些第一記憶胞中獲取資料串(亦稱,第一資料串)。應注意的是,記憶體控制電路單元404(或記憶體管理電路502)會依據第一讀取指令序列使用第一讀取電壓讀取此些第一記憶胞以從此些第一記憶胞中獲取第一資料串。
如上所述,由於資料UD經由上述的錯誤校正編碼程序成為錯誤檢查與校正碼框ECCF1。因此,在對資料UD的錯誤校
正解碼程序中,錯誤檢查與校正電路512會將從儲存錯誤檢查與校正碼框ECCF1的第一記憶胞所讀取的第一資料串分割為32個資料區塊DB1~DB32,並且將資料區塊DB1~DB32排列成二維資料矩陣710。其中,對應資料區塊DB1~DB32的資料群組的劃分方法相同於圖7中的例子,不再贅述於此。錯誤檢查與校正電路512會從對應錯誤檢查與校正碼框ECCF1的錯誤檢查與校正碼ECC1中獲取對應每一資料群組的錯誤校正碼BCH1~BCH12。在本範例實施例中,假設錯誤檢查與校正電路512的保護能力是1個位元。換言之,若對應錯誤校正碼BCH1~BCH12的其中之一的資料群組中的資料存在有2個以上的錯誤位元,錯誤檢查與校正電路512便無法根據此資料群組所對應的錯誤校正碼來成功地解碼此資料群組的資料。
舉例來說,假設在第一資料串中存在有多個錯誤位元(如圖8所繪示的網點區塊),此些錯誤位元分別是資料區塊DB4、DB10、DB11、DB12、DB13、DB17、DB18、DB23、DB24、DB31、DB32。如上所述,由於錯誤檢查與校正電路512的保護能力是1個位元且由資料區塊DB9~DB16所形成的資料群組RG2的錯誤位元數目為4個。因此,錯誤檢查與校正電路512無法根據錯誤校正碼BCH2來解碼錯誤校正碼BCH2所對應的資料群組RG2的資料。但是,錯誤檢查與校正電路512卻可以利用對應其他資料群組的錯誤校正碼以迭代方式來進行錯誤位元的校正。
假設錯誤檢查與校正電路512會先對橫向排列的資料區
塊所形成的多個資料群組與對應此些資料群組的錯誤校正碼進行解碼,再對縱向排列的資料區塊所形成的多個資料群組與對應此些資料群組的錯誤校正碼進行解碼。請同時參照圖7、圖8與圖9,在首次對第一資料串進行的錯誤校正解碼程序中,錯誤檢查與校正電路512進行了第一次的橫向迭代解碼。即,錯誤檢查與校正電路512會透過錯誤校正碼BCH1來解碼資料區塊DB1~DB8;透過錯誤校正碼BCH2來解碼資料區塊DB9~DB16;透過錯誤校正碼BCH3來解碼資料區塊DB17~DB24;透過錯誤校正碼BCH4來解碼資料區塊DB25~DB32。應注意的是,上述橫向解碼或是縱向解碼的先後順序僅為說明之用,本發明不限於此。
由於在圖8中的資料區塊DB1~DB8所形成的資料群組RG1僅具有1個錯誤位元(即,圖8所繪示的資料區塊DB4),錯誤檢查與校正電路512可成功地透過對應資料群組RG1的錯誤校正碼BCH1來解碼出資料群組RG1的資料。但是,由於在圖8中的資料區塊DB9~DB16所形成的資料群組RG2具有4個錯誤位元(即,圖8所繪示的資料區塊DB10、DB11、DB12、DB13),錯誤檢查與校正電路512不能透過對應資料群組RG2的錯誤校正碼BCH2來解碼出資料群組RG2的資料。換言之,發生錯誤的資料區塊DB10~DB13沒有被校正。依此類推,在經過第一次錯誤校正解碼程序的第一次橫向迭代解碼後,如圖9所繪示,錯誤檢查與校正電路512成功地校正發生錯誤的資料區塊DB4(以粗體底線表示),並且獲得資料矩陣711。
如上所述,在完成橫向的解碼且獲得資料矩陣712後,錯誤檢查與校正電路512會對資料矩陣712進行縱向的解碼。即,錯誤檢查與校正電路512會透過錯誤校正碼BCH5來解碼資料區塊DB1、DB9、DB17、DB25;透過錯誤校正碼BCH6來解碼資料區塊DB2、DB10、DB18、DB26;透過錯誤校正碼BCH7來解碼資料區塊DB3、DB11、DB19、DB27;透過錯誤校正碼BCH8來解碼資料區塊DB4、DB12、DB20、DB28;透過錯誤校正碼BCH9來解碼資料區塊DB5、DB13、DB21、DB29;透過錯誤校正碼BCH10來解碼資料區塊DB6、DB14、DB22、DB30;透過錯誤校正碼BCH11來解碼資料區塊DB7、DB15、DB23、DB31;透過錯誤校正碼BCH12來解碼資料區塊DB8、DB16、DB24、DB32。
相似於上述橫向的解碼,由於在圖9中的資料區塊DB1、DB9、DB17、DB25所形成的資料群組CG1僅具有1個錯誤位元(即,圖9所繪示的資料區塊DB17),錯誤檢查與校正電路512可成功地透過對應資料群組CG1的錯誤校正碼BCH5來解碼出資料群組CG1的資料。但是,由於在圖8中的資料區塊DB2、DB10、DB18、DB26所形成的資料群組CG2具有2個錯誤位元(即,圖8所繪示的資料區塊DB10、DB18),錯誤檢查與校正電路512不能透過對應資料群組CG2的錯誤校正碼BCH6來解碼出資料群組CG2的資料。換言之,發生錯誤的資料區塊DB10、DB18沒有被校正。依此類推,在經過第一次錯誤校正解碼程序的第一次縱向迭代解碼後,如圖10所繪示,錯誤檢查與校正電路512成功地校
正發生錯誤的資料區塊DB4、DB11、DB12、DB13(以粗體底線表示),並且獲得資料矩陣712。
在完成第一次錯誤校正解碼程序的第一次橫向與縱向迭代解碼之後,錯誤檢查與校正電路512會繼續以迭代方式來解碼資料矩陣712。相同地,錯誤檢查與校正電路512會先對資料矩陣712開始進行橫向的解碼。請同時參照圖10與圖11,由於經過第一次錯誤校正解碼程序的第一次縱向迭代解碼後,錯誤檢查與校正電路512成功地校正不能經由第一次錯誤校正解碼程序的第一次橫向迭代解碼校正的錯誤的資料區塊DB11、DB12、DB13,並且對於資料區塊DB9~DB16所形成的資料群組RG2僅具有1個錯誤位元(即,資料區塊DB10)。因此,在接續的第一次錯誤校正解碼程序的第二次橫向迭代解碼中,錯誤檢查與校正電路512可以使用對應資料群組RG2的錯誤校正碼BCH2來解碼資料群組RG2。換言之,資料區塊DB10可以被成功地校正。請參照圖11,經過第一次錯誤校正解碼程序的第二次橫向迭代解碼後,資料區塊DB10被成功地校正,錯誤位元僅剩下資料區塊DB18、DB23、DB24、DB31、DB32,並且產生資料矩陣713。
相似地,在完成第一次錯誤校正解碼程序的第二次橫向迭代解碼之後,錯誤檢查與校正電路512會繼續進行第一次錯誤校正解碼程序的第二次縱向迭代解碼來解碼資料矩陣713。請參照圖10、圖11與圖12,原本在圖10中,第一次錯誤校正解碼程序的第一次縱向迭代解碼無法校正發生錯誤的資料區塊DB10、
DB18。但是,由於第一次錯誤校正解碼程序的第二次橫向迭代解碼成功地校正資料區塊DB10,並且使得縱向排列的資料區塊DB2、DB10、DB18、DB26所形成的資料群組CG2僅具有1個錯誤位元(如圖11所繪示的資料區塊DB18)。因此,在圖12中的第一次錯誤校正解碼程序的第二次縱向迭代解碼中,錯誤檢查與校正電路512可以藉由對應資料群組CG2的錯誤校正碼BCH6來校正發生錯誤的資料區塊DB18。請參照圖12,在完成第一次錯誤校正解碼程序的第二次縱向迭代解碼後,錯誤位元僅剩下資料區塊DB23、DB24、DB31、DB32,並且產生了資料矩陣714。
應注意的是,相似於上述步驟,錯誤檢查與校正電路512再次對資料矩陣714進行橫向與縱向的迭代解碼,但是發生錯誤的資料區塊DB23、DB24、DB31、DB32依然不能被成功地校正。也就是說,資料矩陣714是本次錯誤解碼校正程序的最終解碼結果。錯誤檢查與校正電路512會將資料矩陣714輸出,並且記憶體控制電路單元404(或記憶體管理電路502)會將資料矩陣714作為對應第一資料串的已解碼第一資料串。
由於本次錯誤校正解碼程序的最終解碼結果的已解碼第一資料串依然存在有不能被成功地校正的資料區塊,在本範例實施例中,記憶體控制電路單元404(或記憶體管理電路502)會繼續處理已解碼第一資料串。首先,記憶體控制電路單元404(或記憶體管理電路502)會判斷在已解碼第一資料串中的無法識別資料與對應無法識別資料的無法識別資料位址。具體來說,由於記憶體
控制電路單元404(或記憶體管理電路502)可判定在已解碼第一資料串(即,資料矩陣714)中已經被成功地校正的資料區塊為資料區塊DB1~DB22、DB25~DB30,且記憶體控制電路單元404(或記憶體管理電路502)無法判斷在資料區塊DB23、DB24、DB31、DB32是否皆發生錯誤。因此,記憶體控制電路單元404(或記憶體管理電路502)會識別資料區塊DB23、DB24、DB31、DB32為無法識別資料,並且將對應此些無法識別資料的位址作為無法識別資料位址1200(如圖12所繪示的黑色粗框區域1200)。
在本範例實施例中,若已解碼第一資料串中存有錯誤位元時,記憶體控制電路單元404(或記憶體管理電路502)會發送另一讀取指令序列(亦稱,第二讀取指令序列)以從此些第一記憶胞再次獲取資料串(亦稱,第二資料串)。例如,在一範例實施例中,記憶體控制電路單元404(或記憶體管理電路502)會依據第二讀取指令序列使用第二讀取電壓讀取此些第一記憶胞以從此些第一記憶胞中獲取第二資料串,並且第二讀取電壓的電壓值等於上述第一讀取電壓的電壓值。然而,必須了解的是,第二讀取電壓的電壓值亦可不等於上述第一讀取電壓的電壓值。例如,在另一範例實施例中,記憶體控制電路單元404(或記憶體管理電路502)會在使用第二讀取電壓讀取此些第一記憶胞之前,先檢測第一記憶胞的臨界電壓分布,再根據檢測結果(如,臨界電壓分布的偏移量)來使用適當的第二讀取電壓的電壓值以讀取第一記憶胞,其中第二讀取電壓的電壓值會不同於第一讀取電壓的電壓值。藉此,記憶體
控制電路單元404(或記憶體管理電路502)會較正確地識別第一記憶胞的儲存狀態。應注意的是,本發明並不限於調整第二讀取電壓的電壓值的調整方法。例如,記憶體控制電路單元404(或記憶體管理電路502)可不需進行檢測,並且根據預定讀取電壓調整表來調整第二讀取電壓的電壓值。
請參照圖13,相似於上述步驟,記憶體控制電路單元404(或記憶體管理電路502)會將第二資料串排列為資料矩陣720。假設在第二資料串(即,資料矩陣720)中具有多個錯誤位元,此些錯誤位元為資料區塊DB4、DB10~13、DB16、DB17~DB18、DB23~DB24、DB30~DB31。
請同時參照圖12、圖13與圖14,記憶體控制電路單元404(或記憶體管理電路502)會對在上次錯誤校正解碼程序所獲得的已解碼第一資料串(即,資料矩陣714)與第二資料串(即,資料矩陣720)做互斥運算以獲得調整資料串(如圖14所繪示的資料矩陣730),以判定第二資料串與已解碼第一資料串的差異處(如圖14所繪示的斜線資料區塊DB16、DB30、DB32)。
在本範例實施例中,記憶體控制電路單元404(或記憶體管理電路502)會依據調整資料串調整已解碼第一資料串以獲得已調整第一資料串。
具體來說,首先,記憶體控制電路單元404(或記憶體管理電路502)會藉由從已解碼第一資料串所辨識的無法識別資料與無法識別資料位址,來辨識在調整資料串中對應無法識別資料位
址的資料1400(如圖14所繪示的黑色粗框區域1400)。
接著,請同時參照圖12、圖14與圖15,記憶體控制電路單元404(或記憶體管理電路502)會使用調整資料串中對應此些無法識別資料位址的資料1400對已解碼第一資料串中的此些無法識別資料1200進行互斥運算以調整已解碼第一資料串成為已調整第一資料串(即,圖15中的資料矩陣740)。換言之,記憶體控制電路單元404(或記憶體管理電路502)不會去調整已解碼第一資料串中已經成功校正的資料區塊,而是會經由使用第二資料串與已解碼資料串在無法識別資料位址上的資料差異來調整已解碼第一資料串的無法識別資料。藉此,記憶體控制電路單元404(或記憶體管理電路502)可繼續對調整已解碼第一資料串(即,資料矩陣714)所獲得的已調整第一資料串(即,資料矩陣740)進行錯誤校正解碼程序(即,第二次錯誤校正解碼程序)。
請同時參照圖15與圖16,由於經過上述調整資料串的調整,已解碼第一資料串成為已調整第一資料串,並且原本在已解碼第一資料串(即,資料矩陣714)中具有2個錯誤位元(即,資料區塊DB31、DB32)的資料區塊DB25~DB32所形成的資料群組成為已調整第一資料串(即,資料矩陣740)中僅具有1個錯誤位元(即,資料區塊DB31)的資料群組。也就是說,在圖15的已調整第一資料串(資料矩陣740)中僅具有1個錯誤位元的資料區塊DB24~DB32可經由使用錯誤校正碼BCH4來被校正。相似於上述步驟,經過第二次錯誤校正的第一次橫向迭代解碼後,原本發生
錯誤的資料區塊DB31被成功地校正,發生錯誤的資料區塊僅剩下資料區塊DB23、DB24,並且產生資料矩陣741。
請同時參照圖16與圖17,相似於上述步驟,記憶體控制電路單元404(或記憶體管理電路502)會繼續進行縱向的解碼。再經過第二次錯誤校正的第一次縱向迭代解碼後,發生錯誤的資料區塊DB23、DB24亦被校正,並且產生已無任何錯誤位元的資料矩陣742。錯誤檢查與校正電路512會將已成功完成校正的資料矩陣742轉換為已解碼第一資料串輸出。例如,已解碼第一資料串是由成功解碼的資料區塊DB1~DB32循序排列而成。記憶體控制電路單元404(或記憶體管理電路502)會判斷已解碼第一資料串是否存有錯誤位元。由於已解碼第一資料串(即,資料矩陣742)中已沒有存在任何錯誤位元,記憶體控制電路單元404(或記憶體管理電路502)會將已解碼第一資料串做為已校正資料並且傳送已校正資料至主機系統以回應讀取指令。
值得一提的是,上述將從此些第一記憶胞中所讀取的資料串分割為32個資料區塊並且將此些資料區塊排列成8乘以4的二維資料矩陣的方式僅為說明之用,本發明不限於此。例如,在其他實施例中,從此些第一記憶胞所讀取的資料串可被分割為少於32個或是多餘32個的資料區塊,並且此些分割後的資料區塊可排列成二維或是三維的任意長寬(高)比例的資料矩陣。接著,再對此些資料區塊所屬的多個資料群組作錯誤校正編碼或解碼程序,以獲得對應此些資料群組的錯誤校正碼或是校正發生錯誤的
資料區塊。
應注意的是,記憶體控制電路單元404(或記憶體管理電路502)還會記錄對已調整第一資料串執行該錯誤校正解碼程序的次數。若所述次數大於預定次數時,記憶體控制電路單元404(或記憶體管理電路502)傳送錯誤訊息至主機系統以回應讀取指令,其中所述錯誤訊息用以表示無法讀取讀取指令所欲讀取的資料。換言之,若是多個經由從再次讀取第一記憶胞所獲得的資料串與經過前次錯誤解碼程序所獲得的已解碼第一資料串所獲得的已調整資料串皆不能被成功地解碼,記憶體控制電路單元404(或記憶體管理電路502)不再嘗試去調整已解碼第一資料串,而停止對所獲得的資料串的錯誤校正解碼程序,並且傳送錯誤訊息至主機系統。應注意的是,廠商可根據自身需求來設定所述預定次數的數值。
圖18是根據本發明的一範例實施例所繪示的資料讀取方法的流程圖。
首先,在步驟S1801中,記憶體控制電路單元404(或記憶體管理電路502)從主機系統接收讀取指令,其中讀取指令指示從此些記憶胞中的多個第一記憶胞讀取資料。在步驟S1803中,記憶體控制電路單元404(或記憶體管理電路502)發送第一讀取指令序列以從此些第一記憶胞中獲取第一資料串。
在步驟S1805中,記憶體控制電路單元404(或記憶體管理電路502)對第一資料串執行錯誤校正解碼程序以產生已解碼第
一資料串。在步驟S1807中記憶體控制電路單元404(或記憶體管理電路502)判斷已解碼第一資料串是否存在錯誤位元。
若在已解碼第一資料串中已無錯誤位元時,在步驟S1809中,記憶體控制電路單元404(或記憶體管理電路502)將已解碼第一資料串作為已校正資料傳送給主機系統以回應讀取指令,並結束整個流程。若在已解碼第一資料串中存有錯誤位元時,在步驟S1811中,記憶體控制電路單元404(或記憶體管理電路502)發送第二讀取指令序列以從此些第一記憶胞中獲取第二資料串,對已解碼第一資料串與第二資料串進行邏輯運算以獲得調整資料串,依據調整資料串調整已解碼第一資料串以獲得已調整第一資料串,將對已調整第一資料串再次執行錯誤校正解碼程序所獲得的資料串作為已解碼第一資料串,並且接續步驟S1807。
綜上所述,本發明所提供的資料讀取方法、記憶體控制電路單元與記憶體儲存裝置,除了可以利用區塊渦輪碼來作錯誤校正編碼以保護資料,更可以在解碼的過程中,藉由再次讀取資料來對未能成功解碼資料進行再次解碼以成功地解碼且讀取資料,進而增進資料讀取的正確性與對於所儲存的資料的保護能力。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S1801、S1803、S1805、S1807、S1809、S1811‧‧‧資料讀取方法的步驟
Claims (21)
- 一種資料讀取方法,用於一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括多個記憶胞,該資料讀取方法包括:從一主機系統接收一讀取指令,其中該讀取指令指示從該些記憶胞中的多個第一記憶胞讀取一資料;發送一第一讀取指令序列以從該些第一記憶胞中獲取一第一資料串;對該第一資料串執行一錯誤校正解碼程序以產生一已解碼第一資料串;若在該已解碼第一資料串中已無錯誤位元時,將該已解碼第一資料串作為一已校正資料傳送給該主機系統以回應該讀取指令;以及若在該已解碼第一資料串中存有錯誤位元時,發送一第二讀取指令序列以從該些第一記憶胞中獲取一第二資料串,對該已解碼第一資料串與該第二資料串進行一邏輯運算以獲得一調整資料串,依據該調整資料串調整該已解碼第一資料串以獲得一已調整第一資料串,並且對該已調整第一資料串再次執行該錯誤校正解碼程序而將解碼後所獲得的資料串作為該已解碼第一資料串。
- 如申請專利範圍第1項所述的資料讀取方法,其中上述發送該第一讀取指令序列以從該些第一記憶胞中獲取該第一資料串的步驟包括: 依據該第一讀取指令序列使用一第一讀取電壓讀取該些第一記憶胞以從該些第一記憶胞中獲取該第一資料串,其中上述發送該第二讀取指令序列以從該些第一記憶胞中獲取該第二資料串的步驟包括:依據該第二讀取指令序列使用一第二讀取電壓讀取該些第一記憶胞以從該些第一記憶胞中獲取該第二資料串,其中該第二讀取電壓的電壓值不等於該第一讀取電壓的電壓值。
- 如申請專利範圍第1項所述的資料讀取方法,其中將該已解碼第一資料串與該第二資料串進行該邏輯運算以獲得該調整資料串的步驟包括:對該已解碼第一資料串與該第二資料串進行一互斥運算以產生該調整資料串。
- 如申請專利範圍第1項所述的資料讀取方法,其中上述依據該調整資料串調整該已解碼第一資料串以獲得該已調整第一資料串的步驟包括:識別該已解碼第一資料串之中多個無法識別資料與對應該些無法識別資料的多個無法識別資料位址;以及使用該調整資料串中對應該些無法識別資料位址的資料對該已解碼第一資料串中的該些無法識別資料進行一互斥運算來調整該已解碼第一資料串以獲得該已調整第一資料串。
- 如申請專利範圍第1項所述的資料讀取方法,更包括:記錄對該已調整第一資料串執行該錯誤校正解碼程序的一次 數;以及若該次數大於一預定次數時,傳送一錯誤訊息至該主機系統。
- 如申請專利範圍第1項所述的資料讀取方法,其中對該第一資料串執行該錯誤校正解碼程序以產生該已解碼第一資料串的步驟包括:使用一區塊渦輪碼演算法來執行該錯誤校正解碼程序。
- 如申請專利範圍第6項所述的資料讀取方法,其中使用該區塊渦輪碼演算法來執行該錯誤校正解碼程序的步驟包括:經由一迭代方式對該第一資料串使用一博斯-喬赫里-霍克碼演算法或一低密度奇偶檢查校正碼演算法作為一輔助解碼演算法以獲得對應該第一資料串的一最終解碼結果;以及將該最終解碼結果作為該已解碼第一資料串。
- 一種記憶體控制電路單元,用於控制一可複寫式非揮發性記憶體模組,該記憶體控制電路單元包括:一主機介面,用以耦接至一主機系統;一記憶體介面,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組具有多個記憶胞;以及一記憶體管理電路,耦接至該主機介面與該記憶體介面,其中該記憶體管理電路用以從該主機系統接收一讀取指令,其中該讀取指令指示從該些記憶胞中的多個第一記憶胞讀取一資料,其中該記憶體管理電路更用以發送一第一讀取指令序列以從 該些第一記憶胞中獲取一第一資料串,其中該記憶體管理電路更用以對該第一資料串執行一錯誤校正解碼程序以產生一已解碼第一資料串,其中若在該已解碼第一資料串中已無錯誤位元時,該記憶體管理電路更用以將該已解碼第一資料串作為一已校正資料傳送給該主機系統以回應該讀取指令,其中若在該已解碼第一資料串中存有錯誤位元時,該記憶體管理電路更用以發送一第二讀取指令序列以從該些第一記憶胞中獲取一第二資料串,對該已解碼第一資料串與該第二資料串進行一邏輯運算以獲得一調整資料串,依據該調整資料串調整該已解碼第一資料串以獲得一已調整第一資料串,並且對該已調整第一資料串再次執行該錯誤校正解碼程序而將解碼後所獲得的資料串作為該已解碼第一資料串。
- 如申請專利範圍第8項所述的記憶體控制電路單元,其中在上述該記憶體管理電路更用以發送該第一讀取指令序列以從該些第一記憶胞中獲取該第一資料串的運作中,該記憶體管理電路依據該第一讀取指令序列使用一第一讀取電壓讀取該些第一記憶胞以從該些第一記憶胞中獲取該第一資料串,其中在上述該記憶體管理電路更用以發送該第二讀取指令序列以從該些第一記憶胞中獲取該第二資料串的運作中,該記憶體管理電路依據該第二讀取指令序列使用一第二讀取 電壓讀取該些第一記憶胞以從該些第一記憶胞中獲取該第二資料串,其中該第二讀取電壓的電壓值不等於該第一讀取電壓的電壓值。
- 如申請專利範圍第8項所述的記憶體控制電路單元,在上述該記憶體管理電路將該已解碼第一資料串與該第二資料串進行該邏輯運算以獲得該調整資料串的運作中,該記憶體管理電路對該已解碼第一資料串與該第二資料串進行一互斥運算以產生該調整資料串。
- 如申請專利範圍第8項所述的記憶體控制電路單元,在上述該記憶體管理電路依據該調整資料串調整該已解碼第一資料串以獲得該已調整第一資料串的運作中,該記憶體管理電路識別該已解碼第一資料串之中多個無法識別資料與對應該些無法識別資料的多個無法識別資料位址;以及該記憶體管理電路經由使用該調整資料串中對應該些無法識別資料位址的資料對該已解碼第一資料串中的該些無法識別資料進行一互斥運算來調整該已解碼第一資料串以獲得該已調整第一資料串。
- 如申請專利範圍第8項所述的記憶體控制電路單元,該記憶體管理電路記錄對該已調整第一資料串執行該錯誤校正解碼程序的一次數,其中若該次數大於一預定次數時,該記憶體管理電路傳送一錯誤訊息至該主機系統。
- 如申請專利範圍第8項所述的記憶體控制電路單元,在上述該記憶體管理電路更用以對該第一資料串執行該錯誤校正解碼程序以產生該已解碼第一資料串的運作中,該記憶體管理電路使用一區塊渦輪碼演算法來執行該錯誤校正解碼程序。
- 如申請專利範圍第13項所述的記憶體控制電路單元,在上述該記憶體管理電路使用該區塊渦輪碼演算法來執行該錯誤校正解碼程序的運作中,該記憶體管理電路經由一迭代方式對該第一資料串使用一博斯-喬赫里-霍克碼演算法或一低密度奇偶檢查校正碼演算法作為一輔助解碼演算法以獲得對應該第一資料串的一最終解碼結果,其中該記憶體管理電路將該最終解碼結果作為該已解碼第一資料串。
- 一種記憶體儲存裝置,包括:一連接介面單元,用以耦接至一主機系統;一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組具有多個記憶胞;以及一記憶體控制電路單元,耦接至該連接介面單元與該可複寫式非揮發性記憶體模組,其中該記憶體控制電路單元用以從該主機系統接收一讀取指令,其中該讀取指令指示從該些記憶胞中的多個第一記憶胞讀取一資料, 其中該記憶體控制電路單元更用以發送一第一讀取指令序列以從該些第一記憶胞中獲取一第一資料串,其中該記憶體控制電路單元更用以對該第一資料串執行一錯誤校正解碼程序以產生一已解碼第一資料串,其中若在該已解碼第一資料串中已無錯誤位元時,該記憶體控制電路單元更用以將該已解碼第一資料串作為一已校正資料傳送給該主機系統以回應該讀取指令,其中若在該已解碼第一資料串中存有錯誤位元時,該記憶體控制電路單元更用以發送一第二讀取指令序列以從該些第一記憶胞中獲取一第二資料串,對該已解碼第一資料串與該第二資料串進行一邏輯運算以獲得一調整資料串,依據該調整資料串調整該已解碼第一資料串以獲得一已調整第一資料串,並且對該已調整第一資料串再次執行該錯誤校正解碼程序而將解碼後所獲得的資料串作為該已解碼第一資料串。
- 如申請專利範圍第15項所述的記憶體儲存裝置,其中在上述該記憶體控制電路單元更用以發送該第一讀取指令序列以從該些第一記憶胞中獲取該第一資料串的運作中,該記憶體控制電路單元依據該第一讀取指令序列使用一第一讀取電壓讀取該些第一記憶胞以從該些第一記憶胞中獲取該第一資料串,其中在上述該記憶體控制電路單元更用以發送該第二讀取指令序列以從該些第一記憶胞中獲取該第二資料串的運作中, 該記憶體控制電路單元依據該第二讀取指令序列使用一第二讀取電壓讀取該些第一記憶胞以從該些第一記憶胞中獲取該第二資料串,其中該第二讀取電壓的電壓值不等於該第一讀取電壓的電壓值。
- 如申請專利範圍第15項所述的記憶體儲存裝置,在上述該記憶體控制電路單元將該已解碼第一資料串與該第二資料串進行該邏輯運算以獲得該調整資料串的運作中,該記憶體控制電路單元對該已解碼第一資料串與該第二資料串進行一互斥運算以產生該調整資料串。
- 如申請專利範圍第15項所述的記憶體儲存裝置,在上述該記憶體控制電路單元依據該調整資料串調整該已解碼第一資料串以獲得該已調整第一資料串的運作中,該記憶體控制電路單元識別該已解碼第一資料串之中多個無法識別資料與對應該些無法識別資料的多個無法識別資料位址;以及該記憶體控制電路單元經由使用該調整資料串中對應該些無法識別資料位址的資料對該已解碼第一資料串中的該些無法識別資料進行一互斥運算來調整該已解碼第一資料串以獲得該已調整第一資料串。
- 如申請專利範圍第15項所述的記憶體儲存裝置,該記憶體控制電路單元記錄對該已調整第一資料串執行該錯誤校正解碼程序的一次數, 其中若該次數大於一預定次數時,該記憶體控制電路單元傳送一錯誤訊息至該主機系統。
- 如申請專利範圍第15項所述的記憶體儲存裝置,在上述該記憶體控制電路單元更用以對該第一資料串執行該錯誤校正解碼程序以產生該已解碼第一資料串的運作中,該記憶體控制電路單元使用一區塊渦輪碼演算法來執行該錯誤校正解碼程序。
- 如申請專利範圍第20項所述的記憶體儲存裝置,在上述該記憶體控制電路單元使用該區塊渦輪碼演算法來執行該錯誤校正解碼程序的運作中,該記憶體控制電路單元經由一迭代方式對該第一資料串使用一博斯-喬赫里-霍克碼演算法或一低密度奇偶檢查校正碼演算法作為一輔助解碼演算法以獲得對應該第一資料串的一最終解碼結果,其中該記憶體控制電路單元將該最終解碼結果作為該已解碼第一資料串。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW104106033A TWI521531B (zh) | 2015-02-25 | 2015-02-25 | 資料讀取方法、記憶體控制電路單元與記憶體儲存裝置 |
| US14/682,123 US9607704B2 (en) | 2015-02-25 | 2015-04-09 | Data reading method, memory controlling circuit unit and memory storage device |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW104106033A TWI521531B (zh) | 2015-02-25 | 2015-02-25 | 資料讀取方法、記憶體控制電路單元與記憶體儲存裝置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI521531B true TWI521531B (zh) | 2016-02-11 |
| TW201631596A TW201631596A (zh) | 2016-09-01 |
Family
ID=55810368
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW104106033A TWI521531B (zh) | 2015-02-25 | 2015-02-25 | 資料讀取方法、記憶體控制電路單元與記憶體儲存裝置 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US9607704B2 (zh) |
| TW (1) | TWI521531B (zh) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10496335B2 (en) | 2017-06-30 | 2019-12-03 | Intel Corporation | Method and apparatus for performing multi-object transformations on a storage device |
| KR102453437B1 (ko) * | 2018-01-25 | 2022-10-12 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법 |
| CN110211622A (zh) * | 2019-06-14 | 2019-09-06 | 山东大学 | 提高多值nand闪存存储器数据存储总量的数据擦写方法 |
| JP7408520B2 (ja) * | 2020-09-18 | 2024-01-05 | キオクシア株式会社 | メモリシステム |
| US12014087B2 (en) | 2022-07-20 | 2024-06-18 | Silicon Motion, Inc. | Method and apparatus for performing data management of memory device with aid of targeted protection control |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9047210B2 (en) * | 2011-09-15 | 2015-06-02 | Sandisk Technologies Inc. | Data storage device and method to correct bit values using multiple read voltages |
| US9298552B2 (en) * | 2013-09-27 | 2016-03-29 | Intel Corporation | Using read values from previous decoding operations to calculate soft bit information in an error recovery operation |
-
2015
- 2015-02-25 TW TW104106033A patent/TWI521531B/zh active
- 2015-04-09 US US14/682,123 patent/US9607704B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US20160247575A1 (en) | 2016-08-25 |
| TW201631596A (zh) | 2016-09-01 |
| US9607704B2 (en) | 2017-03-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI550615B (zh) | 資料存取方法、記憶體儲存裝置及記憶體控制電路單元 | |
| TW201721435A (zh) | 資料讀取方法、記憶體控制電路單元及記憶體儲存裝置 | |
| TWI527040B (zh) | 資料寫入方法、記憶體儲存裝置與記憶體控制器 | |
| CN109753376B (zh) | 存储器系统及其操作方法 | |
| TWI732642B (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| TWI628660B (zh) | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| TWI521531B (zh) | 資料讀取方法、記憶體控制電路單元與記憶體儲存裝置 | |
| TWI640997B (zh) | 資料保護方法、記憶體控制電路單元與記憶體儲存裝置 | |
| TW201926023A (zh) | 資料存取方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| TWI575532B (zh) | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 | |
| TWI564904B (zh) | 資料處理方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| TWI681396B (zh) | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| CN102831932B (zh) | 数据读取方法、存储器控制器及存储器储存装置 | |
| CN106843744A (zh) | 数据程序化方法与内存储存装置 | |
| CN105575440B (zh) | 错误处理方法、存储器储存装置及存储器控制电路单元 | |
| CN105095011B (zh) | 数据处理方法、存储器控制电路单元以及存储器存储装置 | |
| CN107179960A (zh) | 解码方法、存储器控制电路单元及存储器存储装置 | |
| CN114077515B (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
| CN111580741A (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
| CN106897023B (zh) | 数据读取方法、存储器控制电路单元及存储器储存装置 | |
| CN110008145B (zh) | 数据保护方法、存储器控制电路单元与存储器存储装置 | |
| CN105988732A (zh) | 数据读取方法、存储器控制电路单元与存储器存储装置 | |
| TWI657454B (zh) | 資料編碼方法、記憶體控制電路單元與記憶體儲存裝置 | |
| TW202201255A (zh) | 資料保護方法、記憶體儲存裝置及記憶體控制電路單元 | |
| CN104298571B (zh) | 数据保护方法、存储器储存装置与存储器控制器 |