TWI537734B - 資料保護方法、記憶體控制器與記憶體儲存裝置 - Google Patents
資料保護方法、記憶體控制器與記憶體儲存裝置 Download PDFInfo
- Publication number
- TWI537734B TWI537734B TW102121610A TW102121610A TWI537734B TW I537734 B TWI537734 B TW I537734B TW 102121610 A TW102121610 A TW 102121610A TW 102121610 A TW102121610 A TW 102121610A TW I537734 B TWI537734 B TW I537734B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- error correction
- correction code
- entity
- units
- 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/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/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/1072—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 multilevel memories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本發明是有關於一種資料保護方法,且特別是有關於一種用於可複寫式非揮發性記憶體模組的資料保護方法、記憶體控制器與記憶體儲存裝置。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
在多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組中,每一個實體抹除單元會包括多個實體程式化單元,並且這些實體程式化單元會被分為下實體程式化單元與上實體程式化單元。當上實體程式化單元被程式化時若發生了系統的錯誤,則屬於同一個字元線的下實體程式化單元中的資料可能會發生錯誤。此外,當資料要被寫入時,必須先程式化下實體程式化單元才能程式化上實體程式化單元。主機系統可以透過寫入指令把資
料寫入至可複寫式非揮發性記憶體模組。主機系統也可能下達一個刷新(Flush)指令,用以清空一個邏輯範圍內的資料,使得這些資料不會儲存在一個揮發性的記憶體中。一般來說,這些被清空的資料會被寫入至可複寫式非揮發性記憶體模組中,並且主機系統會認為下達刷新指令之前的資料都已經完整且安全的被寫入了。然而,若主機系統下達了刷新指令之前資料先被寫入至一個下實體程式化單元,且在刷新指令之後屬於同一個字元線的上實體程式化單元被程式化且發生系統錯誤,則該下實體程式化單元的資料可能會發生錯誤。因此,如何保護這些資料為此領域技術人員所關心的議題。
本發明提供一種資料保護方法、記憶體控制器與記憶體儲存裝置,可以保護可複寫式非揮發性記體模組中的資料。
本發明一範例實施例提出一種資料保護方法,用於控制一可複寫式非揮發性記憶體模組,其包括多個實體抹除單元。此資料保護方法包括:接收來自於主機系統的一個第一刷新指令;在接收第一刷新指令之後,接收來自主機系統的第一寫入指令,其中第一寫入指令指示寫入第一資料;根據第一資料產生第一錯誤校正碼與相對應的第二錯誤校正碼,其中第二錯誤校正碼的保護能力不同於第一錯誤校正碼的保護能力;收指示寫入第二資料的第二寫入指令;在接收第一寫入指令之後,接收來自主機系統
的一個第二刷新指令,其中第二刷新指令指示將在一緩衝記憶體中的第一資料與第二資料寫入至可複寫式非揮發性記憶體模組中;將第一資料、第一錯誤校正碼與第二資料寫入至可複寫式非揮發性記憶體模組中;以及在接收到第二刷新指令之後,將第一資料相對應的第二錯誤校正碼寫入至可複寫式非揮發性記憶體模組中;不對第二資料產生相對應之第二錯誤校正碼,或產生第二資料相對應的第二錯誤校正碼但不把它寫入至該可複寫式非揮發性記憶體模組中。
在一範例實施例中,上述的每一個實體抹除單元包括多個實體程式化單元,第一錯誤校正碼是僅根據對應於單一個實體程式化單元的第一資料所產生,第二錯誤校正碼是根據對應於複數個實體程式化單元的第一資料所產生。
在一範例實施例中,上述產生第一資料相對應的第二錯誤校正碼的步驟包括:根據對應於一預設數目的實體程式化單元的第一資料來產生第二錯誤校正碼,其中預設數目大於1。
在一範例實施例中,上述的實體程式化單元被分組為多個上實體程式化單元與多個下實體程式化單元,並且產生第二錯誤校正碼的步驟包括:根據第一資料中對應於至少一個下實體程式化單元的部份來產生第二錯誤校正碼。
在一範例實施例中,上述產生第二錯誤校正碼的步驟包括:僅對緩衝記憶體中該第一資料對應於至少一個下實體程式化單元的部份來產生第二錯誤校正碼。
在一範例實施例中,上述該至少一個下實體程式化單元對應的上實體程式化單元沒有被程式化。
在一範例實施例中,上述產生第一資料相對應的第二錯誤校正碼的步驟包括:根據緩衝記憶體中第一資料對應於至少一個下實體程式化單元的部分與對應於一個第二實體程式化單元的部份來產生第二錯誤校正碼。其中該至少一個下實體程式化單元對應的上實體程式化單元沒有被程式化,並且第二實體程式化單元是相鄰於該至少一個下實體程式化單元。
在一範例實施例中,上述的每一個實體程式化單元包括一資料位元區與一冗餘位元區,並且第一錯誤校正碼是儲存在冗餘位元區。此資料保護方法更包括:在開機後,提取一個第一實體抹除單元,其中第一實體抹除單元中的實體程式化單元尚未被全部程式化;根據第一實體抹除單元中冗餘位元區所儲存的資料來檢查第一實體抹除單元中資料位元區所儲存的資料是否發生錯誤;若第一實體抹除單元中的一個第一實體程式化單元的資料位元區所儲存的資料發生一個第一錯誤並且第一實體程式化單元的冗餘位元區所儲存的資料無法校正此第一錯誤,則判斷第一實體程式化單元是否在第一資料相對應的第二錯誤校正碼的保護能力內;以及若第一實體程式化單元是在此第二錯誤校正碼的保護能力內,根據第二錯誤校正碼來校正第一錯誤。
以另外一個角度來說,本發明一範例實施例提出一種記憶體儲存裝置,包括連接器、上述的可複寫式非揮發性記憶體模
組與記憶體控制器。連接器是用以耦接至主機系統。記憶體控制器是耦接至連接器與可複寫式非揮發性記憶體模組,用以接收來自於主機系統的第一刷新指令,並且在接收第一刷新指令之後,接收來自主機系統的第一寫入指令,其中第一寫入指令指示寫入第一資料。記憶體控制器也用以根據第一資料產生第一錯誤校正碼與相對應的第二錯誤校正碼,其中第二錯誤校正碼的保護能力不同於第一錯誤校正碼的保護能力。記憶體控制器也用以接收來自主機系統並指示寫入第二資料的第二寫入指令。在接收第一寫入指令與第二寫入指令之後,記憶體控制器也用以接收來自主機系統的第二刷新指令,其中第二刷新指令指示將在一緩衝記憶體中的第一資料與第二資料寫入至可複寫式非揮發性記憶體模組中。記憶體控制器也用以將第一資料、第一錯誤校正碼與第二資料寫入至可複寫式非揮發性記憶體模組中。在接收到第二刷新指令之後,記憶體控制器用以將第一資料相對應的第二錯誤校正碼寫入至可複寫式非揮發性記憶體模組中。記憶體控制器更用以不對第二資料產生相對應之第二錯誤校正碼,或產生第二資料相對應的第二錯誤校正碼但不把它寫入至可複寫式非揮發性記憶體模組中。
在一範例實施例中,上述的記憶體控制器產生第一資料相對應的第二錯誤校正碼的操作包括:記憶體控制器根據對應於預設數目的實體程式化單元的第一資料來產生第二錯誤校正碼,其中預設數目大於1。
在一範例實施例中,上述的記憶體控制器產生第一資料相對應的第二錯誤校正碼的操作包括:記憶體控制器根據第一資料中對應於至少一個下實體程式化單元的部份來產生第二錯誤校正碼。
在一範例實施例中,上述記憶體控制器產生第一資料相對應的第二錯誤校正碼的操作包括:記憶體控制器僅對緩衝記憶體中第一資料對應於至少一個下實體程式化單元的部份來產生第二錯誤校正碼。
在一範例實施例中,上述記憶體控制器產生第一資料相對應的第二錯誤校正碼的操作包括:記憶體控制器根據緩衝記憶體中第一資料對應於至少一個下實體程式化單元的部分與對應於第二實體程式化單元的部份來產生第二錯誤校正碼。其中該至少一個下實體程式化單元對應的上實體程式化單元沒有被程式化,並且第二實體程式化單元是相鄰於該至少一個下實體程式化單元。
在一範例實施例中,上述的記憶體控制器更用以在開機後,提取一個第一實體抹除單元,其中第一實體抹除單元中的實體程式化單元尚未被全部程式化。記憶體控制器更用以根據第一實體抹除單元中冗餘位元區所儲存的資料來檢查第一實體抹除單元中資料位元區所儲存的資料是否發生錯誤。若第一實體抹除單元中的第一實體程式化單元的資料位元區所儲存的資料發生第一錯誤並且第一實體程式化單元的冗餘位元區所儲存的資料無法校
正第一錯誤,則記憶體控制器更用以判斷第一實體程式化單元是否在第一資料相對應的第二錯誤校正碼的保護能力內。若第一實體程式化單元是在第二錯誤校正碼的保護能力內,記憶體控制器更用以根據第二錯誤校正碼來校正第一錯誤。
以另外一個角度來說,本發明一範例實施例提出一種記憶體控制器,包括主機介面、記憶體介面與記憶體管理電路。主機介面是用以耦接至主機系統。記憶體介面是用以耦接至可複寫式非揮發性記憶體模組。記憶體管理電路是耦接至主機介面與記憶體面,用以接收來自於主機系統的第一刷新指令,並且在接收第一刷新指令之後,接收來自主機系統的第一寫入指令,其中第一寫入指令指示寫入第一資料。記憶體管理電路也用以根據第一資料產生第一錯誤校正碼與相對應的第二錯誤校正碼,其中第二錯誤校正碼的保護能力不同於第一錯誤校正碼的保護能力。記憶體管理電路也用以接收來自主機系統並指示寫入第二資料的第二寫入指令。在接收第一寫入指令與第二寫入指令之後,接收來自主機系統的第二刷新指令,其中第二刷新指令指示將在一緩衝記憶體中的第一資料與第二資料寫入至可複寫式非揮發性記憶體模組中。記憶體管理電路也用以將第一資料、第一錯誤校正碼與第二資料寫入至可複寫式非揮發性記憶體模組中。在接收到第二刷新指令之後,記憶體管理電路用以將第一資料相對應的的第二錯誤校正碼寫入至可複寫式非揮發性記憶體模組中。記憶體管理電路更用以不對第二資料產生相對應之第二錯誤校正碼,或產生第
二資料相對應的第二錯誤校正碼但不把它寫入至可複寫式非揮發性記憶體模組中。
在一範例實施例中,上述的記憶體管理電路產生第二錯誤校正碼的操作包括:記憶體管理電路根據對應於預設數目的實體程式化單元的第一資料來產生第二錯誤校正碼,其中預設數目大於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‧‧‧可複寫式非揮發性記憶體模組
304(0)~304(R)‧‧‧實體抹除單元
210A、211A、212A、213A、214A、215A、217A、210B、211B、212B、213B、214B、215B、216B、217B‧‧‧實體程式化單元
202‧‧‧記憶體管理電路
204‧‧‧主機介面
206‧‧‧記憶體介面
252‧‧‧緩衝記憶體
254‧‧‧電源管理電路
256‧‧‧錯誤檢查與校正電路
402‧‧‧儲存區
406‧‧‧系統區
410(0)~410(C)‧‧‧邏輯位址
420‧‧‧第一資料
S601‧‧‧接收來自於主機系統的一個第一刷新指令的步驟
S602‧‧‧接收來自主機系統並指示寫入第一資料的第一寫入指令的步驟
S603‧‧‧根據第一資料產生第一錯誤校正碼與相對應的第二錯誤校正碼的步驟
S604‧‧‧接收來自主機系統並指示寫入第二資料的第二寫入指令的步驟
S605‧‧‧接收來自主機系統的第二刷新指令的步驟
S606‧‧‧將第一資料、第一錯誤校正碼與第二資料寫入至該可複寫式非揮發性記憶體模組中的步驟
S607‧‧‧將第一資料相對應的第二錯誤校正碼寫入至可複寫式非揮發性記憶體模組中的步驟
S608‧‧‧不對第二資料產生相對應之第二錯誤校正碼,或產生第二資料相對應的第二錯誤校正碼但不寫入此第二錯誤校正碼至可複寫式非揮發性記憶體模組中的步驟
圖1A是根據一範例實施例所繪示的主機系統與記憶體儲存裝置。
圖1B是根據一範例實施例所繪示的電腦、輸入/輸出裝置與
記憶體儲存裝置的示意圖。
圖1C是根據一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。
圖2A是繪示圖1A所示的記憶體儲存裝置的概要方塊圖。
圖2B是根據一範例實施例繪示實體抹除單元的示意圖。
圖3是根據一範例實施例所繪示之記憶體控制器的概要方塊圖。
圖4是根據一範例實施例所繪示之管理可複寫式非揮發性記憶體模組的範例示意圖。
圖5是根據一範例實施例繪示產生第一與第二錯誤校正碼的示意圖。
圖6是根據一範例實施例繪示資料保護方法的流程圖。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組與控制器(亦稱,控制電路)。通常記憶體儲存裝置是與主機系統一起使用,以使主機系統可將資料寫入至記憶體儲存裝置或從記憶體儲存裝置中讀取資料。
圖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)。值得一提的是,嵌入式多媒體卡是直接耦接於主機系統的基板上。
圖2A是繪示圖1A所示的記憶體儲存裝置的概要方塊圖。
請參照圖2A,記憶體儲存裝置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具有實體抹除單元304(0)~304(R)。例如,實體抹除單元304(0)~304(R)可屬於同一個記憶體晶粒(die)或者屬於不同的記憶體晶粒。每一實體抹除單元分別具有多個實體程式化單元。屬於同一個實體抹除單元之實體程式化單元可被獨立地寫入且被同時地抹除。例如,每一實體抹除單元是由128個實體程式化單元所組成。然而,必須瞭解的是,本發明不限於此,每一實體抹除單元是可由64個實體程式化單元、256個實體程式化單元或其他任意個實體程式化單元所組成。
更詳細來說,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。實體程式化單元為程式化的最小單元。即,實體程式化單元為寫入資料的最小單元。每一實體程式化單元通常包括資料位元區與冗餘位元區。資料位元區包含多個實體存取位址用以儲存使用者的資料,而冗餘位元區用以儲存系統的資料(例如,錯誤檢查與校正碼)。在本範例實施例中,每一個實體程式化單元的資料位元區中會包含4個實體存取位址,且一個實體存取位址的大小為512位元組(byte,B)。然而,在其他範例實施例中,資料位元區中也可包含8個、16個或數目更多或更少的實體存取位址,本發明並不限制實體存取位址的大小以及個數。例如,實體抹除單元為實體區
塊,並且實體程式化單元為實體頁面或實體扇。
在本範例實施例中,可複寫式非揮發性記憶體模組106為多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組。也就是說,一個記憶胞中可儲存2個位元。更具體來說,同一個字元線(word line)上的多個記憶胞會組成一個上實體程式化單元與一個下實體程式化單元,並且每一個記憶胞中的兩個位元分別屬於不同的實體程式化單元。換句話說,每一個實體抹除單元包括的多個實體程式化單元會被分為多個下實體程式化單元與多個上個慢實體程式化單元。在此稱一個下實體程式化單元與同一個字元線上的上實體程式化單元是彼此對應,以下不再贅述。一般來說,下實體程式化單元的寫入速度會大於上實體程式化單元的寫入速度;並且,一個下實體程式化單元必須先被程式化以後所對應的上實體程式化單元才能被程式化。然而,可複寫式非揮發性記憶體模組106也可以是複數階記憶胞(Trinary Level Cell,TLC)NAND型快閃記憶體模組、其他快閃記憶體模組或其他具有相同特性的記憶體模組,本發明不限於此。
圖2B是根據一範例實施例繪示實體抹除單元的示意圖。
請參照圖2B,實體抹除單元304(0)至少包括了下實體程式化單元210A~215A與上實體程式化單元210B~213B。下實體程式化單元210A是對應於上實體程式化單元210B,下實體程式化單元211A是對應於上實體程式化單元211B,以此類推。在此範例實施例中,記憶體控制器104是依照一個程式化順序交錯地將
資料寫入至一或多個下實體程式化單元與一或多個上實體程式化單元。例如,圖2B中每一個實體程式化單元中的數字便是表示此程式化順序。具體來說,下實體程式化單元210A、211A、212A與213A會先被程式化,接著上實體程式化單元210B、211B、下實體程式化單元214A、215A與上實體程式化單元212B、213B會依序被程式化,以此類推。然而,記憶體控制器104也可以依照其他的程式化順序來寫入資料。例如,資料可以是依序地被寫入至下實體程式化單元210A、上實體程式化單元210B、下實體程式化單元211A、上實體程式化單元211B與下實體程式化單元212A,以此類推,本發明並不在此限。
圖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的資料。然而,在另一實施例當中,緩衝記憶體252也可以配置在記憶體控制器104之外並與記憶體控制器104耦接。
電源管理電路254是耦接至記憶體管理電路202並且用以控制記憶體儲存裝置100的電源。
錯誤檢查與校正電路256是耦接至記憶體管理電路202並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路202從主機系統1000中接收到寫入指令時,錯誤檢查與校正電路256會為對應此寫入指令的資料產生對應的錯誤檢查與校正碼(Error Checking and Correcting Code,ECC Code),並且記憶體管理電路202會將對應此寫入指令的資料與對應的錯誤檢查與校正碼寫入至可複寫式非揮發性記憶體模組106中。之後,當記憶體管理電路202從可複寫式非揮發性記憶體模組106中讀取資料時會同時讀取此資料對應的錯誤檢查與校正碼,並且錯誤檢查與校正電路256會根據此錯誤檢查與校正碼對所讀取的資料執行錯誤檢查與校正程序。
圖4是根據一範例實施例所繪示之管理可複寫式非揮發性記憶體模組的範例示意圖。
必須瞭解的是,在此描述可複寫式非揮發性記憶體模組106之實體抹除單元的運作時,以“提取”、“劃分”、“關聯”等詞來操作實體抹除單元是邏輯上的概念。也就是說,可複寫式非揮發性記憶體模組106之實體抹除單元的實際位置並未更動,而是邏
輯上對可複寫式非揮發性記憶體模組106的實體抹除單元進行操作。
請參照圖4,記憶體控制器104可將實體抹除單元304(0)~304(R)邏輯地分組為多個區域,例如為儲存區402與系統區406。儲存區402的實體抹除單元是用以儲存來自於主機系統1000的資料。儲存區402也包括了多個閒置的實體抹除單元,而閒置的實體抹除單元中並沒有儲存有效資料。由於一個實體抹除單元在被抹除之前無法重複地被程式化,因此當記憶體控制器104要將資料寫入至儲存區時或是整併有效資料時,便會使用這些閒置的實體抹除單元。或者,當有實體抹除單元損壞時,閒置的實體抹除單元也可用來替換損壞的實體抹除單元。當儲存區402中沒有閒置的實體抹除單元且無法透過整併有效資料來產生閒置的實體抹除單元時,記憶體控制器104會將整個記憶體儲存裝置100宣告為寫入保護(write protect)狀態,而無法再寫入資料。然而,在另一範例實施例中,記憶體控制器104也可以再劃分出一個取代區,其中的實體抹除單元是專門用來替換損壞的實體抹除單元,本發明並不在此限。另一方面,邏輯上屬於系統區406的實體抹除單元是用以記錄系統資料,其中此系統資料包括關於記憶體晶片的製造商與型號、記憶體晶片的實體抹除單元數、每一實體抹除單元的實體程式化單元數等。特別是,儲存區402與系統區406的實體抹除單元的數量會根據不同的記憶體規格而有所不同。
在本範例實施例中,記憶體控制器104會配置邏輯位址410(0)~410(C)以利於在儲存區402的實體抹除單元中進行資料存取。例如,當記憶體儲存裝置100被作業系統1110透過檔案系統(例如,FAT 32)格式化時,邏輯位址410(0)~410(C)分別地映射至儲存區402中部份的實體程式化單元(即,邏輯位址410(0)~410(C)是映射至儲存區402中部份的實體抹除單元)。在此,記憶體管理電路202會建立邏輯位址-實體程式化單元映射表(logical address-physical programming unit mapping table),以記錄邏輯位址與實體程式化單元之間的映射關係。在此範例實施例中,每一個邏輯位址410(0)~410(C)的大小是相同於一個實體程式化單元的大小,即邏輯位址亦可被稱為邏輯頁面(logical page)。然而,在其他範例實施例中,邏輯位址410(0)~410(C)也可以是一個實體抹除單元的大小或是其他大小,本發明並不在此限。
主機系統1000會下達一個寫入指令給記憶體管理電路202,用以指示將第一資料420寫入至至少一個邏輯位址。例如,第一資料420是要寫入至邏輯位址410(0)與410(1)。在接收到此寫入指令以後,記憶體管理電路202會從儲存區402中提取一個實體抹除單元,此實體抹除單元中至少部份的實體程式化單元尚未被程式化。記憶體管理電路202會將第一資料420寫入至兩個尚未被程式化的實體程式化單元,並且重新映射邏輯位址410(0)與410(1)至這兩個實體程式化單元。
主機系統1000也可能下達一個刷新指令給記憶體管理電
路202,此刷新指令是用來指示將儲存在緩衝記憶體252的第一資料420寫入至可複寫式非揮發性記憶體模組106當中。若在主機系統1000下達寫入指令與刷新指令以後記憶體儲存裝置100斷電了,則主機系統1000會認為第一資料420已正確地儲存在可複寫式非揮發性記憶體模組106當中。相反地,若主機系統1000在下達寫入指令以後沒有下達刷新指令,並且記憶體儲存裝置100在接收到寫入指令以後斷電了,則第一資料420有可能會遺失(例如,第一資料420是暫存在緩衝記憶體252中而尚未被寫入至可複寫式非揮發性記憶體模組106)。在沒有下達刷新指令的情況下,主機系統1000本身便會處理第一資料420遺失的情形。
在本範例實施例中,記憶體管理電路202會先接收來自於主機系統1000的一個第一刷新指令。因此,在此第一刷新指令之前從主機系統1000所接收的資料會被寫入至可複寫式非揮發性記憶體模組106當中。在接收到第一刷新指令之後,記憶體管理電路202會接收來自主機系統1000並指示寫入第一資料420的第一寫入指令。記憶體管理電路202會根據第一資料420產生一第一錯誤校正碼,並且第一資料420會先被暫存在緩衝記憶體252中。記憶體管理電路202會依照自己的排程來將緩衝記憶體252中的第一資料420寫入至可複寫式非揮發性記憶體模組106中,並不一定會在接收到第一資料420時就立即把第一資料420寫入至可複寫式非揮發性記憶體模組106中。同樣的,記憶體管理電路202會依照自己的排程來將第一錯誤校正碼寫入至可複寫式非
揮發性記憶體模組106中。記憶體管理電路202也會根據第一資料420產生相對應的一第二錯誤校正碼。此第二錯誤校正碼的保護能力是不同於第一錯誤校正碼的保護能力,例如第一錯誤校正碼只可保護第一資料420,而第二錯誤校正碼除了保護第一資料420外,亦可保護其他數據資料。或者,只有第一資料420是被第一錯誤校正碼所保護,但第一資料420及其他數據資料各有一部份被第二錯誤校正碼保護。又例如,第二錯誤校正碼可糾錯80個錯誤位元,而第一錯誤校正碼只可糾錯40個錯誤位元。其中,在本範例實施例中,”錯誤校正碼的保護能力”是指錯誤校正碼可保護的資料範圍、資料長度,或可校正的錯誤位元數量。記憶體管理電路202也會接收來自主機系統並指示寫入第二資料的一個第二寫入指令。相同地,記憶體管理電路202會依照自己的排程來將第二資料寫入至可複寫式非揮發性記憶體模組106中。
在接收第一寫入指令與第二寫入指令之後,記憶體管理電路202會接收來自主機系統1000的一個第二刷新指令。此第二刷新指令是指示將在緩衝記憶體252中的第一資料420與第二資料寫入至可複寫式非揮發性記憶體模組106中。在接收到第二刷新指令之後,記憶體管理電路202會將第一資料420相對應的第二錯誤校正碼寫入至可複寫式非揮發性記憶體模組106中。如此一來,在接收到第二刷新指令以後若記憶體儲存裝置100斷電了且已儲存在可複寫式非揮發性記憶體模組106的第一資料420發生了錯誤,則第一錯誤校正碼或第二錯誤校正碼便可以用來校正
發生的錯誤。特別的是,記憶體管理電路202會根據第二資料產生相對應的第一錯誤校正碼,但可能不會對第二資料產生相對應的第二錯誤校正碼。或者,記憶體管理電路202會對第二資料產生相對應的第二錯誤校正碼,但不會把此第二錯誤校正碼寫入至可複寫式非揮發性記憶體模組106當中。換言之,在本範例實施例中,第二錯誤校正碼是用來保護特定寫入指令所要寫入的資料,記憶體管理電路202並不會對所有要寫入可複寫式非揮發性記憶體模組106的資料都產生相對應的第二錯誤校正碼。值得注意的是,記憶體管理電路202可以在接收到第二刷新指令之前或之後產生第一資料相對應的第二錯誤校正碼,本發明並不在此限。
上述第一錯誤校正碼與第二錯誤校正碼的類型可以是奇偶校正碼(parity checking code)、通道編碼(channel coding)或是其他類型。例如,第一錯誤校正碼與第二錯誤校正碼可以是漢明碼(hamming code)、低密度奇偶檢查碼(low density parity check code,LDPC code)、渦旋碼(turbo code)或里德-所羅門碼(Reed-solomon code,RS code),本發明並不在此限。
在一範例實施例中,第一錯誤校正碼是儲存在實體程式化單元的冗餘位元區中(即,第一錯誤校正碼為上述的錯誤檢查與校正碼)。而冗餘位元區中的錯誤校正碼是根據同一個實體程式化單元的資料位元區所儲存的資料所產生。換句話說,在本範例實施例中,第一錯誤校正碼可是僅對應於單一個實體程式化的第一資料420所產生。例如,記憶體管理電路202可以在把第一資料
420寫入至一個資料位元區時產生對應的第一錯誤校正碼,並且把第一錯誤校正碼寫入至冗餘位元區中。或者,記憶體管理電路202可以在第一資料420儲存在緩衝記憶體252時先產生第一錯誤校正碼,之後再將第一資料420及與第一資料420相對應的第一錯誤校正碼分別寫入至一個實體程式化單元的資料位元區與冗餘位元區。在此,”對應於一個實體程式化單元的第一資料420”所指的是第一資料420中欲被寫入或是已經儲存在該實體程式化單元的部份,以下便不再贅述。
相反地,第二錯誤校正碼可是根據對應於複數個實體程式化單元的第一資料420所產生。具體來說,在本範例實施例中,記憶體管理電路202是根據m:n的比例來產生第二錯誤校正碼。若欲被保護的第一資料420與第二錯誤校正碼之間的長度比例為m:n,則每m個實體程式化單元中的第一資料420會對應至n個實體程式化單元的第二錯誤校正碼,其中m與n為正整數。一般來說,正整數m會大於正整數n,但本發明並不在此限。並且,本發明也不限制正整數m與正整數n的值。記憶體管理電路202可以在接收到第一資料420時或是第一資料420儲存在緩衝記憶體252時產生相對應的第二錯誤校正碼。或者,記憶體管理電路202可以在第一資料420已被寫入至多個實體程式化單元以後才產生第二錯誤校正碼,本發明並不在此限。以下再舉一範例實施例說明產生第二錯誤校正碼的不同態樣。
在此,”根據”的代表的意思是”至少利用”。也就是說,”
根據第一資料產生第二錯誤校正碼”的描述包括了”利用第一資料與其他任意資料來產生第二錯誤校正碼”的各種範例實施例,亦即第一資料420可是用以產生第二錯誤校正碼之部份或全部的參考數據。以下不再贅述”根據”的定義。
圖5是根據一範例實施例繪示產生第一與第二錯誤校正碼的示意圖。
請參照圖5,在此以多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組為例。在圖5的範例實施例中,記憶體管理電路202在接收到一刷新指令(亦稱第一刷新指令)後,接收到一寫入指令,用以寫入第一資料420,其中此第一資料420的長度例如是7個實體程式化單元。記憶體管理電路202會提取一個實體抹除單元並依照上述的程式化順序來將第一資料420寫入7個實體程式化單元。舉例來說,記憶體管理電路202提取了實體抹除單元304(0),並且記憶體管理電路202是依序將第一資料420寫入至下實體程式化單元210A、211A、212A與213A,上實體程式化單元210B與211B、以及下實體程式化單元214A。接下來,記憶體管理電路202從主機系統接收到另一個刷新指令(亦稱第二刷新指令)。值得注意的是,此時上實體程式化單元212B、213B與214B並未被程式化。記憶體管理電路202至少會根據下實體程式化單元212A、213A、214A中儲存的第一資料420來產生第二錯誤校正碼,並且將第二錯誤校正碼寫入至一個實體抹除單元當中。或者,記憶體管理電路202也可以根據下實體單元
210A~214A中儲存的第一資料420來產生第二錯誤校正碼,本發明並不在此限。
在一範例實施例中,在記憶體管理電路202接收到第一資料420以後,會先將第一資料420儲存在緩衝記憶體252中而不寫入至實體抹除單元304(0)。然而,本發明並不限制何時產生第二錯誤校正碼。例如,記憶體管理電路202僅會根據緩衝記憶體252中對應於下實體程式化單元212A、213A、214A的第一資料420來產生相對應的第二錯誤校正碼。接下來,在接收到第二刷新指令以後,記憶體管理電路202才會將第二錯誤校正碼寫入至可複寫式非揮發性記憶體模組106當中。
在另一範例實施例當中,記憶體管理電路202也可以根據對應於一預設數目的實體程式化單元的第一資料420來產生第二錯誤校正碼,而此預設數目會大於1。具體來說,第一資料420是依照圖5的程式化順序從實體程式化單元210A被寫入至實體程式化單元214A。當接收到刷新指令以後,記憶體管理電路202會依照程式化順序從目前的實體程式化單元214A開始往前找一預設數目的實體程式化單元,並根據對應於這些實體程式化單元的第一資料420來產生錯誤校正碼。例如,此預設數目為3,則記憶體管理電路202會根據對應於實體程式化單元210B、211B與214A的第一資料420來產生第二錯誤校正碼,但本發明並不限制此預設數目的大小。或者,在記憶體管理電路202接收到第一資料420以後,會根據每3個實體程式化單元的第一資料420來產生一份
第二錯誤校正碼,並且在接收到第二刷新指令以後,再決定要將哪些第二錯誤校正碼寫入至可複寫式非揮發性記憶體模組106中。
在上述的範例實施例中,用來產生第二錯誤校正碼的資料是對應至同一個寫入指令。然而,在另一範例實施例中,用來產生第二錯誤校正碼的資料也可以是對應至多個寫入指令。舉例來說,假設第一資料420的長度為3個實體程式化單元,而第一資料420是被寫入至實體程式化單元210A、211A與212A。而下一個寫入指令(亦稱第二寫入指令)指示將另一份資料寫入至實體程式化單元213A、210B、211B與214A。在收到這兩個寫入指令以後,記憶體管理電路202才收到第二刷新指令。記憶體管理電路202至少會根據對應於實體程式化單元212A的第一資料以及對應於實體程式化單元213A與214A中的資料來產生第二錯誤校正碼。
在另一範例實施例中,對於一個寫入指令所指示寫入的資料,記憶體管理電路202可以不產生相對應的第二錯誤校正碼,或者是產生相對應的第二錯誤校正碼但不將之寫入至可複寫式非揮發性記憶體模組106當中。舉例來說,在圖5中一個寫入指令是指示寫入一個實體程式化單元的資料。即,實體程式化單元210A、211A、212A、213A、210B、211B、214A所對應的資料是由7個不同的寫入指令所指示的。記憶體管理電路202會根據實體程式化單元212A、213A、214A所對應的資料來產生第二錯誤校正碼,卻不會根據實體程式化單元210A、210B、211A、212B
所對應的資料來產生第二錯誤校正碼。或者,記憶體管理電路202會根據實體程式化單元210A、210B、211A、212B所對應的資料來產生第二錯誤校正碼,但卻不會把所產生的第二錯誤校正碼寫入至可複寫式非揮發性記憶體模組106當中。在一範例實施例中,在每接收到一個寫入指令與所要寫入的資料以後,記憶體管理電路202都會產生相對應的第二錯誤校正碼;但是在接收到第二刷新指令以後,僅有部分的第二錯誤校正碼會被寫入至可複寫式非揮發性記憶體模組106當中。
在另一範例實施例中,用來產生第二錯誤校正碼的資料也可以是分散在不同的實體抹除單元當中。舉例來說,若記憶體管理電路202是以實體抹除單元為單位來管理可複寫式非揮發性記憶體模組106,則要寫入第一資料420時會產生一個母實體抹除單元與一或多個子實體抹除單元。此時,母實體抹除單元與子實體抹除單元中都可能有需要被保護的資料,記憶體管理電路202會根據母實體抹除單元與子實體抹除單元中需要被保護的資料來產生第二錯誤校正碼。然而,本領域具有通常知識者應可理解母實體抹除單元與子實體抹除單元的操作,在此便不再贅述。
在此範例實施例中,實體程式化單元211A與211B是相鄰於實體程式化單元212A與212B。當實體程式化單元212A與212B中的資料發生錯誤時,實體程式化單元211A與211B中的資料也可能發生錯誤。因此,在一範例實施例中,記憶體管理電路202也會根據對應於實體程式化單元211A與211B的資料來產生
第二錯誤校正碼。
記憶體管理電路202會將所產生的第二錯誤校正碼寫入至實體抹除單元304(0)當中。或者,記憶體管理電路202也可以另外提取一個實體抹除單元,專門用來儲存所產生的第二錯誤校正碼,本發明並不在此限。記憶體管理電路202可以繼續將資料寫入至實體程式化單元215A、212B、213B、216A、217A、214B與215B等。若在寫入實體程式化單元213B時發生斷電,則實體程式化單元213A中儲存的資料便可能會有錯誤,此時記憶體管理電路202會根據第二錯誤校正碼來校正此錯誤。
具體來說,當記憶體儲存裝置100重開機以後,記憶體管理電路202會先判斷出實體抹除單元304(0)(亦稱第一實體抹除單元)中的實體程式化單元尚未被全部程式化。接著,記憶體管理電路202會讀取實體抹除單元304(0)中每一個實體程式化單元中冗餘位元區所儲存的第一錯誤校正碼,並根據這些第一錯誤校正碼來判斷對應的資料位元區中的資料是否發生錯誤。例如,記憶體管理電路202會根據實體程式化單元213A(亦稱第一實體程式化單元)中冗餘位元區所儲存的第一錯誤校正碼來判斷實體程式化單元213A中資料位元區所儲存的資料是否發生錯誤。若其中的資料發生錯誤(亦稱第一錯誤),則記憶體管理電路202會先嚐試用此第一錯誤校正碼來校正此錯誤。若第一錯誤校正碼無法校正此錯誤(即,實體程式化單元213A中錯誤位元的數目大於第一錯誤校正碼所能校正的位元個數),記憶體管理電路202會判斷實體程
式化單元213A是否在對應的第二錯誤校正碼的保護能力內。在此範例實施例中,對應的第二錯誤校正碼所保護的範圍至少會包括實體程式化單元212A、213A與214A;並且,實體程式化單元213A中錯誤位元的數目小於等於第二錯誤校正碼所能校正的位元個數。因此,記憶體管理電路202便可以根據此第二錯誤校正碼來校正實體程式化單元213A中資料位元區所儲存的資料。
在另一範例實施例中,可複寫式非揮發性記憶體模組106是複數階記憶胞(Trinary Level Cell,TLC)NAND型快閃記憶體模組。因此,同一個字元線上的3個實體程式化單元可被分類為下實體程式化單元、中實體程式化單元與上實體程式化單元。類似的是,若有一個下實體程式化單元儲存了第一資料420,並且在接收到第二刷新指令以後同一個字元線上的中實體程式化單元、上實體程式化單元、或兩者尚未被程式化,則記憶體管理電路202至少會根據該下實體程式化單元所儲存的第一資料420(或者,下實體程式化單元與中實體程式化單元中所儲存的第一資料)來產生第二錯誤校正碼。
圖6是根據一範例實施例繪示資料保護方法的流程圖。
請參照圖6,在步驟S601中,接收來自於主機系統的一個第一刷新指令。在步驟S602中,接收來自主機系統並指示寫入第一資料的第一寫入指令。在步驟S603中,根據第一資料產生第一錯誤校正碼與相對應的第二錯誤校正碼,其中第二錯誤校正碼的保護能力不同於第一錯誤校正碼的保護能力。在步驟S604中,
接收來自主機系統並指示寫入第二資料的第二寫入指令。在步驟S605中,接收來自主機系統的第二刷新指令,其中第二刷新指令指示將在緩衝記憶體中的第一資料與第二資料寫入至可複寫式非揮發性記憶體模組中。在步驟S606中,將第一資料、第一錯誤校正碼與第二資料寫入至該可複寫式非揮發性記憶體模組中。在步驟S607中,在接收到第二刷新指令之後,將第一資料相對應的第二錯誤校正碼寫入至可複寫式非揮發性記憶體模組中。在步驟S608中,不對第二資料產生相對應之第二錯誤校正碼,或產生第二資料相對應的第二錯誤校正碼但不寫入此第二錯誤校正碼至可複寫式非揮發性記憶體模組中。然而,圖6中各步驟已詳細說明如上,在此便不再贅述。值得注意的是,本發明並不限制圖6中各步驟的執行順序。例如,步驟S604可以在步驟S603之前,或者,步驟S606可以在步驟S605之前,本發明並不在此限。此外,圖6中各步驟可以實作為多個程式碼或是電路;並且,圖6的方法可以搭配以上實施例使用也可以單獨使用,本發明並不在此限。
綜上所述,在本發明範例實施例所提出的資料保護方法、記憶體控制器與記憶體儲存裝置,可以保護接收到第二刷新指令前所接收到的資料。並且,一範例實施例中只有對應於下實體程式化單元的資料會被用來產生第二錯誤校正碼,藉此減少保護資料時所需要的記憶體空間。由於寫入資料時只需要備份較少的資料(即,只備份第二錯誤校正碼),因此可以增加寫入速度。此外,減少記憶體空間的使用也能減少執行垃圾收集(garbage
collection)的次數,進一步減少寫入放大倍數(write amplification)。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S601‧‧‧接收來自於主機系統的一個第一刷新指令的步驟
S602‧‧‧接收來自主機系統並指示寫入第一資料的第一寫入指令的步驟
S603‧‧‧根據第一資料產生第一錯誤校正碼與相對應的第二錯誤校正碼的步驟
S604‧‧‧接收來自主機系統並指示寫入第二資料的第二寫入指令的步驟
S605‧‧‧接收來自主機系統的第二刷新指令的步驟
S606‧‧‧將第一資料、第一錯誤校正碼與第二資料寫入至該可複寫式非揮發性記憶體模組中的步驟
S607‧‧‧將第一資料相對應的第二錯誤校正碼寫入至可複寫式非揮發性記憶體模組中的步驟
S608‧‧‧不對第二資料產生相對應之第二錯誤校正碼,或產生第二資料相對應的第二錯誤校正碼但不寫入此第二錯誤校正碼至可複寫式非揮發性記憶體模組中的步驟
Claims (24)
- 一種資料保護方法,用於控制一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括多個實體抹除單元,該資料保護方法包括:接收來自於一主機系統的一第一刷新指令;在接收該第一刷新指令之後,接收來自該主機系統的一第一寫入指令,其中該第一寫入指令指示寫入一第一資料;根據該第一資料產生一第一錯誤校正碼與相對應的一第二錯誤校正碼,其中該第二錯誤校正碼的一保護能力不同於該第一錯誤校正碼的一保護能力;接收一第二寫入指令,其中該第二寫入指令指示寫入一第二資料;在接收該第一寫入指令與該第二寫入指令之後,接收來自該主機系統的一第二刷新指令,其中該第二刷新指令指示將在一緩衝記憶體中的該第一資料與該第二資料寫入至該可複寫式非揮發性記憶體模組中;將該第一資料、該第一錯誤校正碼與該第二資料寫入至該可複寫式非揮發性記憶體模組中;在接收到該第二刷新指令之後,將該第一資料相對應的該第二錯誤校正碼寫入至該可複寫式非揮發性記憶體模組中;以及不對該第二資料產生相對應之一第二錯誤校正碼,或產生該第二資料相對應的該第二錯誤校正碼但不寫入該第二資料相對應 的該第二錯誤校正碼至該可複寫式非揮發性記憶體模組中。
- 如申請專利範圍第1項所述的資料保護方法,其中每一該些實體抹除單元包括多個實體程式化單元,該第一錯誤校正碼是僅根據對應於單一個該實體程式化單元的該第一資料所產生,並且該第一資料相對應的該第二錯誤校正碼是根據對應於複數個該些實體程式化單元的該第一資料所產生。
- 如申請專利範圍第2項所述的資料保護方法,其中產生該第一資料相對應的該第二錯誤校正碼的步驟包括:根據對應於一預設數目的該些實體程式化單元的該第一資料來產生該第二錯誤校正碼,其中該預設數目大於1。
- 如申請專利範圍第1項所述的資料保護方法,其中每一該些實體抹除單元包括多個實體程式化單元,該些實體程式化單元被分組為多個上實體程式化單元與多個下實體程式化單元,並且產生該第一資料相對應的該第二錯誤校正碼的步驟包括:根據該第一資料中對應於至少一個該些下實體程式化單元的部份來產生該第二錯誤校正碼。
- 如申請專利範圍第1項所述的資料保護方法,其中每一該些實體抹除單元包括多個實體程式化單元,該些實體程式化單元被分組為多個上實體程式化單元與多個下實體程式化單元,並且產生該第一資料相對應的該第二錯誤校正碼的步驟包括:僅對該緩衝記憶體中該第一資料對應於至少一個該些下實體程式化單元的部份來產生該第二錯誤校正碼。
- 如申請專利範圍第5項所述的資料保護方法,其中該至少一個該些下實體程式化單元所對應的上實體程式化單元沒有被程式化。
- 如申請專利範圍第1項所述的資料保護方法,其中每一該些實體抹除單元包括多個實體程式化單元,該些實體程式化單元被分組為多個上實體程式化單元與多個下實體程式化單元,並且產生該第一資料相對應的該第二錯誤校正碼的步驟包括:根據該緩衝記憶體中該第一資料對應於至少一個該些下實體程式化單元的部份與對應於一第二實體程式化單元的部份來產生該第二錯誤校正碼,其中該至少一個該些下實體程式化單元所對應的上實體程式化單元沒有被程式化,並且該第二實體程式化單元是相鄰於該至少一個該些下實體程式化單元。
- 如申請專利範圍第1項所述的資料保護方法,其中每一該些實體抹除單元包括多個實體程式化單元,每一該些實體程式化單元包括一資料位元區與一冗餘位元區,並且該第一錯誤校正碼是儲存在該些冗餘位元區的其中之一,該資料保護方法更包括:在開機後,從該些實體抹除單元中提取一第一實體抹除單元,其中該第一實體抹除單元中的該些實體程式化單元尚未被全部程式化;根據該第一實體抹除單元中該些冗餘位元區所儲存的資料來檢查該第一實體抹除單元中該些資料位元區所儲存的資料是否發生錯誤; 若該第一實體抹除單元的該些實體程式化單元中的一第一實體程式化單元的該資料位元區所儲存的資料發生一第一錯誤並且該第一實體程式化單元的該冗餘位元區所儲存的資料無法校正該第一錯誤,判斷該第一實體程式化單元是否在該第一資料相對應的該第二錯誤校正碼的該保護能力內;以及若該第一實體程式化單元是在該第一資料相對應的該第二錯誤校正碼的該保護能力內,根據該第一資料相對應的該第二錯誤校正碼來校正該第一錯誤。
- 一種記憶體儲存裝置,包括:一連接器,用以耦接至一主機系統;一可複寫式非揮發性記憶體模組,包括多個實體抹除單元,;以及一記憶體控制器,耦接至該連接器與該可複寫式非揮發性記憶體模組,用以接收來自於該主機系統的一第一刷新指令,並且在接收該第一刷新指令之後,接收來自該主機系統的一第一寫入指令,其中該第一寫入指令指示寫入一第一資料,其中,該記憶體控制器用以根據該第一資料產生一第一錯誤校正碼與相對應的一第二錯誤校正碼,其中該第二錯誤校正碼的一保護能力不同於該第一錯誤校正碼的一保護能力,其中,該記憶體控制器用以接收一第二寫入指令,其中該第二寫入指令指示寫入一第二資料,其中,該記憶體控制器用以在接收該第一寫入指令與該第二 寫入指令之後,接收來自該主機系統的一第二刷新指令,其中該第二刷新指令指示將在一緩衝記憶體中的該第一資料與該第二資料寫入至該可複寫式非揮發性記憶體模組中,其中,該記憶體控制器用以將該第一資料、該第一錯誤校正碼、與該第二資料寫入至該可複寫式非揮發性記憶體模組中,其中,在接收到該第二刷新指令之後,該記憶體控制器用以將該第一資料相對應的該第二錯誤校正碼寫入至該可複寫式非揮發性記憶體模組中,其中,該記憶體控制器不對該第二資料產生相對應之一第二錯誤校正碼,或產生該第二資料相對應的該第二錯誤校正碼但不寫入該第二資料相對應的該第二錯誤校正碼至該可複寫式非揮發性記憶體模組中。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中每一該些實體抹除單元包括多個實體程式化單元,該第一錯誤校正碼是僅根據對應於單一個該實體程式化單元的該第一資料所產生,該第一資料相對應的第二錯誤校正碼是根據對應於複數個該些實體程式化單元的該第一資料所產生。
- 如申請專利範圍第10項所述的記憶體儲存裝置,其中該記憶體控制器產生該第一資料相對應的該第二錯誤校正碼的操作包括:該記憶體控制器根據對應於一預設數目的該些實體程式化單元的該第一資料來產生該第二錯誤校正碼,其中該預設數目大於 1。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中每一該些實體抹除單元包括多個實體程式化單元,該些實體程式化單元被分組為多個上實體程式化單元與多個下實體程式化單元,並且該記憶體控制器產生該第一資料相對應的該第二錯誤校正碼的操作包括:該記憶體控制器根據該第一資料中對應於至少一個該些下實體程式化單元的部份來產生該第二錯誤校正碼。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中每一該些實體抹除單元包括多個實體程式化單元,該些實體程式化單元被分組為多個上實體程式化單元與多個下實體程式化單元,並且該記憶體控制器產生該第一資料相對應的該第二錯誤校正碼的操作包括:該記憶體控制器僅對該緩衝記憶體中該第一資料對應於至少一個該些下實體程式化單元的部份來產生該第二錯誤校正碼。
- 如申請專利範圍第13項所述的記憶體儲存裝置,其中該至少一個該些下實體程式化單元對應的上實體程式化單元沒有被程式化。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中每一該些實體抹除單元包括多個實體程式化單元,該些實體程式化單元被分組為多個上實體程式化單元與多個下實體程式化單元,並且該記憶體控制器產生該第一資料相對應的該第二錯誤校正碼 的操作包括:該記憶體控制器根據該緩衝記憶體中該第一資料對應於至少一個該些下實體程式化單元的部分與對應於一第二實體程式化單元的部份來產生該第二錯誤校正碼,其中該至少一個該些下實體程式化單元對應的上實體程式化單元沒有被程式化,並且該第二實體程式化單元是相鄰於該至少一個該些下實體程式化單元。
- 如申請專利範圍第9項所述的記憶體儲存裝置,其中每一該些實體抹除單元包括多個實體程式化單元,每一該些實體程式化單元包括一資料位元區與一冗餘位元區,並且該第一錯誤校正碼是儲存在該些冗餘位元區的其中之一,該記憶體控制器更用以在開機後,從該些實體抹除單元中提取一第一實體抹除單元,其中該第一實體抹除單元中的該些實體程式化單元尚未被全部程式化,其中,該記憶體控制器更用以根據該第一實體抹除單元中該些冗餘位元區所儲存的資料來檢查該第一實體抹除單元中該些資料位元區所儲存的資料是否發生錯誤,若該第一實體抹除單元的該些實體程式化單元中的一第一實體程式化單元的該資料位元區所儲存的資料發生一第一錯誤並且該第一實體程式化單元的該冗餘位元區所儲存的資料無法校正該第一錯誤,該記憶體控制器更用以判斷該第一實體程式化單元是否在該第一資料相對應的該第二錯誤校正碼的該保護能力內,若該第一實體程式化單元是在該第一資料相對應的該第二錯 誤校正碼的該保護能力內,該記憶體控制器更用以根據該第二錯誤校正碼來校正該第一錯誤。
- 一種記憶體控制器,用於控制一可複寫式非揮發性記憶體模組,該記憶體控制器包括:一主機介面,用以耦接至一主機系統;一記憶體介面,用以耦接至該可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括多個實體抹除單元;以及一記憶體管理電路,耦接至該主機介面與該記憶體介面,用以接收來自於該主機系統的一第一刷新指令,並且在接收該第一刷新指令之後,接收來自該主機系統的一第一寫入指令,其中該第一寫入指令指示寫入一第一資料,其中,該記憶體管理電路用以根據該第一資料產生一第一錯誤校正碼與相對應的一第二錯誤校正碼,其中該第二錯誤校正碼的一保護能力不同於該第一錯誤校正碼的一保護能力,其中,該記憶體管理電路用以接收一第二寫入指令,其中該第二寫入指令指示寫入一第二資料,在接收該第一寫入指令與該第二寫入指令之後,該記憶體管理電路用以接收來自該主機系統的一第二刷新指令,其中該第二刷新指令指示將在一緩衝記憶體中的該第一資料與第二資料寫入至該可複寫式非揮發性記憶體模組中,其中,該記憶體管理電路用以將該第一資料、該第一錯誤校 正碼與該第二資料寫入至該可複寫式非揮發性記憶體模組中,其中,在接收到該第二刷新指令之後,該記憶體管理電路用以將該第一資料相對應的該第二錯誤校正碼寫入至該可複寫式非揮發性記憶體模組中,其中,該記憶體管理電路用以不對該第二資料產生相對應之一第二錯誤校正碼,或產生該第二資料相對應的該第二錯誤校正碼但不寫入該第二資料相對應的該第二錯誤校正碼至該可複寫式非揮發性記憶體模組中。
- 如申請專利範圍第17項所述的記憶體控制器,其中每一該些實體抹除單元包括多個實體程式化單元,該第一錯誤校正碼是僅根據對應於單一個該實體程式化單元的該第一資料所產生,該第一資料相對應的第二錯誤校正碼是根據對應於複數個該些實體程式化單元的該第一資料所產生。
- 如申請專利範圍第18項所述的記憶體控制器,其中該記憶體管理電路產生該第一資料相對應的該第二錯誤校正碼的操作包括:該記憶體管理電路根據對應於一預設數目的該些實體程式化單元的該第一資料來產生該第二錯誤校正碼,其中該預設數目大於1。
- 如申請專利範圍第17項所述的記憶體控制器,其中每一該些實體抹除單元包括多個實體程式化單元,該些實體程式化單元被分組為多個上實體程式化單元與多個下實體程式化單元,並 且該記憶體管理電路產生該第一資料相對應的該第二錯誤校正碼的操作包括:該記憶體管理電路根據該第一資料中對應於至少一個該些下實體程式化單元的部份來產生該第二錯誤校正碼。
- 如申請專利範圍第17項所述的記憶體控制器,其中每一該些實體抹除單元包括多個實體程式化單元,該些實體程式化單元被分組為多個上實體程式化單元與多個下實體程式化單元,並且該記憶體管理電路產生該第一資料相對應的該第二錯誤校正碼的操作包括:該記憶體管理電路僅對該緩衝記憶體中該第一資料對應於至少一個該些下實體程式化單元的部份來產生該第二錯誤校正碼。
- 如申請專利範圍第21項所述的記憶體控制器,其中該至少一個該些下實體程式化單元對應的上實體程式化單元沒有被程式化。
- 如申請專利範圍第17項所述的記憶體控制器,其中每一該些實體抹除單元包括多個實體程式化單元,該些實體程式化單元被分組為多個上實體程式化單元與多個下實體程式化單元,並且該記憶體管理電路產生該第一資料相對應的該第二錯誤校正碼的操作包括:該記憶體管理電路根據該緩衝記憶體中該第一資料對應於至少一個該些下實體程式化單元的部分與對應於一第二實體程式化單元的部份來產生該第二錯誤校正碼,其中該至少一個該些下實 體程式化單元對應的上實體程式化單元沒有被程式化,並且該第二實體程式化單元是相鄰於該至少一個該些下實體程式化單元。
- 如申請專利範圍第17項所述的記憶體控制器,其中每一該些實體抹除單元包括多個實體程式化單元,每一該些實體程式化單元包括一資料位元區與一冗餘位元區,並且該第一錯誤校正碼是儲存在該些冗餘位元區的其中之一,該記憶體管理電路更用以在開機後,從該些實體抹除單元中提取一第一實體抹除單元,其中該第一實體抹除單元中的該些實體程式化單元尚未被全部程式化,其中,該記憶體管理電路更用以根據該第一實體抹除單元中該些冗餘位元區所儲存的資料來檢查該第一實體抹除單元中該些資料位元區所儲存的資料是否發生錯誤,若該第一實體抹除單元的該些實體程式化單元中的一第一實體程式化單元的該資料位元區所儲存的資料發生一第一錯誤並且該第一實體程式化單元的該冗餘位元區所儲存的資料無法校正該第一錯誤,該記憶體管理電路更用以判斷該第一實體程式化單元是否在該第一資料相對應的該第二錯誤校正碼的該保護能力內,若該第一實體程式化單元是在該第一資料相對應的該第二錯誤校正碼的該保護能力內,該記憶體管理電路更用以根據該第二錯誤校正碼來校正該第一錯誤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102121610A TWI537734B (zh) | 2013-06-18 | 2013-06-18 | 資料保護方法、記憶體控制器與記憶體儲存裝置 |
US13/957,446 US8966344B2 (en) | 2013-06-18 | 2013-08-02 | Data protecting method, memory controller and memory storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102121610A TWI537734B (zh) | 2013-06-18 | 2013-06-18 | 資料保護方法、記憶體控制器與記憶體儲存裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201500925A TW201500925A (zh) | 2015-01-01 |
TWI537734B true TWI537734B (zh) | 2016-06-11 |
Family
ID=52020358
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102121610A TWI537734B (zh) | 2013-06-18 | 2013-06-18 | 資料保護方法、記憶體控制器與記憶體儲存裝置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8966344B2 (zh) |
TW (1) | TWI537734B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9704563B2 (en) * | 2014-12-08 | 2017-07-11 | Intel Corporation | Apparatus, method and system for performing successive writes to a bank of a dynamic random access memory |
TWI635495B (zh) * | 2016-02-05 | 2018-09-11 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 |
US10564865B2 (en) * | 2016-03-22 | 2020-02-18 | Seagate Technology Llc | Lockless parity management in a distributed data storage system |
TWI607457B (zh) * | 2016-06-28 | 2017-12-01 | 光寶電子(廣州)有限公司 | 固態儲存裝置及其資料寫入方法 |
TWI658463B (zh) * | 2018-08-23 | 2019-05-01 | 群聯電子股份有限公司 | 資料存取方法、記憶體控制電路單元與記憶體儲存裝置 |
US11190217B2 (en) | 2018-08-23 | 2021-11-30 | Phison Electronics Corp. | Data writing method, memory controlling circuit unit and memory storage device |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4745356B2 (ja) * | 2008-03-01 | 2011-08-10 | 株式会社東芝 | メモリシステム |
JP5221332B2 (ja) * | 2008-12-27 | 2013-06-26 | 株式会社東芝 | メモリシステム |
US8683295B1 (en) * | 2010-08-31 | 2014-03-25 | Western Digital Technologies, Inc. | Hybrid drive writing extended error correction code symbols to disk for data sectors stored in non-volatile semiconductor memory |
-
2013
- 2013-06-18 TW TW102121610A patent/TWI537734B/zh active
- 2013-08-02 US US13/957,446 patent/US8966344B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US8966344B2 (en) | 2015-02-24 |
US20140372833A1 (en) | 2014-12-18 |
TW201500925A (zh) | 2015-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI516927B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TWI467376B (zh) | 資料保護方法、記憶體控制器與記憶體儲存裝置 | |
TWI480733B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TWI524183B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI537734B (zh) | 資料保護方法、記憶體控制器與記憶體儲存裝置 | |
TWI490871B (zh) | 防止讀取干擾的方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI470431B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TWI476590B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
TWI527040B (zh) | 資料寫入方法、記憶體儲存裝置與記憶體控制器 | |
TWI591482B (zh) | 資料保護方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI550612B (zh) | 資料程式化方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI498902B (zh) | 資料管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI489466B (zh) | 記憶體抹除方法、記憶體控制器與記憶體儲存裝置 | |
TWI554886B (zh) | 資料保護方法、記憶體控制電路單元及記憶體儲存裝置 | |
TW201421477A (zh) | 記憶體儲存裝置、其記憶體控制器與資料寫入方法 | |
TWI486765B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
CN104636267A (zh) | 存储器控制方法、存储器存储装置与存储器控制电路单元 | |
TWI509615B (zh) | 資料儲存方法、記憶體控制器與記憶體儲存裝置 | |
TWI640997B (zh) | 資料保護方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI527058B (zh) | 記憶體控制方法、記憶體儲存裝置與記憶體控制電路單元 | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
TWI678621B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI467364B (zh) | 記憶體儲存裝置、記憶體控制器與資料寫入方法 | |
CN104252600B (zh) | 数据保护方法、存储器控制器与存储器储存装置 | |
TWI553477B (zh) | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |