TWI688965B - 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置 - Google Patents
資料寫入方法、記憶體控制電路單元及記憶體儲存裝置 Download PDFInfo
- Publication number
- TWI688965B TWI688965B TW108128920A TW108128920A TWI688965B TW I688965 B TWI688965 B TW I688965B TW 108128920 A TW108128920 A TW 108128920A TW 108128920 A TW108128920 A TW 108128920A TW I688965 B TWI688965 B TW I688965B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- check code
- error check
- sub
- positions
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- 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/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; CALCULATING OR 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; CALCULATING OR 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/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
Abstract
資料寫入方法、記憶體控制電路單元及記憶體儲存裝置。所述方法包括:接收第一資料的多個子資料中的第一子資料,並產生對應於第一子資料的第一錯誤檢查碼;接收第一資料的多個子資料中的第二子資料,並產生對應於第二子資料的第二錯誤檢查碼;組合第一錯誤檢查碼與第二錯誤檢查碼以獲得第三錯誤檢查碼,其中第三錯誤檢查碼用以檢查由第一子資料與第二子資料合併而成的第二資料是否有錯誤;以及儲存第二資料以及第三錯誤檢查碼至可複寫式非揮發性記憶體模組中。
Description
本發明是有關於一種資料寫入方法、記憶體控制電路單元及記憶體儲存裝置。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,為了防止資料傳輸的過程中發生錯誤,當記憶體管理電路將一筆資料寫入可複寫式非揮發性記憶體模組時,通常會一併寫入對應於該資料的一錯誤檢查碼。在讀取資料時,可以使用此錯誤檢查碼來檢查所讀取出的資料是否有錯誤(例如,含有錯誤位元)。
然而需注意的是,通常一筆資料還可以再被分為多個子資料。在某些情況下,記憶體管理電路可能僅會拿到一筆資料中的一子資料並且需立即將所取得的子資料以及對應此子資料的錯誤檢查碼寫入至可複寫式非揮發性記憶體模組中。之後,當記憶體管理電路取得該筆資料中的另一子資料時,假設記憶體管理電路會將此另一子資料以及對應此另一子資料的錯誤檢查碼寫入至可複寫式非揮發性記憶體模組中。之後在某個時間點(例如,可複寫式非揮發性記憶體模組在斷電後重新上電或閒置時),記憶體管理電路可以將可複寫式非揮發性記憶體模組中前述第一次取得的子資料以及第二次取得的另一子資料進行合併以產生一合併後資料,產生對應此合併後資料的錯誤檢查碼,並將合併後資料以及對應此合併後資料的錯誤檢查碼儲存至可複寫式非揮發性記憶體模組。
需注意的是,在產生對應前述合併後資料的錯誤檢查碼的過程中,記憶體管理電路通常需要從可複寫式非揮發性記憶體模組讀取前述第一次取得的子資料以及第二次取得的另一子資料至緩衝記憶體中以根據所讀取出的子資料產生合併後資料。在產生合併後資料後,記憶體管理電路會再根據合併後資料產生對應此合併後資料的錯誤檢查碼後,最後再將合併後資料以及對應此合併後資料的錯誤檢查碼寫入至可複寫式非揮發性記憶體模組中。然而,將多個子資料從可複寫式非揮發性記憶體模組讀取出再將合併後資料寫回可複寫式非揮發性記憶體模組中的過程有可能會因宇宙射線或其他不可預期的因素造成合併後資料中產生錯誤位元。如何避免合併後資料中錯誤位元的產生並且能夠有效率地產生對應於合併後資料的錯誤檢查碼,是本領域技術人員所欲解決的問題之一。
本發明提供一種一種資料寫入方法、記憶體控制電路單元及記憶體儲存裝置,可以避免在習知技術中合併後資料中產生錯誤位元的問題。
本發明提出一種資料寫入方法,用於一可複寫式非揮發性記憶體模組,所述資料寫入方法包括:接收一第一資料的多個子資料中的一第一子資料,並產生對應於所述第一子資料的一第一錯誤檢查碼;接收所述第一資料的多個子資料中的一第二子資料,並產生對應於所述第二子資料的一第二錯誤檢查碼;組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得一第三錯誤檢查碼,其中所述第三錯誤檢查碼用以檢查由所述第一子資料與所述第二子資料合併而成的一第二資料是否有錯誤;以及儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中。
在本發明的一實施例中,所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置。其中接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的步驟包括:將所述第一子資料配置於所述第一位置並將所述第一位置以外的其他位置中的位元設定為零以產生一第一補零後資料,並根據所述第一補零後資料產生所述第一錯誤檢查碼。其中接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的步驟包括:將所述第二子資料配置於所述第二位置並將所述第二位置以外的其他位置中的位元設定為零以產生一第二補零後資料,並根據所述第二補零後資料產生所述第二錯誤檢查碼。
在本發明的一實施例中,所述方法更包括:記錄對應於所述第一補零後資料的一第一位元序列,其中在所述第一位元序列中對應於所述第一位置的位元以一第一數值表示且對應於所述第一位置以外的其他位置的位元以一第二數值表示;以及記錄對應於所述第二補零後資料的一第二位元序列,其中在所述第二位元序列中對應於所述第二位置的位元以所述第一數值表示且對應於所述第二位置以外的其他位置的位元以所述第二數值表示。
在本發明的一實施例中,組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼的步驟包括:據所述第一錯誤檢查碼與所述第二錯誤檢查碼執行一互斥或(exclusive or)運算以獲得所述第三錯誤檢查碼,並記錄對應於所述第二資料的一第三位元序列。其中在所述第三位元序列中對應於所述第一位置與所述第二位置的位元以所述第一數值表示且對應於所述第一位置與所述第二位置以外的其他位置的位元以所述第二數值表示。
在本發明的一實施例中,接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的步驟之前,所述方法還包括:將所述第一子資料以及所述第一錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。其中組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼的步驟包括:從所述可複寫式非揮發性記憶體模組中讀取所述第一錯誤檢查碼並組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼。
在本發明的一實施例中,所述第一資料的大小符合一實體頁面的大小,所述第一資料的所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置。其中儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中的步驟包括:將所述第二子資料儲存至所述實體頁面以使得所述實體頁面中的所述第一子資料與所述第二子資料形成所述第二資料,其中在所述實體頁面中所述第一子資料位於所述第一位置且所述第二子資料位於所述第二位置。
在本發明的一實施例中,所述第一子資料為對一第一明文加密後所產生的一第一密文。其中接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的步驟包括:產生對應於所述第一明文的一第一明文錯誤檢查碼,並將所述第一密文、所述第一明文錯誤檢查碼以及所述第一錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。
在本發明的一實施例中,所述第一資料的大小符合一實體頁面的大小,所述第一資料的所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置,所述第二子資料為對一第二明文加密後所產生的一第二密文,所述方法更包括:將所述第二密文儲存至所述實體頁面以使得所述實體頁面中的所述第一密文與所述第二密文形成所述第二資料,其中在所述實體頁面中所述第一密文位於所述第一位置且所述第二密文位於所述第二位置。
在本發明的一實施例中,所述方法更包括:組合所述第一明文錯誤檢查碼與對應於所述第二明文的一第二明文錯誤檢查碼以獲得一第三明文錯誤檢查碼;以及將所述第三明文錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。
在本發明的一實施例中,所述方法更包括:讀取所述實體頁面以獲得一已讀取資料,對所述已讀取資料解密以獲得一解密後資料,並根據所述第三明文錯誤檢查碼驗證所述解密後資料;當根據所述第三明文錯誤檢查碼驗證所述解密後資料發生失敗時,將所述解密後資料加密以獲得一加密後資料,並根據所述加密後資料產生一新的錯誤檢查碼;判斷所述新的錯誤檢查碼是否相同於所述第三錯誤檢查碼;當所述新的錯誤檢查碼相同於所述第三錯誤檢查碼,則判斷所述解密後資料沒有存在錯誤;以及當所述新的錯誤檢查碼不同於所述第三錯誤檢查碼,則判斷所述解密後資料存在錯誤。
本發明提出一種記憶體控制電路單元,用於控制一可複寫式非揮發性記憶體模組。所述記憶體控制電路單元包括:主機介面、記憶體介面與記憶體管理電路。主機介面用以耦接至一主機系統。記憶體介面用以耦接至所述可複寫式非揮發性記憶體模組。記憶體管理電路耦接至所述主機介面以及所述記憶體介面,並用以執行下述運作:接收一第一資料的多個子資料中的一第一子資料,並產生對應於所述第一子資料的一第一錯誤檢查碼;接收所述第一資料的多個子資料中的一第二子資料,並產生對應於所述第二子資料的一第二錯誤檢查碼;組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得一第三錯誤檢查碼,其中所述第三錯誤檢查碼用以檢查由所述第一子資料與所述第二子資料合併而成的一第二資料是否有錯誤;以及儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中。
在本發明的一實施例中,所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置。其中在接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的運作中,所述記憶體管理電路更用以將所述第一子資料配置於所述第一位置並將所述第一位置以外的其他位置中的位元設定為零以產生一第一補零後資料,並根據所述第一補零後資料產生所述第一錯誤檢查碼。其中在接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的運作中,所述記憶體管理電路更用以將所述第二子資料配置於所述第二位置並將所述第二位置以外的其他位置中的位元設定為零以產生一第二補零後資料,並根據所述第二補零後資料產生所述第二錯誤檢查碼。
在本發明的一實施例中,其中所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置。其中在接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的運作中,所述記憶體管理電路更用以將所述第一子資料配置於所述第一位置並將所述第一位置以外的其他位置中的位元設定為零以產生一第一補零後資料,並根據所述第一補零後資料產生所述第一錯誤檢查碼。其中在接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的運作中,所述記憶體管理電路更用以將所述第二子資料配置於所述第二位置並將所述第二位置以外的其他位置中的位元設定為零以產生一第二補零後資料,並根據所述第二補零後資料產生所述第二錯誤檢查碼。
在本發明的一實施例中,所述記憶體管理電路更用以記錄對應於所述第一補零後資料的一第一位元序列,其中在所述第一位元序列中對應於所述第一位置的位元以一第一數值表示且對應於所述第一位置以外的其他位置的位元以一第二數值表示。所述記憶體管理電路更用以記錄對應於所述第二補零後資料的一第二位元序列,其中在所述第二位元序列中對應於所述第二位置的位元以所述第一數值表示且對應於所述第二位置以外的其他位置的位元以所述第二數值表示。
在本發明的一實施例中,在組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼的運作中,所述記憶體管理電路更用以根據所述第一錯誤檢查碼與所述第二錯誤檢查碼執行一互斥或(exclusive or)運算以獲得所述第三錯誤檢查碼,並記錄對應於所述第二資料的一第三位元序列。其中在所述第三位元序列中對應於所述第一位置與所述第二位置的位元以所述第一數值表示且對應於所述第一位置與所述第二位置以外的其他位置的位元以所述第二數值表示。
在本發明的一實施例中,在接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的運作之前,所述記憶體管理電路更用以將所述第一子資料以及所述第一錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。其中在組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼的運作中,所述記憶體管理電路更用以從所述可複寫式非揮發性記憶體模組中讀取所述第一錯誤檢查碼並組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼。
在本發明的一實施例中,所述第一資料的大小符合一實體頁面的大小,所述第一資料的所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置。其中在儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中的運作中,所述記憶體管理電路更用以將所述第二子資料儲存至所述實體頁面以使得所述實體頁面中的所述第一子資料與所述第二子資料形成所述第二資料,其中在所述實體頁面中所述第一子資料位於所述第一位置且所述第二子資料位於所述第二位置。
在本發明的一實施例中,所述第一子資料為對一第一明文加密後所產生的一第一密文。其中在接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的運作中,所述記憶體管理電路更用以產生對應於所述第一明文的一第一明文錯誤檢查碼,並將所述第一密文、所述第一明文錯誤檢查碼以及所述第一錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。
在本發明的一實施例中,所述第一資料的大小符合一實體頁面的大小,所述第一資料的所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置,所述第二子資料為對一第二明文加密後所產生的一第二密文。所述記憶體管理電路更用以將所述第二密文儲存至所述實體頁面以使得所述實體頁面中的所述第一密文與所述第二密文形成所述第二資料,其中在所述實體頁面中所述第一密文位於所述第一位置且所述第二密文位於所述第二位置。
在本發明的一實施例中,所述記憶體管理電路更用以組合所述第一明文錯誤檢查碼與對應於所述第二明文的一第二明文錯誤檢查碼以獲得一第三明文錯誤檢查碼。所述記憶體管理電路更用以將所述第三明文錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。
在本發明的一實施例中,所述記憶體管理電路更用以讀取所述實體頁面以獲得一已讀取資料,對所述已讀取資料解密以獲得一解密後資料,並根據所述第三明文錯誤檢查碼驗證所述解密後資料。當根據所述第三明文錯誤檢查碼驗證所述解密後資料發生失敗時,所述記憶體管理電路更用以將所述解密後資料加密以獲得一加密後資料,並根據所述加密後資料產生一新的錯誤檢查碼。所述記憶體管理電路更用以判斷所述新的錯誤檢查碼是否相同於所述第三錯誤檢查碼。當所述新的錯誤檢查碼相同於所述第三錯誤檢查碼,所述記憶體管理電路更用以判斷所述解密後資料沒有存在錯誤。當所述新的錯誤檢查碼不同於所述第三錯誤檢查碼,所述記憶體管理電路更用以判斷所述解密後資料存在錯誤。
本發明提出一種記憶體儲存裝置,包括:連接介面單元、可複寫式非揮發性記憶體模組與記憶體控制電路單元。連接介面單元用以耦接至一主機系統。記憶體控制電路單元耦接至所述連接介面單元與所述可複寫式非揮發性記憶體模組並用以執行下述運作:接收一第一資料的多個子資料中的一第一子資料,並產生對應於所述第一子資料的一第一錯誤檢查碼;接收所述第一資料的多個子資料中的一第二子資料,並產生對應於所述第二子資料的一第二錯誤檢查碼;組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得一第三錯誤檢查碼,其中所述第三錯誤檢查碼用以檢查由所述第一子資料與所述第二子資料合併而成的一第二資料是否有錯誤;以及儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中。
在本發明的一實施例中,所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置。其中在接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的運作中,所述記憶體控制電路單元更用以將所述第一子資料配置於所述第一位置並將所述第一位置以外的其他位置中的位元設定為零以產生一第一補零後資料,並根據所述第一補零後資料產生所述第一錯誤檢查碼。其中在接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的運作中,所述記憶體控制電路單元更用以將所述第二子資料配置於所述第二位置並將所述第二位置以外的其他位置中的位元設定為零以產生一第二補零後資料,並根據所述第二補零後資料產生所述第二錯誤檢查碼。
在本發明的一實施例中,所述記憶體控制電路單元更用以記錄對應於所述第一補零後資料的一第一位元序列,其中在所述第一位元序列中對應於所述第一位置的位元以一第一數值表示且對應於所述第一位置以外的其他位置的位元以一第二數值表示。所述記憶體控制電路單元更用以記錄對應於所述第二補零後資料的一第二位元序列,其中在所述第二位元序列中對應於所述第二位置的位元以所述第一數值表示且對應於所述第二位置以外的其他位置的位元以所述第二數值表示。
在本發明的一實施例中,在組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼的運作中,所述記憶體控制電路單元更用以根據所述第一錯誤檢查碼與所述第二錯誤檢查碼執行一互斥或(exclusive or)運算以獲得所述第三錯誤檢查碼,並記錄對應於所述第二資料的一第三位元序列。其中在所述第三位元序列中對應於所述第一位置與所述第二位置的位元以所述第一數值表示且對應於所述第一位置與所述第二位置以外的其他位置的位元以所述第二數值表示。
在本發明的一實施例中,在接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的運作之前,所述記憶體控制電路單元更用以將所述第一子資料以及所述第一錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。其中在組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼的運作中,所述記憶體控制電路單元更用以從所述可複寫式非揮發性記憶體模組中讀取所述第一錯誤檢查碼並組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼。
在本發明的一實施例中,其中所述第一資料的大小符合一實體頁面的大小,所述第一資料的所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置。其中在儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中的運作中,所述記憶體控制電路單元更用以將所述第二子資料儲存至所述實體頁面以使得所述實體頁面中的所述第一子資料與所述第二子資料形成所述第二資料,其中在所述實體頁面中所述第一子資料位於所述第一位置且所述第二子資料位於所述第二位置。
在本發明的一實施例中,所述第一子資料為對一第一明文加密後所產生的一第一密文。其中在接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的運作中,所述記憶體控制電路單元更用以產生對應於所述第一明文的一第一明文錯誤檢查碼,並將所述第一密文、所述第一明文錯誤檢查碼以及所述第一錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。
在本發明的一實施例中,所述第一資料的大小符合一實體頁面的大小,所述第一資料的所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置,所述第二子資料為對一第二明文加密後所產生的一第二密文。其中在儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中的運作中,所述記憶體控制電路單元更用以將所述第二子資料儲存至所述實體頁面以使得所述實體頁面中的所述第一子資料與所述第二子資料形成所述第二資料,其中在所述實體頁面中所述第一子資料位於所述第一位置且所述第二子資料位於所述第二位置。
在本發明的一實施例中,所述記憶體控制電路單元更用以組合所述第一明文錯誤檢查碼與對應於所述第二明文的一第二明文錯誤檢查碼以獲得一第三明文錯誤檢查碼。所述記憶體控制電路單元更用以將所述第三明文錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。
在本發明的一實施例中,所述記憶體控制電路單元更用以讀取所述實體頁面以獲得一已讀取資料,對所述已讀取資料解密以獲得一解密後資料,並根據所述第三明文錯誤檢查碼驗證所述解密後資料。當根據所述第三明文錯誤檢查碼驗證所述解密後資料發生失敗時,所述記憶體控制電路單元更用以將所述解密後資料加密以獲得一加密後資料,並根據所述加密後資料產生一新的錯誤檢查碼。所述記憶體控制電路單元更用以判斷所述新的錯誤檢查碼是否相同於所述第三錯誤檢查碼。當所述新的錯誤檢查碼相同於所述第三錯誤檢查碼,所述記憶體控制電路單元更用以判斷所述解密後資料沒有存在錯誤。當所述新的錯誤檢查碼不同於所述第三錯誤檢查碼,所述記憶體控制電路單元更用以判斷所述解密後資料存在錯誤。
基於上述,本發明提出一種資料寫入方法、記憶體控制電路單元及記憶體儲存裝置,可以在產生合併後資料以及對應於合併後資料的錯誤檢查碼的過程中,僅讀取出欲合併的子資料的錯誤檢查碼而不需讀取出欲合併的子資料。之後,可以根據所讀取出的錯誤檢查碼產生對應於合併後資料的錯誤檢查碼。此外,在產生合併後資料的過程中,由於本發明不需讀取出欲合併的子資料至緩衝記憶體而是直接在可複寫式非揮發性記憶體模組中搬移子資料以產生合併後資料,藉此可以避免在習知技術中合併後資料中產生錯誤位元的問題。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組(rewritable non-volatile memory module)與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1是根據本發明的一範例實施例所繪示的主機系統、記憶體儲存裝置及輸入/輸出(I/O)裝置的示意圖。圖2是根據本發明的另一範例實施例所繪示的主機系統、記憶體儲存裝置及I/O裝置的示意圖。
請參照圖1與圖2,主機系統11一般包括處理器111、隨機存取記憶體(random access memory, RAM)112、唯讀記憶體(read only memory, ROM)113及資料傳輸介面114。處理器111、隨機存取記憶體112、唯讀記憶體113及資料傳輸介面114皆耦接至系統匯流排(system bus)110。
在本範例實施例中,主機系統11是透過資料傳輸介面114與記憶體儲存裝置10耦接。例如,主機系統11可經由資料傳輸介面114將資料儲存至記憶體儲存裝置10或從記憶體儲存裝置10中讀取資料。此外,主機系統11是透過系統匯流排110與I/O裝置12耦接。例如,主機系統11可經由系統匯流排110將輸出訊號傳送至I/O裝置12或從I/O裝置12接收輸入訊號。
在本範例實施例中,處理器111、隨機存取記憶體112、唯讀記憶體113及資料傳輸介面114可設置在主機系統11的主機板20上。資料傳輸介面114的數目可以是一或多個。透過資料傳輸介面114,主機板20可以經由有線或無線方式耦接至記憶體儲存裝置10。記憶體儲存裝置10可例如是隨身碟201、記憶卡202、固態硬碟(Solid State Drive, SSD)203或無線記憶體儲存裝置204。無線記憶體儲存裝置204可例如是近距離無線通訊(Near Field Communication, NFC)記憶體儲存裝置、無線傳真(WiFi)記憶體儲存裝置、藍牙(Bluetooth)記憶體儲存裝置或低功耗藍牙記憶體儲存裝置(例如,iBeacon)等以各式無線通訊技術為基礎的記憶體儲存裝置。此外,主機板20也可以透過系統匯流排110耦接至全球定位系統(Global Positioning System, GPS)模組205、網路介面卡206、無線傳輸裝置207、鍵盤208、螢幕209、喇叭210等各式I/O裝置。例如,在一範例實施例中,主機板20可透過無線傳輸裝置207存取無線記憶體儲存裝置204。
在一範例實施例中,所提及的主機系統為可實質地與記憶體儲存裝置配合以儲存資料的任意系統。雖然在上述範例實施例中,主機系統是以電腦系統來作說明,然而,圖3是根據本發明的另一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。請參照圖3,在另一範例實施例中,主機系統31也可以是數位相機、攝影機、通訊裝置、音訊播放器、視訊播放器或平板電腦等系統,而記憶體儲存裝置30可為其所使用的安全數位(Secure Digital, SD)卡32、小型快閃(Compact Flash, CF)卡33或嵌入式儲存裝置34等各式非揮發性記憶體儲存裝置。嵌入式儲存裝置34包括嵌入式多媒體卡(embedded Multi Media Card, eMMC)341及/或嵌入式多晶片封裝(embedded Multi Chip Package, eMCP)儲存裝置342等各類型將記憶體模組直接耦接於主機系統的基板上的嵌入式儲存裝置。
圖4是根據本發明的一範例實施例所繪示的記憶體儲存裝置的概要方塊圖。
請參照圖4,記憶體儲存裝置10包括連接介面單元402、記憶體控制電路單元404與可複寫式非揮發性記憶體模組406。
連接介面單元402用以將記憶體儲存裝置10耦接至主機系統11。在本範例實施例中,連接介面單元402是符合高速周邊零件連接介面(Peripheral Component Interconnect Express, PCI Express)標準,且相容於快速非揮發性記憶體(NVM express)介面標準。具體而言,快速非揮發性記憶體介面標準為一種主機系統與記憶體裝置之間通訊的協議,其定義了記憶體儲存裝置之控制器與主機系統之作業系統之間的暫存器介面、指令集與功能集,並藉由對記憶體儲存裝置的介面標準最佳化,來促進以PCIe介面為主的記憶體儲存裝置之資料存取速度與資料傳輸速率。然而,在另一範例實施例中,連接介面單元402亦可以是符合其他適合的標準。此外,連接介面單元402可與記憶體控制電路單元404封裝在一個晶片中,或者連接介面單元402是佈設於一包含記憶體控制電路單元404之晶片外。
記憶體控制電路單元404用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令並且根據主機系統11的指令在可複寫式非揮發性記憶體模組406中進行資料的寫入、讀取與抹除等運作。
可複寫式非揮發性記憶體模組406是耦接至記憶體控制電路單元404並且用以儲存主機系統11所寫入之資料。可複寫式非揮發性記憶體模組406可以是單階記憶胞(Single Level Cell, SLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存1個位元的快閃記憶體模組)、多階記憶胞(Multi Level Cell, MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元的快閃記憶體模組)、複數階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元的快閃記憶體模組)、其他快閃記憶體模組或其他具有相同特性的記憶體模組。
可複寫式非揮發性記憶體模組406中的每一個記憶胞是以電壓(以下亦稱為臨界電壓)的改變來儲存一或多個位元。具體來說,每一個記憶胞的控制閘極(control gate)與通道之間有一個電荷捕捉層。透過施予一寫入電壓至控制閘極,可以改變電荷補捉層的電子量,進而改變記憶胞的臨界電壓。此改變記憶胞之臨界電壓的操作亦稱為“把資料寫入至記憶胞”或“程式化(programming)記憶胞”。隨著臨界電壓的改變,可複寫式非揮發性記憶體模組406中的每一個記憶胞具有多個儲存狀態。透過施予讀取電壓可以判斷一個記憶胞是屬於哪一個儲存狀態,藉此取得此記憶胞所儲存的一或多個位元。
在本範例實施例中,可複寫式非揮發性記憶體模組406的記憶胞會構成多個實體程式化單元,並且此些實體程式化單元會構成多個實體抹除單元。具體來說,同一條字元線上的記憶胞會組成一或多個實體程式化單元。若每一個記憶胞可儲存2個以上的位元,則同一條字元線上的實體程式化單元至少可被分類為下實體程式化單元與上實體程式化單元。例如,一記憶胞的最低有效位元(Least Significant Bit,LSB)是屬於下實體程式化單元,並且一記憶胞的最高有效位元(Most Significant Bit,MSB)是屬於上實體程式化單元。一般來說,在MLC NAND型快閃記憶體中,下實體程式化單元的寫入速度會大於上實體程式化單元的寫入速度,及/或下實體程式化單元的可靠度是高於上實體程式化單元的可靠度。
在本範例實施例中,實體程式化單元為程式化的最小單元。即,實體程式化單元為寫入資料的最小單元。例如,實體程式化單元為實體頁面(page)或是實體扇(sector)。若實體程式化單元為實體頁面,則此些實體程式化單元通常包括資料位元區與冗餘(redundancy)位元區。資料位元區包含多個實體扇,用以儲存使用者資料,而冗餘位元區用以儲存系統資料(例如,錯誤更正碼等管理資料)。在本範例實施例中,資料位元區包含32個實體扇,且一個實體扇的大小為512位元組(byte, B)。然而,在其他範例實施例中,資料位元區中也可包含8個、16個或數目更多或更少的實體扇,並且每一個實體扇的大小也可以是更大或更小。另一方面,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。例如,實體抹除單元為實體區塊(block)。
圖5是根據本發明的一範例實施例所繪示的記憶體控制電路單元的概要方塊圖。
請參照圖5,記憶體控制電路單元404包括記憶體管理電路502、主機介面504及記憶體介面506。
記憶體管理電路502用以控制記憶體控制電路單元404的整體運作。具體來說,記憶體管理電路502具有多個控制指令,並且在記憶體儲存裝置10運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。以下說明記憶體管理電路502的操作時,等同於說明記憶體控制電路單元404的操作。
在本範例實施例中,記憶體管理電路502的控制指令是以韌體型式來實作。例如,記憶體管理電路502具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置10運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在另一範例實施例中,記憶體管理電路502的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組406的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路502具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當記憶體控制電路單元404被致能時,微處理器單元會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組406中之控制指令載入至記憶體管理電路502的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。
此外,在另一範例實施例中,記憶體管理電路502的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路502包括微控制器、記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路。記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路是耦接至微控制器。記憶胞管理電路用以管理可複寫式非揮發性記憶體模組406的記憶胞或其群組。記憶體寫入電路用以對可複寫式非揮發性記憶體模組406下達寫入指令序列以將資料寫入至可複寫式非揮發性記憶體模組406中。記憶體讀取電路用以對可複寫式非揮發性記憶體模組406下達讀取指令序列以從可複寫式非揮發性記憶體模組406中讀取資料。記憶體抹除電路用以對可複寫式非揮發性記憶體模組406下達抹除指令序列以將資料從可複寫式非揮發性記憶體模組406中抹除。資料處理電路用以處理欲寫入至可複寫式非揮發性記憶體模組406的資料以及從可複寫式非揮發性記憶體模組406中讀取的資料。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示可複寫式非揮發性記憶體模組406執行相對應的寫入、讀取及抹除等操作。在一範例實施例中,記憶體管理電路502還可以下達其他類型的指令序列給可複寫式非揮發性記憶體模組406以指示執行相對應的操作。
主機介面504是耦接至記憶體管理電路502並且用以接收與識別主機系統11所傳送的指令與資料。也就是說,主機系統11所傳送的指令與資料會透過主機介面504來傳送至記憶體管理電路502。在本範例實施例中,主機介面504是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面504亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SD標準、UHS-I標準、UHS-II標準、MS標準、MMC標準、eMMC標準、UFS標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面506是耦接至記憶體管理電路502並且用以存取可複寫式非揮發性記憶體模組406。也就是說,欲寫入至可複寫式非揮發性記憶體模組406的資料會經由記憶體介面506轉換為可複寫式非揮發性記憶體模組406所能接受的格式。具體來說,若記憶體管理電路502要存取可複寫式非揮發性記憶體模組406,記憶體介面506會傳送對應的指令序列。例如,這些指令序列可包括指示寫入資料的寫入指令序列、指示讀取資料的讀取指令序列、指示抹除資料的抹除指令序列、以及用以指示各種記憶體操作(例如,改變讀取電壓準位或執行垃圾回收操作等等)的相對應的指令序列。這些指令序列例如是由記憶體管理電路502產生並且透過記憶體介面506傳送至可複寫式非揮發性記憶體模組406。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
在一範例實施例中,記憶體控制電路單元404還包括錯誤檢查與校正電路508、緩衝記憶體510與電源管理電路512。
錯誤檢查與校正電路508是耦接至記憶體管理電路502並且用以執行錯誤檢查與校正操作以確保資料的正確性。具體來說,當記憶體管理電路502從主機系統11中接收到寫入指令時,錯誤檢查與校正電路508會為對應此寫入指令的資料產生對應的錯誤更正碼(error correcting code, ECC)及/或錯誤檢查碼(error detecting code,EDC),並且記憶體管理電路502會將對應此寫入指令的資料與對應的錯誤更正碼及/或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組406中。之後,當記憶體管理電路502從可複寫式非揮發性記憶體模組406中讀取資料時會同時讀取此資料對應的錯誤更正碼及/或錯誤檢查碼,並且錯誤檢查與校正電路508會依據此錯誤更正碼及/或錯誤檢查碼對所讀取的資料執行錯誤檢查與校正操作。
緩衝記憶體510是耦接至記憶體管理電路502並且用以暫存來自於主機系統11的資料與指令或來自於可複寫式非揮發性記憶體模組406的資料。電源管理電路512是耦接至記憶體管理電路502並且用以控制記憶體儲存裝置10的電源。
在此需說明的是,本發明的資料寫入方法可以應用於加密或非加密方式儲存資料的可複寫式非揮發性記憶體模組406。在以下的第一實施例中是以儲存非加密資料的可複寫式非揮發性記憶體模組406進行說明。在以下的第二實施例中是以儲存加密資料的可複寫式非揮發性記憶體模組406進行說明。
[第一實施例]
圖6A至圖6C是根據本發明一範例實施例所繪示之資料寫入方法的範例的示意圖。為了方便於說明,在此假設可複寫式非揮發性記憶體模組406中的一實體頁面具有四個實體扇。
請參照圖6A,在此假設一筆資料DATA1(亦稱為,第一資料)包括子資料D0~D3。資料DATA1的大小剛好符合一實體頁面的資料位元區的大小,而子資料D0~D3中的每一個子資料剛好符合一個實體扇的大小。在圖6A的範例中,子資料D0~D3依照一順序排列。例如,子資料D0(亦稱為,第一子資料)排列在該順序中的位置L0(亦稱為,第一位置),子資料D1(亦稱為,第二子資料)排列在該順序中的位置L1(亦稱為,第二位置),子資料D2排列在該順序中的位置L2,子資料D3排列在該順序中的位置L3。
假設記憶體管理電路502先從主機系統11取得子資料D0。記憶體管理電路502會產生對應於子資料D0的錯誤檢查碼P0(亦稱為,第一錯誤檢查碼)並將子資料D0與錯誤檢查碼P0儲存至可複寫式非揮發性記憶體模組406中。
更詳細來說,記憶體管理電路502會將子資料D0配置在其在原本的資料DATA1中所處的位置L0,並將位置L0以外的其他位置(即,位置L1~L3)中的多個位元設定為零以產生補零後資料DATA1_0(亦稱為,第一補零後資料),並根據此補零後資料DATA1_0產生錯誤檢查碼P0。需注意的是,本發明並不用於限定產生錯誤檢查碼P0的演算法。在一實施例中,錯誤檢查碼P0例如是經由循環冗餘校驗(Cyclic redundancy check,CRC)演算法所產生。需說明的是,為了簡化表示,圖6A的補零後資料DATA1_0中位置L1~L3僅分別使用一個零表示,但在實際情況中,位置L1~L3的每個位置中會包括多個位元且此些位元被設定為零。相類似的表示方式也會應用至其他的補零後資料。
此外,記憶體管理電路502還會記錄一位元序列BS0(亦稱為,第一位元序列)。在位元序列BS0中,每個位元是對應於補零後資料DATA1_0中位置L0~L3的其中之一。位元序列BS0的第一個位元是對應於補零後資料DATA1_0中位置L0,位元序列BS0的第二個位元是對應於補零後資料DATA1_0中位置L1,位元序列BS0的第三個位元是對應於補零後資料DATA1_0中位置L2,位元序列BS0的第四個位元是對應於補零後資料DATA1_0中位置L3。在本範例中,由於補零後資料DATA1_0中僅有位置L0儲存資料D0而位置L1~L3中的位元皆為零,故記憶體管理電路502會將位元序列BS0的第一個位元設定為1並且將第二、第三以及第四個位元設定為0。
在獲得補零後資料DATA1_0、錯誤檢查碼P0以及位元序列BS0後,記憶體管理電路502會將補零後資料DATA1_0、錯誤檢查碼P0以及位元序列BS0儲存至可複寫式非揮發性記憶體模組406中。例如,記憶體管理電路502會將補零後資料DATA1_0儲存至實體頁面PG0的資料位元區PG0_D並且將錯誤檢查碼P0以及位元序列BS0所組成的元資料MD0儲存至實體頁面PG0的冗餘位元區PG0_R。特別是,在實體頁面PG0的資料位元區PG0_D中,第1個實體扇會用以儲存子資料D0,而第2-4個實體扇會分別儲存數值為零的資料。
之後,假設記憶體管理電路502再從主機系統11取得子資料D1。記憶體管理電路502會產生對應於子資料D1的錯誤檢查碼P1(亦稱為,第二錯誤檢查碼)並將子資料D1與錯誤檢查碼P1儲存至可複寫式非揮發性記憶體模組406中。類似於前述方式,記憶體管理電路502會將子資料D1配置在其在原本的資料DATA1中所處的位置L1,並將位置L1以外的其他位置(即,位置L0、位置L2~L3)中的多個位元設定為零以產生補零後資料DATA1_1(亦稱為,第二補零後資料),並根據此補零後資料DATA1_1產生錯誤檢查碼P1。
此外,記憶體管理電路502還會記錄對應於錯誤檢查碼P1的一位元序列BS1(亦稱為,第二位元序列)。在位元序列BS1中。在本範例中,由於補零後資料DATA1_1中僅有位置L1儲存資料D1而位置L0與位置L2~L3中的位元皆為零,故記憶體管理電路502會將位元序列BS1的第2個位元設定為1並且將第1、3、4個位元設定為0。
在獲得補零後資料DATA1_1、錯誤檢查碼P1以及位元序列BS1後,記憶體管理電路502會將補零後資料DATA1_1、錯誤檢查碼P1以及位元序列BS1儲存至可複寫式非揮發性記憶體模組406中。例如,記憶體管理電路502會將補零後資料DATA1_1儲存至實體頁面PG1的資料位元區PG1_D並且將錯誤檢查碼P1以及位元序列BS1所組成的元資料MD1儲存至實體頁面PG1的冗餘位元區PG1_R。特別是,在實體頁面PG1的資料位元區PG1_D中,第2個實體扇用以儲存子資料D1,而第1、3、4個實體扇會分別儲存數值為零的資料。
在一實施例中,假設記憶體管理電路502需合併實體頁面PG0中的子資料D0以及實體頁面PG1中的子資料D1。請參照圖6B,記憶體管理電路502可以根據元資料MD0中的位元序列BS0得知實體頁面PG0中的第1個實體扇儲存子資料D0。記憶體管理電路502可以根據元資料MD1中的位元序列BS1得知實體頁面PG1中的第2個實體扇儲存子資料D1。因此,記憶體管理電路502例如會從實體頁面PG0中的第1個實體扇複製子資料D0至實體頁面PG4中的第1個實體扇以及從實體頁面PG1中的第2個實體扇複製子資料D1至實體頁面PG4中的第2個實體扇。而實體頁面PG4中的第3、4個實體扇會分別儲存數值為零的資料。需注意的是,上述子資料D0~D1合併的過程可以不需要將資料從可複寫式非揮發性記憶體模組406讀取至緩衝記憶體510再寫回可複寫式非揮發性記憶體模組406中,而是可以直接地對可複寫式非揮發性記憶體模組406中的資料進行操作。為了方便說明,在此將實體頁面PG4的資料位元區PG1_D中所儲存的資料(即,合併子資料D0~D1後所產生的合併後資料)可以稱為「第二資料」。
特別是,在本實施例中,記憶體管理電路502還會讀取出元資料MD0~MD1中的錯誤檢查碼P0~P1以及位元序列BS0~BS1至緩衝記憶體510中。之後,記憶體管理電路502會將錯誤檢查碼P0與錯誤檢查碼P1執行互斥或運算以獲得錯誤檢查碼P4(亦稱為,第三錯誤檢查碼)。特別是,錯誤檢查碼P4是用來檢查前述「第二資料」中是否有錯誤位元。
此外,記憶體管理電路502也可以將位元序列BS0與位元序列BS1執行互斥或運算以獲得位元序列BS4(亦稱為,第三位元序列)。在本實施例中,在執行互斥或運算後,位元序列BS4中的第1、2個位元會被設定為1且第3、4個位元會被設定為0。
在獲得錯誤檢查碼P4以及位元序列BS4後,記憶體管理電路502會將錯誤檢查碼P4以及位元序列BS4所組成的元資料MD4儲存至實體頁面PG4的冗餘位元區PG4_R。
請再次參照圖6A,在另一實施例中,假設記憶體管理電路502將子資料D0~D1分別寫入實體頁面PG0~PG1後尚未對子資料D0~D1執行如圖6B的資料合併操作。假設記憶體管理電路502再從主機系統11取得子資料D2,記憶體管理電路502會以類似前述的方式產生對應於子資料D2的補零後資料DATA1_2的錯誤檢查碼P2以及位元序列BS2。記憶體管理電路502會將補零後資料DATA1_2儲存至實體頁面PG2的資料位元區PG2_D並且將錯誤檢查碼P2以及位元序列BS2所組成的元資料MD2儲存至實體頁面PG2的冗餘位元區PG2_R中。
類似地,假設記憶體管理電路502再從主機系統11取得子資料D3,記憶體管理電路502會以類似前述的方式產生對應於子資料D3的補零後資料DATA1_3的錯誤檢查碼P3以及位元序列BS3。記憶體管理電路502會將補零後資料DATA1_3儲存至實體頁面PG3的資料位元區PG3_D並且將錯誤檢查碼P3以及位元序列BS3所組成的元資料MD3儲存至實體頁面PG3的冗餘位元區PG3_R中。
之後,請同時參照圖6A與圖6C,假設記憶體管理電路502需合併實體頁面PG0中的子資料D0、實體頁面PG1中的子資料D1、實體頁面PG2中的子資料D2以及實體頁面PG3中的子資料D3。記憶體管理電路502可以根據類似圖6B的方式,從實體頁面PG0中的第1個實體扇複製子資料D0至實體頁面PG5中的第1個實體扇、從實體頁面PG1中的第2個實體扇複製子資料D1至實體頁面PG5中的第2個實體扇、從實體頁面PG2中的第3個實體扇複製子資料D2至實體頁面PG5中的第3個實體扇、以及從實體頁面PG3中的第4個實體扇複製子資料D3至實體頁面PG5中的第4個實體扇。
特別是,在本實施例中,記憶體管理電路502還會從元資料MD0~MD3讀取出錯誤檢查碼P0~P3以及位元序列BS0~BS3至緩衝記憶體510中。之後,記憶體管理電路502會將錯誤檢查碼P0~P3執行互斥或運算以獲得錯誤檢查碼P5。特別是,錯誤檢查碼P5是用來檢查儲存在實體頁面PG5的資料位元區PG5_D中的所儲存的資料(即,子資料D0~D3的合併後資料)是否有錯誤位元。
此外,記憶體管理電路502也會將位元序列BS0~BS3執行互斥或運算以獲得位元序列BS5。在獲得錯誤檢查碼P5以及位元序列BS5後,記憶體管理電路502會將錯誤檢查碼P5以及位元序列BS5所組成的元資料MD5儲存至實體頁面PG5的冗餘位元區PG4_R。
[第二實施例]
本發明的第二實施例是將本發明的資料寫入方法應用在儲存加密資料的可複寫式非揮發性記憶體模組406。
圖7A至圖7B是根據本發明一範例實施例所繪示之將資料寫入方法應用於加密資料的範例的示意圖。
請參照圖7,在此假設一筆資料DATA2包括尚未被加密的子資料PT0~PT3。也就是說,子資料PT0~PT3皆為「明文」。資料DATA2的大小剛好符合一實體頁面的資料位元區的大小,而子資料PT0~PT3中的每一個子資料剛好符合一個實體扇的大小。在圖7A的範例中,子資料PT0~PT3依照一順序排列。例如,子資料PT0(亦稱為,第一明文)排列在該順序中的位置L0(亦稱為,第一位置),子資料PT1(亦稱為,第二明文)排列在該順序中的位置L1(亦稱為,第二位置),子資料PT2排列在該順序中的位置L2,子資料PT3排列在該順序中的位置L3。
假設記憶體管理電路502先從主機系統11取得子資料PT0。記憶體管理電路502會產生對應於子資料PT0的錯誤檢查碼Pr0(亦稱為,第一明文錯誤檢查碼)。詳細來說,類似於前述第一實施例,記憶體管理電路502會將子資料PT0配置在其在原本的資料DATA2中所處的位置L0,並將位置L0以外的其他位置(即,位置L1~L3)中的多個位元設定為零以產生補零後資料DATA2_0,並根據此補零後資料DATA2_0產生錯誤檢查碼Pr0。特別是,錯誤檢查碼Pr0是用於檢查補零後資料DATA2_0中是否包含錯誤位元。
不同的是,在圖7A的實施例中,記憶體管理電路502還會對子資料PT0加密以產生對應的密文PX0(亦稱為,第一密文),記憶體管理電路502會將密文PX0配置在位置L0,並將位置L0以外的其他位置(即,位置L1~L3)中的多個位元設定為零以產生補零後資料DATA2_0x,並根據此補零後資料DATA2_0x產生錯誤檢查碼Pr0x(亦稱為,第一錯誤檢查碼)。特別是,錯誤檢查碼Pr0x是用於檢查補零後資料DATA2_0x中是否包含錯誤位元。
此外,記憶體管理電路502還會記錄一位元序列BSr0(亦稱為,第一位元序列)。在位元序列BS0中,位元序列BS0的第一個位元設定為1並且將第二、第三以及第四個位元設定為0。
在獲得補零後資料DATA2_0x、錯誤檢查碼Pr0、錯誤檢查碼Pr0x以及位元序列BSr0後,記憶體管理電路502會將補零後資料DATA2_0x以及由錯誤檢查碼Pr0、錯誤檢查碼Pr0x以及位元序列BSr0所組成的元資料MDr0儲存至可複寫式非揮發性記憶體模組406中。
假設在另一實施例中,記憶體管理電路502再從主機系統11取得子資料PT1。類似於前述方式,記憶體管理電路502會將子資料PT1(亦稱為,第二明文)配置在其在原本的資料DATA2中所處的位置L1,並將位置L1以外的其他位置(即,位置L0、位置L2~L3)中的多個位元設定為零以產生補零後資料DATA2_1,並根據此補零後資料DATA2_1產生錯誤檢查碼Pr1。
之後,記憶體管理電路502還會對子資料PT1加密以產生對應的密文PX1(亦稱為,第二密文),記憶體管理電路502會將密文PX0配置在位置L1,並將位置L1以外的其他位置(即,位置L0、L2~L3)中的多個位元設定為零以產生補零後資料DATA2_1x,並根據此補零後資料DATA2_1x產生錯誤檢查碼Pr1x。特別是,錯誤檢查碼Pr1x是用於檢查補零後資料DATA2_1x中是否包含錯誤位元。
此外,記憶體管理電路502還會記錄一位元序列BSr1。在位元序列BSr1中,位元序列BSr1的第2個位元設定為1並且將第1、3、4個位元設定為0。
在獲得補零後資料DATA2_1x、錯誤檢查碼Pr1、錯誤檢查碼Pr1x以及位元序列BSr1後,記憶體管理電路502會將補零後資料DATA2_1x以及由錯誤檢查碼Pr1、錯誤檢查碼Pr1x以及位元序列BSr1所組成的元資料MDr1儲存至可複寫式非揮發性記憶體模組406中。
之後,假設記憶體管理電路502依序再從主機系統11取得子資料PT2、PT3。記憶體管理電路502可以依照類似前述的方式獲得對應於子資料PT2的補零後資料DATA2_2x、錯誤檢查碼Pr2、錯誤檢查碼Pr2x以及位元序列BSr2,並將補零後資料DATA2_2x以及由錯誤檢查碼Pr2、錯誤檢查碼Pr2x以及位元序列BSr2所組成的元資料MDr2儲存至可複寫式非揮發性記憶體模組406中。類似地,記憶體管理電路502可以依照類似前述的方式獲得對應於子資料PT3的補零後資料DATA2_3x、錯誤檢查碼Pr3、錯誤檢查碼Pr3x以及位元序列BSr3,並將補零後資料DATA2_3x以及由錯誤檢查碼Pr3、錯誤檢查碼Pr3x以及位元序列BSr3所組成的元資料MDr3儲存至可複寫式非揮發性記憶體模組406中。
之後,請同時參照圖7A與圖7B,假設記憶體管理電路502需合併已在圖7A的範例中已儲存至可複寫式非揮發性記憶體模組406中的密文PX0~PX3。記憶體管理電路502可以從儲存補零後資料DATA2_0x的實體頁面中複製密文PX0至實體頁面PG6中的第1個實體扇、從儲存補零後資料DATA2_1x的實體頁面中複製密文PX1至實體頁面PG6中的第2個實體扇、從儲存補零後資料DATA2_2x的實體頁面中複製密文PX2至實體頁面PG6中的第3個實體扇、從儲存補零後資料DATA2_3x的實體頁面中複製密文PX3至實體頁面PG6中的第4個實體扇。
特別是,在本實施例中,記憶體管理電路502還會從元資料MDr0~MDr3讀取出錯誤檢查碼Pr0~Pr3、錯誤檢查碼Pr0x~Pr3x以及位元序列BSr0~BSr3至緩衝記憶體510中。之後,記憶體管理電路502會將錯誤檢查碼Pr0~Pr3執行互斥或運算以獲得錯誤檢查碼Pr4,並且將錯誤檢查碼Pr0x~Pr3x執行互斥或運算以獲得錯誤檢查碼Pr4x。此外,記憶體管理電路502也會將位元序列BSr0~BSr3執行互斥或運算以獲得位元序列BSr4。在獲得錯誤檢查碼Pr4、錯誤檢查碼Pr4x以及位元序列BSr4後,記憶體管理電路502會將錯誤檢查碼Pr4、錯誤檢查碼Pr4x以及位元序列BSr4所組成的元資料MDr4儲存至實體頁面PG6的冗餘位元區PG6_R。
需特別注意的是,藉由圖7A與圖7B的內容可知,存在於可複寫式非揮發性記憶體模組406中資料的儲存態樣可以分為「尚未合併的資料」以及「已合併的資料」。以圖7A為例,可複寫式非揮發性記憶體模組406中是儲存尚未被合併的密文PX0~PX3,而此些分散儲存於不同的實體頁面的密文PX0~PX3即為「尚未合併的資料」。以圖7B為例,可複寫式非揮發性記憶體模組406實體頁面PG6中是儲存已被合併的密文資料PX0~PX3,而已被合併並儲存於同一個實體頁面中的密文資料PX0~PX3即為「已合併的資料」。
在一實施例中,請再次參照圖7A,假設記憶體管理電路502欲讀取可複寫式非揮發性記憶體模組406以獲得尚未被合併的子資料PT0。記憶體管理電路502可以從可複寫式非揮發性記憶體模組406讀取儲存補零後資料DATA2_0x的實體頁面以取得一已讀取資料,並且對此已讀取資料進行解密以獲得一解密後資料。之後,記憶體管理電路502可以用錯誤檢查碼Pr0來驗證解密後獲得的解密後資料(例如,補零後資料DATA2_0)是否含有錯誤位元。若沒有含有錯誤位元,則記憶體管理電路502可以將所獲得的解密後資料輸出至主機系統11中。
在一實施例中,請再次參照圖7B,假設記憶體管理電路502欲讀取可複寫式非揮發性記憶體模組406以獲得已被合併的子資料PT0~PT3。記憶體管理電路502可以從實體頁面PG6的資料位元區PG6_D中讀取已合併的加密資料(即,合併儲存的密文PX0~PX3),並且對此已合併的加密資料進行解密以獲得圖7A中包含子資料PT0~PT3的資料DATA2。之後,記憶體管理電路502可以用錯誤檢查碼Pr4來驗證解密後獲得的資料DATA2_0是否含有錯誤位元。
在此需說明的是,錯誤檢查碼Pr4x是用來檢查儲存在實體頁面PG6的資料位元區PG6_D中所儲存的已合併的加密資料(即,合併儲存的密文PX0~PX3)是否有錯誤位元。但基於資料加密演算法的特性,當將實體頁面PG6的資料位元區PG6_D中已合併的加密資料解密以獲得一明文時,錯誤檢查碼Pr4(亦稱為,第三明文錯誤檢查碼)並可能無法有效對此明文檢查錯誤位元而發生檢查失敗。
因此,在本實施例中,當記憶體管理電路502讀取實體頁面PG6的資料位元區PG6_D以獲得密文形式儲存的一已讀取資料時,記憶體管理電路502會對此已讀取資料解密以獲得一解密後資料(即,明文),並根據錯誤檢查碼Pr4驗證此解密後資料。
當根據錯誤檢查碼Pr4驗證解密後資料發生失敗時,代表所讀取出的已讀取資料可能是屬於「已合併的資料」。此時,記憶體管理電路502會將解密後資料再進行加密以獲得一加密後資料,並根據此加密後資料產生一新的錯誤檢查碼。之後,記憶體管理電路502會判斷此新的錯誤檢查碼是否相同於錯誤檢查碼Pr4x。當新的錯誤檢查碼相同於錯誤檢查碼Pr4x時,記憶體管理電路502會判斷前述解密後資料沒有存在錯誤,並且可以輸出此解密後資料至主機系統11。而當新的錯誤檢查碼不同於錯誤檢查碼Pr4x時,則記憶體管理電路502會判斷解密後資料存在錯誤。
圖8是根據本發明一範例實施例所繪示之資料寫入方法的流程圖。
請參照圖8,在步驟S801中,記憶體管理電路502接收第一資料的多個子資料中的第一子資料,並產生對應於第一子資料的第一錯誤檢查碼。在步驟S803中,記憶體管理電路502接收第一資料的多個子資料中的第二子資料,並產生對應於第二子資料的第二錯誤檢查碼。在步驟S805中,記憶體管理電路502組合第一錯誤檢查碼與第二錯誤檢查碼以獲得第三錯誤檢查碼。其中,第三錯誤檢查碼用以檢查由第一子資料與第二子資料合併而成的第二資料是否有錯誤。在步驟S807中,記憶體管理電路502儲存第二資料以及第三錯誤檢查碼至可複寫式非揮發性記憶體模組406中。
綜上所述,本發明的資料寫入方法、記憶體控制電路單元及記憶體儲存裝置,可以在產生合併後資料以及對應於合併後資料的錯誤檢查碼的過程中,僅讀取出欲合併的子資料的錯誤檢查碼而不需讀取出欲合併的子資料至緩衝記憶體。之後,可以根據所讀取出的錯誤檢查碼產生對應於合併後資料的錯誤檢查碼。此外,在產生合併後資料的過程中,由於本發明不需讀取出欲合併的子資料至緩衝記憶體而是直接在可複寫式非揮發性記憶體模組中搬移子資料以產生合併後資料,藉此可以避免在習知技術中合併後資料中產生錯誤位元的問題。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
30、10:記憶體儲存裝置
31、11:主機系統
110:系統匯流排
111:處理器
112:隨機存取記憶體
113:唯讀記憶體
114:資料傳輸介面
12:輸入/輸出(I/O)裝置
20:主機板
201:隨身碟
202:記憶卡
203:固態硬碟
204:無線記憶體儲存裝置
205:全球定位系統模組
206:網路介面卡
207:無線傳輸裝置
208:鍵盤
209:螢幕
210:喇叭
32:SD卡
33:CF卡
34:嵌入式儲存裝置
341:嵌入式多媒體卡
342:嵌入式多晶片封裝儲存裝置
402:連接介面單元
404:記憶體控制電路單元
406:可複寫式非揮發性記憶體模組
502:記憶體管理電路
504:主機介面
506:記憶體介面
508:錯誤檢查與校正電路
510:緩衝記憶體
512:電源管理電路
DATA1、DATA2:資料
D0~D3、PT0~PT3:子資料
L0~L3:位置
DATA1_0~ DATA1_3、DATA2_0~ DATA2_3、DATA2_0x~ DATA2_3x:補零後資料
P0~P5、Pr0~Pr4、Pr0x~Pr4x:錯誤檢查碼
PX0~PX3:密文
BS0~BS5、BSr0~BSr4:位元序列
PG0~PG6:實體頁面
PG0_D~ PG6_D:資料位元區
PG0_R~ PG6_R:冗餘位元區
MD0~MD5、MDr0~MDr4:元資料
步驟S801:接收第一資料的多個子資料中的第一子資料,並產生對應於第一子資料的第一錯誤檢查碼的步驟
步驟S803:接收第一資料的多個子資料中的第二子資料,並產生對應於第二子資料的第二錯誤檢查碼的步驟
步驟S805:組合第一錯誤檢查碼與第二錯誤檢查碼以獲得第三錯誤檢查碼,其中第三錯誤檢查碼用以檢查由第一子資料與第二子資料合併而成的第二資料是否有錯誤的步驟
步驟S807:儲存第二資料以及第三錯誤檢查碼至可複寫式非揮發性記憶體模組中的步驟
圖1是根據本發明的一範例實施例所繪示的主機系統、記憶體儲存裝置及輸入/輸出(I/O)裝置的示意圖。
圖2是根據本發明的另一範例實施例所繪示的主機系統、記憶體儲存裝置及I/O裝置的示意圖。
圖3是根據本發明的另一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖4是根據本發明的一範例實施例所繪示的記憶體儲存裝置的概要方塊圖。
圖5是根據本發明的一範例實施例所繪示的記憶體控制電路單元的概要方塊圖。
圖6A至圖6C是根據本發明一範例實施例所繪示之資料寫入方法的範例的示意圖。
圖7A至圖7B是根據本發明一範例實施例所繪示之將資料寫入方法應用於加密資料的範例的示意圖。
圖8是根據本發明一範例實施例所繪示之資料寫入方法的流程圖。
步驟S801:接收第一資料的多個子資料中的第一子資料,並產生對應於第一子資料的第一錯誤檢查碼的步驟
步驟S803:接收第一資料的多個子資料中的第二子資料,並產生對應於第二子資料的第二錯誤檢查碼的步驟
步驟S805:組合第一錯誤檢查碼與第二錯誤檢查碼以獲得第三錯誤檢查碼,其中第三錯誤檢查碼用以檢查由第一子資料與第二子資料合併而成的第二資料是否有錯誤的步驟
步驟S807:儲存第二資料以及第三錯誤檢查碼至可複寫式非揮發性記憶體模組中的步驟
Claims (30)
- 一種資料寫入方法,用於一可複寫式非揮發性記憶體模組,所述資料寫入方法包括: 接收一第一資料的多個子資料中的一第一子資料,並產生對應於所述第一子資料的一第一錯誤檢查碼; 接收所述第一資料的多個子資料中的一第二子資料,並產生對應於所述第二子資料的一第二錯誤檢查碼; 組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得一第三錯誤檢查碼,其中所述第三錯誤檢查碼用以檢查由所述第一子資料與所述第二子資料合併而成的一第二資料是否有錯誤;以及 儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中。
- 如申請專利範圍第1項所述的資料寫入方法,其中所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置, 其中接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的步驟包括: 將所述第一子資料配置於所述第一位置並將所述第一位置以外的其他位置中的位元設定為零以產生一第一補零後資料,並根據所述第一補零後資料產生所述第一錯誤檢查碼, 其中接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的步驟包括: 將所述第二子資料配置於所述第二位置並將所述第二位置以外的其他位置中的位元設定為零以產生一第二補零後資料,並根據所述第二補零後資料產生所述第二錯誤檢查碼。
- 如申請專利範圍第2項所述的資料寫入方法,更包括: 記錄對應於所述第一補零後資料的一第一位元序列,其中在所述第一位元序列中對應於所述第一位置的位元以一第一數值表示且對應於所述第一位置以外的其他位置的位元以一第二數值表示;以及 記錄對應於所述第二補零後資料的一第二位元序列,其中在所述第二位元序列中對應於所述第二位置的位元以所述第一數值表示且對應於所述第二位置以外的其他位置的位元以所述第二數值表示。
- 如申請專利範圍第3項所述的資料寫入方法,其中組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼的步驟包括: 根據所述第一錯誤檢查碼與所述第二錯誤檢查碼執行一互斥或(exclusive or)運算以獲得所述第三錯誤檢查碼,並記錄對應於所述第二資料的一第三位元序列, 其中在所述第三位元序列中對應於所述第一位置與所述第二位置的位元以所述第一數值表示且對應於所述第一位置與所述第二位置以外的其他位置的位元以所述第二數值表示。
- 如申請專利範圍第1項所述的資料寫入方法,其中接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的步驟之前,所述方法還包括: 將所述第一子資料以及所述第一錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中, 其中組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼的步驟包括: 從所述可複寫式非揮發性記憶體模組中讀取所述第一錯誤檢查碼並組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼。
- 如申請專利範圍第5項所述的資料寫入方法,其中所述第一資料的大小符合一實體頁面的大小,所述第一資料的所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置, 其中儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中的步驟包括: 將所述第二子資料儲存至所述實體頁面以使得所述實體頁面中的所述第一子資料與所述第二子資料形成所述第二資料,其中在所述實體頁面中所述第一子資料位於所述第一位置且所述第二子資料位於所述第二位置。
- 如申請專利範圍第1項所述的資料寫入方法,其中所述第一子資料為對一第一明文加密後所產生的一第一密文, 其中接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的步驟包括: 產生對應於所述第一明文的一第一明文錯誤檢查碼,並將所述第一密文、所述第一明文錯誤檢查碼以及所述第一錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。
- 如申請專利範圍第7項所述的資料寫入方法,其中所述第一資料的大小符合一實體頁面的大小,所述第一資料的所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置,所述第二子資料為對一第二明文加密後所產生的一第二密文,所述方法更包括: 將所述第二密文儲存至所述實體頁面以使得所述實體頁面中的所述第一密文與所述第二密文形成所述第二資料,其中在所述實體頁面中所述第一密文位於所述第一位置且所述第二密文位於所述第二位置。
- 如申請專利範圍第8項所述的資料寫入方法,更包括: 組合所述第一明文錯誤檢查碼與對應於所述第二明文的一第二明文錯誤檢查碼以獲得一第三明文錯誤檢查碼;以及 將所述第三明文錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。
- 如申請專利範圍第9項所述的資料寫入方法,更包括: 讀取所述實體頁面以獲得一已讀取資料,對所述已讀取資料解密以獲得一解密後資料,並根據所述第三明文錯誤檢查碼驗證所述解密後資料; 當根據所述第三明文錯誤檢查碼驗證所述解密後資料發生失敗時,將所述解密後資料加密以獲得一加密後資料,並根據所述加密後資料產生一新的錯誤檢查碼; 判斷所述新的錯誤檢查碼是否相同於所述第三錯誤檢查碼; 當所述新的錯誤檢查碼相同於所述第三錯誤檢查碼,則判斷所述解密後資料沒有存在錯誤;以及 當所述新的錯誤檢查碼不同於所述第三錯誤檢查碼,則判斷所述解密後資料存在錯誤。
- 一種記憶體控制電路單元,用於控制一可複寫式非揮發性記憶體模組,所述記憶體控制電路單元包括: 一主機介面,用以耦接至一主機系統; 一記憶體介面,用以耦接至所述可複寫式非揮發性記憶體模組; 一記憶體管理電路,耦接至所述主機介面以及所述記憶體介面, 其中所述記憶體管理電路用以接收一第一資料的多個子資料中的一第一子資料,並產生對應於所述第一子資料的一第一錯誤檢查碼, 其中所述記憶體管理電路更用以接收所述第一資料的多個子資料中的一第二子資料,並產生對應於所述第二子資料的一第二錯誤檢查碼, 其中所述記憶體管理電路更用以組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得一第三錯誤檢查碼,其中所述第三錯誤檢查碼用以檢查由所述第一子資料與所述第二子資料合併而成的一第二資料是否有錯誤, 其中所述記憶體管理電路更用以儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中。
- 如申請專利範圍第11項所述的記憶體控制電路單元,其中所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置, 其中在接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的運作中, 所述記憶體管理電路更用以將所述第一子資料配置於所述第一位置並將所述第一位置以外的其他位置中的位元設定為零以產生一第一補零後資料,並根據所述第一補零後資料產生所述第一錯誤檢查碼, 其中在接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的運作中, 所述記憶體管理電路更用以將所述第二子資料配置於所述第二位置並將所述第二位置以外的其他位置中的位元設定為零以產生一第二補零後資料,並根據所述第二補零後資料產生所述第二錯誤檢查碼。
- 如申請專利範圍第12項所述的記憶體控制電路單元,其中 所述記憶體管理電路更用以記錄對應於所述第一補零後資料的一第一位元序列,其中在所述第一位元序列中對應於所述第一位置的位元以一第一數值表示且對應於所述第一位置以外的其他位置的位元以一第二數值表示,以及 所述記憶體管理電路更用以記錄對應於所述第二補零後資料的一第二位元序列,其中在所述第二位元序列中對應於所述第二位置的位元以所述第一數值表示且對應於所述第二位置以外的其他位置的位元以所述第二數值表示。
- 如申請專利範圍第13項所述的記憶體控制電路單元,其中在組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼的運作中, 所述記憶體管理電路更用以根據所述第一錯誤檢查碼與所述第二錯誤檢查碼執行一互斥或(exclusive or)運算以獲得所述第三錯誤檢查碼,並記錄對應於所述第二資料的一第三位元序列, 其中在所述第三位元序列中對應於所述第一位置與所述第二位置的位元以所述第一數值表示且對應於所述第一位置與所述第二位置以外的其他位置的位元以所述第二數值表示。
- 如申請專利範圍第11項所述的記憶體控制電路單元,其中在接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的運作之前, 所述記憶體管理電路更用以將所述第一子資料以及所述第一錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中, 其中在組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼的運作中, 所述記憶體管理電路更用以從所述可複寫式非揮發性記憶體模組中讀取所述第一錯誤檢查碼並組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼。
- 如申請專利範圍第15項所述的記憶體控制電路單元,其中所述第一資料的大小符合一實體頁面的大小,所述第一資料的所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置, 其中在儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中的運作中, 所述記憶體管理電路更用以將所述第二子資料儲存至所述實體頁面以使得所述實體頁面中的所述第一子資料與所述第二子資料形成所述第二資料,其中在所述實體頁面中所述第一子資料位於所述第一位置且所述第二子資料位於所述第二位置。
- 如申請專利範圍第11項所述的記憶體控制電路單元,其中所述第一子資料為對一第一明文加密後所產生的一第一密文, 其中在接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的運作中, 所述記憶體管理電路更用以產生對應於所述第一明文的一第一明文錯誤檢查碼,並將所述第一密文、所述第一明文錯誤檢查碼以及所述第一錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。
- 如申請專利範圍第17項所述的記憶體控制電路單元,其中所述第一資料的大小符合一實體頁面的大小,所述第一資料的所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置,所述第二子資料為對一第二明文加密後所產生的一第二密文,其中 所述記憶體管理電路更用以將所述第二密文儲存至所述實體頁面以使得所述實體頁面中的所述第一密文與所述第二密文形成所述第二資料,其中在所述實體頁面中所述第一密文位於所述第一位置且所述第二密文位於所述第二位置。
- 如申請專利範圍第18項所述的記憶體控制電路單元,其中 所述記憶體管理電路更用以組合所述第一明文錯誤檢查碼與對應於所述第二明文的一第二明文錯誤檢查碼以獲得一第三明文錯誤檢查碼,以及 所述記憶體管理電路更用以將所述第三明文錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。
- 如申請專利範圍第19項所述的記憶體控制電路單元,其中 所述記憶體管理電路更用以讀取所述實體頁面以獲得一已讀取資料,對所述已讀取資料解密以獲得一解密後資料,並根據所述第三明文錯誤檢查碼驗證所述解密後資料, 當根據所述第三明文錯誤檢查碼驗證所述解密後資料發生失敗時,所述記憶體管理電路更用以將所述解密後資料加密以獲得一加密後資料,並根據所述加密後資料產生一新的錯誤檢查碼; 所述記憶體管理電路更用以判斷所述新的錯誤檢查碼是否相同於所述第三錯誤檢查碼, 當所述新的錯誤檢查碼相同於所述第三錯誤檢查碼,所述記憶體管理電路更用以判斷所述解密後資料沒有存在錯誤,以及 當所述新的錯誤檢查碼不同於所述第三錯誤檢查碼,所述記憶體管理電路更用以判斷所述解密後資料存在錯誤。
- 一種記憶體儲存裝置,包括: 一連接介面單元,用以耦接至一主機系統; 一可複寫式非揮發性記憶體模組;以及 一記憶體控制電路單元,耦接至所述連接介面單元與所述可複寫式非揮發性記憶體模組, 其中所述記憶體控制電路單元用以接收一第一資料的多個子資料中的一第一子資料,並產生對應於所述第一子資料的一第一錯誤檢查碼, 其中所述記憶體控制電路單元更用以接收所述第一資料的多個子資料中的一第二子資料,並產生對應於所述第二子資料的一第二錯誤檢查碼, 其中所述記憶體控制電路單元更用以組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得一第三錯誤檢查碼,其中所述第三錯誤檢查碼用以檢查由所述第一子資料與所述第二子資料合併而成的一第二資料是否有錯誤, 其中所述記憶體控制電路單元更用以儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中。
- 如申請專利範圍第21項所述的記憶體儲存裝置,其中所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置, 其中在接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的運作中, 所述記憶體控制電路單元更用以將所述第一子資料配置於所述第一位置並將所述第一位置以外的其他位置中的位元設定為零以產生一第一補零後資料,並根據所述第一補零後資料產生所述第一錯誤檢查碼, 其中在接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的運作中, 所述記憶體控制電路單元更用以將所述第二子資料配置於所述第二位置並將所述第二位置以外的其他位置中的位元設定為零以產生一第二補零後資料,並根據所述第二補零後資料產生所述第二錯誤檢查碼。
- 如申請專利範圍第22項所述的記憶體儲存裝置,其中 所述記憶體控制電路單元更用以記錄對應於所述第一補零後資料的一第一位元序列,其中在所述第一位元序列中對應於所述第一位置的位元以一第一數值表示且對應於所述第一位置以外的其他位置的位元以一第二數值表示,以及 所述記憶體控制電路單元更用以記錄對應於所述第二補零後資料的一第二位元序列,其中在所述第二位元序列中對應於所述第二位置的位元以所述第一數值表示且對應於所述第二位置以外的其他位置的位元以所述第二數值表示。
- 如申請專利範圍第23項所述的記憶體儲存裝置,其中在組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼的運作中, 所述記憶體控制電路單元更用以根據所述第一錯誤檢查碼與所述第二錯誤檢查碼執行一互斥或(exclusive or)運算以獲得所述第三錯誤檢查碼,並記錄對應於所述第二資料的一第三位元序列, 其中在所述第三位元序列中對應於所述第一位置與所述第二位置的位元以所述第一數值表示且對應於所述第一位置與所述第二位置以外的其他位置的位元以所述第二數值表示。
- 如申請專利範圍第21項所述的記憶體儲存裝置,其中在接收所述第一資料的所述多個子資料中的所述第二子資料,並產生對應於所述第二子資料的所述第二錯誤檢查碼的運作之前, 所述記憶體控制電路單元更用以將所述第一子資料以及所述第一錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中, 其中在組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼的運作中, 所述記憶體控制電路單元更用以從所述可複寫式非揮發性記憶體模組中讀取所述第一錯誤檢查碼並組合所述第一錯誤檢查碼與所述第二錯誤檢查碼以獲得所述第三錯誤檢查碼。
- 如申請專利範圍第25項所述的記憶體儲存裝置,其中所述第一資料的大小符合一實體頁面的大小,所述第一資料的所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置, 其中在儲存所述第二資料以及所述第三錯誤檢查碼至所述可複寫式非揮發性記憶體模組中的運作中, 所述記憶體控制電路單元更用以將所述第二子資料儲存至所述實體頁面以使得所述實體頁面中的所述第一子資料與所述第二子資料形成所述第二資料,其中在所述實體頁面中所述第一子資料位於所述第一位置且所述第二子資料位於所述第二位置。
- 如申請專利範圍第21項所述的記憶體儲存裝置,其中所述第一子資料為對一第一明文加密後所產生的一第一密文, 其中在接收所述第一資料的所述多個子資料中的所述第一子資料,並產生對應於所述第一子資料的所述第一錯誤檢查碼的運作中, 所述記憶體控制電路單元更用以產生對應於所述第一明文的一第一明文錯誤檢查碼,並將所述第一密文、所述第一明文錯誤檢查碼以及所述第一錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。
- 如申請專利範圍第27項所述的記憶體儲存裝置,其中所述第一資料的大小符合一實體頁面的大小,所述第一資料的所述多個子資料依照一順序排列於多個位置,所述第一子資料在所述多個位置中位於一第一位置,所述第二子資料在所述多個位置中位於一第二位置,所述第二子資料為對一第二明文加密後所產生的一第二密文,其中 所述記憶體控制電路單元更用以將所述第二密文儲存至所述實體頁面以使得所述實體頁面中的所述第一密文與所述第二密文形成所述第二資料,其中在所述實體頁面中所述第一密文位於所述第一位置且所述第二密文位於所述第二位置。
- 如申請專利範圍第28項所述的記憶體儲存裝置,其中 所述記憶體控制電路單元更用以組合所述第一明文錯誤檢查碼與對應於所述第二明文的一第二明文錯誤檢查碼以獲得一第三明文錯誤檢查碼,以及 所述記憶體控制電路單元更用以將所述第三明文錯誤檢查碼儲存至所述可複寫式非揮發性記憶體模組中。
- 如申請專利範圍第29項所述的記憶體儲存裝置,其中 所述記憶體控制電路單元更用以讀取所述實體頁面以獲得一已讀取資料,對所述已讀取資料解密以獲得一解密後資料,並根據所述第三明文錯誤檢查碼驗證所述解密後資料, 當根據所述第三明文錯誤檢查碼驗證所述解密後資料發生失敗時,所述記憶體控制電路單元更用以將所述解密後資料加密以獲得一加密後資料,並根據所述加密後資料產生一新的錯誤檢查碼, 所述記憶體控制電路單元更用以判斷所述新的錯誤檢查碼是否相同於所述第三錯誤檢查碼, 當所述新的錯誤檢查碼相同於所述第三錯誤檢查碼,所述記憶體控制電路單元更用以判斷所述解密後資料沒有存在錯誤,以及 當所述新的錯誤檢查碼不同於所述第三錯誤檢查碼,所述記憶體控制電路單元更用以判斷所述解密後資料存在錯誤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108128920A TWI688965B (zh) | 2019-08-14 | 2019-08-14 | 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置 |
US16/586,911 US10983858B2 (en) | 2019-08-14 | 2019-09-28 | Data writing method, memory control circuit unit and memory storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108128920A TWI688965B (zh) | 2019-08-14 | 2019-08-14 | 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI688965B true TWI688965B (zh) | 2020-03-21 |
TW202107474A TW202107474A (zh) | 2021-02-16 |
Family
ID=70767324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108128920A TWI688965B (zh) | 2019-08-14 | 2019-08-14 | 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10983858B2 (zh) |
TW (1) | TWI688965B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI785571B (zh) * | 2021-04-22 | 2022-12-01 | 群聯電子股份有限公司 | 資料儲存方法、記憶體控制電路單元以及記憶體儲存裝置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022137811A (ja) * | 2021-03-09 | 2022-09-22 | キオクシア株式会社 | 情報処理システム、ストレージデバイスおよびホスト |
WO2022193129A1 (en) * | 2021-03-16 | 2022-09-22 | Micron Technology, Inc. | Memory management procedures for write boost mode |
JP2022144469A (ja) * | 2021-03-19 | 2022-10-03 | キオクシア株式会社 | メモリシステム |
CN114627571A (zh) * | 2022-03-18 | 2022-06-14 | 广州文远知行科技有限公司 | 一种数据上传方法、装置、交通工具及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4525780A (en) * | 1981-05-22 | 1985-06-25 | Data General Corporation | Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information |
TW200612241A (en) * | 2004-10-13 | 2006-04-16 | Via Tech Inc | Method and related apparatus for data error checking |
US20080082860A1 (en) * | 2003-12-25 | 2008-04-03 | Matsushita Electric Industrial Co., Ltd. | Information processing apparatus for performing a system boot by using programs stored in a non-volatile storage device |
US20090044061A1 (en) * | 2002-12-18 | 2009-02-12 | Angelo Visconti | Structure and method for detecting errors in a multilevel memory device with improved programming granularity |
TWI437421B (zh) * | 2010-03-24 | 2014-05-11 | Toshiba Kk | 半導體記憶裝置 |
TW201435882A (zh) * | 2006-10-04 | 2014-09-16 | Marvell Technology Japan Y K | 快閃記憶體控制介面 |
TWI516927B (zh) * | 2013-06-14 | 2016-01-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
TWI603194B (zh) * | 2013-12-04 | 2017-10-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及其資料存取方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100873824B1 (ko) * | 2007-05-04 | 2008-12-15 | 삼성전자주식회사 | 오류 제어 코드 장치 및 그 방법 |
US10176038B2 (en) * | 2015-09-01 | 2019-01-08 | International Business Machines Corporation | Partial ECC mechanism for a byte-write capable register |
-
2019
- 2019-08-14 TW TW108128920A patent/TWI688965B/zh active
- 2019-09-28 US US16/586,911 patent/US10983858B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4525780A (en) * | 1981-05-22 | 1985-06-25 | Data General Corporation | Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information |
US20090044061A1 (en) * | 2002-12-18 | 2009-02-12 | Angelo Visconti | Structure and method for detecting errors in a multilevel memory device with improved programming granularity |
US20080082860A1 (en) * | 2003-12-25 | 2008-04-03 | Matsushita Electric Industrial Co., Ltd. | Information processing apparatus for performing a system boot by using programs stored in a non-volatile storage device |
TW200612241A (en) * | 2004-10-13 | 2006-04-16 | Via Tech Inc | Method and related apparatus for data error checking |
TW201435882A (zh) * | 2006-10-04 | 2014-09-16 | Marvell Technology Japan Y K | 快閃記憶體控制介面 |
TWI437421B (zh) * | 2010-03-24 | 2014-05-11 | Toshiba Kk | 半導體記憶裝置 |
TWI516927B (zh) * | 2013-06-14 | 2016-01-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
TWI603194B (zh) * | 2013-12-04 | 2017-10-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及其資料存取方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI785571B (zh) * | 2021-04-22 | 2022-12-01 | 群聯電子股份有限公司 | 資料儲存方法、記憶體控制電路單元以及記憶體儲存裝置 |
Also Published As
Publication number | Publication date |
---|---|
TW202107474A (zh) | 2021-02-16 |
US10983858B2 (en) | 2021-04-20 |
US20210049064A1 (en) | 2021-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI688965B (zh) | 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI475385B (zh) | 程式化記憶胞與資料讀取方法、記憶體控制器與儲存裝置 | |
TWI649754B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI588834B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI516921B (zh) | 資料處理方法、記憶體儲存裝置與記憶體控制電路單元 | |
TWI641966B (zh) | 記憶體儲存系統、主機系統驗證方法及記憶體儲存裝置 | |
TWI496161B (zh) | 記憶體識別碼產生方法、管理方法、控制器與儲存系統 | |
TWI614755B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI658463B (zh) | 資料存取方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI443517B (zh) | 記憶體儲存裝置及其記憶體控制器與密碼驗證方法 | |
TWI725416B (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TW201926023A (zh) | 資料存取方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TW201719671A (zh) | 資料程式化方法與記憶體儲存裝置 | |
TWI640997B (zh) | 資料保護方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI722496B (zh) | 使用者資料的加解密方法及裝置 | |
TWI733375B (zh) | 資料轉移方法與記憶體儲存裝置 | |
TW202046113A (zh) | 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI732642B (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TW201719673A (zh) | 資料程式化方法與記憶體儲存裝置 | |
TWI709850B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN112416240B (zh) | 数据写入方法、存储器控制电路单元及存储器存储装置 | |
CN110069934B (zh) | 存储器存储系统、主机系统验证方法及存储器存储装置 | |
CN113448488B (zh) | 数据转移方法与存储器存储装置 | |
TWI819876B (zh) | 資料儲存方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI777087B (zh) | 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置 |