TW201543496A - 資料處理方法、記憶體控制電路單元以及記憶體儲存裝置 - Google Patents
資料處理方法、記憶體控制電路單元以及記憶體儲存裝置 Download PDFInfo
- Publication number
- TW201543496A TW201543496A TW103116868A TW103116868A TW201543496A TW 201543496 A TW201543496 A TW 201543496A TW 103116868 A TW103116868 A TW 103116868A TW 103116868 A TW103116868 A TW 103116868A TW 201543496 A TW201543496 A TW 201543496A
- Authority
- TW
- Taiwan
- Prior art keywords
- error
- detection code
- data
- error detection
- user data
- Prior art date
Links
Classifications
-
- 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/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1012—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 codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1068—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 in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1833—Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
-
- 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
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)
Abstract
本發明提供一種資料處理方法以及使用此方法的記憶體控制電路單元與記憶體儲存裝置。此資料處理方法包括:根據第一讀取命令,從第一實體抹除單元讀取第一資料串,其中第一資料串包括第一使用者資料、第一錯誤偵測碼以及第一錯誤校正碼。此資料處理方法也包括:使用第一錯誤偵測碼與第一錯誤校正碼來解碼第一使用者資料;並且判斷第一使用者資料是否被正確地解碼。此資料處理方法更包括倘若第一使用者資料成功地解碼時,將正確地解碼第一使用者資料所獲得的校正後使用者資料傳送給主機系統以回應第一讀取指令。
Description
本發明是有關於一種資料處理方法,且特別是有關於一種用於可複寫式非揮發性記憶體的資料處理方法以及使用此方法的記憶體控制電路單元與記憶體儲存裝置。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
隨著製程的進步以及成本降低,使得記憶體儲存容量大幅上升,但是也造成資料的可靠度降低,因此使用錯誤更正碼來提升可靠度。一般來說,寫入至可複寫式非揮發性記憶體模組的資料時,此資料會透過一錯誤檢查與校正電路來編碼以產生對應的錯誤校正碼。而從可複寫式非揮發性記憶體模組中所讀取的資
料也會經過對應的解碼程序,以利用對應的錯誤檢查與校正碼來校正所讀取之資料中的錯誤位元。傳統上運用在NAND型快閃記憶體的錯誤校正碼是使用博斯-喬赫里-霍克文黑姆(Bose-Chaudhuri-Hocquenghem,以下簡稱BCH)演算法來產生。然而,隨著記憶體容量的增加,使得要正確解碼資料總共花費的時間也隨之增加。基此,如何減少解碼所需要的時間提昇解碼效率,為此領域技術人員所關心的議題。
本發明提供一種資料處理方法,以及使用此方法的記憶體控制電路單元與記憶體儲存裝置,可減少解碼資料所需的運算時間,進而增加讀取資料的效率。
本發明提供一種資料處理方法,用於可複寫式非揮發性記憶體模組,其中可複寫式非揮發性記憶體模組包含多個實體抹除單元並且被配置多個邏輯單元以映射至少部分的此些實體抹除單元。上述資料處理方法包括:從主機系統接收第一讀取命令,其中第一讀取命令指示從此些邏輯單元的第一邏輯單元中讀取資料,且第一邏輯單元映射此些實體抹除單元之中的第一實體抹除單元。上述資料處理方法也包括:從第一實體抹除單元讀取第一資料串,其中第一資料串包括第一使用者資料、第一錯誤偵測碼以及第一錯誤校正碼。上述資料處理方法還包括使用第一錯誤偵測碼、第一錯誤校正碼與第一使用者資料進行第一解碼程序。上
述資料處理方法更包括:在第一解碼程序中利用第一錯誤偵測碼與於第一解碼程序中產生之第一使用者資料之第一錯誤位元位置來進行邏輯運算,並且當邏輯運算的結果符合預定規則時,停止第一解碼程序,並且辨識第一使用者資料被成功地解碼。倘若第一使用者資料成功地解碼時,將成功地解碼第一使用者資料所獲得的校正後使用者資料傳送給主機系統以回應第一讀取指令。
在本發明的一實施例中,上述資料處理方法更包括:對第一資料串進行錯誤校正編碼校驗計算以產生對應第一資料串的第一校驗子,並且對第一使用者資料進行循環冗餘校驗計算以產生對應第一使用者資料的第二錯誤偵測碼;根據第一校驗子產生對應第一資料串的第一錯誤定位多項式並計算第一資料串的第一錯誤位元數目,並且根據第一校驗子、第一錯誤定位多項式以及錯誤定位搜尋法獲得對應第一使用者資料的第一錯誤位元位置;對第一錯誤位元位置進行循環冗餘校驗計算以產生對應第一錯誤位元位置的第三錯誤偵測碼,並且對第三錯誤偵測碼與第二錯誤偵測碼進行互斥或邏輯運算以產生第四錯誤偵測碼;判斷第四錯誤偵測碼是否等於第一錯誤偵測碼;倘若第四錯誤偵測碼等於第一錯誤偵測碼時,停止第一解碼程序並在無檢查第一資料串是否可被校正下,使用第一錯誤位元位置校正第一使用者資料以獲得校正後使用者資料,並且將校正後使用者資料傳送給主機系統;以及,倘若第四錯誤偵測碼不等於第一錯誤偵測碼時,輸出錯誤訊息給主機系統。
在本發明的一實施例中,上述的資料處理方法更包括:在上述根據第一校驗子產生對應第一資料串的第一錯誤定位多項式並計算第一資料串的第一錯誤位元數目的步驟之後,更會判斷第一錯誤位元數目是否大於預先定義錯誤位元門檻值;以及倘若第一錯誤位元數目大於預先定義錯誤位元門檻值時,僅在檢查第一資料串可被校正之後,才使用第一錯誤位元位置校正第一使用者資料以獲得校正後使用者資料,並且將校正後使用者資料傳送給主機系統。
在本發明的一實施例中,其中上述僅在檢查該第一資料串可被校正之後,才使用第一錯誤位元位置校正第一使用者資料的步驟包括:在上述根據第一校驗子產生對應第一資料串的第一錯誤定位多項式並計算第一資料串的第一錯誤位元數目的步驟之後,根據第一校驗子、第一錯誤定位多項式以及錯誤定位搜尋法獲得對應第一資料串的第二錯誤位元位置,其中第二錯誤位元位置包括第一錯誤位元位置;根據第二錯誤位元位置計算出一第二錯誤位元數目,並且判斷第二錯誤位元數目是否等於第一錯誤位元數目;以及,倘若第二錯誤位元數目等於第一錯誤位元數目時,辨識第一資料串可被校正,並且直接根據第一使用者資料以及第一錯誤位元位置產生校正後使用者資料。
在本發明的一實施例中,上述的資料處理方法更包括:在上述進行將校正後使用者資料傳送給主機系統的步驟之前,對校正後使用者資料進行循環冗餘校驗計算以產生對應校正後使用
者資料的第五錯誤偵測碼,並且判斷第五錯誤偵測碼是否等於第一錯誤偵測碼;倘若第五錯誤偵測碼等於第一錯誤偵測碼時,將校正後使用者資料傳送給主機系統;以及倘若第五錯誤偵測碼不等於第一錯誤偵測碼時,輸出錯誤訊息給主機系統。
本發明提供一種記憶體控制電路單元,用於控制可複寫式非揮發性記憶體模組。上述的記憶體控制電路單元包括:主機介面、記憶體介面與記憶體管理電路。主機介面耦接至主機系統。記憶體介面耦接至可複寫式非揮發性記憶體模組。其中可複寫式非揮發性記憶體模組具有多個實體抹除單元。記憶體管理電路耦接至主機介面與記憶體介面,並且配置多個邏輯單元以映射至少部分的此些實體抹除單元,其中記憶體管理電路更用以從主機系統接收第一讀取命令,其中第一讀取命令指示從此些邏輯單元的第一邏輯單元中讀取資料,並且第一邏輯單元映射此些實體抹除單元之中的第一實體抹除單元。記憶體管理電路更用以下達指令序列以從第一實體抹除單元讀取第一資料串,其中第一資料串包括第一使用者資料、第一錯誤偵測碼以及第一錯誤校正碼。此外,記憶體管理電路更用以使用第一錯誤偵測碼、第一錯誤校正碼與第一使用者資料進行第一解碼程序。並且,記憶體管理電路更用以在第一解碼程序中利用第一錯誤偵測碼與於第一解碼程序中產生之第一使用者資料之第一錯誤位元位置來進行邏輯運算,並且當邏輯運算的結果符合預定規則時,停止第一解碼程序,並且辨識第一使用者資料被成功地解碼。倘若第一使用者資料成功地被
解碼時,記憶體管理電路更用以將成功地解碼第一使用者資料所獲得的校正後使用者資料傳送給主機系統以回應第一讀取指令。
在本發明的一實施例中,上述記憶體控制電路單元更包括:記憶體管理電路用以對第一資料串進行錯誤校正編碼校驗計算以產生對應第一資料串的第一校驗子,並且對第一使用者資料進行循環冗餘校驗計算以產生對應第一使用者資料的第二錯誤偵測碼。此外,記憶體管理電路更用以根據第一校驗子產生對應第一資料串的第一錯誤定位多項式並計算第一資料串的第一錯誤位元數目。以及,記憶體管理電路更用以根據第一校驗子、第一錯誤定位多項式以及錯誤定位搜尋法獲得對應第一使用者資料的第一錯誤位元位置,並且對第一錯誤位元位置進行循環冗餘校驗計算以產生對應第一錯誤位元位置的第三錯誤偵測碼。再者,記憶體管理電路更用以對第三錯誤偵測碼與第二錯誤偵測碼進行互斥或邏輯運算以產生第四錯誤偵測碼,並且判斷第四錯誤偵測碼是否等於第一錯誤偵測碼。倘若第四錯誤偵測碼等於第一錯誤偵測碼時,記憶體管理電路更用以停止第一解碼程序並在無檢查該第一資料串是否可被校正下,使用第一錯誤位元位置以校正第一使用者資料以獲得校正後使用者資料,並且將校正後使用者資料傳送給主機系統。以及,倘若第四錯誤偵測碼不等於第一錯誤偵測碼時,記憶體管理電路更用以輸出錯誤訊息給主機系統。
在本發明的一實施例中,記憶體管理電路更用以在上述根據第一校驗子產生對應第一資料串的第一錯誤定位多項式並計
算第一資料串的第一錯誤位元數目的運作之後,判斷第一錯誤位元數目是否大於預先定義錯誤位元門檻值。倘若第一錯誤位元數目大於預先定義錯誤位元門檻值時,記憶體管理電路更用以僅在檢查第一資料串可被校正之後,才使用第一錯誤位元位置校正第一使用者資料以獲得校正後使用者資料,並且將校正後使用者資料傳送給主機系統。
在本發明的一實施例中,上述僅在檢查第一資料串可被校正,才使用第一錯誤位元位置校正第一使用者資料的運作,記憶體管理電路用以在上述根據第一校驗子產生對應第一資料串的第一錯誤定位多項式並計算第一資料串的第一錯誤位元數目的運作之後,根據第一校驗子、第一錯誤定位多項式以及錯誤定位搜尋法獲得對應第一資料串的第二錯誤位元位置,並且根據第二錯誤位元位置計算出第二錯誤位元數目,其中第二錯誤位元位置包括第一錯誤位元位置。此外,記憶體管理電路更用以判斷第二錯誤位元數目是否等於第一錯誤位元數目。倘若第二錯誤位元數目等於第一錯誤位元數目時,記憶體管理電路辨識第一資料串可被校正,並且直接根據第一使用者資料以及第一錯誤位元位置產生校正後使用者資料。
在本發明的一實施例中,在進行將校正後使用者資料傳送給主機系統的運作之前,上述記憶體管理電路更用以對校正後使用者資料進行循環冗餘校驗計算以產生對應校正後使用者資料的第五錯誤偵測碼,並且判斷第五錯誤偵測碼是否等於第一錯誤
偵測碼。倘若第五錯誤偵測碼等於第一錯誤偵測碼時,記憶體管理電路將校正後使用者資料傳送給主機系統。以及,倘若第五錯誤偵測碼不等於第一錯誤偵測碼時,記憶體管理電路輸出錯誤訊息給主機系統。
本發明提供一種記憶體儲存裝置,其包括:連接介面單元、可複寫式非揮發性記憶體模組與記憶體控制電路單元。連接介面單元耦接至主機系統。可複寫式非揮發性記憶體模組具有多個實體抹除單元。記憶體控制電路單元耦接至連接介面單元與可複寫式非揮發性記憶體模組,並且配置多個邏輯單元以映射至少部分的此些實體抹除單元,其中記憶體控制電路單元用以從主機系統接收第一讀取命令,其中第一讀取命令指示從此些邏輯單元的第一邏輯單元中讀取資料,且第一邏輯單元映射此些實體抹除單元之中的第一實體抹除單元。此外,記憶體控制電路單元更用以下達指令序列以從第一實體抹除單元讀取第一資料串,其中第一資料串包括第一使用者資料、第一錯誤偵測碼以及第一錯誤校正碼。再者,記憶體控制電路單元更用以使用第一錯誤偵測碼、第一錯誤校正碼與第一使用者資料進行第一解碼程序。並且,記憶體控制電路單元更用以在第一解碼程序中利用第一錯誤偵測碼與於第一解碼程序中產生之第一使用者資料之第一錯誤位元位置來進行邏輯運算,並且當邏輯運算的結果符合預定規則時,停止第一解碼程序,並且辨識第一使用者資料被成功地解碼。倘若第一使用者資料成功地解碼時,記憶體控制電路單元更用以將成功
地解碼第一使用者資料所獲得的校正後使用者資料傳送給主機系統以回應第一讀取指令。
在本發明的一實施例中,上述記憶體儲存裝置更包括:記憶體控制電路單元對第一資料串進行錯誤校正編碼校驗計算以產生對應第一資料串的第一校驗子,並且對第一使用者資料進行循環冗餘校驗計算以產生對應第一使用者資料的第二錯誤偵測碼。此外,記憶體控制電路單元更用以根據第一校驗子產生對應第一資料串的第一錯誤定位多項式並計算第一資料串的第一錯誤位元數目。另外,記憶體控制電路單元更用以根據第一校驗子、第一錯誤定位多項式以及錯誤定位搜尋法獲得對應第一使用者資料的第一錯誤位元位置,並且對第一錯誤位元位置進行循環冗餘校驗計算以產生對應第一錯誤位元位置的一第三錯誤偵測碼。再者,記憶體控制電路單元更用以對第三錯誤偵測碼與第二錯誤偵測碼進行互斥或邏輯運算以產生第四錯誤偵測碼,並且判斷第四錯誤偵測碼是否等於第一錯誤偵測碼。倘若第四錯誤偵測碼等於第一錯誤偵測碼時,記憶體控制電路單元更用以停止第一解碼程序並在無檢查該第一資料串是否可被校正下,使用第一錯誤位元位置以校正第一使用者資料以獲得校正後使用者資料,並且將校正後使用者資料傳送給主機系統。倘若第四錯誤偵測碼不等於第一錯誤偵測碼時,記憶體控制電路單元更用以輸出錯誤訊息給主機系統。
在本發明的一實施例中,該記憶體控制電路單元更用以
在根據第一校驗子產生對應第一資料串的第一錯誤定位多項式並計算第一資料串的第一錯誤位元數目的運作之後,判斷第一錯誤位元數目是否大於預先定義錯誤位元門檻值。倘若第一錯誤位元數目大於預先定義錯誤位元門檻值時,記憶體控制電路單元更用以僅在檢查第一資料串是否可被校正之後,才使用第一錯誤位元位置校正第一使用者資料以獲得校正後使用者資料,且將校正後使用者資料傳送給主機系統。
在本發明的一實施例中,記憶體控制電路單元用以在上述根據第一校驗子產生對應第一資料串的第一錯誤定位多項式並計算第一資料串的第一錯誤位元數目之後,根據第一校驗子、第一錯誤定位多項式以及錯誤定位搜尋法獲得對應第一資料串的第二錯誤位元位置,根據第二錯誤位元位置計算出第二錯誤位元數目,並且判斷第二錯誤位元數目是否等於第一錯誤位元數目,其中第二錯誤位元位置包括第一錯誤位元位置。倘若第二錯誤位元數目等於第一錯誤位元數目時,記憶體控制電路單元辨識第一資料串可被校正,並且直接根據第一使用者資料以及第一錯誤位元位置產生校正後使用者資料。
在本發明的一實施例中,記憶體控制電路單元更用以在進行將校正後使用者資料傳送給主機系統的運作之前,對校正後使用者資料進行循環冗餘校驗計算以產生對應校正後使用者資料的第五錯誤偵測碼,以及判斷第五錯誤偵測碼是否等於第一錯誤偵測碼。倘若第五錯誤偵測碼等於第一錯誤偵測碼時,記憶體控
制電路單元將校正後使用者資料傳送給主機系統。並且,倘若第五錯誤偵測碼不等於第一錯誤偵測碼時,記憶體控制電路單元輸出錯誤訊息給主機系統。
基於上述,本發明可以利用錯誤偵測碼來加強保護資料,同時也可以能藉由透過錯誤偵測碼檢驗解碼出的資料正確時,在不用檢查所讀出的資料是否可被校正的情況下,即可提前結束整個錯誤校正碼的解碼流程,加速解碼速度,增進讀取資料的效率。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
1000‧‧‧主機系統
1100‧‧‧電腦
1102‧‧‧微處理器
1104‧‧‧隨機存取記憶體
1106‧‧‧輸入/輸出裝置
1108‧‧‧系統匯流排
1110‧‧‧資料傳輸介面
1202‧‧‧滑鼠
1204‧‧‧鍵盤
1206‧‧‧顯示器
1208‧‧‧印表機
1212‧‧‧隨身碟
1214‧‧‧記憶卡
1216‧‧‧固態硬碟
1310‧‧‧數位相機
1312‧‧‧SD卡
1314‧‧‧MMC卡
1316‧‧‧記憶棒
1318‧‧‧CF卡
1320‧‧‧嵌入式儲存裝置
100‧‧‧記憶體儲存裝置
102‧‧‧連接介面單元
104‧‧‧記憶體控制電路單元
106‧‧‧可複寫式非揮發性記憶體模組
202‧‧‧記憶體管理電路
204‧‧‧主機介面
206‧‧‧記憶體介面
208‧‧‧錯誤檢查與校正電路
210‧‧‧緩衝記憶體
212‧‧‧電源管理電路
601‧‧‧第一資料串
603‧‧‧錯誤校正碼校驗子計算
605‧‧‧循環冗餘校驗計算
607‧‧‧伯利坎普-梅西(Berlekamp-Massey,BM)演算法與錢式搜尋法(Chien Search,CS)
S701、S703、S705、S707、S709、S711、S713‧‧‧資料處理的步驟
T1‧‧‧對整個第一資料串進行CS所需的運算時間
T2‧‧‧僅對第一使用者資料與第一錯誤偵測碼進行CS所需的運算時間
圖1是根據一範例實施例所繪示的主機系統與記憶體儲存裝置。
圖2是根據一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
圖3是根據一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖4是繪示圖1所示的記憶體儲存裝置的概要方塊圖。
圖5是根據一範例實施例所繪示之記憶體控制電路單元的概要方塊圖。
圖6是根據一範例實施例所繪示的BCH錯誤校正碼解碼演算的架構圖。
圖7是根據一範例實施例所繪示之的資料處理方法的流程圖。
圖8是根據一範例實施例,所繪示的處理資料所需運算時間比較圖。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1是根據一範例實施例所繪示的主機系統與記憶體儲存裝置並且圖2是根據一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
請參照圖1,主機系統1000一般包括電腦1100與輸入/輸出(input/output,I/O)裝置1106。電腦1100包括微處理器1102、隨機存取記憶體(random access memory,RAM)1104、系統匯流排1108與資料傳輸介面1110。輸入/輸出裝置1106包括如圖2的滑鼠1202、鍵盤1204、顯示器1206與印表機1208。必須瞭解的是,圖2所示的裝置非限制輸入/輸出裝置1106,輸入/輸出裝置1106可更包括其他裝置。
在本發明實施例中,記憶體儲存裝置100是透過資料傳輸介面1110與主機系統1000的其他元件耦接。藉由微處理器1102、隨機存取記憶體1104與輸入/輸出裝置1106的運作可將資料寫入至記憶體儲存裝置100或從記憶體儲存裝置100中讀取資料。例如,記憶體儲存裝置100可以是如圖2所示的隨身碟1212、記憶卡1214或固態硬碟(Solid State Drive,SSD)1216等的可複寫式非揮發性記憶體儲存裝置。
圖3是根據一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
一般而言,主機系統1000為可實質地與記憶體儲存裝置100配合以儲存資料的任意系統。雖然在本範例實施例中,主機系統1000是以電腦系統來作說明,然而,在本發明另一範例實施例中主機系統1000可以是數位相機、攝影機、通信裝置、音訊播放器或視訊播放器等系統。例如,在主機系統為數位相機(攝影機)1310時,可複寫式非揮發性記憶體儲存裝置則為其所使用的SD卡1312、MMC卡1314、記憶棒(memory stick)1316、CF卡1318或嵌入式儲存裝置1320(如圖3所示)。嵌入式儲存裝置1320包括嵌入式多媒體卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒體卡是直接耦接於主機系統的基板上。
圖4是繪示圖1所示的記憶體儲存裝置的概要方塊圖。
請參照圖4,記憶體儲存裝置100包括連接介面單元102、記憶體控制電路單元104與可複寫式非揮發性記憶體模組
106。
在本範例實施例中,連接介面單元102是相容於序列先進附件(Serial Advanced Technology Attachment,SATA)標準。然而,必須瞭解的是,本發明不限於此,連接介面單元102亦可以是符合並列先進附件(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)標準或其他適合的標準。連接介面單元102可與記憶體控制電路單元104封裝在一個晶片中,或者連接介面單元102是佈設於一包含記憶體控制電路單元104之晶片外。
記憶體控制電路單元104用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令,並且根據主機系統1000的指令在可複寫式非揮發性記憶體模組106中進行資料的寫入、讀取與
抹除等運作。
可複寫式非揮發性記憶體模組106是耦接至記憶體控制電路單元104,並且用以儲存主機系統1000所寫入之資料。可複寫式非揮發性記憶體模組106可以是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組、多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元資料的快閃記憶體模組)、複數階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元資料的快閃記憶體模組)、其他快閃記憶體模組或其他具有相同特性的記憶體模組。
圖5是根據一範例實施例所繪示之記憶體控制電路單元的概要方塊圖。必須瞭解的是,圖5所示之記憶體控制電路單元的結構僅為一範例,本發明不以此為限。
請參照圖5,記憶體控制電路單元104包括記憶體管理電路202、主機介面204、記憶體介面206與錯誤檢查與校正電路208。
記憶體管理電路202用以控制記憶體控制電路單元104的整體運作。具體來說,記憶體管理電路202具有多個控制指令,並且在記憶體儲存裝置100運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。
在本範例實施例中,記憶體管理電路202的控制指令是以韌體型式來實作。例如,記憶體管理電路202具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至
此唯讀記憶體中。當記憶體儲存裝置100運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在本發明另一範例實施例中,記憶體管理電路202的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組106的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路202具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有驅動碼,並且當記憶體控制電路單元104被致能時,微處理器單元會先執行此驅動碼段來將儲存於可複寫式非揮發性記憶體模組106中之控制指令載入至記憶體管理電路202的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。
此外,在本發明另一範例實施例中,記憶體管理電路202的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路202包括微控制器、記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路。記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路是耦接至微控制器。其中,記憶胞管理電路用以管理可複寫式非揮發性記憶體模組106的實體區塊;記憶體寫入電路用以對可複寫式非揮發性記憶體模組106下達寫入指令以將資料寫入至可複寫式非揮發性記憶體模組106中;記憶體讀取電路用以對可複寫式非揮發性記憶體模組106下達讀取指令以從可複寫式非揮發性
記憶體模組106中讀取資料;記憶體抹除電路用以對可複寫式非揮發性記憶體模組106下達抹除指令以將資料從可複寫式非揮發性記憶體模組106中抹除;而資料處理電路用以處理欲寫入至可複寫式非揮發性記憶體模組106的資料以及從可複寫式非揮發性記憶體模組106中讀取的資料。
主機介面204是耦接至記憶體管理電路202並且用以接收與識別主機系統1000所傳送的指令與資料。也就是說,主機系統1000所傳送的指令與資料會透過主機介面204來傳送至記憶體管理電路202。在本範例實施例中,主機介面204是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面204亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SD標準、UHS-I標準、UHS-II標準、MS標準、MMC標準、eMMC標準、UFS標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面206是耦接至記憶體管理電路202並且用以存取可複寫式非揮發性記憶體模組106。也就是說,欲寫入至可複寫式非揮發性記憶體模組106的資料會經由記憶體介面206轉換為可複寫式非揮發性記憶體模組106所能接受的格式。
錯誤檢查與校正電路208是耦接至記憶體管理電路202並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,在本範例實施力中,當記憶體管理電路202(或記憶體控制電路單元104)從主機系統1000中接收到寫入指令以及對應此寫入
指令的資料時,錯誤檢查與校正電路208會使用博斯-喬赫里-霍克文黑姆(Bose-Chaudhuri-Hocquenghem,以下簡稱BCH)錯誤校正碼來產生對應此寫入指令的資料的錯誤校正碼(error correcting code,ECC),以及進行循環冗餘校驗(Cyclic Redundancy Check,CRC)計算以產生對應此寫入指令的資料的錯誤偵測碼(error detecting code,EDC)。接著,記憶體管理電路202(或記憶體控制電路單元104)會將對應此寫入指令的資料、對應此資料的錯誤校正碼與錯誤偵測碼寫入至可複寫式非揮發性記憶體模組106中。之後,當記憶體管理電路202(或記憶體控制電路單元104)從可複寫式非揮發性記憶體模組106中讀取資料時會同時讀取此資料對應的錯誤校正碼或錯誤偵測碼,並且錯誤檢查與校正電路208會依據此錯誤校正碼與錯誤偵測碼對所讀取的資料執行錯誤檢查與校正程序。
簡單來說,使用BCH錯誤校正碼,可藉由計算對應所讀取之資料的校驗子(syndromes),使用校驗子來構成錯誤定位多項式(error locator polynomial)及獲取錯誤定位多項式的根(root)來計算所讀取之資料中的錯誤位元的位置。最後,可藉由將錯誤位元的位置所形成的位元值經過一邏輯運算反向計算來校正錯誤,由此獲得校正後的資料。舉例來說,當所讀取到的資料為1 1 1 1,並且計算出的對應此讀取資料的錯誤位址為0 0 0 1時,則代表第一個位元的資料發生錯誤,故對所讀取資料的第一個位元做邏輯院算反向計算以得到校正後的資料,而在校正錯誤之後的校
正後資料為1 1 1 0(1 1 1~1)。
圖6為根據一範例實施例所繪示的BCH錯誤校正碼解碼演算的架構圖。
請參考圖6,舉例來說,當接收到指示從被配置給可複寫式非揮發性記憶體模組106的多個邏輯單元之中的一個邏輯單元(以下稱為第一邏輯單元)來讀取資料的第一讀取命令時,記憶體管理電路202(或記憶體控制電路單元104)會識別此第一邏輯單元所映射之實體抹除單元(以下稱為第一實體抹除單元)。接著,記憶體管理電路202(或記憶體控制電路單元104)會下達指令序列以從可複寫式非揮發性記憶體模組106中的第一實體抹除單元中讀取資料串601(以下稱為第一資料串601)。此第一資料串601,如上所述,是經過BCH錯誤校正碼編碼之後,再寫入第一實體抹除單元的資料集合。也就是說,此第一資料串601包括所欲讀取的資料(以下稱第一使用者資料UD1)、對應第一使用者資料UD1的第一錯誤偵測碼EDC1以及第一錯誤校正碼ECC1。接著,記憶體管理電路202(或記憶體控制電路單元104)會對第一資料串601進行錯誤校正碼校驗子計算603(ECC Syndrome Calculate),以產生對應第一資料串601的第一校驗子SYND1。同時,記憶體管理電路202(或記憶體控制電路單元104)對第一使用者資料UD1進行循環冗餘校驗計算(CRC Calculate)605,以獲得第二錯誤偵測碼EDC2。
接著,在區塊607中,記憶體管理電路202(或記憶體控
制電路單元104)會根據第一校驗子SYND1經由一演算法,例如伯利坎普-梅西(Berlekamp-Massey,BM)演算法(Inversionless Berlekamp-Massey演算法或是Modified Euclidean演算法或其他類型演算法,可計算出對應第一資料串601的錯誤定位多項式(以下稱第一錯誤定位多項式),並且計算出第一資料串601的錯誤位元數目(以下稱第一錯誤位元數目)。記憶體管理電路202(或記憶體控制電路單元104)再利用另一演算法來作為錯誤定位搜尋法,以找出錯誤位元位置。例如,錢式搜尋法(以下稱Chien Search,CS)。具體來說,記憶體管理電路202(或記憶體控制電路單元104)會使用CS先找第一使用者資料UD1的錯誤位元位置,再找第一錯誤偵測碼EDC1的錯誤位元位置,最後找第一錯誤校正碼ECC1的錯誤位元位置。例如,記憶體管理電路202(或記憶體控制電路單元104)根據第一校驗子SYND1、第一錯誤定位多項式以及CS來先找出第一使用者資料UD1的錯誤位元位置(以下稱第一錯誤位元位置)。接著,記憶體管理電路202(或記憶體控制電路單元104)對第一錯誤位元位置進行循環冗餘校驗計算以產生對應第一錯誤位元位置的第三錯誤偵測碼,並且對第三錯誤偵測碼與第二錯誤偵測碼EDC2進行互斥或(XOR)邏輯運算以產生第四錯誤偵測碼。再者,記憶體管理電路202(或記憶體控制電路單元104)會判斷第四錯誤偵測碼是否等於第一錯誤偵測碼EDC1。倘若第四錯誤偵測碼等於第一錯誤偵測碼EDC1時,代表第一使用者資料UD1的循環冗餘校驗結果正確。倘若第四錯誤偵
測碼不等於第一錯誤偵測碼EDC1時,代表第一使用者資料UD1的循環冗餘校驗結果錯誤,並且記憶體管理電路202(或記憶體控制電路單元104)會輸出一個錯誤訊息給主機系統。
倘若第一使用者資料UD1的循環冗餘校驗結果正確時,接著記憶體管理電路202(或記憶體控制電路單元104)便不需找出第一錯誤校正碼ECC1的錯誤位元位置,直接提前結束CS以縮短運算時間。也就是說,倘若第一使用者資料UD1的循環冗餘校驗結果正確時,在不檢查第一資料串601是否可被校正下,記憶體管理電路202(或記憶體控制電路單元104)會直接使用第一錯誤位元位置與第一使用者資料UD1進行互斥或(XOR)邏輯運算以產生校正後使用者資料,並且傳送校正後使用者資料給主機系統。
值得一提的是,在另一範例實施例中,如上述的例子中,記憶體管理電路202(或記憶體控制電路單元104)更可在計算出第一錯誤位元數目之後,先判斷第一錯誤位元數目是否大於一個預先定義錯誤位元門檻值。其中當第一錯誤位元數目大於一個預先定義錯誤位元門檻值時,代表第一使用者資料UD1有很大的可能無法被校正,也可能代表在區塊607中所進行的對於第一使用者資料UD1的循環冗餘校驗結果會發生錯誤。因此,當第一錯誤位元數目大於一個預先定義錯誤位元門檻值時,記憶體管理電路202(或記憶體控制電路單元104)不會進行提前結束CS的動作,而會接續做一般校正的流程。也就是說,記憶體管理電路202(或記憶體控制電路單元104)會繼續檢查第一資料串601是否可校
正,判定對整個第一資料串601所找出來的錯誤位元位置是可以信任的,接著才進行校正。值得一提的是,在本範例實施例中,上述預先定義錯誤位元門檻,可設定為錯誤檢查與校正電路208的最大錯誤位元保護能力減1的值,但本發明不限於此。
具體來說,在此另一範例實施例中,倘若第一錯誤位元數目大於一個預先定義錯誤位元門檻值時,記憶體管理電路202(或記憶體控制電路單元104)利用CS在找完第一錯誤偵測碼EDC1的錯誤位元位置之後,會繼續找第一錯誤校正碼ECC1的錯誤位元位置以獲得整個第一資料串601的錯誤位元位置。當獲得整個第一資料串601的錯誤位元位置(以下稱第二錯誤位元位置)時,記憶體管理電路202(或記憶體控制電路單元104)便可以根據第二錯誤位元位置去計算出第一資料串601的錯誤位元數目(以下稱第二錯誤位元數目)。接著,記憶體管理電路202(或記憶體控制電路單元104)判斷第二錯誤位元數目是否等於上述的第一錯誤位元數目。倘若第二錯誤位元數目等於上述的第一錯誤位元數目時,代表找出來的錯誤位元位置是可以信任的,於是記憶體管理電路202(或記憶體控制電路單元104)會辨識第一資料串601可被校正。然後,記憶體管理電路202(或記憶體控制電路單元104)將第一使用者資料UD1與第二錯誤位元位置進行互斥或邏輯運算,以產生校正後使用者資料。
在另一範例實施例中,記憶體管理電路202(或記憶體控制電路單元104)也可在傳送校正後使用者資料給主機系統之前,
對校正後使用者資料進行循環冗餘校驗計算以產生對應校正後使用者資料的第五錯誤偵測碼,並且判斷第五錯誤偵測碼是否等於第一錯誤偵測碼EDC1。倘若第五錯誤偵測碼等於第一錯誤偵測碼EDC1時,便代表此校正後使用者資料是被正確地校正,此時,記憶體管理電路202(或記憶體控制電路單元104)才將此校正後使用者資料傳送給主機系統。倘若第五錯誤偵測碼不等於第一錯誤偵測碼EDC1時,代表此校正後使用者資料沒有被正確地校正,此時,記憶體管理電路202(或記憶體控制電路單元104)不傳送此校正後使用者資料,並且輸出一個錯誤訊息給主機系統。
圖7是根據一範例實施例所繪示之的資料處理方法的流程圖。
請參考圖7,在步驟S701中,記憶體管理電路202(或記憶體控制電路單元104)從第一實體抹除單元讀取第一資料串,其中第一資料串包括第一使用者資料、第一錯誤偵測碼以及第一錯誤校正碼。接著,步驟S703中,記憶體管理電路202(或記憶體控制電路單元104)對第一資料串進行錯誤校正編碼校驗計算以產生對應第一資料串的第一校驗子,以及同時對第一使用者資料進行循環冗餘校驗計算以產生對應該第一使用者資料的第二錯誤偵測碼。值得一提的是,在本範例實施例中,第一校驗子與第二錯誤偵測碼是可以平行處理的,藉以增進運算效率。
然後,在步驟S705中,記憶體管理電路202(或記憶體控制電路單元104)根據第一校驗子、第一錯誤定位多項式以及錯
誤定位搜尋法獲得對應第一使用者資料的第一錯誤位元位置。接著,在步驟S707中,記憶體管理電路202(或記憶體控制電路單元104)對第一錯誤位元位置進行循環冗餘校驗計算以產生對應第一錯誤位元位置的第三錯誤偵測碼,並且對第三錯誤偵測碼與第二錯誤偵測碼進行互斥或邏輯運算以產生第四錯誤偵測碼。以及,在步驟S709中,記憶體管理電路202(或記憶體控制電路單元104)判斷第四錯誤偵測碼是否等於第一錯誤偵測碼。
倘若第四錯誤偵測碼等於第一錯誤偵測碼時,在步驟S711中,記憶體管理電路202(或記憶體控制電路單元104)會在不檢查第一資料串是否可被校正下,使用第一錯誤位元位置校正第一使用者資料以獲得校正後使用者資料,並且將校正後使用者資料傳送給主機系統,結束整個解碼流程。以及,倘若第四錯誤偵測碼不等於第一錯誤偵測碼時,在步驟S713中,記憶體管理電路202(或記憶體控制電路單元104)輸出錯誤訊息給主機系統,並結束整個解碼流程。
圖8是根據一範例實施例,所繪示的處理資料所需運算時間比較圖。
本發明的範例實施例可僅執行第一使用者資料UD1與第一錯誤偵測碼EDC1的CS之後,便開始進行校正第一使用者資料的操作。請參照圖8,T1為記憶體管理電路202(或記憶體控制電路單元104)對整個第一資料串601進行CS所需的運算時間,而T2為記憶體管理電路202(或記憶體控制電路單元104)僅對
第一使用者資料UD1與第一錯誤偵測碼EDC1進行CS所需的運算時間,而T2小於T1。也就是說,本發明範例實施例可以因為僅執行第一使用者資料UD1與第一錯誤偵測碼EDC1的CS,使得進行CS的運算時間較為減少,進而減少整體進行錯誤校正的運算時間。
綜上所述,本發明除了可以利用錯誤偵測碼來加強保護資料,更可以藉由透過錯誤偵測碼檢驗解碼出的資料正確時,在不用檢查第一資料串是否可被校正的情況下,即可提前結束整個錯誤校正碼的解碼流程,加速解碼速度,增進讀取資料的效率。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S701、S703、S705、S707、S709、S711、S713‧‧‧資料處理的步驟
Claims (15)
- 一種資料處理方法,用於一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包含多個實體抹除單元並且多個邏輯單元以映射至少部分的該些實體抹除單元,該資料處理方法包括:從一主機系統接收一第一讀取命令,其中該第一讀取命令指示從該些邏輯單元的一第一邏輯單元中讀取一資料,且該第一邏輯單元映射該些實體抹除單元之中的一第一實體抹除單元;從該第一實體抹除單元讀取一第一資料串,其中該第一資料串包括一第一使用者資料、一第一錯誤偵測碼以及一第一錯誤校正碼;使用該第一錯誤偵測碼、該第一錯誤校正碼與該第一使用者資料進行一第一解碼程序,在該第一解碼程序中利用該第一錯誤偵測碼與於該第一解碼程序中產生之該第一使用者資料之一第一錯誤位元位置來進行一邏輯運算,並且當該邏輯運算的一結果符合一預定規則時,停止該第一解碼程序,並且辨識該第一使用者資料被成功地解碼;以及倘若該第一使用者資料成功地解碼時,將成功地解碼該第一使用者資料所獲得的一校正後使用者資料傳送給該主機系統以回應該第一讀取指令。
- 如申請專利範圍第1項所述的資料處理方法,其中在上述 使用該第一錯誤偵測碼、該第一錯誤校正碼與該第一使用者資料進行該第一解碼程序,在該第一解碼程序中利用該第一錯誤偵測碼與於該第一解碼程序中產生之該第一使用者資料之該第一錯誤位元位置來進行該邏輯運算,並且當該邏輯運算的該結果符合該預定規則時,停止該第一解碼程序,並且辨識該第一使用者資料被成功地解碼的步驟包括:對該第一資料串進行一錯誤校正編碼校驗計算以產生對應該第一資料串的一第一校驗子;對該第一使用者資料進行一循環冗餘校驗計算以產生對應該第一使用者資料的一第二錯誤偵測碼;根據該第一校驗子產生對應該第一資料串的一第一錯誤定位多項式並計算該第一資料串的一第一錯誤位元數目;根據該第一校驗子、該第一錯誤定位多項式以及一錯誤定位搜尋法獲得對應該第一使用者資料的該第一錯誤位元位置;對該第一錯誤位元位置進行該循環冗餘校驗計算以產生對應該第一錯誤位元位置的一第三錯誤偵測碼;對該第三錯誤偵測碼與該第二錯誤偵測碼進行互斥或邏輯運算以產生一第四錯誤偵測碼;判斷該第四錯誤偵測碼是否等於該第一錯誤偵測碼;倘若該第四錯誤偵測碼等於該第一錯誤偵測碼時,停止該第一解碼程序,並在無檢查該第一資料串是否可被校正下,使用該第一錯誤位元位置校正該第一使用者資料以獲得該校正後使用者 資料,並且將該校正後使用者資料傳送給該主機系統;以及倘若該第四錯誤偵測碼不等於該第一錯誤偵測碼時,輸出一錯誤訊息給該主機系統。
- 如申請專利範圍第2項所述的資料處理方法,其中在上述根據該第一校驗子產生對應該第一資料串的該第一錯誤定位多項式並計算該第一資料串的該第一錯誤位元數目的步驟之後,更會先判斷該第一錯誤位元數目是否大於一預先定義錯誤位元門檻值;倘若該第一錯誤位元數目大於該預先定義錯誤位元門檻值時,僅在檢查該第一資料串可被校正之後,才使用該第一錯誤位元位置校正該第一使用者資料以獲得該校正後使用者資料,且將該校正後使用者資料傳送給該主機系統。
- 如申請專利範圍第3項所述的資料處理方法,其中上述僅在檢查該第一資料串可被校正之後,才使用該第一錯誤位元位置校正該第一使用者資料的步驟包括:在上述根據該第一校驗子產生對應該第一資料串的該第一錯誤定位多項式並計算該第一資料串的該第一錯誤位元數目的步驟之後,根據該第一校驗子、該第一錯誤定位多項式以及該錯誤定位搜尋法獲得對應該第一資料串的一第二錯誤位元位置,其中該第二錯誤位元位置包括該第一錯誤位元位置;根據該第二錯誤位元位置計算出一第二錯誤位元數目;判斷該第二錯誤位元數目是否等於該第一錯誤位元數目;以 及倘若該第二錯誤位元數目等於該第一錯誤位元數目時,辨識該第一資料串可被校正,直接根據該第一使用者資料以及該第一錯誤位元位置產生該校正後使用者資料。
- 如申請專利範圍第2項所述的資料處理方法,在上述進行將該校正後使用者資料傳送給該主機系統的步驟之前,更包括:對該校正後使用者資料進行該循環冗餘校驗計算以產生對應該校正後使用者資料的一第五錯誤偵測碼;判斷該第五錯誤偵測碼是否等於該第一錯誤偵測碼;倘若該第五錯誤偵測碼等於該第一錯誤偵測碼時,將該校正後使用者資料傳送給該主機系統;以及倘若該第五錯誤偵測碼不等於該第一錯誤偵測碼時,輸出該錯誤訊息給該主機系統。
- 一種記憶體控制電路單元,用於控制一可複寫式非揮發性記憶體模組,該記憶體控制電路單元包括:一主機介面,用以耦接至一主機系統;一記憶體介面,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組具有多個實體抹除單元;以及一記憶體管理電路,耦接至該主機介面與該記憶體介面,並且配置多個邏輯單元以映射至少部分的該些實體抹除單元,其中該記憶體管理電路用以從一主機系統接收一第一讀取命 令,其中該第一讀取命令指示從該些邏輯單元的一第一邏輯單元中讀取一資料,且該第一邏輯單元映射該些實體抹除單元之中的一第一實體抹除單元,其中該記憶體管理電路更用以下達一指令序列以從該第一實體抹除單元讀取一第一資料串,其中該第一資料串包括一第一使用者資料、一第一錯誤偵測碼以及一第一錯誤校正碼,其中該記憶體管理電路更用以使用該第一錯誤偵測碼、該第一錯誤校正碼與該第一使用者資料進行一第一解碼程序,在該第一解碼程序中利用該第一錯誤偵測碼與於該第一解碼程序中產生之該第一使用者資料之一第一錯誤位元位置來進行一邏輯運算,並且當該邏輯運算的一結果符合一預定規則時,該記憶體管理電路停止該第一解碼程序,並且辨識該第一使用者資料被成功地解碼,其中倘若該第一使用者資料成功地解碼時,該記憶體管理電路更用以將成功地解碼該第一使用者資料所獲得的一校正後使用者資料傳送給該主機系統以回應該第一讀取指令。
- 如申請專利範圍第6項所述的記憶體控制電路單元,其中該記憶體管理電路在上述使用該第一錯誤偵測碼、該第一錯誤校正碼與該第一使用者資料進行該第一解碼程序,在該第一解碼程序中利用該第一錯誤偵測碼與於該第一解碼程序中產生之該第一使用者資料之該第一錯誤位元位置來進行該邏輯運算,並且當該邏輯運算的該結果符合該預定規則時,該記憶體管理電路停止該 第一解碼程序,並且辨識該第一使用者資料被成功地解碼的運作中,該記憶體管理電路對該第一資料串進行一錯誤校正編碼校驗計算以產生對應該第一資料串的一第一校驗子,並且對該第一使用者資料進行一循環冗餘校驗計算以產生對應該第一使用者資料的一第二錯誤偵測碼,其中該記憶體管理電路更用以根據該第一校驗子產生對應該第一資料串的一第一錯誤定位多項式並計算該第一資料串的一第一錯誤位元數目,其中該記憶體管理電路更用以根據該第一校驗子、該第一錯誤定位多項式以及一錯誤定位搜尋法獲得對應該第一使用者資料的該第一錯誤位元位置,其中該記憶體管理電路更用以對該第一錯誤位元位置進行該循環冗餘校驗計算以產生對應該第一錯誤位元位置的一第三錯誤偵測碼,其中該記憶體管理電路更用以對該第三錯誤偵測碼與該第二錯誤偵測碼進行互斥或邏輯運算以產生一第四錯誤偵測碼,其中該記憶體管理電路更用以判斷該第四錯誤偵測碼是否等於該第一錯誤偵測碼,其中倘若該第四錯誤偵測碼等於該第一錯誤偵測碼時,該記憶體管理電路停止該第一解碼程序,並在無檢查該第一資料串是否可被校正下,使用該第一錯誤位元位置以校正該第一使用者資 料以獲得該校正後使用者資料,並且將該校正後使用者資料傳送給該主機系統,其中倘若該第四錯誤偵測碼不等於該第一錯誤偵測碼時,該記憶體管理電路更用以輸出一錯誤訊息給該主機系統。
- 如申請專利範圍第7項所述的記憶體控制電路單元,其中在上述根據該第一校驗子產生對應該第一資料串的該第一錯誤定位多項式並計算該第一資料串的該第一錯誤位元數目的運作之後,該記憶體管理電路更用以判斷該第一錯誤位元數目是否大於一預先定義錯誤位元門檻值,其中倘若該第一錯誤位元數目大於該預先定義錯誤位元門檻值時,該記憶體管理電路更用以僅在檢查該第一資料串可被校正之後,才使用該第一錯誤位元位置校正該第一使用者資料以獲得該校正後使用者資料,且將該校正後使用者資料傳送給該主機系統。
- 如申請專利範圍第8項所述的記憶體控制電路單元,其中該記憶體管理電路用以在根據該第一校驗子產生對應該第一資料串的該第一錯誤定位多項式並計算該第一資料串的該第一錯誤位元數目之後,根據該第一校驗子、該第一錯誤定位多項式以及該錯誤定位搜尋法獲得對應該第一資料串的一第二錯誤位元位置,其中該第二錯誤位元位置包括該第一錯誤位元位置,其中該記憶體管理電路更用以根據該第二錯誤位元位置計算出一第二錯誤位元數目, 其中該記憶體管理電路更用以判斷該第二錯誤位元數目是否等於該第一錯誤位元數目,其中倘若該第二錯誤位元數目等於該第一錯誤位元數目時,該記憶體管理電路辨識該第一資料串可被校正,並且直接根據該第一使用者資料以及該第一錯誤位元位置產生該校正後使用者資料。
- 如申請專利範圍第7項所述的記憶體控制電路單元,其中該記憶體管理電路更用以將該校正後使用者資料傳送給該主機系統的運作之前,對該校正後使用者資料進行該循環冗餘校驗計算以產生對應該校正後使用者資料的一第五錯誤偵測碼,其中該記憶體管理電路更用以判斷該第五錯誤偵測碼是否等於該第一錯誤偵測碼,其中倘若該第五錯誤偵測碼等於該第一錯誤偵測碼時,該記憶體管理電路將該校正後使用者資料傳送給該主機系統,其中倘若該第五錯誤偵測碼不等於該第一錯誤偵測碼時,該記憶體管理電路輸出該錯誤訊息給該主機系統。
- 一種記憶體儲存裝置,包括:一連接介面單元,用以耦接至一主機系統;一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組具有多個實體抹除單元;以及一記憶體控制電路單元,耦接至該連接介面單元與該可複寫式非揮發性記憶體模組,並且配置多個邏輯單元以映射至少部分 的該些實體抹除單元,其中該記憶體控制電路單元更用以從一主機系統接收一第一讀取命令,其中該第一讀取命令指示從該些邏輯單元的一第一邏輯單元中讀取一資料,且該第一邏輯單元映射該些實體抹除單元之中的一第一實體抹除單元,從該第一實體抹除單元讀取一第一資料串,其中該第一資料串包括一第一使用者資料、一第一錯誤偵測碼以及一第一錯誤校正碼,其中該記憶體控制電路單元更用以使用該第一錯誤偵測碼、該第一錯誤校正碼與該第一使用者資料進行一第一解碼程序,在該第一解碼程序中利用該第一錯誤偵測碼與於該第一解碼程序中產生之該第一使用者資料之一第一錯誤位元位置來進行一邏輯運算,並且當該邏輯運算的一結果符合一預定規則時,該記憶體管理電路停止該第一解碼程序,並且辨識該第一使用者資料被成功地解碼,其中倘若該第一使用者資料成功地解碼時,該記憶體控制電路單元更用以將成功地解碼該第一使用者資料所獲得的一校正後使用者資料傳送給該主機系統以回應該第一讀取指令。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中該記憶體控制電路單元在上述使用該第一錯誤偵測碼、該第一錯誤校正碼與該第一使用者資料進行該第一解碼程序,在該第一解碼程序中利用該第一錯誤偵測碼與於該第一解碼程序中產生之該第 一使用者資料之該第一錯誤位元位置來進行該邏輯運算,並且當該邏輯運算的該結果符合該預定規則時,該記憶體管理電路停止該第一解碼程序,並且辨識該第一使用者資料被成功地解碼的運作中,該記憶體控制電路單元用以對該第一資料串進行一錯誤校正編碼校驗計算以產生對應該第一資料串的一第一校驗子,並且對該第一使用者資料進行一循環冗餘校驗計算以產生對應該第一使用者資料的一第二錯誤偵測碼,其中該記憶體控制電路單元根據該第一校驗子產生對應該第一資料串的一第一錯誤定位多項式並計算該第一資料串的一第一錯誤位元數目,其中該記憶體控制電路單元根據該第一校驗子、該第一錯誤定位多項式以及一錯誤定位搜尋法獲得對應該第一使用者資料的該第一錯誤位元位置,其中該記憶體控制電路單元對該第一錯誤位元位置進行該循環冗餘校驗計算以產生對應該第一錯誤位元位置的一第三錯誤偵測碼,其中該記憶體控制電路單元對該第三錯誤偵測碼與該第二錯誤偵測碼進行互斥或邏輯運算以產生一第四錯誤偵測碼,其中該記憶體控制電路單元判斷該第四錯誤偵測碼是否等於該第一錯誤偵測碼,其中倘若該第四錯誤偵測碼等於該第一錯誤偵測碼時,該記 憶體控制電路單元停止該第一解碼程序,並在無檢查該第一資料串是否可被校正下,使用該第一錯誤位元位置以校正該第一使用者資料以獲得該校正後使用者資料,並且將該校正後使用者資料傳送給該主機系統,其中倘若該第四錯誤偵測碼不等於該第一錯誤偵測碼時,該記憶體控制電路單元更用以輸出一錯誤訊息給該主機系統。
- 如申請專利範圍第12項所述的記憶體儲存裝置,其中在該記憶體控制電路單元更用以在根據該第一校驗子產生對應該第一資料串的該第一錯誤定位多項式並計算該第一資料串的該第一錯誤位元數目的運作之後,判斷該第一錯誤位元數目是否大於一預先定義錯誤位元門檻值,其中倘若該第一錯誤位元數目大於該預先定義錯誤位元門檻值時,該記憶體控制電路單元更用以僅在檢查該第一資料串可被校正之後,才使用該第一錯誤位元位置校正該第一使用者資料以獲得該校正後使用者資料,且將該校正後使用者資料傳送給該主機系統。
- 如申請專利範圍第13項所述的記憶體儲存裝置,其中在上述根據該第一校驗子產生對應該第一資料串的該第一錯誤定位多項式並計算該第一資料串的該第一錯誤位元數目的運作之後,該記憶體控制電路單元用以根據該第一校驗子、該第一錯誤定位多項式以及該錯誤定位搜尋法獲得對應該第一資料串的一第二錯誤位元位置,其中該第二錯誤位元位置包括該第一錯誤位 元位置,其中該記憶體控制電路單元更用以根據該第二錯誤位元位置計算出一第二錯誤位元數目,其中該記憶體控制電路單元更用以判斷該第二錯誤位元數目是否等於該第一錯誤位元數目,其中倘若該第二錯誤位元數目等於該第一錯誤位元數目時,該記憶體控制電路單元辨識該第一資料串可被校正,並且直接根據該第一使用者資料以及該第一錯誤位元位置產生該校正後使用者資料。
- 如申請專利範圍第12項所述的記憶體儲存裝置,在上述進行將該校正後使用者資料傳送給該主機系統的運作之前,該記憶體控制電路單元更用以對該校正後使用者資料進行該循環冗餘校驗計算以產生對應該校正後使用者資料的一第五錯誤偵測碼,其中該記憶體控制電路單元更用以判斷該第五錯誤偵測碼是否等於該第一錯誤偵測碼,其中倘若該第五錯誤偵測碼等於該第一錯誤偵測碼時,該記憶體控制電路單元將該校正後使用者資料傳送給該主機系統,其中倘若該第五錯誤偵測碼不等於該第一錯誤偵測碼時,該記憶體控制電路單元輸出該錯誤訊息給該主機系統。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103116868A TWI564904B (zh) | 2014-05-13 | 2014-05-13 | 資料處理方法、記憶體控制電路單元以及記憶體儲存裝置 |
US14/307,509 US9431132B2 (en) | 2014-05-13 | 2014-06-18 | Data managing method, memory control circuit unit and memory storage apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103116868A TWI564904B (zh) | 2014-05-13 | 2014-05-13 | 資料處理方法、記憶體控制電路單元以及記憶體儲存裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201543496A true TW201543496A (zh) | 2015-11-16 |
TWI564904B TWI564904B (zh) | 2017-01-01 |
Family
ID=54538586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103116868A TWI564904B (zh) | 2014-05-13 | 2014-05-13 | 資料處理方法、記憶體控制電路單元以及記憶體儲存裝置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9431132B2 (zh) |
TW (1) | TWI564904B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170161141A1 (en) * | 2015-12-02 | 2017-06-08 | Samsung Electronics Co., Ltd. | Method and apparatus for correcting data in multiple ecc blocks of raid memory |
CN111819547A (zh) | 2018-03-26 | 2020-10-23 | 拉姆伯斯公司 | 命令/地址通道错误检测 |
US11150814B2 (en) * | 2019-10-28 | 2021-10-19 | International Business Machines Corporation | Utilizing a link interface for performing partial write operations to memory |
US11152953B2 (en) * | 2020-02-28 | 2021-10-19 | Qualcomm Incorporated | Error detection for a wireless channel |
JP2022144469A (ja) * | 2021-03-19 | 2022-10-03 | キオクシア株式会社 | メモリシステム |
US11561857B2 (en) * | 2021-05-11 | 2023-01-24 | Robert Bosch Gmbh | Method for the secured storing of a data element to be stored by a computer program in an external memory |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE30187E (en) | 1972-11-15 | 1980-01-08 | International Business Machines Corporation | Plural channel error correcting apparatus and methods |
US4949342A (en) * | 1987-04-14 | 1990-08-14 | Matsushita Electric Industrial Co., Ltd. | Code error detecting method |
WO1992013344A1 (en) * | 1991-01-22 | 1992-08-06 | Fujitsu Limited | Error correction processing device and error correction method |
KR100746225B1 (ko) * | 2006-02-13 | 2007-08-03 | 삼성전자주식회사 | 반도체 메모리 장치 및 이를 구비한 메모리 시스템 |
US7809994B2 (en) * | 2006-05-17 | 2010-10-05 | Sandisk Corporation | Error correction coding for multiple-sector pages in flash memory devices |
US7975109B2 (en) * | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
US8239732B2 (en) * | 2007-10-30 | 2012-08-07 | Spansion Llc | Error correction coding in flash memory devices |
TWI375956B (en) * | 2008-02-29 | 2012-11-01 | Phison Electronics Corp | Block management methnd for flash memory, controller and storage sysetm thereof |
JP5768022B2 (ja) * | 2012-03-19 | 2015-08-26 | 株式会社東芝 | メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法 |
-
2014
- 2014-05-13 TW TW103116868A patent/TWI564904B/zh active
- 2014-06-18 US US14/307,509 patent/US9431132B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TWI564904B (zh) | 2017-01-01 |
US9431132B2 (en) | 2016-08-30 |
US20150331742A1 (en) | 2015-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI564904B (zh) | 資料處理方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TWI537966B (zh) | 錯誤處理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI612527B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW201944738A (zh) | 解碼方法及儲存控制器 | |
TWI658463B (zh) | 資料存取方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI527040B (zh) | 資料寫入方法、記憶體儲存裝置與記憶體控制器 | |
TWI523018B (zh) | 解碼方法、記憶體儲存裝置、記憶體控制電路單元 | |
TWI646543B (zh) | 資料編碼方法、資料解碼方法以及儲存控制器 | |
TWI640865B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI695378B (zh) | 位元標記方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TW201810025A (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TW201721435A (zh) | 資料讀取方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI725368B (zh) | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TWI672698B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI545581B (zh) | 資料寫入方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI640997B (zh) | 資料保護方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW201802821A (zh) | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI521531B (zh) | 資料讀取方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW202009943A (zh) | 記憶體管理方法以及儲存控制器 | |
CN111580741B (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
CN105095011B (zh) | 数据处理方法、存储器控制电路单元以及存储器存储装置 | |
TWI575533B (zh) | 資料校正方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI709850B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI662553B (zh) | 記憶體測試方法與記憶體測試系統 |