TWI527040B - 資料寫入方法、記憶體儲存裝置與記憶體控制器 - Google Patents
資料寫入方法、記憶體儲存裝置與記憶體控制器 Download PDFInfo
- Publication number
- TWI527040B TWI527040B TW102116923A TW102116923A TWI527040B TW I527040 B TWI527040 B TW I527040B TW 102116923 A TW102116923 A TW 102116923A TW 102116923 A TW102116923 A TW 102116923A TW I527040 B TWI527040 B TW I527040B
- Authority
- TW
- Taiwan
- Prior art keywords
- correction code
- data
- error correction
- units
- unit
- Prior art date
Links
Classifications
-
- 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/1044—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 with specific ECC/EDC distribution
Description
本發明是有關於一種資料寫入方法,且特別是有關於一種用於可複寫式非揮發性記憶體模組的資料寫入方法、以及使用此方法的記憶體儲存裝置與記憶體控制器。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
一般來說,為了確保資料的安全性,儲存在可複寫式非揮發性記憶體模組中的資料會被編碼以產生一個錯誤校正碼。若資料中發生錯誤,此錯誤校正碼可以用來更改發生的錯誤。一種作法是,可複寫式非揮發性記憶體模組中包括了多個記憶體晶片,其中一個記憶體晶片會被用來儲存錯誤校正碼,而其他的記憶體晶片可用來儲存資料。如此一來,當儲存資料的一個記憶體晶片損壞時,可以用其他的資料與錯誤校正碼來回復損壞的資
料。然而,當可複寫式非揮發性記憶體模組中只包括了少數幾個記憶體晶片(例如,2個)時,則有大比例的記憶體空間會被用來儲存錯誤校正碼,造成記憶體空間的使用沒有效率。因此,如何增加記憶體空間的使用效率並提昇資料的安全性,為此領域技術人員所關心的議題。
本發明提供一種資料寫入方法、記憶體儲存裝置與記憶體控制器,可以提升記憶體空間的使用效率並且增加資料的安全性。
本發明一範例實施例提出一種資料寫入方法,用於控制一可複寫式非揮發性記憶體模組。此可複寫式非揮發性記憶體模組包括至少一個記憶體晶片,每一個記憶體晶片包括多個實體抹除單元。每一個實體抹除單元包括多個實體程式化單元,每一個實體抹除單元中的實體程式化單元包括多個快實體程式化單元以及多個慢實體程式化單元,其中快實體程式化單元的寫入速度較慢實體程式化單元的寫入速度快。此資料寫入方法包括:將第一資料僅寫入至至少一個快實體程式化單元;根據第一資料產生第一錯誤校正碼,其係用以校正被寫入至少部分第一資料的單個快實體程式化單元中的部分位元;根據第一資料產生第二錯誤校正碼,其係用以校正被寫入至少部分第一資料的快實體程式化單元,且第二錯誤校正碼能校正的位元數大於第一錯誤校正碼能校
正的位元數;將第一錯誤校正碼及第二錯誤校正碼寫入至至少一個實體抹除單元;將第二資料僅寫入至至少一個慢實體程式化單元;根據第二資料產生第三錯誤校正碼,其係用以校正被寫入至少部分第二資料的單個慢實體程式化單元中的部分位元;根據第二資料產生第四錯誤校正碼,其係用以校正被寫入第二資料的慢實體程式化單元的至少其中之一,且第四錯誤校正碼能校正的位元數大於第三錯誤校正碼能校正的位元數;以及將第三錯誤校正碼以及第四錯誤校正碼寫入至至少一個實體抹除單元。
在一範例實施例中,上述的每一個快實體程式化單元係與每一個慢實體程式化單元共用一字元線,且上述的實體抹除單元、快實體程式化單元及慢實體程式化單元是屬於相同的記憶體晶片。
在一範例實施例中,上述的第一錯誤校正碼及第三錯誤校正碼為錯誤檢查及校正碼。每一個上述的實體程式化單元包含一資料位元區以及一冗餘位元區。第一資料及第二資料係寫入資料位元區中,而每一個冗餘位元區係寫入第一錯誤校正碼及第三錯誤校正碼。第二錯誤校正碼及第四錯誤校正碼係為奇偶校正碼。第二錯誤校正碼係用以當存有第一資料之快實體程式化單元的至少其中之一產生錯誤時,根據一奇偶校正演算法修正產生錯誤的快實體程式化單元。第四錯誤校正碼係用以於存有第二資料之慢實體程式化單元的至少其中之一產生錯誤時,根據奇偶校正演算法修正產生錯誤的慢實體程式化單元。
在一範例實施例中,上述的資料寫入方法更包含下列步驟:將第二錯誤校正碼寫入至至少一個快實體程式化單元;以及將第四錯誤校正碼寫入至至少一個慢實體程式化單元。
在一範例實施例中,上述的第二錯誤校正碼及第四錯誤校正碼係分別與第一資料及第二資料寫入至相異的實體抹除單元。
以另外一個角度來說,本發明一範例實施例提出一種資料寫入方法,用於控制上述的可複寫式非揮發性記憶體模組。此資料寫入方法包括:將第一資料寫入至至少一個第一實體抹除單元;根據第一資料產生第一錯誤校正碼,其係用以校正被寫入至少部分第一資料的單個實體程式化單元中的部分位元;根據第一資料產生第二錯誤校正碼,其係用以校正被寫入至少部分第一資料的實體程式化單元,且第二錯誤校正碼能校正的位元數大於第一錯誤校正碼能校正的位元數;以及將第二錯誤校正碼寫入至一個第二實體抹除單元,其中第一實體抹除單元與第二實體抹除單元屬於相同的記憶體晶片。
在另一範例實施例中,上述的第一錯誤校正碼為錯誤檢查及校正碼。每一個實體程式化單元係包含一資料位元區以及一冗餘位元區,第一資料係寫入資料位元區中,而每一個冗餘位元區係寫入第一錯誤校正碼。第二錯誤校正碼係為奇偶校正碼,其係用以於存有第一資料之實體程式化單元的至少其中之一產生錯誤時,根據奇偶校正演算法修正產生錯誤的實體程式化單元。
在另一範例實施例中,上述的第二實體抹除單元不同於第一實體抹除單元。
在另一範例實施例中,上述的第一實體抹除單元的數量大於1,並且第二實體抹除單元為第一實體抹除單元的其中之一。
在另一範例實施例中,上述的每一個實體抹除單元中的實體程式化單元包括多個快實體程式化單元以及多個慢實體程式化單元。快實體程式化單元的寫入速度較慢實體程式化單元的寫入速度快,第一資料是僅被寫入至至少一個快實體程式化單元。
在另一範例實施例中,上述的資料寫入方法更包括:將第二資料僅寫入至至少一個慢實體程式化單元,並且每一個快實體程式化單元係與每一個慢實體程式化單元共用一字元線;根據第二資料產生第三錯誤校正碼,其係用以校正被寫入至少部分第二資料的單個慢實體程式化單元中的部分位元;根據第二資料產生第四錯誤校正碼,其係用以校正被寫入第二資料的慢實體程式化單元的至少其中之一,且第四錯誤校正碼能校正的位元數大於第三錯誤校正碼能校正的位元數;以及將第三錯誤校正碼及第四錯誤校正碼寫入至一個實體抹除單元。
以另外一個角度來說,本發明一範例實施例提出一種記憶體儲存裝置,包括連接器、上述的可複寫式非揮發性記憶體模組與記憶體控制器。連接器是用以耦接至主機系統。記憶體控制器是耦接至連接器與可複寫式非揮發性記憶體模組,用以將第一資料寫入至至少一個第一實體抹除單元,並且根據第一資料產生
第一錯誤校正碼。第一錯誤校正碼係用以校正被寫入至少部分第一資料的單個實體程式化單元中的部分位元。記憶體控制器也用以根據第一資料產生第二錯誤校正碼,其係用以校正被寫入至少部分第一資料的實體程式化單元,且第二錯誤校正碼能校正的位元數大於第一錯誤校正碼能校正的位元數。記憶體控制器還用以將第二錯誤校正碼寫入至一個第二實體抹除單元,其中第一實體抹除單元與第二實體抹除單元屬於相同的記憶體晶片。
在一範例實施例中,上述的記憶體控制器更用以將第二資料僅寫入至至少一個慢實體程式化單元,並且每一個快實體程式化單元係與每一個慢實體程式化單元共用一字元線。記憶體控制器也用以根據第二資料產生第三錯誤校正碼,其係用以校正被寫入至少部分第二資料的單個慢實體程式化單元中的部分位元。記憶體控制器更用以根據第二資料產生第四錯誤校正碼,其係用以校正被寫入第二資料的慢實體程式化單元的至少其中之一,且第四錯誤校正碼能校正的位元數大於第三錯誤校正碼能校正的位元數。記憶體控制器更用以將第三錯誤校正碼及第四錯誤校正碼寫入至一個實體抹除單元。
以另外一個角度來說,本發明一範例實施例提出一種記憶體控制器,用於控制上述的可複寫式非揮發性記憶體模組。記憶體控制器包括主機介面、記憶體介面與記憶體管理電路。主機介面是用以耦接至主機系統。記憶體介面是用以耦接至上述的可複寫式非揮發性記憶體模組。記憶體管理電路是耦接至主機介面
與記憶體介面,用以將第一資料寫入至至少一個第一實體抹除單元,並且根據第一資料產生第一錯誤校正碼。第一錯誤校正碼係用以校正被寫入至少部分第一資料的單個實體程式化單元中的部分位元。記憶體管理電路也用以根據第一資料產生第二錯誤校正碼,其係用以校正被寫入至少部分第一資料的實體程式化單元,且第二錯誤校正碼能校正的位元數大於第一錯誤校正碼能校正的位元數。記憶體管理電路還用以將第二錯誤校正碼寫入至一個第二實體抹除單元,其中第一實體抹除單元與第二實體抹除單元屬於相同的記憶體晶片。
在一範例實施例中,上述的記憶體管理電路更用以將第二資料僅寫入至至少一個慢實體程式化單元,並且每一個快實體程式化單元係與每一個慢實體程式化單元共用一字元線。記憶體管理電路也用以根據第二資料產生第三錯誤校正碼,其係用以校正被寫入至少部分第二資料的單個慢實體程式化單元中的部分位元。記憶體管理電路更用以根據第二資料產生第四錯誤校正碼,其係用以校正被寫入第二資料的慢實體程式化單元的至少其中之一,且第四錯誤校正碼能校正的位元數大於第三錯誤校正碼能校正的位元數。記憶體管理電路更用以將第三錯誤校正碼及第四錯誤校正碼寫入至一個實體抹除單元。
基於上述,本發明範例實施例提出的資料寫入方法、記憶體儲存裝置與記憶體控制器,可以將資料與相對應的錯誤校正碼儲存在同一個記憶體晶片中,藉此增加記憶體空間的使用效
率。另一方面,兩筆資料會分別被寫入至快實體程式化單元與慢實體程式化單元,藉此可以增加資料的安全性。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
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‧‧‧可複寫式非揮發性記憶體模組
110、120‧‧‧記憶體晶片
112(0)~112(A)、122(0)~122(B)‧‧‧實體抹除單元
202‧‧‧記憶體管理電路
204‧‧‧主機介面
206‧‧‧記憶體介面
252‧‧‧緩衝記憶體
254‧‧‧電源管理電路
256‧‧‧錯誤檢查與校正電路
411(0)~411(C)、421(0)~421(C)、431(0)~431(C)、451(0)~451(C)、504(0)~504(C)、506(0)~506(C)‧‧‧實體程式化單元
410、420、430‧‧‧實體程式化單元組
471(0)~471(14)、481(0)~481(14)‧‧‧資料
472、482、494、495‧‧‧錯誤校正碼
490、492‧‧‧資料位元區
491、493‧‧‧冗餘位元區
S702、S704、S706、S708、S710、S712、S714、S716、S802、S804、S806、S808‧‧‧步驟
圖1A是根據一範例實施例所繪示的主機系統與記憶體儲存裝置。
圖1B是根據一範例實施例所繪示的電腦、輸入/輸出裝置與記憶體儲存裝置的示意圖。
圖1C是根據一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖2是繪示圖1A所示的記憶體儲存裝置的概要方塊圖。
圖3是根據一範例實施例所繪示之記憶體控制器的概要方塊圖。
圖4A、圖4B、圖5與圖6是根據一範例實施例繪示寫入錯誤校正碼的示意圖。
圖7與圖8是根據一範例實施例繪示資料寫入方法的流程圖。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括
可複寫式非揮發性記憶體模組與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖1A是根據一範例實施例所繪示的主機系統與記憶體儲存裝置。
請參照圖1A,主機系統1000一般包括電腦1100與輸入/輸出(input/output,I/O)裝置1106。電腦1100包括微處理器1102、隨機存取記憶體(random access memory,RAM)1104、系統匯流排1108與資料傳輸介面1110。輸入/輸出裝置1106包括如圖1B的滑鼠1202、鍵盤1204、顯示器1206與印表機1208。必須瞭解的是,圖1B所示的裝置非限制輸入/輸出裝置1106,輸入/輸出裝置1106可更包括其他裝置。
在本發明實施例中,記憶體儲存裝置100是透過資料傳輸介面1110與主機系統1000的其他元件耦接。藉由微處理器1102、隨機存取記憶體1104與輸入/輸出裝置1106的運作可將資料寫入至記憶體儲存裝置100或從記憶體儲存裝置100中讀取資料。例如,記憶體儲存裝置100可以是如圖1B所示的隨身碟1212、記憶卡1214或固態硬碟(Solid State Drive,SSD)1216等的可複寫式非揮發性記憶體儲存裝置。
一般而言,主機系統1000為可實質地與記憶體儲存裝置100配合以儲存資料的任意系統。雖然在本範例實施例中,主機系統1000是以電腦系統來作說明,然而,在本發明另一範例實施例
中主機系統1000可以是數位相機、攝影機、通信裝置、音訊播放器或視訊播放器等系統。例如,在主機系統為數位相機(攝影機)1310時,可複寫式非揮發性記憶體儲存裝置則為其所使用的SD卡1312、MMC卡1314、記憶棒(memory stick)1316、CF卡1318或嵌入式儲存裝置1320(如圖1C所示)。嵌入式儲存裝置1320包括嵌入式多媒體卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒體卡是直接耦接於主機系統的基板上。
圖2是繪示圖1A所示的記憶體儲存裝置的概要方塊圖。
請參照圖2,記憶體儲存裝置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)標準或其他適合的標準。
記憶體控制器104用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令,並且根據主機系統1000的指令在可複寫式非揮發性記憶體模組106中進行資料的寫入、讀取與抹除等運作。
可複寫式非揮發性記憶體模組106是耦接至記憶體控制器104,並且用以儲存主機系統1000所寫入之資料。可複寫式非揮發性記憶體模組106具有記憶體晶片110與記憶體晶片120。記憶體晶片110包括實體抹除單元112(0)~112(A),而記憶體晶片120包括實體抹除單元122(0)~122(B)。記憶體晶片110與記憶體晶片120可以獨立地運作,即當記憶體晶片110執行讀取、寫入或抹除的操作時,記憶體晶片120也可以執行讀取、寫入或抹除的操作,並且記憶體晶片110執行的操作可以不同於記憶體晶片120執行的操作。實體抹除單元112(0)~112(A)可屬於同一個記憶體晶粒(die)或者屬於不同的記憶體晶粒,並且實體抹除單元122(0)~122(B)也可屬於同一個記憶體晶粒或者屬於不同的記憶體晶粒。在此範例實施例中,可複寫式非揮發性記憶體模組106包括了兩個記憶體晶片,但本發明並不在此限。在其他範例實施例中,可複寫式非揮發性記憶體模組106也可以包括數目更多或更少的記憶體晶片。
每一個實體抹除單元具有複數個實體程式化單元組,並
且每一個實體程式化單元組包括一或多個實體程式化單元。屬於同一個實體抹除單元之實體程式化單元可被獨立地寫入且被同時地抹除。例如,每一實體抹除單元是由128個實體程式化單元所組成。然而,必須瞭解的是,本發明不限於此,每一實體抹除單元是可由64個實體程式化單元、256個實體程式化單元或其他任意個實體程式化單元所組成。更詳細來說,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。實體程式化單元為程式化的最小單元。即,實體程式化單元為寫入資料的最小單元。
每一實體程式化單元通常包括資料位元區與冗餘位元區。資料位元區包含多個實體存取位址用以寫入使用者的資料,而冗餘位元區用以寫入所屬實體程式化單元的錯誤檢查及校正碼〈ECC code〉。當一個實體程式化單元產生錯誤時(即,資料位元區的資料產生錯誤),其中冗餘位元區的錯誤檢查及校正碼是用以修正此實體程式化單元。在本範例實施例中,每一個實體程式化單元的資料位元區中會包含4個實體存取位址,且一個實體存取位址的大小為512位元組(byte,B)。然而,在其他範例實施例中,資料位元區中也可包含8個、16個或數目更多或更少的實體存取位址,本發明並不限制實體存取位址的大小以及個數。例如,實體抹除單元為實體區塊,並且實體程式化單元為實體頁面或實體扇。
在本範例實施例中,可複寫式非揮發性記憶體模組106
為多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組。也就是說,一個記憶胞中可儲存至少2個位元,並且一個實體程式化單元組會包括兩個實體程式化單元。更具體來說,同一個字元線(word line)上的多個記憶胞會組成一個實體程式化單元組,並且每一個記憶胞中的兩個位元分別屬於不同的實體程式化單元。在此架構下,一個實體程式化單元組中的兩個實體程式化單元可被分類為快實體程式化單元與慢實體程式化單元。換句話說,一個實體抹除單元包括的多個實體程式化單元會包括多個快實體程式化單元與多個慢實體程式化單元。一般來說,快實體程式化單元的寫入速度會大於慢實體程式化單元的寫入速度,並且在同一個實體程式化單元組中,快實體程式化單元必須先被程式化以後慢實體程式化單元才能被程式化。然而,可複寫式非揮發性記憶體模組106亦可是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組、複數階記憶胞(Trinary Level Cell,TLC)NAND型快閃記憶體模組、其他快閃記憶體模組或其他具有相同特性的記憶體模組。當可複寫式非揮發性記憶體模組106為複數階記憶胞(Trinary Level Cell,TLC)NAND型快閃記憶體模組時,一個實體程式化單元組會包括三個實體程式化單元,並且這三個實體程式化單元可被分類為一個快實體程式化單元與兩個慢實體程式化單元。一般來說,快實體程式化單元必須先被程式化以後慢實體程式化單元才能被程式化。
圖3是根據一範例實施例所繪示之記憶體控制器的概要
方塊圖。
請參照圖3,記憶體控制器104包括記憶體管理電路202、主機介面204與記憶體介面206。
記憶體管理電路202用以控制記憶體控制器104的整體運作。具體來說,記憶體管理電路202具有多個控制指令,並且在記憶體儲存裝置100運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。以下說明記憶體管理電路202的操作時,等同於說明記憶體控制器104的操作,以下並不再贅述。
在本範例實施例中,記憶體管理電路202的控制指令是以韌體型式來實作。例如,記憶體管理電路202具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置100運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在本發明另一範例實施例中,記憶體管理電路202的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組106的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路202具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當記憶體控制器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所能接受的格式。
在本發明一範例實施例中,記憶體控制器104還包括緩衝記憶體252、電源管理電路254與錯誤檢查與校正電路256。
緩衝記憶體252是耦接至記憶體管理電路202並且用以暫存來自於主機系統1000的資料與指令或來自於可複寫式非揮發性記憶體模組106的資料。
電源管理電路254是耦接至記憶體管理電路202並且用以控制記憶體儲存裝置100的電源。
錯誤檢查與校正電路256是耦接至記憶體管理電路202並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路202從主機系統1000中接收到寫入指令時,錯誤檢查與校正電路256會為對應此寫入指令的資料產生對應的錯誤檢查與校正碼(Error Checking and Correcting Code,ECC Code)。記憶體管理電路202會將對應此寫入指令的資料寫入至一個實體程式化單元中的資料位元區,並且把對應的錯誤檢查與校正碼寫入至同一個實體程式化單元中的冗餘位元區。之後,當記
憶體管理電路202從可複寫式非揮發性記憶體模組106中讀取資料時會同時讀取此資料對應的錯誤檢查與校正碼,並且錯誤檢查與校正電路256會依據此錯誤檢查與校正碼對所讀取的資料執行錯誤檢查與校正程序。
在此範例實施例中,記憶體管理電路202將一個第一資料寫入至一或多個實體抹除單元以後,會根據該第一資料產生一個第一錯誤校正碼。此第一錯誤校正碼是用以校正被寫入至少部分第一資料的單個實體程式化單元中的部分位元。此外,記憶體管理電路202也會根據第一資料產生一個第二錯誤校正碼,而此第二錯誤校正碼是用以校正被寫入至少部分第一資料的一或多個實體程式化單元。其中,第二錯誤校正碼能校正的位元數會大於第一錯誤校正碼能校正的位元數。舉例來說,第一錯誤校正碼是儲存在冗餘位元區中,只能校正單個實體程式化單元中資料位元區的資料的部分位元。而第二錯誤校正碼可以校正兩個實體程式化單元以上的資料,或是至少一個實體程式化單元裡的所有位元。第二錯誤校正碼也會被寫入至一個實體抹除單元。特別的是,第二錯誤校正碼與第一資料會被寫入至同一個記憶體晶片中。在此範例實施例中,第一或第二錯誤校正碼是由記憶體管理電路202所產生,然而,第一或第二錯誤校正碼也可以由錯誤檢查與校正電路256所產生,本發明並不在此限。
第一錯誤校正碼與第二錯誤校正碼的類型可以是奇偶校正碼(parity checking code)、通道編碼(channel coding)或是其他類
型。例如,記憶體管理電路202所產生的錯誤校正碼可以是漢明碼(hamming code)、低密度奇偶檢查碼(low density parity check code,LDPC code)、渦旋碼(turbo code)或里德-所羅門碼(Reed-solomon code,RS code),本發明並不在此限。若資料與錯誤校正碼的長度比例為m:n,則表示m個存有資料的實體程式化單元會對應至n個存有錯誤校正碼的實體程式化單元,其中m與n為正整數。一般來說,正整數m會大於正整數n,但本發明並不在此限。並且,本發明也不限制正整數m與正整數n的值。
圖4A、圖4B、圖5與圖6是根據一範例實施例繪示寫入錯誤校正碼的示意圖。
請參照圖4A,實體抹除單元112(0)包括實體程式化單元411(0)~411(C)。在此是將快實體程式化單元與慢實體程式化單元交錯地繪示,即實體程式化單元411(0)為快實體程式化單元,實體程式化單元411(1)是慢實體程式化單元,並且實體程式化單元411(0)與411(1)會組成實體程式化單元組410,以此類推。實體抹除單元112(1)包括實體程式化單元421(0)~421(C),其中實體程式化單元421(0)為快實體程式化單元,實體程式化單元421(1)為慢實體程式化單元,並且實體程式化單元421(0)與421(1)會組成實體程式化單元組420。實體抹除單元112(14)包括實體程式化單元431(0)~431(C),其中實體程式化單元431(0)為快實體程式化單元,實體程式化單元431(1)為慢實體程式化單元,並且實體程式化單元431(0)與431(1)會組成實體程式化單元組430。在圖4的範
例實施例中,資料與第二錯誤校正碼的長度比例為15:1(即,正整數m為15,而正整數n為1)。在此假設記憶體管理電路202要將第一資料寫入至15個實體程式化單元,因此記憶體管理電路202所產生的第二錯誤校正碼會是一個實體程式化單元的大小。詳細來說,記憶體管理電路202會將第一資料471(0)寫入至實體程式化單元411(0),將第一資料471(1)寫入至實體程式化單元421(0)並且會將第一資料471(14)寫入至實體程式化單元431(0)。值得注意的是,為簡化起見,在此並沒有繪示出所有被寫入的15個實體程式化單元,也沒有繪示所有的第一資料471(0)~471(14)。記憶體管理電路202會根據資料471(0)~471(14)產生錯誤校正碼472(亦稱第二錯誤校正碼),並且將第二錯誤校正碼472寫入至實體程式化單元451(0)當中。在此範例實施例中,第二錯誤校正碼472是奇偶校正碼。當儲存第一資料471(0)~471(14)的快實體程式化單元的其中之一產生錯誤時,記憶體管理電路202會根據一個奇偶校正演算法來修正產生錯誤的快實體程式化單元。
在此,第一資料471(0)~471(14)可以是從主機系統1000所接收的資料,也可以是記憶體管理電路202所產生的系統資料,或者是在其他運作中所產生的資料,本發明並不限制第一資料471(0)~471(14)的來源與內容。
請參照圖4B,記憶體管理電路202也會根據資料位元區中的資料來產生第一錯誤校正碼。例如,實體程式化單元411(0)包括了資料位元區490與冗餘位元區491。記憶體管理電路202
會根據資料471(0)來產生第一錯誤校正碼495並且把第一錯誤校正碼495寫入至冗餘位元區491。在此範例實施例中,第一錯誤校正碼為錯誤檢查及校正碼(Error Checking and Correcting Code,ECC Code)。當資料471(0)發生錯誤時,記憶體管理電路202會根據錯誤校正碼495來校正資料471(0)的部份位元。值得注意的是,在圖4A中,實體程式化單元421(0)、431(0)都有一個冗餘位元區,其中儲存了對應的錯誤校正碼。為簡化起見,在此並未繪出每一個實體程式化單元中的冗餘位元區。
請參照圖4A,記憶體管理電路202也會將第二資料481(0)寫入至實體程式化單元411(1),將第二資料481(1)寫入實體程式化單元421(1),並且將第二資料481(14)寫入至實體程式化單元431(1)。記憶體管理電路202會根據第二資料481(0)~481(14)產生錯誤校正碼482(亦稱第四錯誤校正碼),並且將第四錯誤校正碼482寫入至實體程式化單元451(1)。此外,記憶體管理電路202也會分別根據資料481(0)~481(14)產生儲存在冗餘位元區的錯誤校正碼(亦稱第三錯誤校正碼)。如圖4B所示,實體程式化單元411(1)包括了資料位元區492與冗餘位元區493。記憶體管理電路202會根據第二資料481(0)產生一個第三錯誤校正碼494,並且把此第三錯誤校正碼494寫入冗餘位元區493。第三錯誤校正碼494是用以校正資料位元區492中的部份位元。請參照回圖4A,第二資料481(1)與第二資料481(14)也會分別對應至一筆第三錯誤校正碼。然而,為了簡化起見,在此並未繪出實體程式化單元411(1)、
421(1)、431(1)中的冗餘位元區。在此範例實施例中,第四錯誤校正碼482能校正的位元數會大於第三錯誤校正碼能校正的位元數。舉例來說,第三錯誤校正碼是用來校正同一個實體程式化單元中資料位元區的資料,即第三錯誤校正碼是錯誤檢查及校正碼(Error Checking and Correcting Code,ECC Code)。第四錯誤校正碼482則是用來校正一或多個實體程式化單元中的第二資料481(0)~481(14),例如,第四錯誤校正碼482為奇偶校正碼。當存有第二資料481(0)~481(14)的實體程式化單元的其中之一發生錯誤時,記憶體管理電路202會根據一個奇偶校正演算法修正產生錯誤的實體程式化單元。
值得注意的是,第一資料471(0)~471(14)僅會被寫入至快實體程式化單元,而第二資料481(0)~481(14)僅會被寫入至慢實體程式化單元。由於一個實體程式化單元組中的兩個實體程式化單元容易一起損壞,因此若將兩筆第一資料(或第二資料)寫入至同一個實體程式化單元組中的兩個實體程式化單元,則容易發生一次有兩筆資料發生錯誤的情形,導致錯誤校正碼472(或482)不能校正發生的錯誤。然而,在此範例實施例中,若實體程式化單元組410損壞,則錯誤校正碼472與482則可分別用來校正實體程式化單元411(0)與411(1)中的錯誤。
在一範例實施例中,第一資料471(0)~471(14)在被寫入至實體抹除單元112(0)~112(14)之前是被儲存在記憶體控制器104中的緩衝記憶體252。當第一資料471(0)要被寫入至實體抹除單元
112(0)之前,記憶體管理電路202便會根據第一資料471(0)產生一個暫時的第二錯誤校正碼。接下來,記憶體管理電路202會把第一資料471(0)寫入至實體抹除單元112(0),並且根據此暫時的第二錯誤校正碼與第一資料471(1)產生另一個暫時的第二錯誤校正碼。相同地,在寫入第一資料471(1)之後,此另一個暫時的第二錯誤校正碼會與第一資料471(2)產生更另一個暫時的第二錯誤校正碼,以此類推。換句話說,記憶體管理電路202是在每寫入一筆第一資料時便產生對應於此第一資料的第二暫時錯誤校正碼,而在寫入所有的第一資料471(0)~471(14)以後,此暫時的第二錯誤校正碼便會成為錯誤校正碼472。記憶體管理電路202會將暫時的第二錯誤校正碼儲存在緩衝記憶體252或者是任意一個實體抹除單元中。然而,在另一範例實施例中,記憶體管理電路202也可以一次性地根據第一資料471(0)~471(14)產生錯誤校正碼472(例如,錯誤校正碼472是在寫入第一資料471(0)~471(14)之後所產生),本發明並不在此限。
在一範例實施例中,第一資料471(0)~471(14)是從主機系統1000接收而來,然而,主機系統1000有可能會一次下達寫入超過15個實體程式化單元或是少於15個實體程式化單元的資料。換句話說,第一資料471(0)~471(14)可能是對應至一或多個寫入指令。舉例來說,主機系統1000先下達了一個寫入指令,其是要寫入13個實體程式化單元的資料。在接收到這些資料以後,記憶體管理電路202並不會馬上產生錯誤校正碼472。接下來,主機
系統1000下達了另一個寫入指令,其是要寫入8個實體程式化單元的資料。記憶體管理電路202會從這兩個寫入指令所對應的資料中取得第一資料471(0)~471(14)。例如,記憶體管理電路202從第一個寫入指令中取得第一資料471(0)~471(12),並且從第二個寫入指令中取得第一資料471(13)~471(14)。而第二個寫入指令中尚未被寫入的資料會與另一個寫入指令中的資料合併。如此一來,第一資料471(0)~471(14)便是對應至兩個寫入指令,但第一資料471(0)~471(14)也可以是對應至三個或更多個寫入指令,本發明並不在此限。或者,第一個寫入指令是要寫入19個實體程式化單元的資料,記憶體管理電路202會從這些資料中取得第一資料471(0)~471(14),而剩下4個實體程式化單元的資料則會與其他的資料(例如,下一個寫入資料中11個實體程式化單元的資料)合併。即,第一資料471(0)~471(14)可以是對應至一個寫入指令。相同地,第二資料481(0)~481(14)也可能是對應至一或多個寫入指令,本發明並不在此限。
在一範例實施例中,多個實體抹除單元可以被合併為一個超級實體單元,而記憶體管理電路202會將此超級實體單元當作是一個實體抹除單元來操作。例如,當要抹除超級實體單元中的一個實體抹除單元時,此超級實體單元中所有的實體抹除單元會一起被抹除。在圖4A中,實體抹除單元112(0)~112(15)便是屬於同一個超級實體單元。但本發明並不在此限,在另一範例實施例中,記憶體管理電路202也可以不設定超級實體單元,並且實
體抹除單元112(0)~112(15)可以獨立的被抹除。
請參照圖5,在圖5的範例實施例中,部份的資料471(0)~417(14)與錯誤校正碼472會被寫入至同一個實體抹除單元當中。具體來說,資料471(0)、471(4)、471(8)與471(12)是分別被寫入至實體程式化單元411(0)~411(3);資料471(1)、471(5)、471(9)與471(13)是分別被寫入至實體程式化單元421(0)~421(3);資料471(2)、471(6)、471(10)與471(14)是分別被寫入至實體程式化單元504(0)~504(3);資料471(3)、471(7)與471(11)是分別被寫入至實體程式化單元506(0)~506(2)。錯誤校正碼471則會被寫入至實體程式化單元506(3)。其中,實體程式化單元506(0)~506(3)是屬於同一個實體抹除單元112(3)。換言之,資料471(0)~471(14)是被寫入至實體抹除單元112(0)~112(3),而儲存錯誤校正碼472的實體抹除單元112(3)是實體抹除單元112(0)~112(3)的其中之一。在一範例實施例中,實體抹除單元112(0)~112(3)可以為同一個超級實體單元,但本發明並不在此限。
請參照圖6,在一範例實施例中,資料471(0)~471(14)的其中之一與資料481(0)~481(14)的其中之一會屬於同一個實體程式化單元組。舉例來說,資料471(0)與資料481(0)會被寫入至同一個實體程式化單元組410,資料471(1)與資料481(1)會被寫入至同一個實體程式化單元組420,以此類推。在此範例實施例中,錯誤校正碼472與資料471(3)、471(7)是被寫入至同一個實體抹除單元112(3)。然而,在其他範例實施例中,錯誤校正碼472也可以
被寫入至記憶體晶片110中實體抹除單元112(0)~112(3)以外的另一個實體抹除單元。例如,記憶體管理電路202會從記憶體晶片110中提取一個實體抹除單元,而錯誤校正碼472與482都會被寫入至這個實體抹除單元中。或者,錯誤校正碼472與482可以被寫入至不同的實體抹除單元。本發明並不限制錯誤校正碼472與資料471(0)~471(14)是否要被寫入至相同的實體抹除單元,也不限制錯誤校正碼472與482是否被寫入至相同的實體抹除單元。
在此錯誤校正碼472與錯誤校正碼483是分別寫入至共享字元線的快實體程式化單元506(6)與慢實體程式化單元506(7)。然而,在其他範例實施例中,錯誤校正碼472與錯誤校正碼483也可以寫入至不共享字元線的兩個實體程式化單元,本發明並不在此限。
在此範例實施例中,資料471(0)~471(14)與錯誤校正碼472是被寫入至同一個記憶體晶片110中。然而,在其他範例實施例中,第一資料471(0)~471(14)與錯誤校正碼472也可以分別被寫入至不同的記憶體晶片中。例如,資料471(0)~471(14)可被寫入至記憶體晶片110,並且錯誤校正碼472可被寫入至記憶體晶片120。或者,當可複寫式非揮發性記憶體模組106包括多個記憶體晶片時,資料471(0)~471(14)也可分散地被寫入至不同的記憶體晶片,本發明並不在此限。
圖7與圖8是根據一範例實施例繪示資料寫入方法的流程圖。
請參照圖7,在步驟S702中,將第一資料僅寫入至至少一個快實體程式化單元。在步驟S704中,根據第一資料產生第一錯誤校正碼,此第一錯誤校正碼係用以校正被寫入至少部分第一資料的單個快實體程式化單元中的部分位元。在步驟S706中,根據第一資料產生第二錯誤校正碼,此第二錯誤校正碼係用以校正被寫入至少部分第一資料的一或多個快實體程式化單元中的部分位元,且第二錯誤校正碼能校正的位元數大於第一錯誤校正碼能校正的位元數。在步驟S708中,將第一錯誤校正碼及第二錯誤校正碼寫入至至少一個實體抹除單元。在步驟S710中,將第二資料僅寫入至至少一個慢實體程式化單元。在步驟S712中,根據第二資料產生第三錯誤校正碼,此第三錯誤校正碼係用以校正被寫入至少部分第二資料的單個慢實體程式化單元中的部分位元。在步驟S714中,根據第二資料產生第四錯誤校正碼,此第四錯誤校正碼係用以校正被寫入第二資料的一或多個慢實體程式化單元,且第四錯誤校正碼能校正的位元數大於第三錯誤校正碼能校正的位元數。在步驟S716中,將第三錯誤校正碼以及第四錯誤校正碼寫入至至少一個實體抹除單元。值得注意的是,在圖7所示的方法中,第一資料與第二錯誤校正碼可以被寫入至相同的記憶體晶片或是不同的記憶體晶片。相同地,第二資料與第四錯誤校正碼可以被寫入至相同的記憶體晶片或是不同的記憶體晶片,本發明並不在此限。
請參照圖8,在步驟S802中,將第一資料寫入至至少一
個第一實體抹除單元。在步驟S804中,根據第一資料產生第一錯誤校正碼,此第一錯誤校正碼係用以校正被寫入至少部分第一資料的單個實體程式化單元中的部分位元。在步驟S806中,根據第一資料產生第二錯誤校正碼,第二錯誤校正碼係用以校正被寫入至少部分第一資料的一或多個實體程式化單元,且第二錯誤校正碼能校正的位元數大於第一錯誤校正碼能校正的位元數。在步驟S808中,將第二錯誤校正碼寫入至一個第二實體抹除單元,其中第一實體抹除單元與第二實體抹除單元屬於相同的記憶體晶片。值得注意的是,在圖8所示的方法中,第一資料可被寫入至快實體程式化單元、慢實體程式化單元、或兩者皆有,本發明並不在此限。
圖7與圖8中各步驟已詳細說明如上,在此便不再贅述。然而,圖7與圖8中各步驟可以實作為多個程式碼或是電路,本發明並不在此限。此外,圖7與圖8的方法可以搭配以上範例實施例使用,也可以單獨使用,本發明並不在此限。
綜上所述,本發明範例實施例所提出的資料寫入方法、記憶體儲存裝置與記憶體控制器,可以增加記憶體空間的使用效率。另一方面,一個錯誤校正碼所對應的多個資料不會被寫入至相同的實體程式化單元組,藉此可以增加資料的安全性。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍
當視後附的申請專利範圍所界定者為準。
S802、S804、S806、S808‧‧‧步驟
Claims (23)
- 一種資料寫入方法,用於控制一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括至少一記憶體晶片,每一該至少一記憶體晶片包括多個實體抹除單元,每一該些實體抹除單元包括多個實體程式化單元,每一該些實體抹除單元的該些實體程式化單元包括多個快實體程式化單元以及多個慢實體程式化單元,其中該些快實體程式化單元的寫入速度較該些慢實體程式化單元的寫入速度快,該資料寫入方法包括:將一第一資料僅寫入至該些快實體程式化單元中的至少其中之一;根據該第一資料產生一第一錯誤校正碼,該第一錯誤校正碼係用以校正被寫入至少部分該第一資料的單個該快實體程式化單元中的部分位元;根據該第一資料產生一第二錯誤校正碼,該第二錯誤校正碼係用以校正被寫入至少部分該第一資料的該快實體程式化單元,且該第二錯誤校正碼能校正的位元數大於該第一錯誤校正碼能校正的位元數;將該第一錯誤校正碼及第二錯誤校正碼寫入至該些實體抹除單元至少其中之一;將一第二資料僅寫入至該些慢實體程式化單元中的至少其中之一;根據該第二資料產生一第三錯誤校正碼,該第三錯誤校正碼 係用以校正被寫入至少部分該第二資料的單個該慢實體程式化單元中的部分位元;根據該第二資料產生一第四錯誤校正碼,該第四錯誤校正碼係用以校正被寫入該第二資料的該些慢實體程式化單元的至少其中之一,且該第四錯誤校正碼能校正的位元數大於該第三錯誤校正碼能校正的位元數;以及將該第三錯誤校正碼以及該第四錯誤校正碼寫入至該些實體抹除單元至少其中之一。
- 如申請專利範圍第1項所述的資料寫入方法,其中每一該些快實體程式化單元係與每一該些慢實體程式化單元共用一字元線,且該些實體抹除單元、該些快實體程式化單元及該些慢實體程式化單元屬於相同的該記憶體晶片。
- 如申請專利範圍第1項所述的資料寫入方法,其中該第一錯誤校正碼及該第三錯誤校正碼為錯誤檢查及校正碼〈ECC code〉,且每一該些實體程式化單元係包含一資料位元區以及一冗餘位元區,該第一資料及該第二資料係寫入該些資料位元區中,而每一該些冗餘位元區係寫入該第一錯誤校正碼及該第三錯誤校正碼;該第二錯誤校正碼及該第四錯誤校正碼係為奇偶校正碼,該第二錯誤校正碼係用以當存有該第一資料之該快實體程式化單元的至少其中之一產生錯誤時,根據一奇偶校正演算法修正產生錯誤的該快實體程式化單元,該第四錯誤校正碼係用以於存有該第 二資料之該慢實體程式化單元的至少其中之一產生錯誤時,根據該奇偶校正演算法修正產生錯誤的該慢實體程式化單元。
- 如申請專利範圍第1項所述的資料寫入方法,其中更包含下列步驟:將該第二錯誤校正碼寫入至該些快實體程式化單元的其中之一;以及將該第四錯誤校正碼寫入至該些慢實體程式化單元的其中之一。
- 如申請專利範圍第1項所述的資料寫入方法,其中該第二錯誤校正碼及該第四錯誤校正碼係分別與該第一資料及該第二資料寫入至相異的該些實體抹除單元。
- 一種資料寫入方法,用於控制一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括至少一記憶體晶片,每一該至少一記憶體晶片包括多個實體抹除單元,並且每一該些實體抹除單元包括多個實體程式化單元,該資料寫入方法包括:將一第一資料寫入至該些實體抹除單元中的至少一第一實體抹除單元;根據該第一資料產生一第一錯誤校正碼,該第一錯誤校正碼係用以校正被寫入至少部分該第一資料的單個該實體程式化單元中的部分位元;根據該第一資料產生一第二錯誤校正碼,該第二錯誤校正碼 係用以校正被寫入至少部分該第一資料的該實體程式化單元,且該第二錯誤校正碼能校正的位元數大於該第一錯誤校正碼能校正的位元數;以及將該第二錯誤校正碼寫入至該些實體抹除單元中的一第二實體抹除單元,其中該至少一第一實體抹除單元與該第二實體抹除單元屬於相同的該至少一記憶體晶片。
- 如申請專利範圍第6項所述的資料寫入方法,其中該第一錯誤校正碼為錯誤檢查及校正碼〈ECC code〉,每一該些實體程式化單元係包含一資料位元區以及一冗餘位元區,該第一資料係寫入該些資料位元區中,而每一該些冗餘位元區係寫入該第一錯誤校正碼;該第二錯誤校正碼係為奇偶校正碼,該第二錯誤校正碼係用以於存有該第一資料之該些實體程式化單元的至少其中之一產生錯誤時,根據奇偶校正演算法修正產生錯誤的該實體程式化單元。
- 如申請專利範圍第6項所述的資料寫入方法,其中該第二實體抹除單元不同於該至少一第一實體抹除單元。
- 如申請專利範圍第6項所述的資料寫入方法,其中該至少一第一實體抹除單元的數量大於1,並且該第二實體抹除單元為該些第一實體抹除單元的其中之一。
- 如申請專利範圍第6項所述的資料寫入方法,其中每一該些實體抹除單元的該些實體程式化單元包括多個快實體程式化單元以及多個慢實體程式化單元,其中該些快實體程式化單元的 寫入速度較該些慢實體程式化單元的寫入速度快,該第一資料是僅被寫入至該些快實體程式化單元的至少其中之一。
- 如申請專利範圍第10項所述的資料寫入方法,更包括:將一第二資料僅寫入至該些慢實體程式化單元中的至少其中之一,並且每一該些快實體程式化單元係與每一該些慢實體程式化單元共用一字元線;根據該第二資料產生一第三錯誤校正碼,該第三錯誤校正碼係用以校正被寫入至少部分該第二資料的單個該慢實體程式化單元中的部分位元;根據該第二資料產生一第四錯誤校正碼,該第四錯誤校正碼係用以校正被寫入該第二資料的該些慢實體程式化單元的至少其中之一,且該第四錯誤校正碼能校正的位元數大於該第三錯誤校正碼能校正的位元數;以及將該第三錯誤校正碼及該第四錯誤校正碼寫入至該些實體抹除單元的其中之一。
- 一種記憶體儲存裝置,包括:一連接器,用以耦接至一主機系統;一可複寫式非揮發性記憶體模組,包括至少一記憶體晶片,其中每一該至少一記憶體晶片包括多個實體抹除單元,並且每一該些實體抹除單元包括多個實體程式化單元;以及一記憶體控制器,耦接至該連接器與該可複寫式非揮發性記憶體模組,用以將一第一資料寫入至該些實體抹除單元中的至少 一第一實體抹除單元,並且根據該第一資料產生一第一錯誤校正碼,其中該第一錯誤校正碼係用以校正被寫入至少部分該第一資料的單個該實體程式化單元中的部分位元,該記憶體控制器用以根據該第一資料產生一第二錯誤校正碼,其中該第二錯誤校正碼係用以校正被寫入至少部分該第一資料的該實體程式化單元,且該第二錯誤校正碼能校正的位元數大於該第一錯誤校正碼能校正的位元數,該記憶體控制器用以將該第二錯誤校正碼寫入至該些實體抹除單元中的一第二實體抹除單元,其中該至少一第一實體抹除單元與該第二實體抹除單元屬於相同的該至少一記憶體晶片。
- 如申請專利範圍第12項所述的記憶體儲存裝置,其中該第一錯誤校正碼為錯誤檢查及校正碼〈ECC code〉,每一該些實體程式化單元係包含一資料位元區以及一冗餘位元區,該第一資料係寫入該些資料位元區中,而每一該些冗餘位元區係寫入該第一錯誤校正碼,其中該第二錯誤校正碼係為奇偶校正碼,該第二錯誤校正碼係用以於存有該第一資料之該些實體程式化單元的至少其中之一產生錯誤時,根據奇偶校正演算法修正產生錯誤的該實體程式化單元。
- 如申請專利範圍第12項所述的記憶體儲存裝置,其中該第二實體抹除單元不同於該至少一第一實體抹除單元。
- 如申請專利範圍第12項所述的記憶體儲存裝置,其中該 至少一第一實體抹除單元的數量大於1,並且該第二實體抹除單元為該些第一實體抹除單元的其中之一。
- 如申請專利範圍第12項所述的記憶體儲存裝置,其中每一該些實體抹除單元的該些實體程式化單元包括多個快實體程式化單元以及多個慢實體程式化單元,其中該些快實體程式化單元的寫入速度較該些慢實體程式化單元的寫入速度快,該第一資料是僅被寫入至該些快實體程式化單元的至少其中之一。
- 如申請專利範圍第16項所述的記憶體儲存裝置,其中該記憶體控制器更用以將一第二資料僅寫入至該些慢實體程式化單元中的至少其中之一,並且每一該些快實體程式化單元係與每一該些慢實體程式化單元共用一字元線,記憶體控制器更用以根據該第二資料產生一第三錯誤校正碼,其中該第三錯誤校正碼係用以校正被寫入至少部分該第二資料的單個該慢實體程式化單元中的部分位元,記憶體控制器更用以根據該第二資料產生一第四錯誤校正碼,該第四錯誤校正碼係用以校正被寫入該第二資料的該些慢實體程式化單元的至少其中之一,且該第四錯誤校正碼能校正的位元數大於該第三錯誤校正碼能校正的位元數,記憶體控制器更用以將該第三錯誤校正碼及該第四錯誤校正碼寫入至該些實體抹除單元的其中之一。
- 一種記憶體控制器,用於控制一可複寫式非揮發性記憶體模組,該記憶體控制器包括: 一主機介面,用以耦接至一主機系統;一記憶體介面,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括至少一記憶體晶片,並且每一該至少一記憶體晶片包括多個實體抹除單元;以及一記憶體管理電路,耦接至該主機介面與該記憶體介面,用以將一第一資料寫入至該些實體抹除單元中的至少一第一實體抹除單元,並且根據該第一資料產生一第一錯誤校正碼,其中該第一錯誤校正碼係用以校正被寫入至少部分該第一資料的單個該實體程式化單元中的部分位元,該記憶體控制器用以根據該第一資料產生一第二錯誤校正碼,其中該第二錯誤校正碼係用以校正被寫入至少部分該第一資料的該實體程式化單元,且該第二錯誤校正碼能校正的位元數大於該第一錯誤校正碼能校正的位元數,該記憶體控制器用以將該第二錯誤校正碼寫入至該些實體抹除單元中的一第二實體抹除單元,其中該至少一第一實體抹除單元與該第二實體抹除單元屬於相同的該至少一記憶體晶片。
- 如申請專利範圍第18項所述的記憶體控制器,其中該第一錯誤校正碼為錯誤檢查及校正碼,每一該些實體程式化單元係包含一資料位元區以及一冗餘位元區,該第一資料係寫入該些資料位元區中,而每一該些冗餘位元區係寫入該第一錯誤校正碼,其中該第二錯誤校正碼係為奇偶校正碼,該第二錯誤校正碼係用以於存有該第一資料之該些實體程式化單元的至少其中之一 產生錯誤時,根據奇偶校正演算法修正產生錯誤的該實體程式化單元。
- 如申請專利範圍第18項所述的記憶體控制器,其中該第二實體抹除單元不同於該至少一第一實體抹除單元。
- 如申請專利範圍第18項所述的記憶體控制器,其中該至少一第一實體抹除單元的數量大於1,並且該第二實體抹除單元為該些第一實體抹除單元的其中之一。
- 如申請專利範圍第18項所述的記憶體控制器,其中每一該些實體抹除單元的該些實體程式化單元包括多個快實體程式化單元以及多個慢實體程式化單元,其中該些快實體程式化單元的寫入速度較該些慢實體程式化單元的寫入速度快,該第一資料是僅被寫入至該些快實體程式化單元的至少其中之一。
- 如申請專利範圍第22項所述的記憶體控制器,其中該記憶體管理電路更用以將一第二資料僅寫入至該些慢實體程式化單元中的至少其中之一,並且每一該些快實體程式化單元係與每一該些慢實體程式化單元共用一字元線,該記憶體管理電路更用以根據該第二資料產生一第三錯誤校正碼,其中該第三錯誤校正碼係用以校正被寫入至少部分該第二資料的單個該慢實體程式化單元中的部分位元,該記憶體管理電路更用以根據該第二資料產生一第四錯誤校正碼,該第四錯誤校正碼係用以校正被寫入該第二資料的該些慢實體程式化單元的至少其中之一,且該第四錯誤校正碼能校正的 位元數大於該第三錯誤校正碼能校正的位元數,該記憶體管理電路更用以將該第三錯誤校正碼及該第四錯誤校正碼寫入至該些實體抹除單元的其中之一。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102116923A TWI527040B (zh) | 2013-05-13 | 2013-05-13 | 資料寫入方法、記憶體儲存裝置與記憶體控制器 |
US13/939,191 US9208021B2 (en) | 2013-05-13 | 2013-07-11 | Data writing method, memory storage device, and memory controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102116923A TWI527040B (zh) | 2013-05-13 | 2013-05-13 | 資料寫入方法、記憶體儲存裝置與記憶體控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201443901A TW201443901A (zh) | 2014-11-16 |
TWI527040B true TWI527040B (zh) | 2016-03-21 |
Family
ID=51865743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102116923A TWI527040B (zh) | 2013-05-13 | 2013-05-13 | 資料寫入方法、記憶體儲存裝置與記憶體控制器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9208021B2 (zh) |
TW (1) | TWI527040B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9734009B2 (en) | 2015-10-08 | 2017-08-15 | Sandisk Technologies Llc | Data encoding techniques for a device |
TWI607448B (zh) * | 2016-09-07 | 2017-12-01 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 |
CN108694979B (zh) * | 2017-04-06 | 2023-08-01 | 群联电子股份有限公司 | 数据写入方法、存储器控制电路单元与存储器存储装置 |
TWI640997B (zh) * | 2017-12-27 | 2018-11-11 | 群聯電子股份有限公司 | 資料保護方法、記憶體控制電路單元與記憶體儲存裝置 |
CN110008145B (zh) * | 2018-01-05 | 2022-10-21 | 群联电子股份有限公司 | 数据保护方法、存储器控制电路单元与存储器存储装置 |
US11190217B2 (en) | 2018-08-23 | 2021-11-30 | Phison Electronics Corp. | Data writing method, memory controlling circuit unit and memory storage device |
TWI658463B (zh) * | 2018-08-23 | 2019-05-01 | 群聯電子股份有限公司 | 資料存取方法、記憶體控制電路單元與記憶體儲存裝置 |
CN110874282B (zh) * | 2018-08-31 | 2023-03-21 | 群联电子股份有限公司 | 数据存取方法、存储器控制电路单元与存储器存储装置 |
TWI709850B (zh) * | 2019-01-30 | 2020-11-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 |
TWI732642B (zh) * | 2020-08-03 | 2021-07-01 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT1320715B1 (it) * | 2000-10-19 | 2003-12-10 | Cselt Centro Studi Lab Telecom | Modulo generatore di circuiti per la decodifica di codiciconvoluzionali, metodo per la generazione di tale tipo di circuito e |
JP5166074B2 (ja) | 2008-02-29 | 2013-03-21 | 株式会社東芝 | 半導体記憶装置、その制御方法、および誤り訂正システム |
TWI451435B (zh) | 2010-10-08 | 2014-09-01 | Phison Electronics Corp | 非揮發性記憶體儲存裝置、記憶體控制器與資料儲存方法 |
-
2013
- 2013-05-13 TW TW102116923A patent/TWI527040B/zh active
- 2013-07-11 US US13/939,191 patent/US9208021B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TW201443901A (zh) | 2014-11-16 |
US9208021B2 (en) | 2015-12-08 |
US20140337681A1 (en) | 2014-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI527040B (zh) | 資料寫入方法、記憶體儲存裝置與記憶體控制器 | |
TWI516927B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
TWI537966B (zh) | 錯誤處理方法、記憶體儲存裝置及記憶體控制電路單元 | |
US10103748B2 (en) | Decoding method, memory control circuit unit and memory storage device | |
US20150293811A1 (en) | Decoding method, memory storage device and memory controlling circuit unit | |
TWI523018B (zh) | 解碼方法、記憶體儲存裝置、記憶體控制電路單元 | |
TW202009942A (zh) | 資料存取方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN104733051A (zh) | 奇偶校验码的解码方法、存储器储存装置及控制电路单元 | |
TW201913382A (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
US8966344B2 (en) | Data protecting method, memory controller and memory storage device | |
TWI640997B (zh) | 資料保護方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI467590B (zh) | 資料處理方法、記憶體控制器及記憶體儲存裝置 | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
CN104182293A (zh) | 数据写入方法、存储器存储装置与存储器控制器 | |
TWI529530B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
US9607704B2 (en) | Data reading method, memory controlling circuit unit and memory storage device | |
TWI732642B (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TW201732834A (zh) | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 | |
CN104252600A (zh) | 数据保护方法、存储器控制器与存储器储存装置 | |
TWI467578B (zh) | 錯誤處理方法、記憶體儲存裝置與記憶體控制電路單元 | |
CN110008145B (zh) | 数据保护方法、存储器控制电路单元与存储器存储装置 | |
US9436547B2 (en) | Data storing method, memory control circuit unit and memory storage device | |
CN111724851B (zh) | 数据保护方法、存储器存储装置及存储器控制电路单元 | |
US10074433B1 (en) | Data encoding method, memory control circuit unit and memory storage device |