TW201919066A - 資料編碼方法、資料解碼方法以及儲存控制器 - Google Patents
資料編碼方法、資料解碼方法以及儲存控制器 Download PDFInfo
- Publication number
- TW201919066A TW201919066A TW106138037A TW106138037A TW201919066A TW 201919066 A TW201919066 A TW 201919066A TW 106138037 A TW106138037 A TW 106138037A TW 106138037 A TW106138037 A TW 106138037A TW 201919066 A TW201919066 A TW 201919066A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- verification
- original
- original data
- error checking
- Prior art date
Links
Classifications
-
- 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/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 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明提供一種資料編碼方法、資料解碼方法以及儲存控制器。所述編碼方法包括根據寫入指令獲得對應原始資料的驗證資料;附加所述驗證資料至所述原始資料,並且據以獲得擾亂後資料;對所述擾亂後資料執行編碼操作,以獲得碼字資料。所述解碼方法包括對碼字資料執行解碼操作,以獲得已解碼碼字資料,並且據以獲得擾亂前資料;辨識所述擾亂前資料中的驗證資料與原始資料;根據讀取指令辨識對應所述原始資料的一或多個第一系統資料;經由比對所述一或多個第一系統資料與所述驗證資料來判斷所述原始資料是否正確。
Description
本發明是有關於一種資料編碼方法與資料解碼方法,且特別是有關於一種適用於配置有可複寫式非揮發性記憶體模組的儲存裝置的資料編碼方法、資料解碼方法與儲存控制器。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,為了確保可複寫式非揮發性記憶體模組所儲存之資料的正確性,在將某一資料儲存至可複寫式非揮發性記憶體模組之前,此資料會先被編碼。編碼後的資料(包含原始資料與錯誤更正碼)會被儲存至可複寫式非揮發性記憶體模組中。往後,編碼後的資料可被從可複寫式非揮發性記憶體模組中讀取並且被解碼,以更正其中可能存在的錯誤。以往錯誤更正碼多使用代數解碼演算法,如(BCH code),而目前機率解碼演算法,如低密度奇偶檢查碼(low density parity code,以下亦稱為LDPC),則逐漸成熟。LDPC編碼/解碼器會使用一個稀疏矩陣(sparse matrix)來編碼與迭代解碼。然而,在一些特殊的資料錯誤的情況下,LDPC編碼/解碼器會所回傳的解碼成功後的資料卻依然是錯誤的。上述所回應解碼成功的資料本身依然是錯誤的現象可稱為近似碼字(Near Codeword)現象,並且所述資料可稱為近似碼字。上述近似碼字現象也會出現在利用其他演算法的編碼/解碼器中。
為了解決此近似碼字的問題,在傳統的作法中,會在原始資料進行編碼之前,對原始資料進行循環冗餘校驗(Cyclic redundancy check,CRC)運算來獲得對應的循環冗餘校驗碼,並且將其附加至原始資料,再經由編碼/解碼器來進行編碼操作。爾後,可藉由循環冗餘校驗碼來檢查編碼/解碼器所回應的解碼成功的資料是否正確。
然而,不論是執行循環冗餘校驗運算或是循環冗餘校驗碼本身,都會需要額外耗費系統額外的運算資源或是空間。因此,如何用更先進的方式來驗證解碼後資料是否正確,以解決近似碼字的問題且提升編碼/解碼操作的準確性,進而提昇儲存裝置的問定度與效率,為此領域技術人員所關心的議題。
本發明提供一種資料編碼方法、資料解碼方法與儲存控制器,可根據對應欲編碼的資料的已知的驗證資料來對所述資料進行編碼操作。並且,可利用對欲目標資料的已知的驗證資料,以驗證解碼後之資料操作是否正確。
本發明的一實施例提供適用於編碼欲儲存至可複寫式非揮發性記憶體模組的原始資料的一種資料編碼方法,其中所述可複寫式非揮發性記憶體模組具有多個實體單元,並且所述多個實體單元的每一個實體單元包括多個實體子單元,其中多個實體位址被配置給所述多個實體子單元。所述方法包括開始執行寫入指令,其中所述寫入指令指示寫入所述原始資料至所述多個實體位址中的一或多個目標實體位址;根據所述寫入指令獲得對應所述原始資料的驗證資料;附加所述驗證資料至所述原始資料成為擾亂前資料;對所述擾亂前資料執行擾亂操作,以獲得擾亂後資料;對所述擾亂後資料執行編碼操作,以獲得碼字資料;以及在獲得所述碼字資料後,寫入所述碼字資料至所述一或多個目標實體位址,以完成所述寫入指令的執行。
本發明的一實施例提供用於解碼儲存在可複寫式非揮發性記憶體模組中的碼字資料的一種資料解碼方法,其中所述可複寫式非揮發性記憶體模組具有多個實體單元,並且所述多個實體單元的每一個實體單元包括多個實體子單元,其中多個實體位址被配置給所述多個實體子單元。所述方法包括開始執行讀取指令,並且根據所述讀取指令從所述多個實體位址中的一或多個目標實體位址讀取所述碼字資料;對所述碼字資料執行解碼操作,以獲得已解碼碼字資料;對所述已解碼碼字資料執行解擾亂操作,以獲得擾亂前資料;辨識所述擾亂前資料中的驗證資料與原始資料;根據所述讀取指令辨識對應所述原始資料的一或多個第一系統資料;經由比對所述一或多個第一系統資料與所述驗證資料來判斷所述原始資料是否正確,其中若所述驗證資料等於所述一或多個第一系統資料,判定所述原始資料正確;以及當判定所述原始資料是正確時,判定所述碼字資料解碼成功,傳送所述原始資料,以完成所述讀取指令的執行。
本發明的一實施例提供用於控制配置有可複寫式非揮發性記憶體模組的儲存裝置的一種儲存控制器,其中所述可複寫式非揮發性記憶體模組具有多個實體單元,其中所述可複寫式非揮發性記憶體模組具有多個實體單元,並且所述多個實體單元的每一個實體單元包括多個實體子單元,其中多個實體位址被配置給所述多個實體子單元。所述儲存控制器包括記憶體介面控制電路、錯誤檢查與校正電路與處理器。記憶體介面控制電路用以耦接至所述可複寫式非揮發性記憶體模組。錯誤檢查與校正電路用以編碼欲儲存至所述可複寫式非揮發性記憶體模組的原始資料。處理器耦接至所述記憶體介面控制電路及所述錯誤檢查與校正電路。所述處理器用以開始執行寫入指令,將所述原始資料傳送至所述錯誤檢查與校正電路,其中所述寫入指令指示寫入所述原始資料至所述多個實體位址中的一或多個目標實體位址。所述錯誤檢查與校正電路用以根據所述寫入指令獲得對應所述原始資料的驗證資料,其中所述錯誤檢查與校正電路更用以附加所述驗證資料至所述原始資料成為一擾亂前資料,其中所述錯誤檢查與校正電路更用以對所述擾亂前資料執行一擾亂操作,以獲得一擾亂後資料。此外,所述錯誤檢查與校正電路更用以對所述擾亂後資料執行編碼操作,以獲得碼字資料,並且回應所述處理器對應所述原始資料的所述碼字資料已經編碼完成,其中所述處理器更用以寫入所述碼字資料至所述一或多個目標實體位址,以完成所述寫入指令的執行。
本發明的一實施例提供用於控制配置有可複寫式非揮發性記憶體模組的儲存裝置的一種儲存控制器,其中所述可複寫式非揮發性記憶體模組具有多個實體單元,其中所述可複寫式非揮發性記憶體模組具有多個實體單元,並且所述多個實體單元的每一個實體單元包括多個實體子單元,其中多個實體位址被配置給所述多個實體子單元。所述儲存控制器包括記憶體介面控制電路、錯誤檢查與校正電路與處理器。記憶體介面控制電路用以耦接至所述可複寫式非揮發性記憶體模組。錯誤檢查與校正電路用於解碼儲存在所述可複寫式非揮發性記憶體模組中的碼字資料。處理器耦接至所述記憶體介面控制電路及所述錯誤檢查與校正電路。所述處理器用以開始執行讀取指令,根據所述讀取指令從所述多個實體位址中的一或多個目標實體位址讀取所述碼字資料,並且將所述碼字資料傳送至所述錯誤檢查與校正電路。所述錯誤檢查與校正電路用以對所述碼字資料執行解碼操作,以獲得已解碼碼字資料,其中所述錯誤檢查與校正電路更用以對所述已解碼碼字資料執行解擾亂操作,以獲得擾亂前資料。此外,所述錯誤檢查與校正電路更用以辨識所述擾亂前資料中的驗證資料與原始資料,其中所述錯誤檢查與校正電路更用以根據所述讀取指令辨識對應所述原始資料的一或多個第一系統資料,其中所述錯誤檢查與校正電路更用以經由比對所述一或多個第一系統資料與所述驗證資料來判斷所述原始資料是否正確,其中若所述驗證資料等於所述一或多個第一系統資料,所述錯誤檢查與校正電路判定所述原始資料正確。當判定所述原始資料是正確時,所述錯誤檢查與校正電路判定所述碼字資料解碼成功,傳送所述原始資料,並且回應所述處理器對應所述碼字資料的所述原始資料已經解碼成功,以完成所述讀取指令的執行。
基於上述,本發明實施例所提供的資料編碼方法、資料解碼方法以及儲存控制器,在編碼操作中,可根據對應原始資料的寫入指令來獲得驗證資料,以附加驗證資料至原始資料再執行編碼操作,並且不需要附加循環冗餘校驗碼至原始資料,進而減少了整體碼字資料的耗費空間。此外,在解碼操作中,可根據對應碼字資料的讀取指令辨識一或多個第一系統資料,並且根據所述一或多個第一系統資料與所述驗證資料來判斷解碼後所獲得之原始資料是否正確。特別是,上述的編碼/解碼操作可節省耗費於循環冗餘校驗碼運算的資源/計算量。如此一來,可在不需要經由循環冗餘校驗碼的情況下依然可檢查解碼後之資料是否正確,進而可解決近似碼字的問題並且在節省資源的情況下增進了的儲存裝置編碼/解碼資料的整體效率。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
在本實施例中,儲存裝置包括可複寫式非揮發性記憶體模組(rewritable non-volatile memory module)與儲存裝置控制器(亦稱,儲存控制器或儲存控制電路)。此外,儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至儲存裝置或從儲存裝置中讀取資料。
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。
請參照圖1,主機系統(Host System)10包括處理器(Processor)110、主機記憶體(Host Memory)120及資料傳輸介面電路(Data Transfer Interface Circuit)130。在本實施例中,資料傳輸介面電路130耦接(亦稱,電性連接)至處理器110與主機記憶體120。在另一實施例中,處理器110、主機記憶體120與資料傳輸介面電路130之間利用系統匯流排(System Bus)彼此耦接。
儲存裝置20包括儲存控制器(Storage Controller)210、可複寫式非揮發性記憶體模組(Rewritable Non-Volatile Memory Module)220及連接介面電路(Connection Interface Circuit)230。其中,儲存控制器210包括處理器211、資料管理電路(Data Transfer Management Circuit)212與記憶體介面控制電路(Memory Interface Control Circuit)213。
在本實施例中,主機系統10是透過資料傳輸介面電路130與儲存裝置20的連接介面電路230耦接至儲存裝置20來進行資料的存取操作。例如,主機系統10可經由資料傳輸介面電路130將資料儲存至儲存裝置20或從儲存裝置20中讀取資料。
在本實施例中,處理器110、主機記憶體120及資料傳輸介面電路130可設置在主機系統10的主機板上。資料傳輸介面電路130的數目可以是一或多個。透過資料傳輸介面電路130,主機板可以經由有線或無線方式耦接至儲存裝置20。儲存裝置20可例如是隨身碟、記憶卡、固態硬碟(Solid State Drive,SSD)或無線記憶體儲存裝置。無線記憶體儲存裝置可例如是近距離無線通訊(Near Field Communication,NFC)記憶體儲存裝置、無線傳真(WiFi)記憶體儲存裝置、藍牙(Bluetooth)記憶體儲存裝置或低功耗藍牙記憶體儲存裝置(例如,iBeacon)等以各式無線通訊技術為基礎的記憶體儲存裝置。此外,主機板也可以透過系統匯流排耦接至全球定位系統(Global Positioning System,GPS)模組、網路介面卡、無線傳輸裝置、鍵盤、螢幕、喇叭等各式I/O裝置。
在本實施例中,資料傳輸介面電路130與連接介面電路230是相容於高速周邊零件連接介面(Peripheral Component Interconnect Express, PCI Express)標準的介面電路。並且,資料傳輸介面電路130與連接介面電路230之間是利用快速非揮發性記憶體介面標準(Non-Volatile Memory express,NVMe)通訊協定來進行資料的傳輸。
然而,必須瞭解的是,本發明不限於此,資料傳輸介面電路130與連接介面電路230亦可以是符合並列先進附件(Parallel Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)1394標準、序列先進附件(Serial Advanced Technology Attachment,SATA)標準、通用序列匯流排(Universal Serial Bus,USB)標準、SD介面標準、超高速一代(Ultra High Speed-I,UHS-I)介面標準、超高速二代(Ultra High Speed-II,UHS-II)介面標準、記憶棒(Memory Stick, MS)介面標準、多晶片封裝(Multi-Chip Package)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、eMMC介面標準、通用快閃記憶體(Universal Flash Storage,UFS)介面標準、eMCP介面標準、CF介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。此外,在另一實施例中,連接介面電路230可與儲存控制器210封裝在一個晶片中,或者連接介面電路230是佈設於一包含儲存控制器210之晶片外。
在本實施例中,主機記憶體120用以暫存處理器110所執行的指令或資料。例如,在本範例實施例中,主機記憶體120可以是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)等。然而,必須瞭解的是,本發明不限於此,主機記憶體120也可以是其他適合的記憶體。
儲存控制器210用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令並且根據主機系統10的指令在可複寫式非揮發性記憶體模組220中進行資料的寫入、讀取與抹除等運作。
更詳細來說,儲存控制器210中的處理器211為具備運算能力的硬體,其用以控制儲存控制器210的整體運作。具體來說,處理器211具有多個控制指令,並且在儲存裝置20運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。
值得一提的是,在本實施例中,處理器110與處理器211例如是中央處理單元(Central Processing Unit,CPU)、微處理器(micro-processor)、或是其他可程式化之處理單元(Microprocessor)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)、可程式化邏輯裝置(Programmable Logic Device,PLD)或其他類似電路元件,本發明並不限於此。
在一實施例中,儲存控制器210還具有唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當儲存控制器210被致能時,處理器211會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組220中之控制指令載入至儲存控制器210的隨機存取記憶體中。之後,處理器211會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。在另一實施例中,處理器211的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組220的特定區域,例如,可複寫式非揮發性記憶體模組220中專用於存放系統資料的實體儲存單元中。
在本實施例中,如上所述,儲存控制器210還包括資料管理電路212、記憶體介面控制電路213與錯誤檢查與校正電路214。應注意的是,儲存控制器220各部件所執行的操作亦可視為儲存控制器220所執行的操作。
其中,資料管理電路212耦接至處理器211、記憶體介面控制電路213與連接介面電路230。資料管理電路212用以接受處理器211的指示來進行資料的傳輸。例如,經由連接介面電路230從主機系統10(如,主機記憶體120)讀取資料,並且將所讀取的資料經由記憶體介面控制電路213寫入至可複寫式非揮發性記憶體模組220中(如,根據來自主機系統10的寫入指令來進行寫入操作)。又例如,經由記憶體介面控制電路213從可複寫式非揮發性記憶體模組220的一或多個實體單元中讀取資料(資料可讀取自一或多個實體單元中的一或多個記憶胞/實體子單元),並且將所讀取的資料經由連接介面電路230寫入至主機系統10(如,主機記憶體120)中(如,根據來自主機系統10的讀取指令來進行讀取操作)。在另一實施例中,資料管理電路212亦可整合至處理器211中。
記憶體介面控制電路213用以接受處理器211的指示,配合資料管理電路212來進行對於可複寫式非揮發性記憶體模組220的寫入(亦稱,程式化,Programming)操作、讀取操作或抹除操作。
舉例來說,處理器211可執行寫入指令序列(或處理器211指示資料管理電路212發送寫入指令序列至記憶體介面控制電路213),以指示記憶體介面控制電路213將資料寫入至可複寫式非揮發性記憶體模組220中的一或多個實體位址(亦稱,目標實體位址);處理器211可執行讀取指令序列(或處理器211指示資料管理電路212發送讀取指令序列至記憶體介面控制電路213),以指示記憶體介面控制電路213從可複寫式非揮發性記憶體模組220的對應讀取指令的一或多個實體位址(亦稱,目標實體位址)中讀取資料;處理器211可執行抹除指令序列(或處理器211指示資料管理電路212發送抹除指令序列至記憶體介面控制電路213),以指示記憶體介面控制電路213對可複寫式非揮發性記憶體模組220進行抹除操作。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示對可複寫式非揮發性記憶體模組220執行相對應的寫入、讀取及抹除等操作。在一實施例中,處理器211還可以下達其他類型的指令序列給記憶體介面控制電路213,以對可複寫式非揮發性記憶體模組220執行相對應的操作。
此外,欲寫入至可複寫式非揮發性記憶體模組220的資料會經由記憶體介面控制電路213轉換為可複寫式非揮發性記憶體模組220所能接受的格式。具體來說,若處理器211要存取可複寫式非揮發性記憶體模組220,處理器211會傳送對應的指令序列給記憶體介面控制電路213以指示記憶體介面控制電路213執行對應的操作。例如,這些指令序列可包括指示寫入資料的寫入指令序列、指示讀取資料的讀取指令序列、指示抹除資料的抹除指令序列、以及用以指示各種記憶體操作(如,垃圾回收操作、損耗平衡操作等等)的相對應的指令序列。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
圖2是根據本發明的一實施例所繪示的錯誤檢查電路所執行之編碼/解碼操作的示意圖。請參照圖2,在本實施例中,錯誤檢查與校正電路214包括檢查單元(checking unit)2140、擾亂器(scrambler)2141、解擾亂器(descrambler)2142、編碼器(encoder)2143與解碼器(decoder)2144。在另一實施例中,錯誤檢查與校正電路214更包括循環冗餘校驗器(Cyclic Redundancy Checker,CRC)2145。
在本實施例中,檢查單元2140、編碼器2143與解碼器2144是以硬體電路的方式來實作。應注意的是,在一實施例中,擾亂器2141可與解擾亂器2142整合成一個擾亂/解擾亂器(scrambler/descrambler),並且編碼器2143可與解碼器2144整合一個編碼/解碼器。此外,在另一實施例中,擾亂器2141亦可整合至編碼器2143中,並且解擾亂器2142亦可整合至解碼器2144中。
錯誤檢查與校正電路214用以執行錯誤檢查與校正程序以確保儲存在可複寫式非揮發性記憶體模組220中的資料(亦稱,碼字/碼字資料,codeword/codeword data)的正確性。所述錯誤檢查與校正程序又可區分為(1)將原始資料編篆為碼字資料的編碼程序(編碼操作),以及(2)將碼字資料解碼為原始資料的解碼程序(解碼操作)。
在編碼程序中,檢查單元2140用以附加對應原始資料之驗證資料至原始資料;擾亂器2141用以對所接收之資料進行擾亂操作,以輸出已擾亂資料;編碼器2143用以將所接收之資料(如,已擾亂資料)進行編碼操作,以附加錯誤檢查與校正碼至所接收之資料而成為碼字資料。
在解碼程序中,解碼器2144用以將所接收之資料(如,碼字資料)進行解碼操作,以根據其中之錯誤檢查與校正碼來解碼/校正所接收之碼字資料,進而輸出資料(如,已擾亂資料)給解擾亂器2142;解擾亂器2142用以對所接收之資料進行解擾亂操作,以還原所接收之資料為進行擾亂操作前的資料(亦稱,擾亂前資料);檢查單元2140用以根據對應碼字資料(或預期之經過解碼程序可獲得的原始資料)之驗證資料來檢驗所接收的資料(如,擾亂前資料),進而判定所述碼字資料是否被正確地解碼為原始資料。所述驗證資料可為元資料(metadata)、系統資料(system data)或其他已知資料。
在本實施例中,編碼器2143與解碼器2144所使用的演算法為相同的演算法。所述演算法例如為低密度奇偶檢查碼(low density parity code,LDPC)演算法。然而,在另一實施例中,編碼器2143與解碼器2144所使用的演算法也可以是BCH碼、迴旋碼(convolutional code)、渦輪碼(turbo code)、位元翻轉(bit flipping)等編/解碼演算法。
應注意的是,上述之檢查單元2140亦可整合至處理器211中,即,處理器211可具有檢查單元2140的功能,以附加驗證資料至原始資料再傳送給錯誤檢查與校正電路214來進行編碼操作,或從錯誤檢查與校正電路214接收原始資料後,經由對應原始資料之系統資料與驗證資料來檢查所獲得之原始資料是否正確。以下會藉由多個圖式來詳述錯誤檢查與校正電路214中的各元件的功能與協同運作方式。
可複寫式非揮發性記憶體模組220是耦接至儲存控制器210(記憶體介面控制電路213)並且用以儲存主機系統10所寫入之資料。可複寫式非揮發性記憶體模組220可以是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存1個位元的快閃記憶體模組)、多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元的快閃記憶體模組)、三階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元的快閃記憶體模組)、三維NAND型快閃記憶體模組(3D NAND flash memory module)或垂直NAND型快閃記憶體模組(Vertical NAND flash memory module)等其他快閃記憶體模組或其他具有相同特性的記憶體模組。可複寫式非揮發性記憶體模組220中的記憶胞是以陣列的方式設置。
在本實施例中,可複寫式非揮發性記憶體模組220的多個記憶胞會構成多個實體程式化單元(亦稱,實體子單元),並且此些實體程式化單元會構成多個實體區塊(亦稱,實體抹除單元或實體單元)。具體來說,同一條字元線(或同一個字元線層)上的記憶胞會組成一或多個實體程式化單元。處理器211會分別配置多個實體位址給所述多個實體子單元。
在以下實施例中,是以記憶胞作為寫入(程式化)資料的最小單位。實體單元為抹除之最小單位,即,每一實體單元含有最小數目之一併被抹除之記憶胞。此外,實體單元為實體區塊,實體子單元為實體頁面,並且每個實體位址用以指代對應的實體頁面的位址。
應注意的是,在本實施例中,用以記錄一實體單元的資訊的系統資料可稱為實體單元資訊,並且其可利用該實體單元中的一或多個實體子單元來記錄,或是利用一個系統區中用以記錄所有系統資料的特定實體單元的一或多個實體子單元來記錄。在本實施例中,所述實體單元資訊包括該實體單元的抹除次數值(Program erase cycle,PEC)、時間戳記(Timestamp)、讀取次數值(Read counter value)、實體單元索引碼(Physical Unit Index)等資訊。更詳細來說,每當處理器211對一實體單元進行抹除操作時,在完成所述抹除操作後,處理器211會對當前對應該實體單元的抹除次數值加1(如,抹除次數值會隨著每次的抹除操作而從0開始累加)。即,抹除次數值可反映出其所對應的實體單元的被抹除的次數的總和。所述時間戳記用以指示對應的實體單元儲存其中的第一筆資料的時間。時間戳記的大小(數值差異)可用來表示時間的先後順序。本發明並不限定所述時間戳記的詳細格式。所述讀取次數值用以統計對應的實體單元被讀取的總次數。所述實體單元索引碼用以代表對應的實體單元的獨特的識別碼,處理器211可根據實體單元索引碼來辨識其所對應的實體單元以及相關的資料。
儲存控制器210會配置多個邏輯單元給可複寫式非揮發性記憶體模組220。主機系統10是透過所配置的邏輯單元來存取儲存在多個實體單元中的使用者資料。在此,每一個邏輯單元可以是由一或多個邏輯位址組成。例如,邏輯單元可以是邏輯區塊(Logical Block)、邏輯頁面(Logical Page)或是邏輯扇區(Logical Sector)。一個邏輯單元可以是映射至一或多個實體單元,其中實體單元可以是一或多個實體位址、一或多個實體扇、一或多個實體程式化單元或者一或多個實體抹除單元。在本實施例中,邏輯單元為邏輯區塊,並且邏輯子單元為邏輯頁面。每一邏輯單元具有多個邏輯子單元。
此外,儲存控制器210會建立邏輯轉實體位址映射表(Logical To Physical address mapping table)與實體轉邏輯位址映射表(Physical To Logical address mapping table),以記錄配置給可複寫式非揮發性記憶體模組220的邏輯單元(如,邏輯區塊、邏輯頁面或邏輯扇區)與實體單元(如,實體抹除單元、實體程式化單元、實體扇區)之間的映射關係。換言之,儲存控制器210可藉由邏輯轉實體位址映射表來查找一邏輯單元所映射的實體單元,並且儲存控制器210可藉由實體轉邏輯位址映射表來查找一實體單元所映射的邏輯單元。然而,上述有關邏輯單元與實體單元映射的技術概念為本領域技術人員之慣用技術手段,不再贅述於此。
在一實施例中,儲存控制器210還包括緩衝記憶體與電源管理電路。緩衝記憶體是耦接至處理器211並且用以暫存來自於主機系統10的資料與指令、來自於可複寫式非揮發性記憶體模組220的資料或其他用以管理儲存裝置20的系統資料,以讓處理器211可快速地從緩衝記憶體中存取所述資料、指令或系統資料。電源管理電路是耦接至處理器211並且用以控制儲存裝置20的電源。
圖3A為根據本發明的一實施例所繪示的被編碼為碼字資料之原始資料的示意圖。圖4A為根據本發明的一實施例所繪示的資料編碼方法的流程圖。請同時參照圖2、圖3A、圖4A,在步驟S41中,處理器211開始執行寫入指令,其中所述寫入指令指示寫入所述原始資料至所述多個實體位址中的一或多個目標實體位址。
舉例來說,在本實施例中,假設主機系統10發送寫入指令與原始資料RD1至處理器211,並且寫入指令指示將所述原始資料RD1儲存至一或多個邏輯位址(亦稱,目標邏輯位址)。根據所述寫入指令,處理器211會從可複寫式非揮發性記憶體模組220的所有可用的實體位址中選擇一或多個實體位址(亦稱,目標實體位址)來儲存所述原始資料RD1。處理器211會將原始資料RD1傳送給錯誤檢查與校正電路214以開始進行對於原始資料RD1的編碼程序(如圖2所繪示之箭頭A10)。
接著,在接收到所述原始資料RD1後,在步驟S42中,檢查單元2140從所述寫入指令中擷取對應所述原始資料的驗證資料VD1。也就是說,檢查單元2140可直接從寫入指令讀取對應所述原始資料的驗證資料VD1。所述驗證資料VD1可為用以儲存原始資料RD1的一或多個目標邏輯位址。以下藉由圖4B,更詳述步驟S42以及所述驗證資料VD1的細節。
圖4B為根據本發明的一實施例所繪示的圖4A中的步驟S42的流程圖。請參照圖4B,在本實施例中,在步驟S421中,檢查單元2140從所述寫入指令中辨識對應所述原始資料的多個第一系統資料。在本實施例中,寫入指令包括多個第一系統資料,以及指令敘述。所述第一系統資料包括用以儲存原始資料RD1的一或多個目標邏輯位址;用以儲存原始資料RD1的一或多個目標實體位址;以及用以儲存原始資料RD1的目標實體單元的實體單元資訊。實體單元資訊已舉例如上,不再贅述於此。上述第一系統資料分別會具有各自的資料長度。此外,所述處理器211可根據該寫入指令的指令敘述的資訊知道該寫入指令欲將原始資料寫入至所述一或多個目標邏輯位址。
接著,在步驟S423中,檢查單元2140根據預設的檢查能力來決定所述驗證資料的長度。具體來說,廠商可根據需求來設定檢查單元2140的檢查能力的高低。隨著檢查能力的高低不同驗證資料的長度的範圍也會跟著變化。例如,驗證資料的長度的範圍可為1~16位元組。也就是說,驗證資料的長度是可以被預先設定的。
接著,在步驟S425中,檢查單元2140根據所述驗證資料的所述長度從所述多個第一系統資料中選擇一或多個第二系統資料,以將所選擇的所述一或多個第二系統資料組合成所述驗證資料,其中所選擇的所述一或多個第二系統資料的總資料長度等於所述驗證資料的所述長度。具體來說,由於驗證資料的長度已決定,檢查單元2140可據此來從所述多個第一系統資料中選擇一或多個,以使被選擇之第一系統資料(亦稱,一或多個第二系統資料)的資料長度的總和(亦稱,總資料長度)可等於預設的驗證資料的長度。接著,在決定完一或多個第二系統資料後,檢查單元2140可從寫入指令中讀取所述一或多的第二系統資料來組合所述一或多個第二系統資料,以構成一筆驗證資料(檢查單元2140獲得驗證資料)。也就是說,當驗證資料的長度改變時,檢查單元2140可對應地改變第二系統資料的類型,以形成不同的驗證資料。此外,在一實施例中,檢查單元2140亦可切割特定的一或多個第一系統資料,以成為第二系統資料,以使經由一或多個第二系統資料所組合而成的驗證資料的長度符合預設值。
應注意的是,用以構成驗證資料之多個第二系統資料的排列順序可以依據需求或是設定來被改變。此外,經由圖4B的說明,可知道驗證資料可直接從對應該原始資料的寫入指令中讀取,並不需要另外耗費資源來計算或是編碼驗證資料。
請再回到圖4A,在獲得驗證資料後,在步驟S43中,如圖2、3A中的箭頭A11所示,檢查單元2140附加所述驗證資料VD1至所述原始資料RD1成為擾亂前資料RVD1。此外,擾亂前資料RVD1會被傳送給擾亂器2141,以進行擾亂操作。
在獲得擾亂前資料RVD1後,在步驟S44中,如圖2、3A中的箭頭A12所示,擾亂器2141對所述擾亂前資料RVD1執行擾亂操作,以獲得擾亂後資料RVSD1。此外,擾亂後資料RVSD1會被傳送給編碼器2143,以進行編碼操作。
在獲得擾亂後資料RVSD1後,在步驟S45中,如圖2、3A中的箭頭A13所示,編碼器2143對所述擾亂後資料RVSD1執行編碼操作,以獲得碼字資料CD1。具體來說,在對所述擾亂後資料RVSD1執行編碼操作後,編碼器2143會產生錯誤檢查與校正碼ECC1,並且編碼器2143將錯誤檢查與校正碼ECC1附加至擾亂後資料RVSD1,以形成碼字資料CD1(如圖3A所繪示)。
最後,在步驟S46中,在獲得所述碼字資料後,寫入所述碼字資料至所述一或多個目標實體位址,以完成所述寫入指令的執行。具體來說,在獲得碼字資料CD1後,錯誤檢查與校正電路214會回應處理器211對應原始資料RD1的碼字資料已經編碼完成。處理器211可將編碼完成之碼字資料CD1寫入至所述一或多個目標實體位址,以完成所述寫入指令的執行。此外,處理器211亦可將所述一或多個目標邏輯位址映射至所述一或多個目標實體位址,並且回應主機系統10所述原始資料RD1已寫入至可複寫式非揮發性記憶體模組220(寫入指令已完成)。
應注意的是,在上述實施例中,寫入指令為主機系統所發送,以寫入為使用者資料的原始資料。然而,在另一實施例中,寫入指令亦可用以執行處理器211為了管理所儲存之資料的管理操作(如,資料合併操作、垃圾回收操作等)所對應執行的資料寫入操作。
圖3B為根據本發明的一實施例所繪示的被編碼為碼字資料之原始資料的示意圖。圖5A為根據本發明的一實施例所繪示的資料解碼方法的流程圖。請同時參照圖2、圖3B、圖5A,在步驟S51中,處理器211開始執行讀取指令,並且根據所述讀取指令從所述多個實體位址中的一或多個目標實體位址讀取所述碼字資料。
舉例來說,在本實施例中,假設主機系統10發送讀取指令至處理器211,並且所述讀取指令指示從一或多個邏輯位址(亦稱,目標邏輯位址)讀取原始資料。根據所述讀取指令,處理器211會從可複寫式非揮發性記憶體模組220的所有可用的實體位址中映射至所述一或多個目標邏輯位址的一或多個實體位址(亦稱,目標實體位址)來讀取碼字資料CD2(碼字資料CD2為主機系統10所欲讀取之原始資料被編碼且寫入至目標實體位址的資料)。處理器211會將碼字資料CD2傳送給錯誤檢查與校正電路214以開始進行對於碼字資料CD2的解碼程序(如圖2所繪示之箭頭A20)。
接著,在接收到所述碼字資料CD2後,在步驟S52中,如圖2、3A中的箭頭A21所示,解碼器2144對所述碼字資料CD2執行解碼操作,以獲得已解碼碼字資料RVSD2(亦稱,擾亂後資料RVSD2)。具體來說,請參照圖3B,解碼器2144會辨識碼字資料CD2中的錯誤檢查與校正碼ECC2與擾亂後資料RVSD2,並且解碼器2144會根據錯誤檢查與校正碼ECC2來檢查及校正擾亂後資料RVSD2,最後輸出解碼後之已解碼碼字資料RVSD2。已解碼碼字資料RVSD2會被傳送至解擾亂器2142,以進行解擾亂操作。
請再回到圖4A,在獲得已解碼碼字資料RVSD2後,在步驟S53中,如圖2、3A中的箭頭A22所示,解擾亂器2142對所述已解碼碼字資料RVSD2執行解擾亂操作,以獲得擾亂前資料RVD2。此外,擾亂前資料RVD2會被傳送給檢查單元2140,以進行檢查操作。
在獲得擾亂前資料RVD2後,在步驟S54中,檢查單元2140辨識所述擾亂前資料RVD2中的驗證資料VD2與原始資料RD2(如圖3B所示)。
接著,在步驟S55中,檢查單元2140從所述讀取指令中擷取對應所述原始資料RD2的一或多個第一系統資料。也就是說,檢查單元2140可直接從讀取指令中讀取可檢查驗證資料VD2是否正確的系統資料。所述系統資料可為儲存原始資料RD2的一或多個目標邏輯位址。以下藉由圖5B,更詳述步驟S55以及所述系統資料的細節。
圖5B為根據本發明的一實施例所繪示的圖5A中的步驟S55的流程圖。請參照圖5B,在本實施例中,在步驟551中,檢查單元2140從所述讀取指令中辨識對應所述原始資料的多個第二系統資料。在本實施例中,所述多個第二系統資料,為上述編碼操作中的所述多個第一系統資料,即對應原始資料的各種系統資料的統稱,並且所述讀取指令包括指令描述以及所述多個第二系統資料。其中,所述讀取指令的所述指令描述用以指示處理器211從一或多個目標邏輯位址中讀取原始資料RD2。接著,處理器211根據邏輯轉實體表可查找出用以儲存經由編碼該原始資料而獲得的碼字資料的一或多個目標實體位址。所述第二系統資料可用以檢查經由對該碼字資料執行的解碼程序所獲得的原始資料RD2是否來自於讀取指令所欲讀取之目標邏輯位址。
接著,在步驟S553中,檢查單元2140根據預設的檢查能力來決定所述驗證資料VD2的長度。此步驟相同於步驟S423。
接著,在步驟S555中,檢查單元2140根據所述驗證資料的所述長度從所述多個第二系統資料中選擇一或多個第一系統資料,以將所選擇的所述一或多個第一系統資料組合成所述驗證資料,其中所選擇的所述一或多個第一系統資料的總資料長度等於所述驗證資料的所述長度。具體來說,相似於上述步驟S425的說明,在本實施例所描述的解碼程序中,所述所選擇的所述一或多個第一系統資料即為在編碼程序中的被選擇的所述一或多個第二系統資料,其被用以根據預設的驗證資料的長度來被選擇且讀取,以組合成驗證資料。換言之,在步驟S555中,檢查單元2140會根據驗證資料VD2的長度辨識出,讀取指令中的所述多個第二系統資料中應該是哪些系統資料(在本實施例中,稱為第一系統資料)來組成所述驗證資料。如此一來,經由圖4B的說明,可知道處理器211可直接從對應該原始資料的讀取指令中讀取系統資料,以經由和驗證資料VD2的比對來檢查從碼字資料CD2所獲得之原始資料RD2是否正確。上述用以與驗證資料VD2比對的系統資料並不需要另外經由耗費資源來計算或是解碼才能獲得。
請回到圖5A,接著,在步驟S56中,檢查單元2140經由比對所述一或多個第一系統資料與所述驗證資料VD2來判斷所述原始資料RD2是否正確,其中若所述驗證資料等於所述一或多個第一系統資料,判定所述原始資料RD2正確。具體來說,在辨識出所述一或多個第一系統資料後,檢查單元2140會去比對驗證資料VD2是否相等於所辨識出的所述一或多個第一系統資料(即,檢查單元2140的全部資料位元是否等於所述一或多個第一系統資料所排序而成的多個資料位元)。若相等,則檢查單元2140會判定原始資料RD2是正確的。
接著,在步驟S57中,當判定所述原始資料RD2是正確時,判定所述碼字資料解碼成功,錯誤檢查與校正電路214傳送所述原始資料RD2,以完成所述讀取指令的執行。
具體來說,在判定原始資料RD2是正確後,錯誤檢查與校正電路214會回應處理器211對應碼字資料CD2的解碼程序已經完成,並且獲得對應的原始資料RD2。所述原始資料RD2為對應所述讀取指令的原始資料。此外,處理器211可回應主機系統10儲存於所述一或多個邏輯位址之所述原始資料RD2已讀取完畢,並且將所述原始資料RD2回傳至主機系統10,以完成所述讀取指令的執行。
應注意的是,在上述實施例中,讀取指令為主機系統所發送,以讀取為使用者資料的原始資料。然而,在另一實施例中,讀取指令亦可用以執行處理器211為了管理所儲存之資料的管理操作(如,資料合併操作、垃圾回收操作等)所對應執行的資料讀取操作。
應注意的是,上述錯誤檢查與校正電路214的各元件的操作亦可視為錯誤檢查與校正電路214所執行的操作。
根據上述實施例所闡述的資料編碼方法、資料解碼方法及實施所述方法的儲存控制器,可不需要在設置CRC的情況下,依然可以檢查解碼後的資料是否正確。
然而,以下會再提出另一種可結合現有CRC技術手段與上述資料編碼方法與資料解碼方法的另一實施例與上述實施例的不同之處。
具體來說,在編碼程序中,在獲得對應原始資料的驗證資料後,檢查單元2140對所述驗證資料與所述原始資料執行循環冗餘校驗運算,以獲得循環冗餘校驗碼。接著,檢查單元2140根據所述循環冗餘校驗碼與所述驗證資料執行互斥或運算,以獲得調整後驗證資料。接著,在上述檢查單元2140附加所述驗證資料至所述原始資料成為擾亂前資料的運作中(如箭頭A11所示),檢查單元2140將所述調整後驗證資料代替所述驗證資料以附加至所述原始資料成為所述擾亂前資料。
另一方面,在解碼程序中,在辨識出所述一或多個第一系統資料後,檢查單元2140對所述一或多個第一系統資料與所述原始資料執行循環冗餘校驗運算,以獲得循環冗餘校驗碼。接著,檢查單元2140根據所述循環冗餘校驗碼與所述驗證資料執行互斥或運算,以獲得調整後驗證資料。接著,在上述經由比對所述一或多個第一系統資料與所述驗證資料來判斷所述原始資料是否正確的運作中,檢查單元2140改為將調整後驗證資料代替驗證資料以與所述一或多個第一系統資料進行比對。若調整後驗證資料等於所述一或多個第一系統資料,則檢查單元2140判定所述原始資料RD2是正確的。如此一來,可藉由經由CRC運算所獲得的調整後驗證資料來取代驗證資料以加強編碼程序與解碼程序的可靠度。
綜上所述,本發明實施例所提供的資料編碼方法、資料解碼方法以及儲存控制器,在編碼操作中,可根據對應原始資料的寫入指令來獲得驗證資料,以附加驗證資料至原始資料再執行編碼操作,並且不需要附加循環冗餘校驗碼至原始資料,進而減少了整體碼字資料的耗費空間。此外,在解碼操作中,可根據對應碼字資料的讀取指令辨識一或多個第一系統資料,並且根據所述一或多個第一系統資料與所述驗證資料來判斷解碼後所獲得之原始資料是否正確。特別是,上述的編碼/解碼操作可節省耗費於循環冗餘校驗碼運算的資源/計算量。如此一來,可在不需要經由循環冗餘校驗碼的情況下依然可檢查解碼後之資料是否正確,進而可解決近似碼字的問題並且在節省資源的情況下增進了的儲存裝置編碼/解碼資料的整體效率。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10‧‧‧主機系統
20‧‧‧儲存裝置
110、211‧‧‧處理器
120‧‧‧主機記憶體
130‧‧‧資料傳輸介面電路
210‧‧‧儲存控制器
212‧‧‧資料傳輸管理電路
213‧‧‧記憶體介面控制電路
214‧‧‧錯誤檢查與校正電路
220‧‧‧可複寫式非揮發性記憶體模組
230‧‧‧連接介面電路
2140‧‧‧檢查單元
2141‧‧‧擾亂器
2142‧‧‧解擾亂器
2143‧‧‧編碼器
2144‧‧‧解碼器
2145‧‧‧CRC(循環冗餘校驗器)
A10、A11、A12、A13、A20、A21、A22、A23‧‧‧箭頭
RD1、RD2‧‧‧原始資料
CD1、CD2‧‧‧碼字資料
VD1、VD2‧‧‧驗證資料
RVD1、RVD2‧‧‧擾亂前資料
RVSD1、RVSD2‧‧‧擾亂後資料
ECC1、ECC2‧‧‧錯誤檢查與校正碼
S41、S42、S43、S44、S45、S46‧‧‧資料編碼方法的流程步驟
S421、S423、S425‧‧‧步驟S42的流程步驟
S51、S52、S53、S54、S55、S56、S57‧‧‧資料解碼方法的流程步驟
S551、S553、S555‧‧‧步驟S55的流程步驟
圖1是根據本發明的一實施例所繪示的主機系統及儲存裝置的方塊示意圖。 圖2是根據本發明的一實施例所繪示的錯誤檢查電路所執行之編碼/解碼操作的示意圖。 圖3A為根據本發明的一實施例所繪示的被編碼為碼字資料之原始資料的示意圖。 圖3B為根據本發明的一實施例所繪示的被解碼為原始資料之碼字資料的示意圖。 圖4A為根據本發明的一實施例所繪示的資料編碼方法的流程圖。 圖4B為根據本發明的一實施例所繪示的圖4A中的步驟S42的流程圖。 圖5A為根據本發明的一實施例所繪示的資料解碼方法的流程圖。 圖5B為根據本發明的一實施例所繪示的圖5A中的步驟S55的流程圖。
Claims (16)
- 一種資料編碼方法,適用於編碼欲儲存至一可複寫式非揮發性記憶體模組的一原始資料,其中該可複寫式非揮發性記憶體模組具有多個實體單元,並且該些實體單元的每一個實體單元包括多個實體子單元,其中多個實體位址被配置給該些實體子單元,所述方法包括: 開始執行一寫入指令,其中該寫入指令指示寫入該原始資料至該些實體位址中的一或多個目標實體位址; 從該寫入指令中擷取對應該原始資料的一驗證資料; 附加該驗證資料至該原始資料成為一擾亂前資料; 對該擾亂前資料執行一擾亂操作,以獲得一擾亂後資料; 對該擾亂後資料執行一編碼操作,以獲得一碼字資料;以及 在獲得該碼字資料後,寫入該碼字資料至所述一或多個目標實體位址,以完成該寫入指令的執行。
- 如申請專利範圍第1項所述的資料編碼方法,其中上述從該寫入指令中擷取對應該原始資料的該驗證資料的步驟包括: 從該寫入指令中辨識對應該原始資料的多個第一系統資料; 根據預設的一檢查能力來決定該驗證資料的長度;以及 根據該驗證資料的該長度從該些第一系統資料中選擇一或多個第二系統資料,以將所選擇的所述一或多個第二系統資料組合成該驗證資料,其中所選擇的所述一或多個第二系統資料的總資料長度等於該驗證資料的該長度。
- 如申請專利範圍第2項所述的資料編碼方法, 其中該些第一系統資料包括用以儲存該原始資料的一或多個目標邏輯位址;用以儲存該原始資料的一或多個目標實體位址;以及用以儲存該原始資料的一目標實體單元的實體單元資訊。
- 如申請專利範圍第3項所述的資料編碼方法,更包括: 在獲得對應該原始資料的該驗證資料後,對該驗證資料與該原始資料執行一循環冗餘校驗運算,以獲得一循環冗餘校驗碼; 根據該循環冗餘校驗碼與該驗證資料執行一互斥或運算,以獲得一調整後驗證資料;以及 在上述附加該驗證資料至該原始資料成為該擾亂前資料的步驟中,將該調整後驗證資料代替該驗證資料以附加至該原始資料成為該擾亂前資料。
- 一種資料解碼方法,用於解碼儲存在一可複寫式非揮發性記憶體模組中的一碼字資料,其中該可複寫式非揮發性記憶體模組具有多個實體單元,並且該些實體單元的每一個實體單元包括多個實體子單元,其中多個實體位址被配置給該些實體子單元,所述方法包括: 開始執行一讀取指令,並且根據該讀取指令從該些實體位址中的一或多個目標實體位址讀取該碼字資料; 對該碼字資料執行一解碼操作,以獲得已解碼碼字資料; 對該已解碼碼字資料執行一解擾亂操作,以獲得一擾亂前資料; 辨識該擾亂前資料中的一驗證資料與一原始資料; 從該讀取指令中擷取對應該原始資料的一或多個第一系統資料; 經由比對所述一或多個第一系統資料與該驗證資料來判斷該原始資料是否正確,其中若該驗證資料等於所述一或多個第一系統資料,判定該原始資料正確;以及 當判定該原始資料是正確時,判定該碼字資料解碼成功,傳送該原始資料,以完成該讀取指令的執行。
- 如申請專利範圍第5項所述的資料解碼方法,其中上述根據該讀取指令辨識對應該原始資料的所述一或多個第一系統資料的步驟包括: 從該讀取指令中辨識對應該原始資料的多個第二系統資料; 根據預設的一檢查能力來決定該驗證資料的長度;以及 根據該驗證資料的該長度辨識該些第二系統資料中的所述一或多個第一系統資料,其中所述一或多個第一系統資料的總資料長度等於該驗證資料的該長度。
- 如申請專利範圍第6項所述的資料解碼方法, 其中該些第二系統資料包括用以儲存該原始資料的一或多個目標邏輯位址;用以儲存該原始資料的一或多個目標實體位址;以及用以儲存該原始資料的一目標實體單元的實體單元資訊。
- 如申請專利範圍第7項所述的資料解碼方法,更包括: 在辨識出所述一或多個第一系統資料後,對所述一或多個第一系統資料與該原始資料執行一循環冗餘校驗運算,以獲得一循環冗餘校驗碼; 根據該循環冗餘校驗碼與該驗證資料執行一互斥或運算,以獲得一調整後驗證資料;以及 在上述經由比對所述一或多個第一系統資料與該驗證資料來判斷該原始資料是否正確的步驟中,將該調整後驗證資料代替該驗證資料以與所述一或多個第一系統資料比對。
- 一種儲存控制器,用於控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置,其中該可複寫式非揮發性記憶體模組具有多個實體單元,其中該可複寫式非揮發性記憶體模組具有多個實體單元,並且該些實體單元的每一個實體單元包括多個實體子單元,其中多個實體位址被配置給該些實體子單元,該儲存控制器包括: 一記憶體介面控制電路,用以耦接至該可複寫式非揮發性記憶體模組; 一錯誤檢查與校正電路,用以編碼欲儲存至該可複寫式非揮發性記憶體模組的一原始資料;以及 一處理器,耦接至該記憶體介面控制電路及該錯誤檢查與校正電路, 其中該處理器用以開始執行一寫入指令,將該原始資料傳送至該錯誤檢查與校正電路,其中該寫入指令指示寫入該原始資料至該些實體位址中的一或多個目標實體位址, 其中該錯誤檢查與校正電路用以根據該寫入指令獲得對應該原始資料的一驗證資料, 其中該錯誤檢查與校正電路更用以附加該驗證資料至該原始資料成為一擾亂前資料, 其中該錯誤檢查與校正電路更用以對該擾亂前資料執行一擾亂操作,以獲得一擾亂後資料, 其中該錯誤檢查與校正電路更用以對該擾亂後資料執行一編碼操作,以獲得一碼字資料,並且回應該處理器對應該原始資料的該碼字資料已經編碼完成, 其中該處理器更用以寫入該碼字資料至所述一或多個目標實體位址,以完成該寫入指令的執行。
- 如申請專利範圍第9項所述的儲存控制器,其中在上述該錯誤檢查與校正電路更用以根據該寫入指令獲得對應該原始資料的該驗證資料的運作中, 該錯誤檢查與校正電路根據該寫入指令辨識對應該原始資料的多個第一系統資料, 其中該錯誤檢查與校正電路根據預設的一檢查能力來決定該驗證資料的長度, 其中該錯誤檢查與校正電路根據該驗證資料的該長度從該些第一系統資料中選擇一或多個第二系統資料,以將所選擇的所述一或多個第二系統資料組合成該驗證資料,其中所選擇的所述一或多個第二系統資料的總資料長度等於該驗證資料的長度。
- 如申請專利範圍第10項所述的儲存控制器, 其中該些第一系統資料包括用以儲存該原始資料的一或多個目標邏輯位址;用以儲存該原始資料的一或多個目標實體位址;以及用以儲存該原始資料的一目標實體單元的實體單元資訊。
- 如申請專利範圍第11項所述的儲存控制器, 其中在獲得對應該原始資料的該驗證資料後,該錯誤檢查與校正電路對該驗證資料與該原始資料執行一循環冗餘校驗運算,以獲得一循環冗餘校驗碼, 其中該錯誤檢查與校正電路根據該循環冗餘校驗碼與該驗證資料執行一互斥或運算,以獲得一調整後驗證資料, 其中在上述該錯誤檢查與校正電路更用以附加該驗證資料至該原始資料成為該擾亂前資料的運作中,該錯誤檢查與校正電路將該調整後驗證資料代替該驗證資料以附加至該原始資料成為該擾亂前資料。
- 一種儲存控制器,用於控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置,其中該可複寫式非揮發性記憶體模組具有多個實體單元,其中該可複寫式非揮發性記憶體模組具有多個實體單元,並且該些實體單元的每一個實體單元包括多個實體子單元,其中多個實體位址被配置給該些實體子單元,該儲存控制器包括: 一記憶體介面控制電路,用以耦接至該可複寫式非揮發性記憶體模組; 一錯誤檢查與校正電路,用於解碼儲存在該可複寫式非揮發性記憶體模組中的一碼字資料;以及 一處理器,耦接至該記憶體介面控制電路及該錯誤檢查與校正電路, 其中該處理器用以開始執行一讀取指令,根據該讀取指令從該些實體位址中的一或多個目標實體位址讀取該碼字資料,並且將該碼字資料傳送至該錯誤檢查與校正電路, 其中該錯誤檢查與校正電路用以對該碼字資料執行一解碼操作,以獲得已解碼碼字資料, 其中該錯誤檢查與校正電路更用以對該已解碼碼字資料執行一解擾亂操作,以獲得一擾亂前資料, 其中該錯誤檢查與校正電路更用以辨識該擾亂前資料中的一驗證資料與一原始資料, 其中該錯誤檢查與校正電路更用以根據該讀取指令辨識對應該原始資料的一或多個第一系統資料, 其中該錯誤檢查與校正電路更用以經由比對所述一或多個第一系統資料與該驗證資料來判斷該原始資料是否正確,其中若該驗證資料等於所述一或多個第一系統資料,該錯誤檢查與校正電路判定該原始資料正確, 其中當判定該原始資料是正確時,該錯誤檢查與校正電路判定該碼字資料解碼成功,傳送該原始資料,並且回應該處理器對應該碼字資料的該原始資料已經解碼成功,以完成該讀取指令的執行。
- 如申請專利範圍第13項所述的儲存控制器,其中在上述該錯誤檢查與校正電路更用以根據該讀取指令辨識對應該原始資料的所述一或多個第一系統資料的運作中, 該錯誤檢查與校正電路根據該寫入指令辨識對應該原始資料的多個第二系統資料, 其中該錯誤檢查與校正電路根據預設的一檢查能力來決定該驗證資料的長度, 其中該錯誤檢查與校正電路根據該驗證資料的該長度辨識該些第二系統資料中的所述一或多個第一系統資料,其中所述一或多個第一系統資料的總資料長度等於該驗證資料的長度。
- 如申請專利範圍第14項所述的儲存控制器, 其中該些第二系統資料包括用以儲存該原始資料的一或多個目標邏輯位址;用以儲存該原始資料的一或多個目標實體位址;以及用以儲存該原始資料的一目標實體單元的實體單元資訊。
- 如申請專利範圍第15項所述的儲存控制器, 其中在辨識出所述一或多個第一系統資料後,該錯誤檢查與校正電路對所述一或多個第一系統資料與該原始資料執行一循環冗餘校驗運算,以獲得一循環冗餘校驗碼, 其中該錯誤檢查與校正電路根據該循環冗餘校驗碼與該驗證資料執行一互斥或運算,以獲得一調整後驗證資料, 其中在上述經由比對所述一或多個第一系統資料與該驗證資料來判斷該原始資料是否正確的運作中,該錯誤檢查與校正電路將該調整後驗證資料代替該驗證資料以與所述一或多個第一系統資料比對。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW106138037A TWI646543B (zh) | 2017-11-03 | 2017-11-03 | 資料編碼方法、資料解碼方法以及儲存控制器 |
| US15/950,184 US10691534B2 (en) | 2017-11-03 | 2018-04-11 | Data encoding method, data decoding method and storage controller |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW106138037A TWI646543B (zh) | 2017-11-03 | 2017-11-03 | 資料編碼方法、資料解碼方法以及儲存控制器 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI646543B TWI646543B (zh) | 2019-01-01 |
| TW201919066A true TW201919066A (zh) | 2019-05-16 |
Family
ID=65804025
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW106138037A TWI646543B (zh) | 2017-11-03 | 2017-11-03 | 資料編碼方法、資料解碼方法以及儲存控制器 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US10691534B2 (zh) |
| TW (1) | TWI646543B (zh) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI723581B (zh) * | 2019-06-17 | 2021-04-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
| US11314586B2 (en) | 2019-06-17 | 2022-04-26 | Silicon Motion, Inc. | Data storage device and non-volatile memory control method |
| US11392489B2 (en) | 2019-06-17 | 2022-07-19 | Silicon Motion, Inc. | Data storage device and non-volatile memory control method |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI725786B (zh) | 2020-03-20 | 2021-04-21 | 新唐科技股份有限公司 | 受控裝置、主控裝置及資料傳輸方法 |
| US12189824B2 (en) | 2021-06-03 | 2025-01-07 | Google Llc | Register file protection |
| CN115467754B (zh) * | 2022-09-06 | 2024-06-14 | 中国第一汽车股份有限公司 | 车辆及其发动机的控制方法和装置 |
| CN117409847B (zh) * | 2023-12-13 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 一种存储测试装置及其测试方法 |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6986073B2 (en) * | 2000-03-01 | 2006-01-10 | Realtek Semiconductor Corp. | System and method for a family of digital subscriber line (XDSL) signal processing circuit operating with an internal clock rate that is higher than all communications ports operating with a plurality of port sampling clock rates |
| US6570782B1 (en) * | 2002-01-16 | 2003-05-27 | Hewlett-Packard Development Company, L.P. | Storage and retrieval for resistance-based memory devices |
| US7353516B2 (en) * | 2003-08-14 | 2008-04-01 | Nvidia Corporation | Data flow control for adaptive integrated circuitry |
| JP2007110349A (ja) * | 2005-10-12 | 2007-04-26 | Artray Co Ltd | Sataカメラシステム |
| US8175138B2 (en) * | 2008-02-15 | 2012-05-08 | Kylink Communications Corp. | Power efficient FHSS base-band hardware architecture |
| US8100330B2 (en) * | 2009-05-06 | 2012-01-24 | Xerox Corporation | Method for encoding and decoding data in a color barcode pattern |
| CN102446280B (zh) * | 2010-09-30 | 2016-03-23 | 西门子公司 | 一种验证数据的方法、装置及系统 |
| JP2013143747A (ja) * | 2012-01-12 | 2013-07-22 | Fuji Xerox Co Ltd | 画像転送装置及びプログラム |
| US9354872B2 (en) * | 2014-04-24 | 2016-05-31 | Xitore, Inc. | Apparatus, system, and method for non-volatile data storage and retrieval |
-
2017
- 2017-11-03 TW TW106138037A patent/TWI646543B/zh active
-
2018
- 2018-04-11 US US15/950,184 patent/US10691534B2/en active Active
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI723581B (zh) * | 2019-06-17 | 2021-04-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
| US11314586B2 (en) | 2019-06-17 | 2022-04-26 | Silicon Motion, Inc. | Data storage device and non-volatile memory control method |
| US11392489B2 (en) | 2019-06-17 | 2022-07-19 | Silicon Motion, Inc. | Data storage device and non-volatile memory control method |
Also Published As
| Publication number | Publication date |
|---|---|
| US20190138391A1 (en) | 2019-05-09 |
| TWI646543B (zh) | 2019-01-01 |
| US10691534B2 (en) | 2020-06-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI646543B (zh) | 資料編碼方法、資料解碼方法以及儲存控制器 | |
| CN109783001B (zh) | 数据编码方法、数据解码方法以及存储控制器 | |
| TWI592869B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
| TWI658463B (zh) | 資料存取方法、記憶體控制電路單元與記憶體儲存裝置 | |
| TWI628660B (zh) | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 | |
| TWI751620B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
| TWI640865B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
| TW201719671A (zh) | 資料程式化方法與記憶體儲存裝置 | |
| CN107146638A (zh) | 译码方法、内存储存装置及内存控制电路单元 | |
| CN109491828B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
| CN111580741B (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
| TW202230377A (zh) | 資料存取方法、記憶體控制電路單元及記憶體儲存裝置 | |
| CN106843744A (zh) | 数据程序化方法与内存储存装置 | |
| CN109559774B (zh) | 解码方法、存储器控制电路单元以及存储器存储装置 | |
| TWI575533B (zh) | 資料校正方法、記憶體控制電路單元與記憶體儲存裝置 | |
| TWI597731B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
| TWI709850B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
| TW201908957A (zh) | 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置 | |
| US12386529B2 (en) | Read voltage calibration method, memory storage device and memory control circuit unit | |
| CN106897023B (zh) | 数据读取方法、存储器控制电路单元及存储器储存装置 | |
| CN117079691A (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
| CN110874282B (zh) | 数据存取方法、存储器控制电路单元与存储器存储装置 | |
| TW201913353A (zh) | 資料儲存方法、記憶體控制電路單元及記憶體儲存裝置 | |
| TWI657454B (zh) | 資料編碼方法、記憶體控制電路單元與記憶體儲存裝置 | |
| TWI819876B (zh) | 資料儲存方法、記憶體儲存裝置及記憶體控制電路單元 |