TWI707362B - 資料寫入方法和儲存控制器 - Google Patents
資料寫入方法和儲存控制器 Download PDFInfo
- Publication number
- TWI707362B TWI707362B TW108128491A TW108128491A TWI707362B TW I707362 B TWI707362 B TW I707362B TW 108128491 A TW108128491 A TW 108128491A TW 108128491 A TW108128491 A TW 108128491A TW I707362 B TWI707362 B TW I707362B
- Authority
- TW
- Taiwan
- Prior art keywords
- programming
- physical
- physical programming
- unit
- data
- Prior art date
Links
Images
Landscapes
- Read Only Memory (AREA)
Abstract
本發明提供適用於配置有可複寫式非揮發性記憶體模組的儲存裝置的資料寫入方法。所述方法包括:執行寫入指令,其中所述寫入指令用以指示程式化資料至所述可複寫式非揮發性記憶體模組中的具有多個實體程式化單元的實體程式化單元組;對所述實體程式化單元組執行第一寫入操作,以找尋多個程式化條件中的最佳化程式化條件;以及根據所述最佳化程式化條件,使用對應所述最佳化程式化條件的最佳化程式化脈衝電壓來對所述實體程式化單元組執行第二寫入操作,以正確地程式化所述多個實體程式化單元,進而完成所述寫入指令。
Description
本發明是有關於一種資料寫入方法,且特別是有關於一種適用於配置有可複寫式非揮發性記憶體模組的儲存裝置的資料寫入方法與儲存控制器。
一般來說,儲存裝置的可複寫式非揮發性記憶體模組的晶粒中的每個實體區塊或實體程式化單元的物理特性會因為其所在的位置不同而有所差異(不一致)。因為可複寫式非揮發性記憶體模組的每個實體區塊或每個實體程式化單元的物理特性是不一致的,在對每個實體區塊或每個實體程式化單元執行程式化操作(亦稱,寫入操作)時,也會需要使用不同電壓值的程式化電壓來適應性地對具有不同物理特性的實體區塊或實體程式化單元來執行程式化操作。
一般的傳統作法,為了找尋最適合特定物理特性的實體區塊或實體程式化(實體區塊或實體程式化亦可稱為實體單元)的程式化電壓,儲存控制器會在經由施加一個程式化電壓(亦稱,程式化脈衝電壓)至實體單元後,會驗證被程式化的所述實體單元是否寫入成功或寫入失敗。若寫入失敗,儲存控制器會再次施加另一程式化電壓至所述實體單元且再次驗證所述實體單元。以此類推,直到被程式化的所述實體單元被驗證為寫入成功。
然而,對於一些物理特性較差的實體單元,上述的傳統作法往往需要較長的時間來完成所述實體單元的程式化操作。
因此,如何適應性地針對不同物理特性的實體單元來更有效率地調整欲施加的程式化電壓,以改善傳統作法的缺陷,提昇程式化操作的速度且增進可複寫式非揮發性記憶體模組的資料寫入效率,是本領域人員研究的課題之一。
“先前技術”段落只是用來幫助了解本發明內容,因此在“先前技術”段落所揭露的內容可能包含一些沒有構成所屬技術領域中具有通常知識者所知道的習知技術。在“先前技術”段落所揭露的內容,不代表該內容或者本發明一個或多個實施例所要解決的問題,在本發明申請前已被所屬技術領域中具有通常知識者所知曉或認知。
本發明提供一種資料寫入方法與使用所述資料寫入方法的儲存控制器,可有效率地找到用以執行程式化操作的最佳化程式化條件,以根據所述最佳化程式化條件來施加對應的最佳化程式化電壓,進而有效率地完成對於一實體程式化單元組的寫入指令。
本發明的一實施例提供適用於配置有一可複寫式非揮發性記憶體模組的一儲存裝置的一種資料寫入方法,其中所述可複寫式非揮發性記憶體模組具有多個實體程式化單元。所述方法包括:執行一寫入指令,其中所述寫入指令用以指示程式化資料至所述可複寫式非揮發性記憶體模組中的一第一實體程式化單元組;對所述第一實體程式化單元組執行一第一寫入操作,以找尋N個程式化條件中的一最佳化程式化條件;以及根據所述最佳化程式化條件,使用對應所述最佳化程式化條件的最佳化程式化脈衝電壓來對所述第一實體程式化單元組執行第二寫入操作,以完成所述寫入指令。此外,所述N個程式化條件的每一個皆對應一程式化脈衝電壓的下列多個參數中的一或多者:(1)程式化脈衝電壓高度;(2)程式化脈衝電壓寬度;以及(3)程式化脈衝電壓次數。所述程式化脈衝電壓高度用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的電壓值。所述程式化脈衝電壓寬度用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的時間。所述程式化脈衝電壓可被施加至所述可複寫式非揮發性記憶體模組的一或多個字元線、一或多個位元線、井或源極線。所述程式化脈衝電壓次數用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的總次數。
本發明的一實施例提供適用於配置有一可複寫式非揮發性記憶體模組的一儲存裝置的一種儲存控制器,其中所述可複寫式非揮發性記憶體模組具有多個實體程式化單元。所述儲存控制器包括:連接介面電路、記憶體介面控制電路以及處理器。所述連接介面電路用以電性連接至一主機系統。所述記憶體介面控制電路,用以電性連接至所述可複寫式非揮發性記憶體模組。所述處理器電性連接至所述連接介面電路、所述記憶體介面控制電路。所述處理器載入且執行多個程式碼,以實現一資料寫入方法,該資料寫入方法包括下列步驟:執行一寫入指令,其中所述寫入指令用以指示程式化一資料至所述可複寫式非揮發性記憶體模組中的一第一實體程式化單元組;對所述第一實體程式化單元組執行一第一寫入操作,以找尋N個程式化條件中的一最佳化程式化條件;以及根據所述最佳化程式化條件,使用對應所述最佳化程式化條件的一最佳化程式化脈衝電壓來對所述第一實體程式化單元組執行一第二寫入操作,以完成所述寫入指令。此外,所述N個程式化條件的每一個皆對應一程式化脈衝電壓的下列多個參數中的一或多者程式化脈衝電壓高度以及程式化脈衝電壓寬度。所述程式化脈衝電壓高度用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的電壓值。所述程式化脈衝電壓寬度用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的時間。所述程式化脈衝電壓可被施加至所述可複寫式非揮發性記憶體模組的一或多個字元線或一或多個位元線。
基於上述,本發明的實施例所提供的資料寫入方法與儲存控制器,可藉由第一寫入操作來找尋用以程式化一實體程式化單元組的多個程式化條件中的最佳化程式化條件,並且根據所述最佳化程式化條件來程式化所述實體程式化單元組中的多個實體程式化單元。如此一來,可動態地找到適用於不同物理狀態的實體程式化單元組,進而增進了資料寫入操作的準確性與效率。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
有關本發明之前述及其他技術內容、特點與功效,在以下配合參考圖式之一較佳實施例的詳細說明中,將可清楚的呈現。以下實施例中所提到的方向用語,例如:上、下、左、右、前或後等,僅是參考附加圖式的方向。因此,使用的方向用語是用來說明並非用來限制本發明。
圖1是根據本發明的一實施例所繪示的儲存裝置與主機系統的方塊示意圖。請參照圖1,主機系統(Host System)10包括處理器(Processor)110、主機記憶體(Host Memory)120及資料傳輸介面電路(Data Transfer Interface Circuit)130。在本實施例中,資料傳輸介面電路130耦接(亦稱,電性連接)至處理器110與主機記憶體120。在另一實施例中,處理器110、主機記憶體120與資料傳輸介面電路130之間利用系統匯流排(System Bus)彼此耦接。
儲存裝置20包括儲存控制器(Storage Controller)210、可複寫式非揮發性記憶體模組(Rewritable Non-Volatile Memory Module)220及連接介面電路(Connection Interface Circuit)230。其中,儲存控制器210包括處理器211與記憶體介面控制電路(Memory Interface Control Circuit)213。
在本實施例中,主機系統10是透過資料傳輸介面電路130與儲存裝置20的連接介面電路230耦接至儲存裝置20來進行資料的存取操作。例如,主機系統10可經由資料傳輸介面電路130將資料儲存(經由下達寫入指令)至儲存裝置20或從儲存裝置20中讀取資料(經由下達讀取指令)。
在本實施例中,處理器110、主機記憶體120及資料傳輸介面電路130可設置在主機系統10的主機板上。資料傳輸介面電路130的數目可以是一或多個。透過資料傳輸介面電路130,主機板可以經由有線或無線方式耦接至儲存裝置20。儲存裝置20可例如是隨身碟、記憶卡、固態硬碟(Solid State Drive,SSD)或無線記憶體儲存裝置。
在本實施例中,資料傳輸介面電路130與連接介面電路230是相容於高速周邊零件連接介面(Peripheral Component Interconnect Express, PCI Express)標準的介面電路。並且,資料傳輸介面電路130與連接介面電路230之間是利用快速非揮發性記憶體介面標準(Non-Volatile Memory express,NVMe)通訊協定來進行資料的傳輸。
然而,必須瞭解的是,本發明不限於此,資料傳輸介面電路130與連接介面電路230亦可以是符合並列先進附件(Parallel Advanced Technology Attachment,PATA)標準、電氣和電子工程師協會(Institute of Electrical and Electronic Engineers,IEEE)1394標準、序列先進附件(Serial Advanced Technology Attachment,SATA)標準、通用序列匯流排(Universal Serial Bus,USB)標準、SD介面標準、超高速一代(Ultra High Speed-I,UHS-I)介面標準、超高速二代(Ultra High Speed-II,UHS-II)介面標準、記憶棒(Memory Stick, MS)介面標準、多晶片封裝(Multi-Chip Package)介面標準、多媒體儲存卡(Multi Media Card,MMC)介面標準、eMMC介面標準、通用快閃記憶體(Universal Flash Storage,UFS)介面標準、eMCP介面標準、CF介面標準、整合式驅動電子介面(Integrated Device Electronics,IDE)標準或其他適合的標準。此外,在另一實施例中,連接介面電路230可與儲存控制器210封裝在一個晶片中,或者連接介面電路230是佈設於一包含儲存控制器210之晶片外。
在本實施例中,主機記憶體120用以暫存處理器110所執行的指令或資料。例如,在本範例實施例中,主機記憶體120可以是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)等。然而,必須瞭解的是,本發明不限於此,主機記憶體120也可以是其他適合的記憶體。應注意的是,儲存裝置20亦可具有相似於主機記憶體120的緩衝記憶體,用以暫存處理器211所執行的指令或資料。
儲存控制器210用以執行以硬體型式或韌體型式實作的多個邏輯閘或控制指令並且根據主機系統10的指令在可複寫式非揮發性記憶體模組220中進行資料的寫入、讀取與抹除等運作。
更詳細來說,儲存控制器210中的處理器211為具備運算能力的硬體,其用以控制儲存控制器210的整體運作。具體來說,處理器211具有多個控制指令,並且在儲存裝置20運作時,此些控制指令會被執行以進行資料的寫入、讀取與抹除等運作。在本實施例中,處理器211可載入多個程式碼模組(韌體)以實現本發明所提供的資料寫入方法。
值得一提的是,在本實施例中,處理器110與處理器211例如是中央處理單元(Central Processing Unit,CPU)、微處理器(micro-processor)、或是其他可程式化之處理單元(Microprocessor)、數位訊號處理器(Digital Signal Processor,DSP)、可程式化控制器、特殊應用積體電路(Application Specific Integrated Circuits,ASIC)、可程式化邏輯裝置(Programmable Logic Device,PLD)或其他類似電路元件,本發明並不限於此。應注意的是,儲存控制器210各部件所執行的操作亦可視為儲存控制器210所執行的操作。
記憶體介面控制電路213用以接受處理器211的指示,配合資料管理電路212來進行對於可複寫式非揮發性記憶體模組220的寫入(亦稱,程式化,Programming)操作、讀取操作或抹除操作。舉例來說,處理器211可執行寫入指令序列,以指示記憶體介面控制電路213將資料寫入至可複寫式非揮發性記憶體模組220的一或多個實體程式化單元中;處理器211可執行讀取指令序列,以指示記憶體介面控制電路213從可複寫式非揮發性記憶體模組220中讀取資料;處理器211可執行抹除指令序列,以指示記憶體介面控制電路213對可複寫式非揮發性記憶體模組220進行抹除操作。寫入指令序列、讀取指令序列及抹除指令序列可各別包括一或多個程式碼或指令碼並且用以指示對可複寫式非揮發性記憶體模組220執行相對應的寫入、讀取及抹除等操作。在一實施例中,處理器211還可以下達其他類型的指令序列給記憶體介面控制電路213,以對可複寫式非揮發性記憶體模組220執行相對應的操作。
可複寫式非揮發性記憶體模組220是耦接至儲存控制器210(記憶體介面控制電路213)並且用以儲存主機系統10所寫入之資料。可複寫式非揮發性記憶體模組220可以是單階記憶胞(Single Level Cell,SLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存1個位元的快閃記憶體模組)、多階記憶胞(Multi Level Cell,MLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存2個位元的快閃記憶體模組)、三階記憶胞(Triple Level Cell,TLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存3個位元的快閃記憶體模組)、四階記憶胞(Quadruple Level Cell,QLC)NAND型快閃記憶體模組(即,一個記憶胞中可儲存4個位元的快閃記憶體模組)、三維NAND型快閃記憶體模組(3D NAND flash memory module)或垂直NAND型快閃記憶體模組(Vertical NAND flash memory module)等其他快閃記憶體模組或其他具有相同特性的記憶體模組。可複寫式非揮發性記憶體模組220中的記憶胞是以陣列的方式設置。
在本實施例中,可複寫式非揮發性記憶體模組220具有多個字元線,其中所述多個字元線的每一個字元線經由多個位元線耦接至多個記憶胞。同一條字元線上的多個記憶胞會組成一或多個實體程式化單元組221(1)~221(M)。M為正整數。此外,多個實體程式化單元可組成一個實體程式化單元組。多個實體程式化單元組可構成一個實體區塊(亦稱,實體抹除單元)。應注意的是,在本實施例中,廠商可根據可複寫式非揮發性記憶體模組220的所有的實體程式化單元於可複寫式非揮發性記憶體模組220中的實體位置(例如,在可複寫式非揮發性記憶體模組220的晶粒/實體區塊的邊緣區域或是中間區域)來分組將所有的實體程式化單元分組至M個實體程式化單元組。每個實體程式化單元組例如具有P個實體程式化單元。P為正整數。如此一來,藉由分組至M個實體程式化單元組,被分組至同一個實體程式化單元組的P個實體程式化單元,可具有較為相似的物理特性。
儲存控制器210會配置多個邏輯單元給可複寫式非揮發性記憶體模組220。主機系統10是透過所配置的邏輯單元來存取儲存在多個實體單元中的使用者資料。在此,每一個邏輯單元可以是由一或多個邏輯位址組成。為了便於說明,在本實施例中,邏輯單元為邏輯頁面,並且實體單元為實體程式化單元(亦稱,實體頁面)。
此外,儲存控制器210會建立邏輯轉實體位址映射表(Logical To Physical address mapping table)與實體轉邏輯位址映射表(Physical To Logical address mapping table),以記錄配置給可複寫式非揮發性記憶體模組220的邏輯單元與實體單元之間的位址映射關係。換言之,儲存控制器210可藉由邏輯轉實體位址映射表來查找一邏輯單元所映射的實體單元,並且儲存控制器210可藉由實體轉邏輯位址映射表來查找一實體單元所映射的邏輯單元。然而,上述有關邏輯單元與實體單元映射的技術概念為本領域技術人員之慣用技術手段且非本發明所欲闡述的技術方案,不再贅述於此。
在一實施例中,儲存控制器210還包括錯誤檢查與校正電路、緩衝記憶體與電源管理電路。錯誤檢查與校正電路是耦接至處理器211並且用以執行錯誤檢查與校正程序以確保資料的正確性。緩衝記憶體是耦接至處理器211並且用以暫存來自於主機系統10的資料與指令、來自於可複寫式非揮發性記憶體模組220的資料或其他用以管理儲存裝置20的系統資料(如,預設的多個程式化條件、最佳化程式化條件表等),以讓處理器211可快速地從緩衝記憶體中存取所述資料、指令或系統資料。電源管理電路是耦接至處理器211並且用以控制儲存裝置20的電源。以下利用圖2來詳細說明本實施例所提供的資料寫入方法。
圖2是根據本發明的一實施例所繪示的資料寫入方法的流程圖。請參照圖2,在步驟S21中,處理器211執行寫入指令,其中所述寫入指令用以指示程式化資料至可複寫式非揮發性記憶體模組220中的第一實體程式化單元組。
具體來說,處理器211可從主機系統10接收寫入指令。所述寫入指令可包括寫入資料與用以儲存所述寫入資料的一或多個邏輯單元。處理器211可選擇可複寫式非揮發性記憶體模組220中的閒置的多個實體程式化單元組中的其中之一來作為第一實體程式化單元組以程式化所述寫入資料至第一實體程式化單元組的多個實體程式化單元中。為了方便說明,假設所述寫入資料欲被儲存(程式化)至P個邏輯單元,並且對應所述P個邏輯單元的P個實體程式化單元屬於第一實體程式化單元組。
接著,在步驟S22中,處理器211對所述第一實體程式化單元組執行第一寫入操作,以找尋N個程式化條件中的最佳化程式化條件。
具體來說,處理器211依序使用對應所述N個程式化條件的N個程式化脈衝電壓來依序程式化所述第一實體程式化單元組的多個實體程式化單元。每當一個實體程式化單元被程式化後,處理器211可對所述被程式化的實體程式化單元進行寫入驗證(經由施加驗證讀取電壓),以驗證所述被程式化的實體程式化單元是寫入成功或寫入失敗。
接著,反應於所述多個實體程式化單元中被程式化的一目標實體程式化單元被驗證為寫入成功,辨識在所述N個程式化脈衝電壓中的被施加至所述目標實體程式化單元的目標程式化脈衝電壓為所述最佳化程式化脈衝電壓,並且所述最佳化程式化脈衝電壓所對應的程式化條件為所述最佳化程式化條件。
圖3是根據本發明的一實施例所繪示的第一寫入操作的流程圖。圖5A、5B是根據本發明的一實施例所繪示的第一寫入操作的示意圖。請同時參照圖3與圖5A,在步驟S31中,處理器211選擇所述N個程式化條件中的第i個程式化條件。N、i為正整數。具體來說,廠商可預設多個程式化條件,其中所述N個程式化條件的每一個皆對應一程式化脈衝電壓的下列多個參數中的一或多者:(1)程式化脈衝電壓高度,用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的電壓值(如圖5A所繪示,對應程式化條件C1的程式化脈衝電壓V
C1的電壓值V1;對應程式化條件C2的程式化脈衝電壓V
C2的電壓值V2);以及(2)程式化脈衝電壓寬度,用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的時間(如圖5B所繪示,對應程式化條件C1的程式化脈衝電壓V
C1的持續時間(寬度)W1;對應程式化條件C2的程式化脈衝電壓V
C2的持續時間(寬度)W2)。所述程式化脈衝電壓可被施加至所述可複寫式非揮發性記憶體模組的一或多個字元線(亦稱,字元線程式化脈衝電壓)或一或多個位元線(亦稱,位元線程式化脈衝電壓)。也就是說,根據不同的程式化條件所施加的程式化脈衝電壓,其電壓值以及持續時間會相應地不同。應注意的是,本發明並不限定於上限所舉例的程式化條件的種類。本領域技術人員應可設計其他種類的程式化條件來影響所施加的程式化脈衝電壓的態樣。
接著,在步驟S32中,處理器211使用所述第i個程式化條件來寫入對應P個第一實體程式化單元中的第j個第一實體程式化單元的資料至所述第j個第一實體程式化單元中。j的初始值為1,並且P為大於N的正整數。步驟S32亦可稱為對應一實體程式化單元的程式化操作。
具體來說,對於N個程式化條件,處理器211會從N個程式化條件中的“第1個(i=1)”程式化條件開始來選擇,並且根據所選擇的程式化條件來調整所欲施加的程式化脈衝電壓的態樣(電壓值大小或持續時間(寬度)),以程式化P個第一實體程式化單元中的“第1個(j=1)” 第一實體程式化單元,進而嘗試將對應“第1個” 第一實體程式化單元的資料寫入至“第1個”第一實體程式化單元中。
相似地,當i被設定為2且j被設定為2時,處理器211會從N個程式化條件中的“第2個(j=1)”程式化條件開始來選擇,並且根據所選擇的程式化條件來調整所欲施加的程式化脈衝電壓的態樣,以程式化P個第一實體程式化單元中的“第2個(j=1)” 第一實體程式化單元,進而嘗試將對應“第2個” 第一實體程式化單元的資料寫入至“第2個” 第一實體程式化單元中。
如圖5A所繪示,舉例來說,假設第一實體程式化單元組具有6個(P=6)第一實體程式化單元P1~P6,並且共有3個(N=3)程式化條件C1~C3。
一開始(i=1, j=1),處理器211先選擇3個程式化條件中的第1個程式化條件C1(步驟(1.1)),並且在時間點T1.1根據第1個程式化條件C1來施加對應的程式化脈衝電壓V
C1至6個第一實體程式化單元中的第1個第一實體程式化單元P1(步驟(1.2))。在時間點T1.2,處理器211根據第1個程式化條件C1所指示的持續時間,停止所施加的程式化脈衝電壓V
C1。
請再回到圖3,在完成步驟S32後,接續至步驟S33,處理器211經由對所述第j個第一實體程式化單元執行第一寫入驗證,以判斷被寫入所述第j個第一實體程式化單元的所述資料是否寫入成功或寫入失敗。
反應於判定為寫入成功,處理器211執行步驟S34;反應於判定為寫入失敗,處理器211執行步驟S36。
具體來說,在完成施加一個程式化脈衝電壓至一個實體程式化單元後,處理器211會使用預設的驗證讀取電壓VR來讀取所述實體程式化單元,以確保所述實體程式化單元的臨界電壓值是否確實地經由所施加的程式化脈衝電壓而改變至超過預定電壓門檻值,進而可確保被程式化的所述實體程式化單元所被寫入的資料的位元值的正確性(亦稱,寫入驗證)。例如,假設對應所述實體程式化單元的記憶胞的臨界電壓值若被程式化至超過預定電壓門檻值。處理器211使用讀取電壓來讀取所述實體程式化單元的所述記憶胞時,可獲得為“0”的讀取位元值。在本實施例中,若判定所述實體程式化單元的臨界電壓值經由所施加的程式化脈衝電壓而改變至超過預定電壓門檻值,處理器211判定被寫入至所述實體程式化單元的資料為寫入成功。反之,為寫入失敗。
請參照圖5A,在完成施加程式化脈衝電壓V
C1後,在時間點T1.3,處理器211經由對所述第1個第一實體程式化單元P1執行第一寫入驗證,以判斷被寫入所述第1個第一實體程式化單元的所述資料是否寫入成功或寫入失敗。即,處理器211使用驗證讀取電壓VR來讀取第一實體程式化單元P1以驗證被寫入至第一實體程式化單元P1的資料為寫入成功或寫入失敗(亦可稱,使用驗證讀取電壓VR來讀取第一實體程式化單元P1以驗證第一實體程式化單元P1為寫入成功或寫入失敗)。在圖5A的例子中,處理器211判定第一實體程式化單元P1為寫入失敗(如,箭頭A51所示)。
接著,接續至步驟S36,處理器211將i加上1,並且執行步驟S37。也就是說,在步驟S36中,由於前次的程式化操作被判定為寫入失敗,處理器211會選擇下一個程式化條件,以準備根據所選擇的所述下一個程式化條件來執行下一次的程式化操作。
在步驟S37中,處理器211判斷j是否等於P。具體來說,在步驟S37中,處理器211會判定目前被程式化的第一實體程式化單元是否為所述P個第一實體程式化單元中的最後一個。
反應於判定j等於P,處理器211可知道目前被程式化的第一實體程式化單元為所述P個第一實體程式化單元中的最後一個(即,所述P個第一實體程式化單元中不具有尚未被程式化的第一實體程式化單元),並且接續至步驟S39;反應於判定j不等於P,處理器211可知道目前被程式化的第一實體程式化單元不為所述P個第一實體程式化單元中的最後一個(即,所述P個第一實體程式化單元中仍然具有尚未被程式化的第一實體程式化單元),並且接續至步驟S38。
在步驟S38中,處理器211將j加上1。即,在步驟S38中,處理器211會選擇下一個尚未被程式化的第一實體程式化單元來執行後續的程式化操作(步驟S32)。
若在步驟S37中,處理器211已經知道所述P個第一實體程式化單元中不具有尚未被程式化的第一實體程式化單元。在步驟S39中,處理器211將所述第i個程式化條件設定為所述最佳化程式化條件,並且完成所述第一寫入操作。也就是說,此時,處理器211會將所使用的程式化條件直接設定為最佳化程式化條件。
請參照圖5A,假設第一實體程式化單元P1被判定為寫入失敗(箭頭A51所示,步驟S33à寫入失敗)。此外,處理器211將i加上1,i成為2(步驟S36);處理器211判定j不等於P(1不等於6)(步驟S37);處理器211將j加上1,j成為2(步驟S38);處理器211根據更新後的i與j來執行步驟S32。如圖5A所示,於時間點T2.1(i等於2且j等於2),處理器211根據第2個程式化條件C2來施加對應的程式化脈衝電壓V
C2至6個第一實體程式化單元中的第2個第一實體程式化單元P2。接著,於時間點T2.3,處理器211使用驗證讀取電壓VR來對被程式化的第一實體程式化單元P2來執行第一寫入驗證。
假設在此例子中,處理器211判定第一實體程式化單元P2為寫入成功(如圖5A中的箭頭A52所示)。處理器211會執行步驟S34。在步驟S34中,處理器211將所述第2個(i等於2)程式化條件C2設定為所述最佳化程式化條件。應注意的是,由於經由程式化條件C2所程式化的第一實體程式化單元P2被驗證為寫入成功。因此,處理器211可知道程式化條件C2應為最適合於第一實體程式化單元P2所屬的第一實體程式化單元組的程式化條件。處理器211可另外記錄所述程式化條件C2為第一實體程式化單元組的最佳化程式化條件(如,記錄於最佳化程式化條件表中)。如此一來,若爾後還要對第一實體程式化單元組執行寫入指令時,處理器211可依據所記錄的對應的第一實體程式化單元組的最佳化程式化條件C2來執行對應第一實體程式化單元組的寫入指令。
接著,在步驟S35中,處理器211使用所述最佳化程式化條件來對所述P個第一實體程式化單元中的尚未被寫入的Q個第二實體程式化單元寫入對應的資料,進而完成所述第一寫入操作,其中被寫入對應的所述資料的每一個所述Q個第二實體程式化單元沒有被執行寫入驗證。
圖4是根據本發明的一實施例所繪示的圖3的步驟S35的流程圖。請參照圖4,步驟S35更可包括下列步驟(S41)~(S45)。更詳細來說,在所述步驟S41中,處理器211判斷所述P個第一實體程式化單元中是否具有尚未被寫入的所述Q個第二實體程式化單元。反應於判定所述P個第一實體程式化單元中不具有尚未被寫入的所述Q個第二實體程式化單元(步驟S41à否),處理器211直接判定完成所述第一寫入操作。反之,反應於判定所述P個第一實體程式化單元中具有尚未被寫入的所述Q個第二實體程式化單元(步驟S41à是)。流程接續至步驟S42。
在步驟S42中,處理器使用所述最佳化程式化條件來寫入對應所述Q個第二實體程式化單元中的第h個第二實體程式化單元的資料至所述第h個第二實體程式化單元中,並且執行步驟S43,其中h的初始值為1。在步驟S43中,處理器211判斷h是否等於Q,其中反應於判定h不等於Q(步驟S43à是),將h加上1(步驟S44),並且執行步驟S42,其中反應於判定h等於Q(步驟S43à是),流程接續至步驟S45,並且完成所述第一寫入操作。
請參照圖5A,舉例來說,所述6個第一實體程式化單元已經被程式化了2個實體程式化單元P1、P2,剩餘尚未被程式化的4個實體程式化單元(Q=6-2=4)P3~P6。處理器211會使用最佳化程式化條件來程式化剩餘的4個實體程式化單元P3~P6。如,在時間點T3.1,處理器211使用最佳化程式化條件C2(施加對應的程式化脈衝電壓V
C2)來程式化4個實體程式化單元P3~P6中的第1個第一實體程式化單元P3,並且將h加上1;在時間點T4.1,處理器211使用最佳化程式化條件C2(施加對應的程式化脈衝電壓V
C2)來程式化4個實體程式化單元P3~P6中的第2個第一實體程式化單元P4,並且將h加上1;在時間點T5.1,處理器211使用最佳化程式化條件C2(施加對應的程式化脈衝電壓V
C2)來程式化4個實體程式化單元P3~P6中的第3個第一實體程式化單元P5,並且將h加上1;在時間點T6.1,處理器211使用最佳化程式化條件C2(施加對應的程式化脈衝電壓V
C2)來程式化4個實體程式化單元P3~P6中的第4個第一實體程式化單元P6(此時,h等於Q)。在時間點T7.1,處理器211判定h等於Q並且完成所述第一寫入操作。
值得一提的是,傳統上在利用驗證讀取電壓來執行對應一程式化操作的寫入驗證時,處理器211需執行「放電(Discharge)」操作,以將剛被程式化的實體程式化單元的電位降低,以便於施加具有較低電壓值的驗證讀取電壓至所述實體程式化單元。例如,在圖5A的例子中,處理器211於時間點T1.2、T1.3之間會執行一個放電操作;於時間點T2.2、T2.3之間會執行一個放電操作。由於所述放電操作需要耗費額外的處理時間。因此,相較於在時間點T1.1、T1.2所分別執行的程式化操作,在時間點T3.1、T4.1、T5.1、T6.1時所分別執行的程式化操作會因為不需要執行放電操作與寫入驗證而耗費了較短的處理時間,進而提高了第一寫入操作的處理效率。
應注意的是,在本實施例中,在執行步驟S36之前,處理器211更判斷i是否等於N。反應於判定i等於N,處理器211執行步驟S39;反應於判定i不等於,處理器211執行步驟S36。也就是說,在判定使用到N個程式化條件的最後一個程式化條件所程式化的實體程式化單元為寫入失敗時,處理器211可知道已經沒有下一個程式化條件可以被處理器211所使用。基此,處理器211會直接將所述第N個程式化條件設定為所述最佳化程式化條件,並且完成所述第一寫入操作(步驟S39)。以下利用圖5B來說明。
請參照圖5B,舉例來說,假設第一實體程式化單元組具有6個(P=6)第一實體程式化單元P1~P6,並且共有3個(N=3)程式化條件C1~C3。不同的程式化條件C1~C3對應不同寬度W1~W3的程式化脈衝電壓V
C1~V
C3。
於時間點T1.1,處理器211使用第1個程式化條件C1來程式化第1個第一實體程式化單元P1;於時間點T1.3,處理器211對第一實體程式化單元P1執行第一寫入驗證,並且獲得寫入失敗的驗證結果(如箭頭A53所示);於時間點T2.1,處理器211使用第2個程式化條件C2來程式化第2個第一實體程式化單元P2;於時間點T2.3,處理器211對第一實體程式化單元P2執行第一寫入驗證,並且獲得寫入失敗的驗證結果(如箭頭A54所示);於時間點T3.1,處理器211使用第3個程式化條件C3來程式化第3個第一實體程式化單元P3;於時間點T3.3,處理器211對第一實體程式化單元P3執行第一寫入驗證,並且獲得寫入失敗的驗證結果(如箭頭A55所示)。此時,處理器211更判定第3個程式化條件為最後一個程式化條件(i=N=3),並且處理器211會對應地將程式化條件C3設定為最佳化程式化條件。
接著,處理器211會使用最佳化程式化條件C3來程式化剩餘的尚未被程式化的3個實體程式化單元(Q=6-3=3)P4~P6。如,在時間點T4.1,處理器211使用最佳化程式化條件C3來程式化第一實體程式化單元P4;在時間點T5.1,處理器211使用最佳化程式化條件C3來程式化第一實體程式化單元P5;在時間點T6.1,處理器211使用最佳化程式化條件C3來程式化第一實體程式化單元P6。
值得一提的是,步驟S32更可包括「檢驗欲被寫入的所述資料是否皆為1」的程序。所述程序包括下列步驟:在寫入對應所述第j個第一實體程式化單元的資料至所述第j個第一實體程式化單元中之前,判斷對應所述第j個第一實體程式化單元的所述資料的多個位元值是否皆為1;反應於判定對應所述第j個第一實體程式化單元的所述資料的所述多個位元值皆為1,執行步驟S37;以及反應於判定對應所述第j個第一實體程式化單元的所述資料的所述多個位元值不皆為1,使用對應所述第i個程式化條件的程式化電壓來寫入對應所述第j個第一實體程式化單元的所述資料至所述第j個第一實體程式化單元中。
具體來說,在寫入對應所述第j個第一實體程式化單元的資料至所述第j個第一實體程式化單元中之前,處理器211會檢驗所述資料中的位元值是否皆為“1”。若是,則處理器211會不程式化所述資料至對應所述第j個第一實體程式化單元中(因為所述第j個第一實體程式化單元是空白狀態,並且對應的預設的讀取位元值為“1”);若否,處理器211才繼續執行對所述第j個第一實體程式化單元的程式化操作,以寫入所述資料。
請回到圖2,完成步驟S22後,在步驟S23中,處理器211根據所述最佳化程式化條件,使用對應所述最佳化程式化條件的一最佳化程式化脈衝來對所述第一實體程式化單元組執行第二寫入操作,以完成所述寫入指令。
具體來說,步驟S23包括下列步驟:處理器211依序驗證所述第一實體程式化單元組的多個實體程式化單元是否為寫入成功或寫入失敗;使用所述最佳化程式化脈衝電壓來程式化被判定為寫入失敗的所述多個實體程式化單元中的一第二目標實體程式化單元,並且驗證已被所述最佳化程式化脈衝電壓程式化的所述第二目標實體程式化單元是否為寫入成功或寫入失敗;以及反應於所述第一實體程式化單元組的所述多個實體程式化單元皆被驗證為寫入成功,完成所述第二寫入操作,並且回應所述寫入指令已完成。以下利用圖6、圖7來說明。
圖6是根據本發明的一實施例所繪示的第二寫入操作的流程圖。圖7是根據本發明的一實施例所繪示的第二寫入操作的示意圖。請參照圖6,在步驟S61中,處理器211對所述P個第一實體程式化單元中的第k個第一實體程式化單元執行第二寫入驗證,以判斷被寫入所述第k個第一實體程式化單元的資料是否寫入成功或寫入失敗。k的初始值為1,並且k為小於或等於P的正整數。反應於判定為寫入失敗(步驟S61à寫入失敗),處理器211執行步驟S64;反應於判定為寫入成功(步驟S61à寫入成功),處理器211執行步驟S62。
在步驟S62中,處理器211會判斷k是否等於P。即,處理器211會判斷目前被執行第二寫入驗證的第一實體程式化單元是否是P個實體程式化單元中的最後一個。若是(步驟S62à是),接續至步驟S65;若否(步驟S62à否),接續至步驟S63。
在步驟S63中,處理器211將k加上1,並且接續執行步驟S61。即,處理器211會選擇下一個第一實體程式化單元來繼續執行第二寫入驗證。
在步驟S64中,處理器211使用所述最佳化程式化條件來寫入對應所述第k個第一實體程式化單元的所述資料至所述第k個第一實體程式化單元中,並且流程會接續至步驟S61。也就是說,當處理器211判定第k個第一實體程式化單元為寫入失敗,處理器211會使用對應最佳化程式化條件的最佳化程式化脈衝電壓來再次程式化所述第k個第一實體程式化單元(步驟S64),並再次對所述第k個第一實體程式化單元執行第二寫入驗證(步驟S61)。
具體來說,經由執行步驟S22而獲得最佳化程式化條件後,處理器211可接著執行第二寫入操作,以對第一實體程式化單元組中的所有的第一實體程式化單元執行寫入驗證(亦稱,第二寫入驗證),並且對所有沒有通過寫入驗證的第一實體程式化單元執行一或多次的程式化操作直到所有沒通過寫入驗證的第一實體程式化單元皆通過寫入驗證為止,進而完成對應第一實體程式化單元組的寫入指令。
例如,請參照圖7,假設接續圖5A的例子,處理器211已獲得最佳化程式化條件C2,並且對第一實體程式化單元組(包括六個第一實體程式化單元P1~P6)執行第二寫入操作中的步驟S61。
首先,在時間點T1.1,處理器211經由施加驗證讀取電壓VR對第1個(k=1)第一實體程式化單元P1執行第二寫入驗證。假設如箭頭A71所示,經由所述第二寫入驗證,處理器211判定所述第1個(k=1)第一實體程式化單元P1為寫入失敗(步驟S61à寫入失敗)。於時間點T1.2,處理器211使用最佳化程式化條件C2(經由施加對應的最佳化程式化脈衝電壓V
C2)來程式化第一實體程式化單元P1(步驟S64)。接著,於時間點T1.4,處理器211再次對第一實體程式化單元P1執行第二寫入驗證。
假設如箭頭A72所示,經由所述第二寫入驗證,處理器211判定所述第一實體程式化單元P1為寫入成功(步驟S61à寫入成功)。接著,於時間點T2.1,處理器211會選擇第2個(k=2)第一實體程式化單元P2來執行第二寫入驗證(步驟S61)。
假設如箭頭A73所示,經由所述第二寫入驗證,處理器211判定所述第一實體程式化單元P2為寫入失敗(步驟S61à寫入失敗)。於時間點T2.2,處理器211使用最佳化程式化條件C2(經由施加對應的最佳化程式化脈衝電壓V
C2)來程式化第一實體程式化單元P2(步驟S64)。接著,於時間點T2.4,處理器211再次對第一實體程式化單元P2執行第二寫入驗證。
假設如箭頭A74所示,經由所述第二寫入驗證,處理器211判定所述第一實體程式化單元P2為寫入成功(步驟S61à寫入成功)。接著,於時間點T3.1,處理器211會選擇第3個(k=3)第一實體程式化單元P3來執行第二寫入驗證(步驟S61)。
以此類推,處理器211會持續驗證剩餘的第一實體程式化單元(如箭頭A75~A78所示),直到所有的第一實體程式化單元皆被驗證為寫入成功為止。即,在時間點T7.1,處理器211判定第二寫入操作完成。在完成所述第二寫入操作後,處理器211也判定對應所述第一實體程式化單元組的寫入指令也被完成。
應注意的是,在本實施例中,第二寫入操作的寫入第二寫入驗證的驗證讀取電壓的電壓值可小於或等於第一寫入操作的第一寫入驗證的驗證讀取電壓的電壓值。
值得一提的是,請同時參照圖5A與圖7,於第二寫入操作中,由於第一實體程式化單元P3~P6已經有效率地被最佳化程式化脈衝電壓所程式化(因不需執行放電操作且最佳化程式化脈衝電壓為較適應第一實體程式化組的物理特性的程式化脈衝電壓)。因此,在對第一實體程式化單元P3~P6執行第二寫入驗證時,第一實體程式化單元P3~P6有較高的機率會直接被驗證為寫入成功,並且不需要再次地被最佳化程式化脈衝電壓所程式化。如此一來,便節省了因被驗證為寫入失敗而再次施加最佳化程式化脈衝電壓所耗費的處理時間,進而更提高了執行寫入指令的整體速度。
綜上所述,本發明的實施例所提供的資料寫入方法與儲存控制器,可藉由第一寫入操作來找尋用以程式化一實體程式化單元組的多個程式化條件中的最佳化程式化條件,並且根據所述最佳化程式化條件來程式化所述實體程式化單元組中的多個實體程式化單元。如此一來,可動態地找到適用於不同物理狀態的實體程式化單元組,進而增進了資料寫入操作的準確性與效率。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
10:主機系統
20:儲存裝置
110、211:處理器
120:主機記憶體
130:資料傳輸介面電路
210:儲存控制器
212:資料管理電路
213:記憶體介面控制電路
220:可複寫式非揮發性記憶體模組
221(1)~221(M):實體程式化單元組
230:連接介面電路
S21、S22、S23:資料寫入方法的流程步驟
S31、S32、S33、S34、S35、S36、S37、S38、S39:第一寫入操作的流程步驟
S41、S42、S43、S44、S45:步驟S35的流程步驟
S61、S62、S63、S64、S65:第一寫入操作的流程步驟
VC1、VC2、VC3:程式化脈衝電壓
T1.1~T7.1:時間點
VR:驗證讀取電壓
P1~P6:實體程式化單元
V1、V2:電壓值
W1、W2、W3:寬度/持續時間
A51~A55、A71~A78:箭頭
圖1是根據本發明的一實施例所繪示的儲存裝置與主機系統的方塊示意圖。
圖2是根據本發明的一實施例所繪示的資料寫入方法的流程圖。
圖3是根據本發明的一實施例所繪示的第一寫入操作的流程圖。
圖4是根據本發明的一實施例所繪示的圖3的步驟S35的流程圖。
圖5A、5B是根據本發明的一實施例所繪示的第一寫入操作的示意圖。
圖6是根據本發明的一實施例所繪示的第二寫入操作的流程圖。
圖7是根據本發明的一實施例所繪示的第二寫入操作的示意圖。
S21、S22、S23:資料寫入方法的流程步驟
Claims (14)
- 一種資料寫入方法,適用於配置有一可複寫式非揮發性記憶體模組的一儲存裝置,其中所述可複寫式非揮發性記憶體模組具有多個實體程式化單元,所述方法包括:執行一寫入指令,其中所述寫入指令用以指示程式化資料至所述可複寫式非揮發性記憶體模組中的一第一實體程式化單元組;對所述第一實體程式化單元組執行一第一寫入操作,以找尋N個程式化條件中的一最佳化程式化條件,其中所述N個程式化條件的每一個皆對應一程式化脈衝電壓的下列多個參數中的一或多者:程式化脈衝電壓高度,用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的電壓值;程式化脈衝電壓寬度,用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的時間,其中所述程式化脈衝電壓可被施加至所述可複寫式非揮發性記憶體模組的一或多個字元線、一或多個位元線、井或源極線;程式化脈衝電壓次數,用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的總次數;以及根據所述最佳化程式化條件,使用對應所述最佳化程式化條件的一最佳化程式化脈衝電壓來對所述第一實體程式化單元組執行一第二寫入操作,以完成所述寫入指令。
- 如申請專利範圍第1項所述的資料寫入方法,其中所述對所述第一實體程式化單元組執行所述第一寫入操作,以找尋所述N個程式化條件中的所述最佳化程式化條件的步驟包括:依序使用對應所述N個程式化條件的N個程式化脈衝電壓來依序程式化所述第一實體程式化單元組的多個實體程式化單元;以及反應於所述多個實體程式化單元中被程式化的一目標實體程式化單元被驗證為寫入成功,辨識在所述N個程式化脈衝電壓中的被施加至所述目標實體程式化單元的目標程式化脈衝電壓為所述最佳化程式化脈衝電壓,並且所述最佳化程式化脈衝電壓所對應的程式化條件為所述最佳化程式化條件。
- 如申請專利範圍第2項所述的資料寫入方法,其中所述第一實體程式化單元組包括P個第一實體程式化單元,其中所述第一寫入操作包括下列步驟:選擇所述N個程式化條件中的第i個程式化條件,其中i的初始值為1,並且N為正整數;使用所述第i個程式化條件來寫入對應所述P個第一實體程式化單元中的第j個第一實體程式化單元的資料至所述第j個第一實體程式化單元中,其中j的初始值為1,並且P為大於N的正整數;經由對所述第j個第一實體程式化單元執行第一寫入驗證,以判斷被寫入所述第j個第一實體程式化單元的所述資料是否寫 入成功或寫入失敗,其中反應於判定被寫入所述第j個第一實體程式化單元的所述資料為寫入成功,將所述第i個程式化條件設定為最佳化程式化條件,其中反應於判定被寫入所述第j個第一實體程式化單元的所述資料為寫入失敗且i等於N,將所述第i個程式化條件設定為最佳化程式化條件,其中反應於判定被寫入所述第j個第一實體程式化單元的所述資料為寫入失敗且i不等於N,將i加上1,並且判斷j是否等於P,其中反應於判定j不等於P,將j加上1,並且再次執行所述使用所述第i個程式化條件來寫入對應所述P個第一實體程式化單元中的所述第j個第一實體程式化單元的所述資料至所述第j個第一實體程式化單元中的步驟,其中反應於判定j等於P,將所述第i個程式化條件設定為所述最佳化程式化條件,並且完成所述第一寫入操作;反應於所述第i個程式化條件設定為最佳化程式化條件,使用所述最佳化程式化條件來對所述P個第一實體程式化單元中的尚未被寫入的Q個第二實體程式化單元寫入對應的資料,以完成所述第一寫入操作,其中被寫入對應的所述資料的每一個所述Q個第二實體程式化單元沒有被執行寫入驗證,其中Q等於P-j。
- 如申請專利範圍第3項所述的資料寫入方法,其中所述使用所述第i個程式化條件來寫入對應所述P個第一實體程式化單元中的所述第j個第一實體程式化單元的所述資料至所述第j個第一實體程式化單元中的步驟包括:在寫入對應所述第j個第一實體程式化單元的所述資料至所述第j個第一實體程式化單元中之前,判斷對應所述第j個第一實體程式化單元的所述資料的多個位元值是否皆為1;反應於判定對應所述第j個第一實體程式化單元的所述資料的所述多個位元值皆為1,執行所述判斷j是否等於P的步驟;以及反應於判定對應所述第j個第一實體程式化單元的所述資料的所述多個位元值不皆為1,使用對應所述第i個程式化條件的程式化電壓來寫入對應所述第j個第一實體程式化單元的所述資料至所述第j個第一實體程式化單元中。
- 如申請專利範圍第3項所述的資料寫入方法,其中所述使用所述最佳化程式化條件來對所述P個第一實體程式化單元中的尚未被寫入的所述Q個第二實體程式化單元寫入對應的所述資料,以完成所述第一寫入操作的步驟包括:若所述P個第一實體程式化單元中不具有尚未被寫入的所述Q個第二實體程式化單元,完成所述第一寫入操作;以及若所述P個第一實體程式化單元中具有尚未被寫入的所述Q個第二實體程式化單元, 使用所述最佳化程式化條件來寫入對應所述Q個第二實體程式化單元中的第h個第二實體程式化單元的資料至所述第h個第二實體程式化單元中,並且判斷h是否等於Q,其中h的初始值為1,其中反應於判定h不等於Q,將h加上1,並且再次執行所述使用所述最佳化程式化條件來寫入對應所述Q個第二實體程式化單元中的所述第h個第二實體程式化單元的所述資料至所述第h個第二實體程式化單元中的步驟,其中反應於判定h等於Q,完成所述第一寫入操作。
- 如申請專利範圍第1項所述的資料寫入方法,其中所述根據所述最佳化程式化條件,使用對應所述最佳化程式化條件的所述最佳化程式化脈衝電壓來對所述第一實體程式化單元組執行所述第二寫入操作,以完成所述寫入指令的步驟包括:依序驗證所述第一實體程式化單元組的多個實體程式化單元是否為寫入成功或寫入失敗;使用所述最佳化程式化脈衝電壓來程式化被判定為寫入失敗的所述多個實體程式化單元中的一第二目標實體程式化單元,並且驗證已被所述最佳化程式化脈衝電壓程式化的所述第二目標實體程式化單元是否為寫入成功或寫入失敗;以及反應於所述第一實體程式化單元組的所述多個實體程式化單元皆被驗證為寫入成功,完成所述第二寫入操作,並且回應所述寫入指令已完成。
- 如申請專利範圍第6項所述的資料寫入方法,其中所述第二寫入操作包括下列步驟:對所述P個第一實體程式化單元中的第k個第一實體程式化單元執行第二寫入驗證,以判斷被寫入所述第k個第一實體程式化單元的資料是否寫入成功或寫入失敗,其中k的初始值為1,並且k為小於或等於P的正整數;反應於判定被寫入所述第k個第一實體程式化單元的所述資料為寫入成功,判斷k是否等於P,其中反應於判定k不等於P,將k加上1,並且再次執行所述對所述P個第一實體程式化單元中的所述第k個第一實體程式化單元執行所述第二寫入驗證,以判斷被寫入所述第k個第一實體程式化單元的所述資料是否寫入成功或寫入失敗的步驟,其中反應於判定k等於P,完成所述第二寫入操作;以及反應於判定被寫入所述第k個第一實體程式化單元的所述資料為寫入失敗,使用所述最佳化程式化條件來寫入對應所述第k個第一實體程式化單元的所述資料至所述第k個第一實體程式化單元中,並且再次執行對所述P個第一實體程式化單元中的所述第k個第一實體程式化單元執行所述第二寫入驗證,以判斷被寫入所述第k個第一實體程式化單元的所述資料是否寫入成功或寫入失敗的步驟。
- 一種儲存控制器,用於控制配置有一可複寫式非揮發性記憶體模組的一儲存裝置,其中所述可複寫式非揮發性記憶體模組具有多個實體程式化單元,所述儲存控制器包括:一連接介面電路,用以電性連接至一主機系統;一記憶體介面控制電路,用以電性連接至所述可複寫式非揮發性記憶體模組,一處理器,電性連接至所述連接介面電路、所述記憶體介面控制電路,其中該處理器載入且執行多個程式碼,以實現一資料寫入方法,該資料寫入方法包括下列步驟:執行一寫入指令,其中所述寫入指令用以指示程式化一資料至所述可複寫式非揮發性記憶體模組中的一第一實體程式化單元組;對所述第一實體程式化單元組執行一第一寫入操作,以找尋N個程式化條件中的一最佳化程式化條件,其中所述N個程式化條件的每一個皆對應一程式化脈衝電壓的下列多個參數中的一或多者:程式化脈衝電壓高度,用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的電壓值;程式化脈衝電壓寬度,用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的時間,其中所述程式化脈衝電壓可被施加至所述可複寫式非揮發性記憶體模組的一或多 個字元線、一或多個位元線、井或源極線;程式化脈衝電壓次數,用以指示施加所述程式化脈衝電壓至所述可複寫式非揮發性記憶體模組的總次數;以及根據所述最佳化程式化條件,使用對應所述最佳化程式化條件的一最佳化程式化脈衝電壓來對所述第一實體程式化單元組執行一第二寫入操作,以完成所述寫入指令。
- 如申請專利範圍第8項所述的儲存控制器,其中所述對所述第一實體程式化單元組執行所述第一寫入操作,以找尋所述N個程式化條件中的所述最佳化程式化條件的步驟包括:依序使用對應所述N個程式化條件的N個程式化脈衝電壓來依序程式化所述第一實體程式化單元組的多個實體程式化單元;以及反應於所述多個實體程式化單元中被程式化的一目標實體程式化單元被驗證為寫入成功,辨識在所述N個程式化脈衝電壓中的被施加至所述目標實體程式化單元的目標程式化脈衝電壓為所述最佳化程式化脈衝電壓,並且所述最佳化程式化脈衝電壓所對應的程式化條件為所述最佳化程式化條件。
- 如申請專利範圍第9項所述的儲存控制器,其中所述第一實體程式化單元組包括P個第一實體程式化單元,其中所述第一寫入操作包括下列步驟:選擇所述N個程式化條件中的第i個程式化條件,其中i的 初始值為1,並且N為正整數;使用所述第i個程式化條件來寫入對應所述P個第一實體程式化單元中的第j個第一實體程式化單元的資料至所述第j個第一實體程式化單元中,其中j的初始值為1,並且P為大於N的正整數;經由對所述第j個第一實體程式化單元執行第一寫入驗證,以判斷被寫入所述第j個第一實體程式化單元的所述資料是否寫入成功或寫入失敗,其中反應於判定被寫入所述第j個第一實體程式化單元的所述資料為寫入成功,所述儲存控制器將所述第i個程式化條件設定為最佳化程式化條件,其中反應於判定被寫入所述第j個第一實體程式化單元的所述資料為寫入失敗且i等於N,所述儲存控制器將所述第i個程式化條件設定為最佳化程式化條件,其中反應於判定被寫入所述第j個第一實體程式化單元的所述資料為寫入失敗且i不等於N,所述儲存控制器將i加上1,並且判斷j是否等於P,其中反應於判定j不等於P,將j加上1,並且再次執行所述使用所述第i個程式化條件來寫入對應所述P個第一實體程式化單元中的所述第j個第一實體程式化單元的所述資料至所述第j個第一實體程式化單元中的步驟,其中反應於判定j等於P,將所述第i個程式化條件設定 為所述最佳化程式化條件,並且完成所述第一寫入操作;反應於所述第i個程式化條件設定為最佳化程式化條件,使用所述最佳化程式化條件來對所述P個第一實體程式化單元中的尚未被寫入的Q個第二實體程式化單元寫入對應的資料,以完成所述第一寫入操作,其中被寫入對應的所述資料的每一個所述Q個第二實體程式化單元沒有被執行寫入驗證,其中Q等於P-j。
- 如申請專利範圍第10項所述的儲存控制器,其中所述使用所述第i個程式化條件來寫入對應所述P個第一實體程式化單元中的所述第j個第一實體程式化單元的所述資料至所述第j個第一實體程式化單元中的步驟包括:在寫入對應所述第j個第一實體程式化單元的所述資料至所述第j個第一實體程式化單元中之前,判斷對應所述第j個第一實體程式化單元的所述資料的多個位元值是否皆為1;反應於判定對應所述第j個第一實體程式化單元的所述資料的所述多個位元值皆為1,執行所述判斷j是否等於P的步驟;以及反應於判定對應所述第j個第一實體程式化單元的所述資料的所述多個位元值不皆為1,使用對應所述第i個程式化條件的程式化電壓來寫入對應所述第j個第一實體程式化單元的所述資料至所述第j個第一實體程式化單元中。
- 如申請專利範圍第10項所述的儲存控制器,其中所述使用所述最佳化程式化條件來對所述P個第一實體程式化單元中 的尚未被寫入的所述Q個第二實體程式化單元寫入對應的所述資料,以完成所述第一寫入操作的步驟包括:若所述P個第一實體程式化單元中不具有尚未被寫入的所述Q個第二實體程式化單元,完成所述第一寫入操作;以及若所述P個第一實體程式化單元中具有尚未被寫入的所述Q個第二實體程式化單元,使用所述最佳化程式化條件來寫入對應所述Q個第二實體程式化單元中的第h個第二實體程式化單元的資料至所述第h個第二實體程式化單元中,並且判斷h是否等於Q,其中h的初始值為1,其中反應於判定h不等於Q,將h加上1,並且再次執行所述使用所述最佳化程式化條件來寫入對應所述Q個第二實體程式化單元中的所述第h個第二實體程式化單元的所述資料至所述第h個第二實體程式化單元中的步驟,其中反應於判定h等於Q,完成所述第一寫入操作。
- 如申請專利範圍第8項所述的儲存控制器,其中所述根據所述最佳化程式化條件,使用對應所述最佳化程式化條件的所述最佳化程式化脈衝電壓來對所述第一實體程式化單元組執行所述第二寫入操作,以完成所述寫入指令的步驟包括:依序驗證所述第一實體程式化單元組的多個實體程式化單元是否為寫入成功或寫入失敗;使用所述最佳化程式化脈衝電壓來程式化被判定為寫入失敗 的所述多個實體程式化單元中的一第二目標實體程式化單元,並且驗證已被所述最佳化程式化脈衝電壓程式化的所述第二目標實體程式化單元是否為寫入成功或寫入失敗;以及反應於所述第一實體程式化單元組的所述多個實體程式化單元皆被驗證為寫入成功,完成所述第二寫入操作,並且回應所述寫入指令已完成。
- 如申請專利範圍第13項所述的儲存控制器,其中所述第二寫入操作包括下列步驟:對所述P個第一實體程式化單元中的第k個第一實體程式化單元執行第二寫入驗證,以判斷被寫入所述第k個第一實體程式化單元的資料是否寫入成功或寫入失敗,其中k的初始值為1,並且k為小於或等於P的正整數;反應於判定被寫入所述第k個第一實體程式化單元的所述資料為寫入成功,判斷k是否等於P,其中反應於判定k不等於P,將k加上1,並且再次執行所述對所述P個第一實體程式化單元中的所述第k個第一實體程式化單元執行所述第二寫入驗證,以判斷被寫入所述第k個第一實體程式化單元的所述資料是否寫入成功或寫入失敗的步驟,其中反應於判定k等於P,完成所述第二寫入操作;以及反應於判定被寫入所述第k個第一實體程式化單元的所述資料為寫入失敗,使用所述最佳化程式化條件來寫入對應所述第k個第一實體程式化單元的所述資料至所述第k個第一實體程式化 單元中,並且再次執行對所述P個第一實體程式化單元中的所述第k個第一實體程式化單元執行所述第二寫入驗證,以判斷被寫入所述第k個第一實體程式化單元的所述資料是否寫入成功或寫入失敗的步驟。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108128491A TWI707362B (zh) | 2019-08-12 | 2019-08-12 | 資料寫入方法和儲存控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108128491A TWI707362B (zh) | 2019-08-12 | 2019-08-12 | 資料寫入方法和儲存控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI707362B true TWI707362B (zh) | 2020-10-11 |
TW202107461A TW202107461A (zh) | 2021-02-16 |
Family
ID=74091729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108128491A TWI707362B (zh) | 2019-08-12 | 2019-08-12 | 資料寫入方法和儲存控制器 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI707362B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI808573B (zh) * | 2020-12-22 | 2023-07-11 | 日商鎧俠股份有限公司 | 基於實體裝置參數的非揮發性記憶體裝置程式設計參數的產生 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003052766A1 (en) | 2001-12-18 | 2003-06-26 | Sandisk Corporation | Method and system for programming and inhibiting multi-level, non-volatile memory cells |
US20030151950A1 (en) * | 2002-02-14 | 2003-08-14 | Mitsubishi Denki Kabushiki Kaisha | Non-volatile semiconductor memory device |
US20180166147A1 (en) * | 2016-12-08 | 2018-06-14 | Winbond Electronics Corp. | Semiconductor device and adjustment method thereof |
US20190180831A1 (en) * | 2017-12-08 | 2019-06-13 | Sandisk Technologies Llc | Systems and methods for high-performance write operations |
-
2019
- 2019-08-12 TW TW108128491A patent/TWI707362B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003052766A1 (en) | 2001-12-18 | 2003-06-26 | Sandisk Corporation | Method and system for programming and inhibiting multi-level, non-volatile memory cells |
US20030151950A1 (en) * | 2002-02-14 | 2003-08-14 | Mitsubishi Denki Kabushiki Kaisha | Non-volatile semiconductor memory device |
US20180166147A1 (en) * | 2016-12-08 | 2018-06-14 | Winbond Electronics Corp. | Semiconductor device and adjustment method thereof |
US20190180831A1 (en) * | 2017-12-08 | 2019-06-13 | Sandisk Technologies Llc | Systems and methods for high-performance write operations |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI808573B (zh) * | 2020-12-22 | 2023-07-11 | 日商鎧俠股份有限公司 | 基於實體裝置參數的非揮發性記憶體裝置程式設計參數的產生 |
US11923025B2 (en) | 2020-12-22 | 2024-03-05 | Kioxia Corporation | Generation of programming parameters for non-volatile memory device based on physical device parameters |
Also Published As
Publication number | Publication date |
---|---|
TW202107461A (zh) | 2021-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8812784B2 (en) | Command executing method, memory controller and memory storage apparatus | |
US9183143B2 (en) | Memory device that specifies a size of a segment of write data | |
TWI661299B (zh) | 記憶體管理方法以及儲存控制器 | |
US11126369B1 (en) | Data storage with improved suspend resume performance | |
TWI650757B (zh) | 解碼方法以及儲存控制器 | |
US10748599B1 (en) | Data reading method, storage controller and storage device background of the disclosure | |
US20140380129A1 (en) | Memory system and method of reading data thereof | |
US10424383B1 (en) | Decoding method and storage controller | |
US8352673B2 (en) | Data writing method for a flash memory, and flash memory controller and flash memory storage system using the same | |
TW202025165A (zh) | 資料讀取方法、儲存控制器與儲存裝置 | |
US10803973B2 (en) | Memory management method and storage controller | |
TW202036570A (zh) | 資料讀取方法、儲存控制器與儲存裝置 | |
US20200234786A1 (en) | Data reading method, storage controller and storage device | |
CN107958687B (zh) | 存储器编程方法、存储器控制电路单元及其存储装置 | |
CN111258505B (zh) | 快闪存储器的数据合并方法、控制电路单元与存储装置 | |
CN111078146B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
TW202314525A (zh) | 記憶體輪詢方法、記憶體儲存裝置及記憶體控制電路單元 | |
US9213597B2 (en) | Memory storage device, memory controller thereof, and method for programming data thereof | |
TWI707362B (zh) | 資料寫入方法和儲存控制器 | |
TWI613660B (zh) | 記憶體程式化方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW202209106A (zh) | 用來進行資料儲存管理以提升資料可靠度之方法、記憶裝置及其控制器以及電子裝置 | |
TWI605457B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
TW201918891A (zh) | 用來控制一資料儲存裝置的運作之方法以及資料儲存裝置及其控制器 | |
CN117636967B (zh) | 存储器控制方法、存储器存储装置及存储器控制电路单元 | |
CN117632042B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 |