TW201719673A - 資料程式化方法與記憶體儲存裝置 - Google Patents
資料程式化方法與記憶體儲存裝置 Download PDFInfo
- Publication number
- TW201719673A TW201719673A TW106106020A TW106106020A TW201719673A TW 201719673 A TW201719673 A TW 201719673A TW 106106020 A TW106106020 A TW 106106020A TW 106106020 A TW106106020 A TW 106106020A TW 201719673 A TW201719673 A TW 201719673A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- type
- physical
- unit
- physical units
- Prior art date
Links
Landscapes
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一種資料程式化方法與記憶體儲存裝置。所述方法包括:程式化可複寫式非揮發性記憶體模組中的多個第一類實體單元以儲存第一資料;編碼所述第一資料以產生編碼資料;接收第二資料;以及,在編碼所述第一資料之後,程式化可複寫式非揮發性記憶體模組中對應於所述第一類實體單元的多個第二類實體單元的至少其中之一以儲存第二資料中的至少一部份資料。藉此,可提升在多通道程式化程序中對於成對實體單元中錯誤的更正能力。
Description
本發明是有關於一種記憶體管理機制,且特別是有關於一種資料程式化方法與記憶體儲存裝置。
數位相機、行動電話與MP3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由於可複寫式非揮發性記憶體模組(例如,快閃記憶體)具有資料非揮發性、省電、體積小,以及無機械結構等特性,所以非常適合內建於上述所舉例的各種可攜式多媒體裝置中。
隨著記憶體晶片之效能不斷提昇,部分的記憶體裝置支援多通道(multi-channel)存取。然而,雖然可以藉由增加可平行存取之通道的數目來提升資料存取效率,但是若一次平行地寫入的資料量過大或者所使用的通道數目過多,則可能會導致部分原先已儲存在記憶體中的資料發生過多錯誤而無法被完全更正。特別是,記憶體中屬於成對頁(pair page)之資料最容易因程式化上頁(upper page)而影響到下頁(lower page)中的資料。傳統上,可以藉由程式化下頁時一併將虛設(dummy)資料填補至對應的上頁,從而保護整個成對頁中的資料。但是,這樣的機制卻也造成了儲存空間的浪費。因此,在支援多通道存取的記憶體裝置中,如何維持屬於成對頁之資料的正確性實為本領域技術人員所需致力研究的課題之一。
本發明的一範例實施例提供一種資料程式化方法與記憶體儲存裝置,可利用錯誤更正能力有限的編碼資料來維持多通道的程式化程序中屬於成對實體單元之資料的正確性。
本發明的一範例實施例提供一種資料程式化方法,其用於可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組包括多個實體單元,其中所述實體單元被對應至多個通道,其中所述實體單元包括多個第一類實體單元與對應於所述第一類實體單元的多個第二類實體單元,所述資料程式化方法包括:程式化所述第一類實體單元中的多個實體單元以儲存第一資料;編碼所述第一資料以產生編碼資料;接收第二資料;以及在編碼所述第一資料之後,程式化所述第二類實體單元中的至少一實體單元以儲存所述第二資料中的至少一部份資料。
在本發明的一範例實施例中,所述編碼資料用以更正因程式化所述第二類實體單元中的所述實體單元而在用以儲存所述第一資料的所述實體單元中引起的錯誤。
在本發明的一範例實施例中,程式化所述第二類實體單元中的所述實體單元的步驟包括:執行第一程式化程序以儲存所述第二資料的第一部分資料,其中所述第一程式化程序包括經由所述通道中的至少一第一通道來程式化所述第二類實體單元中第一部分的實體單元,其中所述第二類實體單元中的所述第一部分的實體單元對應於用以儲存所述第一資料的所述實體單元中第一部分的實體單元,其中所述第一通道的第一數目小於所述通道中的多個可用通道的總數;以及在執行所述第一程式化程序之後,執行第二程式化程序以儲存所述第二資料的第二部分資料,其中所述第二程式化程序包括經由所述通道中的至少一第二通道來程式化所述第二類實體單元中第二部分的實體單元,其中所述第二類實體單元中的所述第二部分的實體單元對應於用以儲存所述第一資料的所述實體單元中第二部分的實體單元,其中所述第二通道的第二數目小於所述可用通道的所述總數。
在本發明的一範例實施例中,所述可用通道是指當接收到所述第二資料時所述通道中對應於所述第二資料而預設可以被平行地使用的多個通道。
在本發明的一範例實施例中,所述編碼資料用以更正用以儲存所述第一資料的所述實體單元中的所述第一部分的實體單元所儲存之資料中的第一錯誤或者用以儲存所述第一資料的所述實體單元中的所述第二部分的實體單元所儲存之資料中的第二錯誤,其中所述第一錯誤的錯誤位元之總數小於或等於所述編碼資料可以更正的錯誤位元之總數的最大值,其中所述第二錯誤的錯誤位元之總數小於或等於所述編碼資料可以更正的所述錯誤位元之總數的所述最大值。
在本發明的一範例實施例中,所述第一錯誤是對應於所述第一程式化程序而產生,其中所述第二錯誤是對應於所述第二程式化程序而產生。
在本發明的一範例實施例中,編碼所述第一資料以產生所述編碼資料的步驟包括:編碼所述第一資料的第一部分資料以產生第一編碼資料,其中所述第一資料的所述第一部分資料為所述第一資料中被儲存於所述第一類實體單元中對應於所述通道中的至少一第三通道的多個實體單元中的資料;以及編碼所述第一資料的第二部分資料以產生第二編碼資料,其中所述第一資料的所述第二部分資料為所述第一資料中被儲存於所述第一類實體單元中對應於所述通道中的至少一第四通道的多個實體單元中的資料,其中所述第一編碼資料與所述第二編碼資料彼此獨立。
在本發明的一範例實施例中,所述資料程式化方法更包括:判斷是否接收到特定操作指令,其中編碼所述第一資料的步驟是反應於接收到所述特定操作指令而執行。
在本發明的一範例實施例中,所述特定操作指令包括轉存清除指令。
在本發明的一範例實施例中,所述資料程式化方法更包括:若沒有接收到所述特定操作指令,則在程式化所述第二類實體單元中的所述實體單元之前,不編碼所述第一資料。
本發明的另一範例實施例提供一種記憶體儲存裝置,其包括連接介面單元、可複寫式非揮發性記憶體模組及記憶體控制電路單元。所述連接介面單元用以耦接至主機系統。所述可複寫式非揮發性記憶體模組包括多個實體單元,其中所述實體單元被對應至多個通道,其中所述實體單元包括多個第一類實體單元與對應於所述第一類實體單元的多個第二類實體單元。所述記憶體控制電路單元耦接至所述連接介面單元與所述可複寫式非揮發性記憶體模組,其中所述記憶體控制電路單元用以發送第一寫入指令序列以指示程式化所述第一類實體單元中的多個實體單元以儲存第一資料,其中所述記憶體控制電路單元更用以編碼所述第一資料以產生編碼資料,其中所述記憶體控制電路單元更用以接收第二資料,其中在編碼所述第一資料之後,所述記憶體控制電路單元更用以發送第二寫入指令序列以指示程式化所述第二類實體單元中的至少一實體單元以儲存所述第二資料中的至少一部份資料。
在本發明的一範例實施例中,所述編碼資料用以更正因程式化所述第二類實體單元中的所述實體單元而在用以儲存所述第一資料的所述實體單元中引起的錯誤。
在本發明的一範例實施例中,所述第二寫入指令序列指示執行第一程式化程序以儲存所述第二資料的第一部分資料並且在執行所述第一程式化程序之後執行第二程式化程序以儲存所述第二資料的第二部分資料,其中所述第一程式化程序包括經由所述通道中的至少一第一通道來程式化所述第二類實體單元中第一部分的實體單元,其中所述第二類實體單元中的所述第一部分的實體單元對應於用以儲存所述第一資料的所述實體單元中第一部分的實體單元,其中所述第一通道的第一數目小於所述通道中的多個可用通道的總數,其中所述第二程式化程序包括經由所述通道中的至少一第二通道來程式化所述第二類實體單元中第二部分的實體單元,其中所述第二類實體單元中的所述第二部分的實體單元對應於用以儲存所述第一資料的所述實體單元中第二部分的實體單元,其中所述第二通道的第二數目小於所述可用通道的所述總數。
在本發明的一範例實施例中,所述可用通道是指當接收到所述第二資料時所述通道中對應於所述第二資料而預設可以被平行地使用的多個通道。
在本發明的一範例實施例中,所述編碼資料用以更正用以儲存所述第一資料的所述實體單元中的所述第一部分的實體單元所儲存之資料中的第一錯誤或者用以儲存所述第一資料的所述實體單元中的所述第二部分的實體單元所儲存之資料中的第二錯誤,其中所述第一錯誤的錯誤位元之總數小於或等於所述編碼資料可以更正的錯誤位元之總數的最大值,其中所述第二錯誤的錯誤位元之總數小於或等於所述編碼資料可以更正的所述錯誤位元之總數的所述最大值。
在本發明的一範例實施例中,所述第一錯誤是對應於所述第一程式化程序而產生,其中所述第二錯誤是對應於所述第二程式化程序而產生。
在本發明的一範例實施例中,所述記憶體控制電路單元編碼所述第一資料以產生所述編碼資料的操作包括:編碼所述第一資料的第一部分資料以產生第一編碼資料,其中所述第一資料的所述第一部分資料為所述第一資料中被儲存於所述第一類實體單元中對應於所述通道中的至少一第三通道的多個實體單元中的資料;以及編碼所述第一資料的第二部分資料以產生第二編碼資料,其中所述第一資料的所述第二部分資料為所述第一資料中被儲存於所述第一類實體單元中對應於所述通道中的至少一第四通道的多個實體單元中的資料,其中所述第一編碼資料與所述第二編碼資料彼此獨立。
在本發明的一範例實施例中,所述記憶體控制電路單元更用以判斷是否接收到特定操作指令,其中所述記憶體控制電路單元是反應於接收到所述特定操作指令而執行編碼所述第一資料的操作。
在本發明的一範例實施例中,所述特定操作指令包括轉存清除指令。
在本發明的一範例實施例中,若沒有接收到所述特定操作指令,則在程式化所述第二類實體單元中的所述實體單元之前,所述記憶體控制電路單元不編碼所述第一資料。
本發明的另一範例實施例提供一種資料程式化方法,其用於可複寫式非揮發性記憶體模組,其中所述可複寫式非揮發性記憶體模組包括多個實體單元,其中所述實體單元被對應至多個通道,其中所述實體單元包括多個第一類實體單元與對應於所述第一類實體單元的多個第二類實體單元,所述資料程式化方法包括:程式化所述第一類實體單元中的多個實體單元以儲存第一資料;接收第二資料;在儲存所述第一資料之後,執行第一程式化程序以儲存所述第二資料的第一部分資料,其中所述第一程式化程序包括經由所述通道中的至少一第一通道來程式化所述第二類實體單元中第一部分的實體單元,其中所述第二類實體單元中的所述第一部分的實體單元對應於用以儲存所述第一資料的所述實體單元中第一部分的實體單元,其中所述第一通道的第一數目小於所述通道中的多個可用通道的總數;以及在執行所述第一程式化程序之後,執行第二程式化程序以儲存所述第二資料的第二部分資料,其中所述第二程式化程序包括經由所述通道中的至少一第二通道來程式化所述第二類實體單元中第二部分的實體單元,其中所述第二類實體單元中的所述第二部分的實體單元對應於用以儲存所述第一資料的所述實體單元中第二部分的實體單元,其中所述第二通道的第二數目小於所述可用通道的所述總數。
在本發明的一範例實施例中,所述可用通道是指當接收到所述第二資料時所述通道中對應於所述第二資料而預設可以被平行地使用的多個通道。
本發明的另一範例實施例提供一種記憶體儲存裝置,其包括連接介面單元、可複寫式非揮發性記憶體模組及記憶體控制電路單元。所述連接介面單元用以耦接至主機系統。所述可複寫式非揮發性記憶體模組包括多個實體單元,其中所述實體單元被對應至多個通道,其中所述實體單元包括多個第一類實體單元與對應於所述第一類實體單元的多個第二類實體單元。所述記憶體控制電路單元耦接至所述連接介面單元與所述可複寫式非揮發性記憶體模組,其中所述記憶體控制電路單元用以發送第一寫入指令序列以指示程式化所述第一類實體單元中的多個實體單元以儲存第一資料,其中所述記憶體控制電路單元更用以接收第二資料,其中在儲存所述第一資料之後,所述記憶體控制電路單元更用以發送第二寫入指令序列以指示執行第一程式化程序以儲存所述第二資料的第一部分資料並且在執行所述第一程式化程序之後,執行第二程式化程序以儲存所述第二資料的第二部分資料,其中所述第一程式化程序包括經由所述通道中的至少一第一通道來程式化所述第二類實體單元中第一部分的實體單元,其中所述第二類實體單元中的所述第一部分的實體單元對應於用以儲存所述第一資料的所述實體單元中第一部分的實體單元,其中所述第一通道的第一數目小於所述通道中的多個可用通道的總數,其中所述第二程式化程序包括經由所述通道中的至少一第二通道來程式化所述第二類實體單元中第二部分的實體單元,其中所述第二類實體單元中的所述第二部分的實體單元對應於用以儲存所述第一資料的所述實體單元中第二部分的實體單元,其中所述第二通道的第二數目小於所述可用通道的所述總數。
在本發明的一範例實施例中,所述可用通道是指當接收到所述第二資料時所述通道中對應於所述第二資料而預設可以被平行地使用的多個通道。
基於上述,被儲存至對應於多個通道的第一類實體單元的第一資料會被編碼。藉此,當執行對於相對應之第二類實體單元的多通道程式化程序時,可維持屬於成對實體單元之資料的正確性。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
一般而言,記憶體儲存裝置(亦稱,記憶體儲存系統)包括可複寫式非揮發性記憶體模組(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可為其所使用的SD卡32、CF卡33或嵌入式儲存裝置34等各式非揮發性記憶體儲存裝置。嵌入式儲存裝置34包括嵌入式多媒體卡(embedded MMC, eMMC)341及/或嵌入式多晶片封裝儲存裝置(embedded Multi Chip Package, eMCP)342等各類型將記憶體模組直接耦接於主機系統的基板上的嵌入式儲存裝置。
圖4是根據本發明的一範例實施例所繪示的記憶體儲存裝置的概要方塊圖。
請參照圖4,記憶體儲存裝置10包括連接介面單元402、記憶體控制電路單元404與可複寫式非揮發性記憶體模組406。
在本範例實施例中,連接介面單元402是相容於序列先進附件(Serial Advanced Technology Attachment, SATA)標準。然而,必須瞭解的是,本發明不限於此,連接介面單元402亦可以是符合並列先進附件(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-Chip Package)介面標準、多媒體儲存卡(Multi Media Card, MMC)介面標準、崁入式多媒體儲存卡(Embedded Multimedia Card, eMMC)介面標準、通用快閃記憶體(Universal Flash Storage, UFS)介面標準、嵌入式多晶片封裝(embedded Multi Chip Package, eMCP)介面標準、小型快閃(Compact Flash, CF)介面標準、整合式驅動電子介面(Integrated Device Electronics, IDE)標準或其他適合的標準。連接介面單元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中的記憶胞是以陣列的方式設置。以下分別以二維陣列與三維陣列來對不同範例實施例中的記憶胞陣列進行說明。但是,在此須注意的是,以下範例實施例只是記憶胞陣列的幾種範例,在其他的範例實施例中,記憶胞陣列的配置方式可以被調整以符合實務上的需求。
圖5A是根據本發明的一範例實施例所繪示的記憶胞陣列的示意圖。
請參照圖5A,記憶胞陣列510包括用以儲存資料的多個記憶胞502、多個選擇閘汲極(select gate drain, SGD)電晶體512與多個選擇閘源極(select gate source, SGS)電晶體514、以及連接此些記憶胞的多條位元線504、多條字元線506、與共用源極線508。記憶胞502是以陣列方式配置在位元線504與字元線506的交叉點上。
圖5B是根據本發明的另一範例實施例所繪示的記憶胞陣列的示意圖。
請參照圖5B,在本範例實施例中,記憶胞陣列包括用以儲存資料的多個記憶胞522、多個位元線組524(1)~524(4)及多個字元線層526(1)~526(8)。位元線組524(1)~524(4)彼此獨立(例如,彼此分離)並且沿第一方向(例如,X軸)排列。位元線組524(1)~524(4)中的每一個字元線組包括彼此獨立(例如,彼此分離)的多條位元線524。包含於位元線組524(1)~524(4)中的位元線524沿第三方向(例如,Y軸)排列並且往第二方向(例如,Z軸)延伸。字元線層526(1)~526(8)彼此獨立(例如,彼此分離)並且沿第二方向堆疊。在本範例實施例中,字元線層526(1)~526(8)中的每一個字元線層可視為一個字元線平面。記憶胞522被配置於位元線組524(1)~524(4)中的每一位元線524與字元線層526(1)~526(8)之間的每一個交錯處。然而,在另一範例實施例中,一個位元線組可以包括更多或更少的位元線,並且一個字元線層也可以讓更多或更少的位元線組通過。
可複寫式非揮發性記憶體模組406中的每一個記憶胞是基於電壓(以下亦稱為臨界電壓)的改變來儲存一或多個位元。當從記憶體控制電路單元404接收到寫入指令序列或讀取指令序列時,可複寫式非揮發性記憶體模組406中的控制電路(未繪示)會控制施予至某一字元線(或字元線層)與某一位元線(或位元線組)的電壓來改變至少一記憶胞的臨界電壓或偵測所述記憶胞的儲存狀態(state)。例如,每一個記憶胞的控制閘極(control gate)與通道之間有一個電荷捕捉層。透過施予一寫入電壓(或程式化電壓)至某一個記憶胞的控制閘極,可以改變其電荷補捉層的電子量,進而改變此記憶胞的臨界電壓。此改變臨界電壓的程序亦稱為“把資料寫入至記憶胞”或“程式化記憶胞”。隨著臨界電壓的改變,可複寫式非揮發性記憶體模組406中的記憶胞可具有多個儲存狀態。透過施予讀取電壓可以判斷一個記憶胞是屬於哪一個儲存狀態,藉此取得此記憶胞所儲存的一或多個位元。
可複寫式非揮發性記憶體模組406的記憶胞會構成多個實體程式化單元,並且此些實體程式化單元會構成多個實體抹除單元。具體而言,同一條字元線或同一個字元線層上的記憶胞會組成一或多個實體程式化單元。例如,若可複寫式非揮發性記憶體模組406為MLC NAND型快閃記憶體模組,則同一條字元線(或字元線層)與多條位元線之交錯處上的記憶胞會構成2個實體程式化單元。或者,若可複寫式非揮發性記憶體模組406為TLC NAND型快閃記憶體模組,則同一條字元線(或字元線層)與多條位元線之交錯處上的記憶胞會構成3個實體程式化單元。
在本範例實施例中,實體程式化單元為程式化的最小單元。即,實體程式化單元為寫入資料的最小單元。例如,實體程式化單元為實體頁面(page)或是實體扇(sector)。若實體程式化單元為實體頁面,則此些實體程式化單元通常包括資料位元區與冗餘(redundancy)位元區。資料位元區包含多個實體扇,用以儲存使用者資料,而冗餘位元區用以儲存系統資料(例如,錯誤更正碼)。在本範例實施例中,資料位元區包含32個實體扇,且一個實體扇的大小為512位元組(byte, B)。然而,在其他範例實施例中,資料位元區中也可包含8個、16個或數目更多或更少的實體扇,並且每一個實體扇的大小也可以是更大或更小。另一方面,實體抹除單元為抹除之最小單位。亦即,每一實體抹除單元含有最小數目之一併被抹除之記憶胞。例如,實體抹除單元為實體區塊(block)。
在一個記憶胞可以儲存多個位元(例如,MLC或TLC NAND快閃記憶體模組)的範例實施例中,屬於同一條字元線(或同一個字元線層)的實體程式化單元至少可被分類為第一類實體程式化單元與第二類實體程式化單元。例如,在MLC NAND快閃記憶體模組中,一記憶胞的最低有效位元(Least Significant Bit,LSB)是屬於第一類實體程式化單元,並且此記憶胞的最高有效位元(Most Significant Bit,MSB)是屬於第二類實體程式化單元。一般來說,第一類實體程式化單元的寫入速度會大於第二類實體程式化單元的寫入速度。此外,第一類實體程式化單元的可靠度一般會高於第二類實體程式化單元的可靠度。在一範例實施例中,第一類實體程式化單元亦稱為快頁(fast page)或下實體程式化單元,而第二類實體程式化單元亦稱為慢頁(slow page)或上實體程式化單元。
在本範例實施例中,可複寫式非揮發性記憶體模組406具有多個記憶體平面(plane)。此些記憶體平面屬於一或多個記憶體晶粒(die)。在本範例實施例中,一個記憶體平面會被規劃為一個裝置。然而,在另一範例實施例中,多個記憶體平面也可以被規劃為一個裝置。每一個記憶體平面可包括一或多個記憶胞陣列。例如,每一個記憶胞陣列可以是圖5A的記憶胞陣列510、圖5B的記憶胞陣列或其他類型的記憶胞陣列。
圖6A是根據本發明的一範例實施例所繪示的可複寫式非揮發性記憶體模組的示意圖。值得一提的是,本範例實施例是以MLC NAND型快閃記憶體作為範例,但相關操作亦可以應用於其他類型的快閃記憶體(例如,TLC NAND型快閃記憶體)。
請參照圖6A,可複寫式非揮發性記憶體模組406包括M個記憶體平面601(1)~601(M)。記憶體平面601(1)~601(M)中的每一者包含多個記憶胞。在記憶體平面601(1)~601(M)中,屬於同一個記憶體平面的記憶胞被規劃為多個實體單元。例如,屬於同一個記憶體平面的實體單元會包括多個第一類實體單元與對應於此些第一類實體單元的多個第二類實體單元。例如,記憶體平面601(1)包括第一類實體單元610(0)~610(A)與第二類實體單元620(0)~620(A),記憶體平面601(2)包括第一類實體單元610(B)~610(C)與第二類實體單元620(B)~620(C);以此類推,記憶體平面601(M)包括第一類實體單元610(D)~610(E)與第二類實體單元620(D)~620(E)。其中,第一類實體單元610(0)對應於第二類實體單元620(0),第一類實體單元610(1)對應於第二類實體單元620(1);以此類推,第一類實體單元610(E)對應於第二類實體單元620(E)。
在本範例實施例中,實體單元是指實體程式化單元。因此,第一類實體單元是指上述第一類實體程式化單元,並且第二類實體單元則是指上述第二類實體程式化單元。此外,相互對應的一個第一類實體單元與一個第二類實體單元是指屬於同一條字元線(或同一個字元線層)的實體單元。例如,第一類實體單元610(0)與第二類實體單元620(0)屬於同一條字元線(或同一個字元線層),第一類實體單元610(1)與第二類實體單元620(1)屬於同一條字元線(或同一個字元線層);以此類推,第一類實體單元610(E)與第二類實體單元620(E)也屬於同一條字元線(或同一個字元線層)。然而,在另一範例實施例中,一個實體單元也可以是由同一位元線(或位元線層)上任意數目的記憶胞構成。
在本範例實施例中,在一組相互對應的實體單元中,第一類實體單元會先被使用(例如,程式化);爾後,第二類實體單元才會被使用(例如,程式化)。
圖6B是根據本發明的一範例實施例所繪示的使用實體單元的示意圖。
請參照圖6B,以圖6A中的記憶體平面601(1)為例,數字1~12表示用來儲存資料之實體單元的使用順序(或,程式化順序)。在程式化實體單元以儲存資料的過程中,標記為1~3的第一類實體單元610(0)~610(2)會依序被程式化;在程式化第一類實體單元610(2)之後,標記為4~6的第二類實體單元620(0)~620(2)會依序被程式化;在程式化第二類實體單元620(2)之後,標記為7~9的第一類實體單元610(3)~610(5)會依序被程式化;在程式化第一類實體單元610(5)之後,標記為10~12的第二類實體單元620(3)~620(5)會依序被程式化。
值得一提的是,圖6B的範例實施例中的數字1~12只是一個範例,在另一範例實施例中,每一個記憶體平面中實體單元的使用順序也可以視實務上的需求來加以調整。例如,在圖6B的另一範例實施例中,實體單元的使用順序也可以是依序程式化第一類實體單元610(0)、第二類實體單元620(0)、第一類實體單元610(1)、第二類實體單元620(1)、第一類實體單元610(2)、第二類實體單元620(2)、第一類實體單元610(3)、第二類實體單元620(3)、第一類實體單元610(4)、第二類實體單元620(4)、第一類實體單元610(5)、第二類實體單元620(5)等,視實務上的需求而定。此外,圖6B的範例實施例是以連續地儲存資料至屬於同一個記憶體平面(即,記憶體平面601(1))中的實體單元為例,但是,在另一範例實施例中,資料也可以被交錯或平行地儲存至多個記憶體平面中的實體單元,只要每一個記憶體平面中實體單元的使用順序符合預設規定即可。
在一範例實施例中,在平行地程式化多個記憶體平面中的實體單元的程式化操作中,每一個記憶體平面中被平行程式化的實體單元皆(或,只能)是第一類實體單元與第二類實體單元的其中之一。以圖6A為例,假設所有的實體單元都可以被使用,則在一個程式化程序中,每一個記憶體平面中部分的第一類實體單元會先被平行地程式化;然後,在下一個程式化程序中,每一個記憶體平面中部分的第二類實體單元會被平行地程式化。然而,在另一範例實施例中,多個記憶體平面中被平行程式化的實體單元則可以同時包含第一類實體單元與第二類實體單元。
在本範例實施例中,記憶體控制電路單元404(或可複寫式非揮發性記憶體模組406中的控制電路(未繪示))經由通道602(1)~602(M)來存取記憶體平面601(1)~601(M)中的實體單元(或,記憶胞)。例如,通道602(1)用以存取記憶體平面601(1)中的實體單元,通道602(2)用以存取記憶體平面601(2)中的實體單元;以此類推,通道602(M)用以存取記憶體平面601(M)中的實體單元。
在一範例實施例中,屬於記憶體平面601(1)的實體單元(例如,第一類實體單元610(0)~610(A)與第二類實體單元620(0)~620(A))亦可以視為是對應於通道602(1)的實體單元,屬於記憶體平面601(2)的實體單元(例如,第一類實體單元610(B)~610(C)與第二類實體單元620(B)~620(C))亦可以視為是對應於通道602(2)的實體單元;以此類推,屬於記憶體平面601(M)的實體單元(例如,第一類實體單元610(D)~610(E)與第二類實體單元620(D)~620(E))亦可以視為是對應於通道602(M)的實體單元。
在本範例實施例中,通道602(1)~602(M)中的至少兩者支援平行地(in parallel)資料讀取或寫入。例如,當欲儲存某一資料時,此資料可以被平行地寫入至屬於多個記憶體平面的實體單元。例如,第一類實體單元610(0)與610(B)可以被平行地程式化以儲存此資料。或者,第二類實體單元620(0)、620(B)及620(D)可以被平行地程式化以儲存某一資料。此外,當接收到來自主機系統11的某一讀取指令時,資料也可以平行地被從屬於多個記憶體平面的實體單元讀取出來。例如,資料也可以被平行地從第一類實體單元610(0)、610(B)及610(D)讀取。藉此,可提升資料的存取效率或存取速度。
圖7是根據本發明的一範例實施例所繪示的記憶體控制電路單元的概要方塊圖。
請參照圖7,記憶體控制電路單元404包括記憶體管理電路702、主機介面704、記憶體介面706及錯誤檢查與校正電路708。
記憶體管理電路702用以控制記憶體控制電路單元404的整體運作。具體來說,記憶體管理電路702具有多個控制指令,並且在記憶體儲存裝置10運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。以下說明記憶體管理電路702或任何包含於記憶體控制電路單元404中的電路元件之操作時,等同於說明記憶體控制電路單元404的操作。
在本範例實施例中,記憶體管理電路702的控制指令是以韌體型式來實作。例如,記憶體管理電路702具有微處理器單元(未繪示)與唯讀記憶體(未繪示),並且此些控制指令是被燒錄至此唯讀記憶體中。當記憶體儲存裝置10運作時,此些控制指令會由微處理器單元來執行以進行資料的寫入、讀取與抹除等運作。
在另一範例實施例中,記憶體管理電路702的控制指令亦可以程式碼型式儲存於可複寫式非揮發性記憶體模組406的特定區域(例如,記憶體模組中專用於存放系統資料的系統區)中。此外,記憶體管理電路702具有微處理器單元(未繪示)、唯讀記憶體(未繪示)及隨機存取記憶體(未繪示)。特別是,此唯讀記憶體具有開機碼(boot code),並且當記憶體控制電路單元404被致能時,微處理器單元會先執行此開機碼來將儲存於可複寫式非揮發性記憶體模組406中之控制指令載入至記憶體管理電路702的隨機存取記憶體中。之後,微處理器單元會運轉此些控制指令以進行資料的寫入、讀取與抹除等運作。
此外,在另一範例實施例中,記憶體管理電路702的控制指令亦可以一硬體型式來實作。例如,記憶體管理電路702包括微控制器、記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路。記憶胞管理電路、記憶體寫入電路、記憶體讀取電路、記憶體抹除電路與資料處理電路是耦接至微控制器。記憶胞管理電路用以管理可複寫式非揮發性記憶體模組406的記憶胞或其群組。記憶體寫入電路用以對可複寫式非揮發性記憶體模組406下達寫入指令序列以將資料寫入至可複寫式非揮發性記憶體模組406中。記憶體讀取電路用以對可複寫式非揮發性記憶體模組406下達讀取指令序列以從可複寫式非揮發性記憶體模組406中讀取資料。記憶體抹除電路用以對可複寫式非揮發性記憶體模組406下達抹除指令序列以將資料從可複寫式非揮發性記憶體模組406中抹除。資料處理電路用以處理欲寫入至可複寫式非揮發性記憶體模組406的資料以及從可複寫式非揮發性記憶體模組406中讀取的資料。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示可複寫式非揮發性記憶體模組406執行相對應的寫入、讀取及抹除等操作。在一範例實施例中,記憶體管理電路702還可以下達其他類型的指令序列給可複寫式非揮發性記憶體模組406以指示執行相對應的操作。
主機介面704是耦接至記憶體管理電路702並且用以接收與識別主機系統11所傳送的指令與資料。也就是說,主機系統11所傳送的指令與資料會透過主機介面704來傳送至記憶體管理電路702。在本範例實施例中,主機介面704是相容於SATA標準。然而,必須瞭解的是本發明不限於此,主機介面704亦可以是相容於PATA標準、IEEE 1394標準、PCI Express標準、USB標準、SD標準、UHS-I標準、UHS-II標準、MS標準、MMC標準、eMMC標準、UFS標準、CF標準、IDE標準或其他適合的資料傳輸標準。
記憶體介面706是耦接至記憶體管理電路702並且用以存取可複寫式非揮發性記憶體模組406。也就是說,欲寫入至可複寫式非揮發性記憶體模組406的資料會經由記憶體介面706轉換為可複寫式非揮發性記憶體模組406所能接受的格式。具體來說,若記憶體管理電路702要存取可複寫式非揮發性記憶體模組406,記憶體介面706會傳送對應的指令序列。例如,這些指令序列可包括指示寫入資料的寫入指令序列、指示讀取資料的讀取指令序列、指示抹除資料的抹除指令序列、以及用以指示各種記憶體操作(例如,改變讀取電壓準位或執行垃圾回收程序等等)的相對應的指令序列。這些指令序列例如是由記憶體管理電路702產生並且透過記憶體介面706傳送至可複寫式非揮發性記憶體模組406。這些指令序列可包括一或多個訊號,或是在匯流排上的資料。這些訊號或資料可包括指令碼或程式碼。例如,在讀取指令序列中,會包括讀取的辨識碼、記憶體位址等資訊。
錯誤檢查與校正電路708是耦接至記憶體管理電路702並且用以執行錯誤檢查與校正程序以確保資料的正確性。具體來說,當記憶體管理電路702從主機系統11中接收到寫入指令時,錯誤檢查與校正電路708會為對應此寫入指令的資料產生對應的錯誤更正碼(error correcting code, ECC)及/或錯誤檢查碼(error detecting code,EDC),並且記憶體管理電路702會將對應此寫入指令的資料與對應的錯誤更正碼及/或錯誤檢查碼寫入至可複寫式非揮發性記憶體模組406中。之後,當記憶體管理電路702從可複寫式非揮發性記憶體模組406中讀取資料時會同時讀取此資料對應的錯誤更正碼及/或錯誤檢查碼,並且錯誤檢查與校正電路708會依據此錯誤更正碼及/或錯誤檢查碼對所讀取的資料執行錯誤檢查與校正程序。
在一範例實施例中,記憶體控制電路單元404還緩衝記憶體710與電源管理電路712。
緩衝記憶體710是耦接至記憶體管理電路702並且用以暫存來自於主機系統11的資料與指令或來自於可複寫式非揮發性記憶體模組406的資料。電源管理電路712是耦接至記憶體管理電路702並且用以控制記憶體儲存裝置10的電源。
在本範例實施例中,錯誤檢查與校正電路708執行編碼程序的基本單位是一個框架(frame)。一個框架包括多個資料位元。在本範例實施例中,一個框架包括256個位元。然而,在另一範例實施例中,一個框架也可以包括更多或更少的位元。
在本範例實施例中,錯誤檢查與校正電路708可以針對儲存於同一個實體單元中的資料進行單框架(single-frame)編碼,也可以針對儲存於多個實體單元中的資料進行多框架(multi-frame)編碼。單框架編碼與多框架編碼可以分別採用低密度奇偶檢查校正碼(low density parity code,LDPC)、BCH碼、迴旋碼(convolutional code)或渦輪碼(turbo code)等編碼演算法的至少其中之一。或者,在一範例實施例中,多框架編碼還可以採用里德-所羅門碼(Reed-solomon codes, RS codes)演算法。此外,在另一範例實施例中,更多未列於上的編碼演算法也可以被採用,在此便不贅述。根據所採用的編碼演算法,錯誤檢查與校正電路708可以編碼欲保護之資料來產生相對應的錯誤更正碼及/或錯誤檢查碼。為了說明方便,以下將經由編碼產生的錯誤更正碼及/或錯誤檢查碼統稱為編碼資料。
圖8是根據本發明的一範例實施例所繪示的多框架編碼的示意圖。
請參照圖8,以編碼實體單元810(0)~810(E)所儲存之資料來產生相對應的編碼資料820為例,實體單元810(0)~810(E)中的每一者所儲存之至少部分資料可視為一個框架。在多框架編碼中,是以每一個位元(或,位元組)所在的位置為依據來對實體單元810(0)~810(E)中的資料進行編碼。例如,位於位置801(1)的位元b11
、b21
、…、bp1
會被編碼為編碼資料820中的位元bo1
,位於位置801(2)的位元b12
、b22
、…、bp2
會被編碼為編碼資料820中的位元bo2
;以此類推,位於位置801(r)的位元b1r
、b2r
、…、bpr
會被編碼為編碼資料820中的位元bor
。爾後,根據編碼資料820即可對從實體單元810(0)~810(E)中讀取的資料進行解碼,以嘗試更正所讀取之資料中可能存在的錯誤。
此外,在圖8的另一範例實施例中,用於產生編碼資料820的資料也可能包括實體單元810(0)~810(E)所儲存之資料中的資料位元(data bits)所對應的冗餘位元(redundancy bits)。以實體單元810(0)所儲存之資料為例,其中的冗餘位元例如是對儲存於實體單元810(0)中的資料位元進行單框架編碼而產生的。
在本範例實施例中,記憶體管理電路702會指示程式化屬於一或多個記憶體平面的多個第一類實體單元以儲存某一資料(以下亦稱為第一資料)。錯誤檢查與校正電路708會編碼第一資料以產生編碼資料並且記憶體管理電路702會接收第二資料。在編碼第一資料之後,記憶體管理電路702會指示程式化儲存有第一資料的第一類實體單元所對應的多個第二類實體單元的至少其中之一,以儲存第二資料中的至少一部份資料。藉此,即使在程式化已儲存有資料的第一類實體單元所對應的第二類實體單元的過程中發生斷電等突發狀況而影響到第一類實體單元中的資料,根據事先產生的編碼資料即可更正受影響之第一類實體單元中的錯誤。
圖9是根據本發明的一範例實施例所繪示的程式化第一類實體單元並且編碼第一資料的示意圖。
請參照圖9,假設可複寫式非揮發性記憶體模組406具有4個記憶體平面601(1)~601(4)並且可經由通道602(1)~602(4)來分別存取記憶體平面601(1)~601(4)中的實體單元。然而,在另一範例實施中,可複寫式非揮發性記憶體模組406也可能具有更多或更少的記憶體平面,並且更多或更少的通道可以用來存取此些記憶體平面。
在本範例實施例中,記憶體管理電路702會程式化第一類實體單元610(0)~610(11)以儲存第一資料,並且錯誤檢查與校正電路708會執行多框架編碼來編碼第一資料以產生編碼資料902。相關的編碼操作已詳述於上,在此便不贅述。編碼資料902會被儲存在可複寫式非揮發性記憶體模組406中。爾後,若在程式化第一類實體單元610(0)~610(11)所對應的第二類實體單元620(0)~620(11)中的任一者的過程中,第一類實體單元610(0)~610(11)所儲存之資料受到影響,則錯誤檢查與校正電路708可以嘗試利用編碼資料902來更正第一類實體單元610(0)~610(11)所儲存之資料中的錯誤。
值得一提的是,在圖9的另一範例實施例中,用來產生編碼資料902的第一類實體單元之數目也可以是更多或更少,並且用來產生編碼資料902的第一類實體單元可以是分布在更多或更少的記憶體平面中。例如,在一範例實施例中,用來產生編碼資料902的多個第一類實體單元可能僅位於一個記憶體平面中。
在一範例實施例中,上述編碼第一資料的操作可以在任意的時間點執行,以保護儲存於第一類實體單元中的資料。在另一範例實施例中,記憶體管理電路702會判斷是否從主機系統11接收到預先定義的一操作指令(以下亦稱為特定操作指令)。在一範例實施例中,此特定操作指令為轉存清除(flush)指令。然而,在另一範例實施例中,其他類型的操作指令也可以作為此特定操作指令。若有接收到此特定操作指令,記憶體管理電路702會指示錯誤檢查與校正電路708執行上述編碼第一資料的操作。換言之,在一範例實施例中,上述編碼第一資料的操作是反應於此特定操作指令而執行的。若沒有接收到此特定操作指令,則在程式化儲存有上述第一資料的第一類實體單元所對應的第二類實體單元之前,上述編碼第一資料的操作可以不被執行。例如,在圖9的另一範例實施例中,若沒有接收到此特定操作指令,則在程式化第一類實體單元610(0)~610(11)之後,不需要編碼第一資料,第二資料中的部分資料可以直接被儲存至第二類實體單元620(0)~620(11)中的任一者。
在本範例實施例中,上述第一資料可以是使用者資料或系統資料,並且上述第二資料也可以是使用者資料或系統資料。其中,使用者資料是指來自主機系統11之寫入指令所指示需儲存的資料,而系統資料是指可複寫式非揮發性記憶體模組406的管理資料(例如,邏輯-實體映射表格等各種管理表格)。
在某些情況下(例如,主機系統11即將關機、重開機或清理記憶體時),主機系統11會下達轉存清除指令給記憶體儲存裝置10,以指示記憶體儲存裝置10即時地儲存重要資料。一般來說,在接收到轉存清除指令之後,若某一第一類實體單元所對應的第二類實體單元沒有儲存資料,則填充資料(dummy data)會被寫入至此空的第二類實體單元中,以保護相對應的第一類實體單元不容易因突然地斷電等原因而流失資料。其中,填充資料是指沒有具體意義的資料(例如,一連串的位元0)或者無效資料。但是,根據上述範例實施例,在將儲存在第一類實體單元中的資料編碼之後,任意的資料都可以被繼續寫入至相對應的第二類實體單元中。往後,即便發生程式化失敗,也可以在任意時間點利用事先產生的編碼資料來更正第一類實體單元中的錯誤。換言之,在一範例實施例中,即便接收到轉存清除指令,填充資料也可以不被寫入至需要保護的第一類實體單元所對應的第二類實體單元中,從而延長記憶體儲存裝置的使用壽命。
在一範例實施例中,藉由編碼第一資料而產生的編碼資料是用以更正一預設數目的錯誤位元。在此,預設數目是指編碼資料最多可以更正幾個錯誤位元。若編碼資料的錯誤更正能力越強,則預設數目越大。若編碼資料的錯誤更正能力越弱,則預設數目越小。例如,此預設數目可表示為N個實體單元的容量。在本範例實施例中,每一個實體單元用以儲存256個位元組(bytes)的資料,故此預設數目可表示為256×N個位元組。然而,在另一範例實施例中,預設數目也可以用其他方式來表示。
在一範例實施例中,當欲程式化對應於第一類實體單元610(0)~610(11)的第二類實體單元時,一個程式化程序中可以被平行地存取的通道(或記憶體平面)之總數會被限制為小於一通道總數。此通道總數與上述編碼資料的錯誤更正能力有關。例如,此通道總數可以是正相關於上述預設數目。也就是說,若對應於已儲存於第一類實體單元中的資料(即,第一資料)之編碼資料的錯誤更正能力越強,則可設定通道總數為一個較大的值;若對應於第一資料之編碼資料的錯誤更正能力越弱,則可設定通道總數為一個較小的值。藉由限制在程式化第二類實體單元時可以平行存取的通道(或記憶體平面)之總數,可減少在同一個程式化程序中可能受影響的第一類實體單元之數目並確保第一類實體單元中後續可能需要被更正的位元之總數不大於上述預設數目。
圖10是根據本發明的一範例實施例所繪示的程式化第二類實體單元的示意圖。
請同時參照圖9與圖10,假設編碼資料902最多可用於更正512個位元組(即,兩個實體單元之總容量)的錯誤位元,則記憶體管理電路702會限制每一次程式化程序中最多只能經由兩個通道來平行地程式化兩個記憶體平面中的兩個第二類實體單元。例如,記憶體管理電路702會指示可複寫式非揮發性記憶體模組406執行程式化程序1001以儲存第二資料的一部分資料。在程式化程序1001中,經由通道602(1)與602(2),第二類實體單元620(0)與620(3)會被平行地程式化。特別是,程式化程序1001中所平行地使用到的通道(例如,通道602(1)與602(2))之數目會小於通道602(1)~602(4)中多個可用通道之總數。在此,每一個可用通道是指當接收到第二資料(或,欲儲存第二資料)時,通道602(1)~602(4)中預設可以被平行地用來寫入第二資料之至少一部分資料的通道。例如,當接收到第二資料時,若通道602(1)~602(4)皆處於閒置(idle)狀態,則通道602(1)~602(4)中的每一者皆可視為是一個可用通道。或者,當接收到第二資料時,若通道602(1)~602(3)皆處於閒置狀態而通道602(4)處於忙碌(busy)狀態(或,記憶體儲存裝置10之效能不足以支援同時經由4個通道來存取資料),則通道602(1)~602(3)中的每一者皆可視為是一個可用通道。換言之,在程式化程序1001中,即使有更多的通道可以被使用來對更多的記憶體平面平行地執行資料寫入操作,但是仍然只有通道602(1)與602(2)被平行地使用。
在完成程式化程序1001之後,記憶體管理電路702會指示可複寫式非揮發性記憶體模組406接續執行程式化程序1002以儲存第二資料的另一部分資料。在程式化程序1002中,經由通道602(3)與602(4),第二類實體單元620(6)與620(9)會被平行地程式化。特別是,程式化程序1002中所平行地使用到的通道(例如,通道602(3)與602(4))之數目也會小於當接收到第二資料時,通道602(1)~602(4)中的可用通道之總數。爾後,若還有尚未儲存的第二資料中的部分資料,則至少一個程式化程序可被接續執行,其中每一個程式化程序可平行地程式化兩個記憶體平面中的兩個第二類實體單元(例如,第二類實體單元620(1)與620(4)),直到寫滿第二類實體單元620(0)~620(11)為止。
值得一提的是,在圖10的一範例實施例中,即便已經接收到第二資料的所述另一部分資料,記憶體管理電路702仍然只會先執行程式化程序1001。待完成程式化程序1001之後,用以儲存第二資料的所述另一部分資料的程式化程序1002才會被執行。
在圖10的另一範例實施例中,若在上述對於第二類實體單元的任一程式化程序中發生斷電等因素而導致對於任兩個第二類實體單元的程式化程序失敗或異常中止,則相對應的第一類實體單元中的資料可能會出現大量錯誤。在重新上電之後或任意時間點,錯誤檢查與校正電路708會基於事先產生的編碼資料來對儲存於第一類實體單元中的資料執行解碼程序。在此解碼操作中,第一類實體單元所儲存之資料會被讀取出來並且其中的錯誤可被更正。例如,針對程式化程序1001的失敗或異常終止,基於解碼資料902的解碼程序可被執行。藉此,在第一類實體單元610(0)與610(3)中產生的錯誤有很大的機率可被完全更正。或者,針對程式化程序1002的失敗或異常終止,基於解碼資料902的另一解碼程序可被執行。藉此,在第一類實體單元610(6)與610(9)中產生的錯誤也有很大的機率可被完全更正。
在一範例實施例中,若為了儲存第二資料而平行地使用所有的可用通道來執行程式化程序,雖然可以較為有效率地執行程式化程序,但也可能會使得過多的第一類實體單元在同一個程式化程序中受到影響並且受到影響而引起的錯誤位元可能無法被完全更正。例如,在圖9與圖10的另一範例實施例中,若平行地執行程式化程序1001與1002且在程式化程序1001與1002的過程中發生斷電,則可能導致第一類實體單元610(0)、610(3)、610(6)及610(9)所儲存的資料都發生大量錯誤。在此情況下,由於需要更正的位元之總數超過上述預設數目(即,兩個實體單元之總容量),故第一類實體單元610(0)、610(3)、610(6)及610(9)所儲存的資料可能都會被視為無效或損毀。因此,在圖10的範例實施例中,在編碼儲存於第一類實體單元中的第一資料之後,藉由依序使用部分的可用通道來執行對於相對應的第二類實體單元的程式化程序(例如,依序執行程式化程序1001與1002),可進一步增加對於第一類實體單元中資料的保護能力。
除了上述範例實施例中提及的減少一次的程式化程序中平行地被使用之通道/記憶體平面的總數之外,在另一範例實施例中,亦可以藉由增強編碼資料之錯誤更正能力來達到類似功效。
圖11與圖12是根據本發明的一範例實施例所繪示的資料程式化程序的示意圖。
請參照圖11,在本範例實施例中,記憶體管理電路702會程式化第一類實體單元610(0)~610(11)以儲存第一資料,並且錯誤檢查與校正電路708會執行包含多框架編碼之編碼程序來編碼此第一資料以產生相對應的編碼資料。相對於圖9之範例實施例,在本範例實施例中,經由編碼第一資料而產生的編碼資料之錯誤更正能力較強。此外,本範例實施例中編碼第一資料的操作可以是反應於上述特定操作指令而執行或在任意時間點執行。
在本範例實施例中,錯誤檢查與校正電路708會編碼儲存於第一類實體單元610(0)~610(5)中的資料(即,第一資料中的一部分資料)以產生編碼資料1102(0)並且編碼儲存於第一類實體單元610(6)~610(11)中的資料(即,第一資料中的另一部分資料)以產生編碼資料1102(1)。
在本範例實施例中,編碼資料1102(0)與1102(1)彼此獨立。在此,編碼資料1102(0)與1102(1)彼此獨立是指編碼資料1102(0)與1102(1)可以分別用來對不同的資料進行解碼。例如,編碼資料1102(0)可用來解碼儲存於第一類實體單元610(0)~610(5)中的資料,而編碼資料1102(1)則可用來解碼儲存於第一類實體單元610(6)~610(11)中的資料。在本範例實施例中,編碼資料1102(0)與1102(1)可分別用以更正上述預設數目(例如,512個位元組)的錯誤位元。換言之,編碼資料1102(0)與1102(1)合計可用以更正最多1024個位元組的錯誤位元。然而,在另一範例實施例中,編碼資料1102(0)與1102(1)也可分別用以更正更多或更少的錯誤位元。
請參照圖12,在程式化第一類實體單元610(0)~610(11)之後,記憶體管理電路702會指示可複寫式非揮發性記憶體模組406執行程式化程序1201以儲存第二資料的至少一部分資料。特別是,相對於圖10之範例實施例,在程式化程序1201中,更多的可用通道可以被平行地使用來程式化更多的第二類實體單元。例如,當欲儲存第二資料時,通道602(1)~602(4)皆處於閒置狀態,則經由通道602(1)~602(4),第二類實體單元620(0)、620(3)、620(6)及620(9)可被平行地程式化。
在一範例實施例中,若執行程式化程序1201的操作失敗或異常中止,錯誤檢查與校正電路708會基於編碼資料1102(0)與1102(1)來分別對儲存於第一類實體單元610(0)~610(5)與610(6)~610(11)中的資料執行相對應的解碼程序。例如,基於編碼資料1102(0),對應於程式化程序1201中程式化第二類實體單元620(0)與620(3)而在第一類實體單元610(0)~610(5)中產生的錯誤可被更正;而基於編碼資料1102(1),對應於程式化程序1201中程式化第二類實體單元620(6)與620(9)而在第一類實體單元610(6)~610(9)中產生的錯誤也可被更正。
更具體而言,若程式化程序1201失敗或異常中止(例如,在程式化程序1201中發生斷電),則有很大機率會在第一類實體單元610(0)、610(3)、610(6)及610(9)中同步出現大量錯誤。在記憶體儲存裝置10重新上電或開機之後,即便被儲存於第一類實體單元610(0)、610(3)、610(6)及610(9)中的第一資料皆已事先被執行單框架編碼(即,以一個實體單元為基本單位執行的編碼程序),但此些大量出現之錯誤仍無法藉由相對應的單框架解碼程序(即,以一個實體單元中的資料為基本單位執行的解碼程序)而被完全更正。然而,在圖12的範例實施例中,編碼資料1102(0)與編碼資料1102(1)分別可以用來更正512個位元組的錯誤位元(即,兩個實體單元的資料量)。因此,藉由編碼資料1102(0),第一類實體單元610(0)與610(3)中的錯誤有很大的機率可以被完全更正;藉由編碼資料1102(1),第一類實體單元610(6)與610(9)中的錯誤也有很大的機率可以被完全更正。
換言之,相對於圖9與圖10的範例實施例,在本範例實施例中,用於保護儲存於第一類實體單元中的第一資料之編碼資料的錯誤更正能力較強,並且要使用更多的記憶體空間來儲存此編碼資料;但是,由於一個程式化程序中使用的通道/記憶體平面較多,對於資料的寫入效率或寫入速度則可被提升。
在一範例實施例中,亦可以根據是否接收到上述特定操作指令(例如,轉存清除指令)來決定是否要提升編碼資料之錯誤更正能力。例如,在一範例實施例中,將圖9之編碼資料902的錯誤更正能力稱為第一錯誤更正能力並且將圖11之編碼資料1102(0)與1102(1)的錯誤更正能力合併稱為第二錯誤更正能力。例如,第一錯誤更正能力是對應於最多更正一第一預設數目的錯誤位元,而第二錯誤更正能力是對應於最多更正一第二預設數目的錯誤位元,且第二預設數目多於第一預設數目。在此範例實施例中,當接收到所述特定操作指令時,可根據此特定操作指令來編碼上述第一資料以產生具有第二錯誤更正能力的編碼資料;反之,若沒有接收到所述特定操作指令,則可編碼第一資料並產生具有相對較差的第一錯誤更正能力的編碼資料。
在一範例實施例中,亦可以合併使用上述範例實施例中提及的減少程式化程序中平行地使用之通道/記憶體平面之總數以及增強編碼資料之錯誤更正能力之操作。
圖13是根據本發明的另一範例實施例所繪示的資料程式化程序的示意圖。
請參照圖13,在本範例實施例中,是以具有8個記憶體平面601(1)~601(8)的可複寫式非揮發性記憶體模組406為例。在將第一資料儲存至此些記憶體平面601(1)~601(8)中的部分第一類實體單元(以網點表示於圖13中)之後,可編碼第一資料中儲存於記憶體平面601(1)~601(4)的部分資料為編碼資料1310(0)並且編碼第一資料中儲存於記憶體平面601(5)~601(8)的另一部分資料為編碼資料1310(1)。在本範例實施例中,編碼資料1310(0)與編碼資料1310(1)分別用以更正上述預設數目(例如,512個位元組)的錯誤位元。然而,在另一範例實施例中,編碼資料1310(0)與編碼資料1310(1)皆可以用以更正更多或更少的錯誤位元。
爾後,當欲儲存第二資料時,假設通道602(1)~602(8)皆為可用通道,則程式化程序1301(0)與1301(1)會先被平行地執行。例如,在程式化程序1301(0)與1301(1)中,第二類實體單元620(0)、620(3)、620(12)及620(15)會經由通道602(1)、602(2)、602(5)及602(6)而平行地被程式化以儲存第二資料的一部分資料。在執行程式化程序1301(0)與1301(1)之後,程式化程序1302(0)與1302(1)會被平行地執行。例如,在程式化程序1302(0)與1302(1)中,第二類實體單元620(6)、620(9)、620(18)及620(21)會經由通道602(3)、602(4)、602(7)及602(8)而平行地被程式化以儲存第二資料的另一部分資料。
在一範例實施例中,若程式化程序1301(0)與1301(1)失敗或異常中止(例如,程式化過程中發生斷電),則編碼資料1310(0)會(例如,在重新上電之後)被用來對第一資料中儲存於記憶體平面601(1)~601(4)的部分資料進行解碼以更正因程式化第二類實體單元620(0)與620(3)而在記憶體平面601(1)與601(2)中產生的錯誤;而編碼資料1310(1)則會被用來對第一資料中儲存於記憶體平面601(5)~601(8)的部分資料進行解碼以更正因程式化第二類實體單元620(12)與620(15)而在記憶體平面601(5)與601(6)中產生的錯誤。或者,若程式化程序1302(0)與1302(1)發生錯誤(例如,程式化過程中發生斷電),則編碼資料1310(0)會被用來對第一資料中儲存於記憶體平面601(1)~601(4)的部分資料進行解碼以更正因程式化第二類實體單元620(6)與620(9)而在記憶體平面601(3)與601(4)中產生的錯誤;而編碼資料1310(1)則會被用來對第一資料中儲存於記憶體平面601(5)~601(8)的部分資料進行解碼以更正因程式化第二類實體單元620(18)與620(21)而在記憶體平面601(7)與601(8)中產生的錯誤。
更具體而言,在程式化程序1301(0)與1301(1)失敗或異常中止的一範例實施例中,編碼資料1310(0)可用來更正因程式化程序1301(0)與1301(1)失敗或異常中止而在對應於第二類實體單元620(0)與620(3)的兩個第一類實體單元中產生的大量錯誤,而編碼資料1310(1)則可用來更正因程式化程序1301(0)與1301(1)失敗或異常中止而在對應於第二類實體單元620(12)與620(15)的兩個第一類實體單元中產生的大量錯誤。而在程式化程序1302(0)與1302(1)失敗或異常中止的一範例實施例中,編碼資料1310(0)可用來更正因程式化程序1302(0)與1302(1)失敗或異常中止而在對應於第二類實體單元620(6)與620(9)的兩個第一類實體單元中產生的大量錯誤,而編碼資料1310(1)則可用來更正因程式化程序1302(0)與1302(1)失敗或異常中止而在對應於第二類實體單元620(18)與620(21)的兩個第一類實體單元中產生的大量錯誤。
圖14是根據本發明的一範例實施例所繪示的資料程式化方法的流程圖。
請參照圖14,在步驟S1401中,程式化可複寫式非揮發性記憶體模組中的多個第一類實體單元中的多個實體單元以儲存第一資料。在步驟S1402中,編碼第一資料以產生編碼資料並且接收第二資料。在步驟S1403中,程式化可複寫式非揮發性記憶體模組中對應於所述第一類實體單元的多個第二類實體單元中的至少一實體單元以儲存第二資料中的至少一部分資料。
圖15是根據本發明的另一範例實施例所繪示的資料程式化方法的流程圖。
請參照圖15,在步驟S1501中,程式化多個第一類實體單元中的多個實體單元以儲存第一資料。在步驟S1502中,編碼第一資料以產生編碼資料並且接收第二資料。在步驟S1503中,執行第一程式化程序以儲存第二資料的一第一部分資料。其中,第一程式化程序包括經由至少一第一通道來程式化第一部份的第二類實體單元,其中所述第一部份的第二類實體單元對應於儲存有第一資料的所述第一類實體單元中一第一部分的實體單元。其中,所述第一通道的第一數目小於多個可用通道的總數。在步驟S1504中,執行第二程式化程序以儲存第二資料的一第二部分資料。其中,第二程式化程序包括經由至少一第二通道來程式化第二部份的第二類實體單元,其中所述第二部份的第二類實體單元對應於儲存有第一資料的所述第一類實體單元中一第二部分的實體單元。其中,所述第二通道的第二數目也小於所述可用通道的總數。值得一提的是,在本範例實施例中,步驟S1504的操作會在步驟S1503的操作被完成之後才會被執行。
圖16是根據本發明的另一範例實施例所繪示的資料程式化方法的流程圖。
請參照圖16,在步驟S1601中,程式化多個第一類實體單元中的多個實體單元以儲存第一資料。在步驟S1602中,編碼第一資料中被儲存於第一類實體單元中對應於至少一第一通道的多個實體單元中的第一部份資料以產生第一編碼資料。在步驟S1603中,編碼第一資料中被儲存於第一類實體單元中對應於至少一第二通道的多個實體單元中的第二部份資料以產生第二編碼資料。其中,第一編碼資料與第二編碼資料彼此獨立。在步驟S1604中,程式化對應於所述第一類實體單元的多個第二類實體單元中的至少一實體單元以儲存第二資料中的至少一部分資料。
圖17是根據本發明的另一範例實施例所繪示的資料程式化方法的流程圖。
請參照圖17,在步驟S1701中,程式化多個第一類實體單元以儲存第一資料。在步驟S1702中,判斷是否接收到特定操作指令。例如,此特定操作指令可以是轉存清除指令。此外,第二資料也會被接收。若有接收到此特定操作指令,在步驟S1703中,編碼第一資料以產生編碼資料。在步驟S1704中,程式化對應於所述第一類實體單元的多個第二類實體單元中的至少一實體單元以儲存第二資料中的至少一部分資料。若未接收到此特定操作指令,則在接收到第二資料之後,不編碼第一資料而直接執行步驟S1704。
然而,圖14至圖17中各步驟已詳細說明如上,在此便不再贅述。值得注意的是,圖14至圖17中各步驟可以實作為多個程式碼或是電路,本發明不加以限制。此外,圖14至圖17的方法可以搭配以上範例實施例使用,也可以單獨使用,本發明不加以限制。
綜上所述,在一範例實施例中,被儲存至對應於多個通道的第一類實體單元的第一資料會被編碼。例如,編碼第一資料的操作可以是反應於某一特定操作指令而執行。在另一範例實施例中,在儲存第一資料之後,若需使用相對應的第二類實體單元來儲存資料,則可藉由調整程式化程序中可平行使用的通道之總數及/或調整對應於第一資料之編碼資料的錯誤更正能力來維持多通道的程式化程序中屬於成對實體單元之資料的正確性。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10‧‧‧記憶體儲存裝置
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‧‧‧可複寫式非揮發性記憶體模組
510‧‧‧記憶胞陣列
502、522‧‧‧記憶胞
504、524‧‧‧位元線
506‧‧‧字元線
508‧‧‧共用源極線
512‧‧‧選擇閘汲極電晶體
514‧‧‧選擇閘源極電晶體
524(1)~524(4)‧‧‧位元線組
526(1)~526(8)‧‧‧字元線層
601(1)~601(M)‧‧‧記憶體平面
602(1)~602(M)‧‧‧通道
610(0)~610(A)、610(B)~610(C)、610(D)~610(E)、810(0)~810(E)‧‧‧第一類實體單元
620(0)~620(A)、620(B)~620(C)、620(D)~620(E)‧‧‧第二類實體單元
702‧‧‧記憶體管理電路
704‧‧‧主機介面
706‧‧‧記憶體介面
708‧‧‧錯誤檢查與校正電路
710‧‧‧緩衝記憶體
712‧‧‧電源管理電路
801(1)~810(r)‧‧‧位置
820、902、1102(0)、1102(1)、1310(0)、1310(1)‧‧‧編碼資料
1001、1002、1201、1301(0)、1301(1)、1302(0)、1302(1)‧‧‧程式化程序
S1401‧‧‧步驟(程式化第一類實體單元中的多個實體單元以儲存第一資料)
S1402‧‧‧步驟(編碼第一資料以產生編碼資料並接收第二資料)
S1403‧‧‧步驟(程式化對應於所述第一類實體單元的多個第二類實體單元中的至少一實體單元以儲存第二資料中的至少一部份資料)
S1501‧‧‧步驟(程式化第一類實體單元中的多個實體單元以儲存第一資料)
S1502‧‧‧步驟(編碼第一資料以產生編碼資料並接收第二資料)
S1503‧‧‧步驟(執行第一程式化程序以儲存第二資料的第一部分資料,其中第一程式化程序包括經由至少一第一通道來程式化第一部分的第二類實體單元,其中所述第一部分的第二類實體單元對應於儲存有第一資料的第一類實體單元中一第一部分的實體單元,其中第一通道的第一數目小於多個可用通道的總數)
S1504‧‧‧步驟(執行第二程式化程序以儲存第二資料的第二部分資料,其中第二程式化程序包括經由至少一第二通道來程式化第二部分的第二類實體單元,其中所述第二部分的第二類實體單元對應於儲存有第一資料的第一類實體單元中一第二部分的實體單元,其中第二通道的第二數目小於所述可用通道的總數)
S1601‧‧‧步驟(程式化第一類實體單元中的多個實體單元以儲存第一資料)
S1602‧‧‧步驟(編碼第一資料中被儲存於第一類實體單元中對應於至少一第三通道的多個實體單元中的第一部分資料以產生第一編碼資料)
S1603‧‧‧步驟(編碼第一資料中被儲存於第一類實體單元中對應於至少一第四通道的多個實體單元中的第二部分資料以產生第二編碼資料,其中第一編碼資料與第二編碼資料彼此獨立)
S1604‧‧‧步驟(程式化對應於所述第一類實體單元的多個第二類實體單元中的至少一實體單元以儲存第二資料中的至少一部份資料)
S1701‧‧‧步驟(程式化第一類實體單元中的多個實體單元以儲存第一資料)
S1702‧‧‧步驟(判斷是否接收到特定操作指令)
S1703‧‧‧步驟(編碼第一資料以產生編碼資料)
S1704‧‧‧步驟(程式化對應於所述第一類實體單元的多個第二類實體單元中的至少一實體單元以儲存第二資料中的至少一部份資料)
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‧‧‧可複寫式非揮發性記憶體模組
510‧‧‧記憶胞陣列
502、522‧‧‧記憶胞
504、524‧‧‧位元線
506‧‧‧字元線
508‧‧‧共用源極線
512‧‧‧選擇閘汲極電晶體
514‧‧‧選擇閘源極電晶體
524(1)~524(4)‧‧‧位元線組
526(1)~526(8)‧‧‧字元線層
601(1)~601(M)‧‧‧記憶體平面
602(1)~602(M)‧‧‧通道
610(0)~610(A)、610(B)~610(C)、610(D)~610(E)、810(0)~810(E)‧‧‧第一類實體單元
620(0)~620(A)、620(B)~620(C)、620(D)~620(E)‧‧‧第二類實體單元
702‧‧‧記憶體管理電路
704‧‧‧主機介面
706‧‧‧記憶體介面
708‧‧‧錯誤檢查與校正電路
710‧‧‧緩衝記憶體
712‧‧‧電源管理電路
801(1)~810(r)‧‧‧位置
820、902、1102(0)、1102(1)、1310(0)、1310(1)‧‧‧編碼資料
1001、1002、1201、1301(0)、1301(1)、1302(0)、1302(1)‧‧‧程式化程序
S1401‧‧‧步驟(程式化第一類實體單元中的多個實體單元以儲存第一資料)
S1402‧‧‧步驟(編碼第一資料以產生編碼資料並接收第二資料)
S1403‧‧‧步驟(程式化對應於所述第一類實體單元的多個第二類實體單元中的至少一實體單元以儲存第二資料中的至少一部份資料)
S1501‧‧‧步驟(程式化第一類實體單元中的多個實體單元以儲存第一資料)
S1502‧‧‧步驟(編碼第一資料以產生編碼資料並接收第二資料)
S1503‧‧‧步驟(執行第一程式化程序以儲存第二資料的第一部分資料,其中第一程式化程序包括經由至少一第一通道來程式化第一部分的第二類實體單元,其中所述第一部分的第二類實體單元對應於儲存有第一資料的第一類實體單元中一第一部分的實體單元,其中第一通道的第一數目小於多個可用通道的總數)
S1504‧‧‧步驟(執行第二程式化程序以儲存第二資料的第二部分資料,其中第二程式化程序包括經由至少一第二通道來程式化第二部分的第二類實體單元,其中所述第二部分的第二類實體單元對應於儲存有第一資料的第一類實體單元中一第二部分的實體單元,其中第二通道的第二數目小於所述可用通道的總數)
S1601‧‧‧步驟(程式化第一類實體單元中的多個實體單元以儲存第一資料)
S1602‧‧‧步驟(編碼第一資料中被儲存於第一類實體單元中對應於至少一第三通道的多個實體單元中的第一部分資料以產生第一編碼資料)
S1603‧‧‧步驟(編碼第一資料中被儲存於第一類實體單元中對應於至少一第四通道的多個實體單元中的第二部分資料以產生第二編碼資料,其中第一編碼資料與第二編碼資料彼此獨立)
S1604‧‧‧步驟(程式化對應於所述第一類實體單元的多個第二類實體單元中的至少一實體單元以儲存第二資料中的至少一部份資料)
S1701‧‧‧步驟(程式化第一類實體單元中的多個實體單元以儲存第一資料)
S1702‧‧‧步驟(判斷是否接收到特定操作指令)
S1703‧‧‧步驟(編碼第一資料以產生編碼資料)
S1704‧‧‧步驟(程式化對應於所述第一類實體單元的多個第二類實體單元中的至少一實體單元以儲存第二資料中的至少一部份資料)
圖1是根據本發明的一範例實施例所繪示的主機系統、記憶體儲存裝置及輸入/輸出(I/O)裝置的示意圖。 圖2是根據本發明的另一範例實施例所繪示的主機系統、記憶體儲存裝置及I/O裝置的示意圖。 圖3是根據本發明的另一範例實施例所繪示的主機系統與記憶體儲存裝置的示意圖。 圖4是根據本發明的一範例實施例所繪示的記憶體儲存裝置的概要方塊圖。 圖5A是根據本發明的一範例實施例所繪示的記憶胞陣列的示意圖。 圖5B是根據本發明的另一範例實施例所繪示的記憶胞陣列的示意圖。 圖6A是根據本發明的一範例實施例所繪示的可複寫式非揮發性記憶體模組的示意圖。 圖6B是根據本發明的一範例實施例所繪示的使用實體單元的示意圖。 圖7是根據本發明的一範例實施例所繪示的記憶體控制電路單元的概要方塊圖。 圖8是根據本發明的一範例實施例所繪示的多框架編碼編碼的示意圖。 圖9是根據本發明的一範例實施例所繪示的程式化第一類實體單元並且編碼第一資料的示意圖。 圖10是根據本發明的一範例實施例所繪示的程式化第二類實體單元的示意圖。 圖11與圖12是根據本發明的一範例實施例所繪示的資料程式化程序的示意圖。 圖13是根據本發明的另一範例實施例所繪示的資料程式化程序的示意圖。 圖14是根據本發明的一範例實施例所繪示的資料程式化方法的流程圖。 圖15是根據本發明的另一範例實施例所繪示的資料程式化方法的流程圖。 圖16是根據本發明的另一範例實施例所繪示的資料程式化方法的流程圖。 圖17是根據本發明的另一範例實施例所繪示的資料程式化方法的流程圖。
S1401‧‧‧步驟(程式化第一類實體單元中的多個實體單元以儲存第一資料)
S1402‧‧‧步驟(編碼第一資料以產生編碼資料並接收第二資料)
S1403‧‧‧步驟(程式化對應於所述第一類實體單元的多個第二類實體單元中的至少一實體單元以儲存第二資料中的至少一部份資料)
Claims (6)
- 一種資料程式化方法,用於一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括多個實體單元,其中該些實體單元被對應至多個通道,其中該些實體單元包括多個第一類實體單元與對應於該些第一類實體單元的多個第二類實體單元,其中在一組相互對應的實體單元中,該第一類實體單元比該第二類實體單元先被使用,該資料程式化方法包括: 程式化該些第一類實體單元中的多個實體單元以儲存一第一資料; 接收一第二資料; 在儲存該第一資料之後,執行一第一程式化程序以儲存該第二資料的一第一部分資料,其中該第一程式化程序包括經由該些通道中的至少一第一通道來程式化該些第二類實體單元中一第一部分的實體單元,其中該些第二類實體單元中的該第一部分的實體單元對應於用以儲存該第一資料的該些實體單元中一第一部分的實體單元,其中該至少一第一通道的一第一數目小於該些通道中的多個可用通道的一總數;以及 在執行該第一程式化程序之後,執行一第二程式化程序以儲存該第二資料的一第二部分資料,其中該第二程式化程序包括經由該些通道中的至少一第二通道來程式化該些第二類實體單元中一第二部分的實體單元,其中該些第二類實體單元中的該第二部分的實體單元對應於用以儲存該第一資料的該些實體單元中一第二部分的實體單元,其中該至少一第二通道的一第二數目小於該些可用通道的該總數。
- 如申請專利範圍第1項所述的資料程式化方法,其中該些可用通道是指當接收到該第二資料時該些通道中對應於該第二資料而預設可以被平行地使用的多個通道。
- 如申請專利範圍第1項所述的資料程式化方法,其中該些可用通道中的每一個通道是指當接收到該第二資料時該些通道中處於一閒置狀態的通道。
- 一種記憶體儲存裝置,包括: 一連接介面單元,用以耦接至一主機系統; 一可複寫式非揮發性記憶體模組,其中該可複寫式非揮發性記憶體模組包括多個實體單元,其中該些實體單元被對應至多個通道,其中該些實體單元包括多個第一類實體單元與對應於該些第一類實體單元的多個第二類實體單元,其中在一組相互對應的實體單元中,該第一類實體單元比該第二類實體單元先被使用;以及 一記憶體控制電路單元,耦接至該連接介面單元與該可複寫式非揮發性記憶體模組, 其中該記憶體控制電路單元用以發送一第一寫入指令序列以指示程式化該些第一類實體單元中的多個實體單元以儲存一第一資料, 其中該記憶體控制電路單元更用以接收一第二資料, 其中在儲存該第一資料之後,該記憶體控制電路單元更用以發送一第二寫入指令序列以指示執行一第一程式化程序以儲存該第二資料的一第一部分資料並且在執行該第一程式化程序之後,執行一第二程式化程序以儲存該第二資料的一第二部分資料, 其中該第一程式化程序包括經由該些通道中的至少一第一通道來程式化該些第二類實體單元中一第一部分的實體單元,其中該些第二類實體單元中的該第一部分的實體單元對應於用以儲存該第一資料的該些實體單元中一第一部分的實體單元,其中該至少一第一通道的一第一數目小於該些通道中的多個可用通道的一總數, 其中該第二程式化程序包括經由該些通道中的至少一第二通道來程式化該些第二類實體單元中一第二部分的實體單元,其中該些第二類實體單元中的該第二部分的實體單元對應於用以儲存該第一資料的該些實體單元中一第二部分的實體單元,其中該至少一第二通道的一第二數目小於該些可用通道的該總數。
- 如申請專利範圍第4項所述的記憶體儲存裝置,其中該些可用通道是指當接收到該第二資料時該些通道中對應於該第二資料而預設可以被平行地使用的多個通道。
- 如申請專利範圍第4項所述的記憶體儲存裝置,其中該些可用通道中的每一個通道是指當接收到該第二資料時該些通道中處於一閒置狀態的通道。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106106020A TWI613665B (zh) | 2015-11-27 | 2015-11-27 | 資料程式化方法與記憶體儲存裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106106020A TWI613665B (zh) | 2015-11-27 | 2015-11-27 | 資料程式化方法與記憶體儲存裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201719673A true TW201719673A (zh) | 2017-06-01 |
TWI613665B TWI613665B (zh) | 2018-02-01 |
Family
ID=59687140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106106020A TWI613665B (zh) | 2015-11-27 | 2015-11-27 | 資料程式化方法與記憶體儲存裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI613665B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI668575B (zh) * | 2018-07-26 | 2019-08-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
TWI668570B (zh) * | 2018-08-09 | 2019-08-11 | 群聯電子股份有限公司 | 資料整併方法、記憶體儲存裝置及記憶體控制電路單元 |
TWI675378B (zh) * | 2017-10-26 | 2019-10-21 | 日商東芝記憶體股份有限公司 | 半導體記憶裝置 |
TWI694328B (zh) * | 2017-06-16 | 2020-05-21 | 美商司固科技公司 | 監測記憶體以供報廢 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7366017B2 (en) * | 2006-08-22 | 2008-04-29 | Micron Technology, Inc. | Method for modifying data more than once in a multi-level cell memory location within a memory array |
KR101594030B1 (ko) * | 2009-05-13 | 2016-02-29 | 삼성전자주식회사 | 플래시 메모리 장치의 프로그램 방법 |
TWI506422B (zh) * | 2009-09-23 | 2015-11-01 | Silicon Motion Inc | 用來管理具有多通道、多途徑的記憶裝置之方法以及相關之記憶裝置及其控制器 |
KR101734204B1 (ko) * | 2010-06-01 | 2017-05-12 | 삼성전자주식회사 | 프로그램 시퀀서를 포함하는 플래시 메모리 장치 및 시스템, 그리고 그것의 프로그램 방법 |
KR102024850B1 (ko) * | 2012-08-08 | 2019-11-05 | 삼성전자주식회사 | 3차원 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법 |
US8885410B2 (en) * | 2012-08-29 | 2014-11-11 | Sandisk Technologies Inc. | Direct multi-level cell programming |
-
2015
- 2015-11-27 TW TW106106020A patent/TWI613665B/zh active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI694328B (zh) * | 2017-06-16 | 2020-05-21 | 美商司固科技公司 | 監測記憶體以供報廢 |
TWI675378B (zh) * | 2017-10-26 | 2019-10-21 | 日商東芝記憶體股份有限公司 | 半導體記憶裝置 |
US10658063B2 (en) | 2017-10-26 | 2020-05-19 | Toshiba Memory Corporation | Semiconductor memory device including a correcting circuit |
TWI668575B (zh) * | 2018-07-26 | 2019-08-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
CN110764691A (zh) * | 2018-07-26 | 2020-02-07 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
US10719272B2 (en) | 2018-07-26 | 2020-07-21 | Silicon Motion, Inc. | Data storage device and control method for non-volatile memory |
CN110764691B (zh) * | 2018-07-26 | 2023-03-03 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
TWI668570B (zh) * | 2018-08-09 | 2019-08-11 | 群聯電子股份有限公司 | 資料整併方法、記憶體儲存裝置及記憶體控制電路單元 |
Also Published As
Publication number | Publication date |
---|---|
TWI613665B (zh) | 2018-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI588833B (zh) | 資料程式化方法與記憶體儲存裝置 | |
TWI614755B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI658463B (zh) | 資料存取方法、記憶體控制電路單元與記憶體儲存裝置 | |
US10424391B2 (en) | Decoding method, memory controlling circuit unit and memory storage device | |
US20180013450A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI591643B (zh) | 資料保護方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN106843744B (zh) | 数据程序化方法与存储器储存装置 | |
TW201913382A (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI613665B (zh) | 資料程式化方法與記憶體儲存裝置 | |
US10324787B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI681396B (zh) | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 | |
CN111580741B (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
TWI575532B (zh) | 解碼方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI732642B (zh) | 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置 | |
TWI709850B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI662553B (zh) | 記憶體測試方法與記憶體測試系統 | |
TWI763310B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI681393B (zh) | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US11604586B2 (en) | Data protection method, with disk array tags, memory storage device and memory control circuit unit | |
US10310941B2 (en) | Data encoding method, memory control circuit unit and memory storage device | |
US10074433B1 (en) | Data encoding method, memory control circuit unit and memory storage device | |
CN111435604B (zh) | 解码方法、存储器控制电路单元以及存储器存储装置 | |
CN114077515A (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 |