TWI665680B - 資料寫入方法及使用其的記憶體儲存裝置 - Google Patents
資料寫入方法及使用其的記憶體儲存裝置 Download PDFInfo
- Publication number
- TWI665680B TWI665680B TW107126688A TW107126688A TWI665680B TW I665680 B TWI665680 B TW I665680B TW 107126688 A TW107126688 A TW 107126688A TW 107126688 A TW107126688 A TW 107126688A TW I665680 B TWI665680 B TW I665680B
- Authority
- TW
- Taiwan
- Prior art keywords
- codeword
- data
- writing
- write
- memory array
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- 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/1048—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 using arrangements adapted for a specific error detection or correction feature
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一種資料寫入方法及記憶體儲存裝置。資料寫入方法包括:對資料進行編碼以產生碼字;根據第一寫入條件將碼字寫入到記憶體陣列中;及執行驗證操作。執行驗證操作的步驟包括:從記憶體陣列讀取碼字;將所讀取的碼字與所述碼字進行比較並獲得所讀取的碼字的錯誤位元數目;將所讀取的碼字解碼以產生經解碼資料;將經解碼資料與所述資料進行比較;及如果相同,則將所讀取的碼字的錯誤位元數目與通過閾值進行比較。如果所讀取的碼字的錯誤位元數目大於通過閾值,則根據第二寫入條件將所述碼字寫入到記憶體陣列中,所述第二寫入條件不同於第一寫入條件。
Description
本發明涉及一種記憶體儲存裝置,且更具體來說涉及一種資料寫入方法及一種使用所述資料寫入方法的記憶體儲存裝置。
一般來說,將寫入到可重寫非揮發性記憶體(non-volatile memory,NVM)的資料可根據錯誤修正碼(error correcting code,ECC)來進行編碼。由於記憶體單元的缺陷或關於寫入經編碼資料方面的其他影響因素,經編碼資料可能無法被正確地寫入到NVM中。為確保經編碼資料在被寫入到NVM中之後的有效性,可再次讀取被寫入NVM中的經編碼資料以進行驗證。如果所讀取的經編碼資料中存在一個或多個錯誤位元,則可再次寫入原始的經編碼資料,直到通過驗證。
當存在卡死位元(stuck bit)時,經編碼資料可能被多次地寫入且因此造成較長的寫入時間。在一些情形中,當被多次地施加寫入電壓時,正確位元可能翻轉或反轉而變為錯誤位元。此外,位的剩餘壽命可能與所述位的寫入次數呈負相關。因此,如何提供高效的寫入方案來改善寫入時間及功率、以及降低施加在記憶體單元上的不必要的寫入電壓,以提高可靠性是所屬領域中的技術人員所面臨的主要課題之一。
有鑑於此,本發明涉及一種資料寫入方法及一種使用所述資料寫入方法的記憶體儲存裝置。通過採用所述資料寫入方法,平均寫入時間可減少,因而系統效率可提高。
本發明的示例性實施例提供一種用於寫入資料的資料寫入方法。所述資料寫入方法適合於採用錯誤修正碼方案的記憶體控制器且包括:對所述資料進行編碼以產生碼字;根據第一寫入條件將所述碼字寫入到記憶體陣列中;以及執行驗證操作。所述執行所述驗證操作的步驟包括:從所述記憶體陣列讀取所述碼字;將所讀取的碼字與所述碼字進行比較並獲得所述所讀取的碼字的錯誤位元數目;由錯誤修正碼解碼器將所述所讀取的碼字解碼以產生經解碼資料;將所述經解碼資料與所述資料進行比較;以及如果所述經解碼資料與所述資料相同,則將所述所讀取的碼字的所述錯誤位元數目與通過閾值進行比較。如果所述所讀取的碼字的所述錯誤位元數目大於所述通過閾值,則所述資料寫入方法進一步包括根據第二寫入條件將所述碼字寫入到所述記憶體陣列中,其中所述第二寫入條件不同於所述第一寫入條件。
本發明的另一示例性實施例提供記憶體儲存裝置。所述記憶體儲存裝置包括:記憶體陣列;以及記憶體控制器,耦合到所述記憶體陣列且採用錯誤修正碼方案。所述記憶體控制器被配置成對資料進行編碼以產生碼字,根據第一寫入條件將所述碼字寫入到所述記憶體陣列中,並執行驗證操作。當所述記憶體控制器執行所述驗證操作時:所述記憶體控制器從所述記憶體陣列讀取所述碼字;將所讀取的碼字與所述碼字進行比較並獲得所述所讀取的碼字的錯誤位元數目;由錯誤修正碼解碼器將所述所讀取的碼字解碼以產生經解碼資料;將所述經解碼資料與所述資料進行比較;以及如果所述經解碼資料與所述資料相同,則將所述所讀取的碼字的所述錯誤位元數目與通過閾值進行比較。如果所述所讀取的碼字的所述錯誤位元數目大於所述通過閾值,則所述記憶體控制器進一步根據第二寫入條件將所述碼字寫入到所述記憶體陣列中,其中所述第二寫入條件同於所述第一寫入條件。
基於以上內容,通過採用本發明中所提供的資料寫入方法及記憶體儲存裝置,資料被編碼成碼字且所述碼字隨後被讀取以驗證所讀取的碼字中是否存在過多的錯誤位元。如果未通過驗證操作,則可使用與原始寫入條件不同的另一寫入條件來再次寫入碼字。因此,可根據另一寫入條件通過進行碼字的另一寫入來修正所讀取的碼字的錯誤位元。因此,平均寫入時間可減少,因而系統效率可提高。
為了使本發明的以上特徵及優點更易於理解,以下詳細闡述附有圖式的若干實施例。
現將詳細參照本發明的當前優選實施例,所述優選實施例的實例示出在附圖中。盡可能地,在圖式及說明中使用相同的參考編號指代相同或相似的部件。
圖1是說明根據本發明實施例的記憶體儲存裝置的方塊圖。參照圖1,記憶體儲存裝置100包括主機介面110、記憶體陣列130、及記憶體控制器150。記憶體控制器150耦合到主機介面110及記憶體陣列130。在本實施例中,記憶體儲存裝置100是用於儲存資料及由主機系統存取的非揮發性記憶體。
主機介面110耦合到記憶體控制器150且被配置成耦合到主機系統。在本實施例中,主機介面110耦合到主機系統以在所述主機系統與記憶體控制器150之間建立通信。在本實施例中,主機介面110可與通用快閃記憶體介面(common flash memory interface,CFI)標準相容,但本發明並不僅限於此。在其他實施例中,主機介面110可與以下標準相容:序列先進技術附接(serial advanced technology attachment,SATA)標準、快速周邊元件互連(peripheral component interconnect Express,PCI-E)介面標準、通用序列匯流排(universal serial bus,USB)標準、集成裝置電子設備(integrated device electronics,IDE)介面標準、或其他適合的標準。
記憶體陣列130耦合到記憶體控制器150且包括多個記憶體單元。在本實施例中,記憶體陣列130被配置成儲存資料且由主機系統及記憶體控制器150來讀取及寫入。
記憶體控制器150耦合到主機介面110及記憶體陣列130。在本實施例中,記憶體控制器150包括ECC編碼器151、ECC解碼器153以及控制電路155。ECC編碼器151與ECC解碼器153二者採用BCH 3位元ECC方案(BCH 3-bits ECC scheme),但本發明並不僅限於此。在本實施例中,記憶體控制器150從主機系統接收將資料寫入記憶體陣列130中的寫入命令。記憶體控制器150可執行本發明中所介紹的資料寫入方法來正確地及有效地寫入資料。應注意,記憶體控制器150可以硬體或韌體的形式來實作,且負責管理記憶體儲存裝置100的總體操作。
圖2說明根據本發明實施例的資料寫入方法的流程圖。圖3說明根據本發明實施例的資料寫入方法的示意圖。可由圖1所示實施例的記憶體儲存裝置100來執行資料寫入方法。因此,在本實施例中,可通過參照前述記憶體儲存裝置100來說明資料寫入方法。
在本實施例中,記憶體儲存裝置100採用BCH 3位元ECC方案,但本發明並不僅限於此。舉例來說,當主機系統向記憶體控制器150發出讀取命令時,記憶體控制器150可根據所述讀取命令從記憶體陣列130擷取資料。為了正確地返送所讀取的資料,記憶體控制器150可首先檢測及修正由主機系統所讀取的資料的錯誤位元。在本實施例中,記憶體控制器150可在讀取操作中對於預定資料長度檢測及修正至多三個錯誤位元,此意味著記憶體儲存裝置100可容忍被寫入且儲存在記憶體陣列130中的資料中存在至多三個錯誤位元。
參照圖2,在本實施例中,記憶體控制器150可從主機系統接收寫入命令而用於寫入資料。回應於寫入命令,記憶體控制器150可首先對資料進行編碼以產生碼字(S210),接著根據第一寫入條件將所述碼字寫入到記憶體陣列130中(S220)。為正確地寫入資料,記憶體控制器150執行驗證操作以驗證寫入操作是否是可接受的(S230)。具體來說,如果寫入到記憶體陣列130中的碼字與從記憶體陣列130讀取的碼字之間的不同位元的數目足夠小,則寫入操作是可接受的。如果通過驗證測試,則記憶體控制器150可確定資料被成功地且完全地寫入到記憶體陣列130中。如果未通過驗證操作,則記憶體控制器150可依據驗證結果至少執行另一寫入操作,以使資料被正確地寫入記憶體陣列130中或使儲存在記憶體陣列130中的資料可被正確地讀取。以下將搭配圖3闡述其細節。
在本實施例中,記憶體控制器150對32位元的資料D1進行編碼以產生50位元的碼字D2。因此,ECC編碼器151的輸入是32位元的資料D1。記憶體控制器150的ECC編碼器151可對資料D1進行編碼並產生碼字D2作為ECC編碼器151的輸出,其中碼字D2可由32位元的所述資料與18位元的同位檢查位元(parity bit)或檢驗位元(check bit)組成。隨後,記憶體控制器150根據第一寫入條件將碼字D2寫入到記憶體陣列130中。舉例來說,記憶體控制器150可以第一寫入脈衝持續時間施加第一寫入電壓以將碼字D2寫入到記憶體陣列130中。然而,應注意,碼字D2可能因記憶體單元的缺陷、記憶體陣列130的卡死位元、或任何其他原因而無法被正確地寫入。為確保資料D1或碼字D2被成功地或正確地寫入,將執行驗證操作。在本實施例中,驗證操作總是在已將碼字寫入到記憶體陣列130中之後執行。以下說明驗證操作的細節。
記憶體控制器150從記憶體陣列130讀取在上一次寫入操作中所寫入的碼字(S231),將所讀取的碼字與所述碼字進行比較並獲得所讀取的碼字的錯誤位元數目n_e(S232)。隨後,記憶體控制器150可通過ECC解碼器153將所讀取的碼字解碼以產生經解碼資料(S233),且將經解碼資料與所述資料進行比較以判斷經解碼資料是否與所述資料相同(S234)。如果經解碼資料與所述資料不同(此意味著所讀取的碼字的錯誤嚴重到無法被ECC解碼器153修正),則記憶體控制器150將再次將碼字寫入到記憶體陣列130中(S220)且再次執行驗證操作(S230)。否則,記憶體控制器150將會將所讀取的碼字的錯誤位元數目n_e與通過閾值th_p進行比較以判斷是否通過驗證操作(S235)。如果所讀取的碼字的錯誤位元數目n_e不大於通過閾值th_p,則記憶體控制器150將確定通過驗證操作(S240)且回應於寫入命令的寫入操作完成。否則,記憶體控制器150將根據另一寫入條件(即,第二寫入條件)將碼字寫入到記憶體陣列130中(S250)且回應於寫入命令的寫入操作完成。
如圖3中所示,所讀取的碼字D3的大小是50位且所讀取的碼字D3可被解碼以產生32位元的經解碼資料D4。在本實施例中,將所讀取的碼字D3與碼字D2進行比較以獲得所讀取的碼字D3的錯誤位元數目n_e,且將經解碼資料D4與資料D1進行比較以檢驗經解碼資料D4的正確性。
應注意,本實施例中採用BCH 3位元ECC方案,因此記憶體控制器150能夠修正從記憶體陣列130讀取的資料中的至多三個錯誤位元。因此,可將通過閾值th_p設定成不超過BCH 3位元ECC方案的容量。在本實施例中,如果所讀取的碼字的錯誤位元數目n_e不大於通過閾值th_p(例如,零),則確定記憶體控制器150通過驗證操作。當通過驗證操作時,確定資料被成功地且完全地寫入到記憶體陣列130中,因此記憶體控制器150完成對所述資料的寫入。另一方面,如果所讀取的碼字的錯誤位元數目n_e大於通過閾值th_p,則表示未通過驗證測試,且記憶體控制器將再次、但根據第二寫入條件將碼字寫入到記憶體陣列130中。
應注意,在本實施例中,第二寫入條件具有從以下中的一個或其組合選出的性質:第二寫入電壓高於第一寫入條件的第一寫入電壓;第二寫入脈衝持續時間長於第一寫入條件的第一寫入脈衝持續時間;以及對應於所讀取的碼字的至少一個錯誤位元的相反極性寫入。
因此,通過採用所介紹的資料寫入方法,所讀取的碼字中存在的少量錯誤位元可能通過根據第二寫入條件再次寫入碼字而得到修正。
圖4說明根據本發明實施例的資料寫入方法的流程圖。可由圖1所示實施例的記憶體儲存裝置100來執行資料寫入方法。因此,在本實施例中,可通過參照前述記憶體儲存裝置100來說明資料寫入方法。
本實施例與圖2所示實施例之間的不同在於在根據第二寫入條件寫入碼字之後,回應於寫入命令的寫入操作並不會完成。在本實施例中,重複地根據第二寫入條件寫入碼字,直到通過驗證操作。另外,記憶體控制器可根據第二寫入條件選擇性地限制重複次數及改變寫入碼字的條件。使用在根據第二寫入條件寫入碼字的步驟之後執行的驗證操作,可判斷所讀取的碼字是否具有卡死位元。此外,通過限制所述根據第二寫入條件寫入碼字的步驟的重複次數,可在所述重複次數達到限制值且通過執行根據第二寫入條件進行的寫入步驟仍未能恢復卡死位元時終止資料寫入方法。因此,將不會在難以恢復的卡死位元上浪費寫入時間。並且,資料寫入方法可實現更高的效率。
參照圖4,步驟S410、S420、S431、S432、S433、S434、S440、及S450分別與步驟S210、S220、S231、S232、S233、S234、S240、及S250相似,因此本文中不再對其予以贅述。在本實施例中,在確定經解碼資料與所述資料相同之後,不僅將所讀取的碼字的錯誤位元數目n_e與通過閾值th_p(例如,零)進行比較,而且還將所讀取的碼字的錯誤位元數目n_e與比通過閾值th_p大的第一閾值th_1(例如,一)進行比較(S435)。第一閾值不超過由記憶體控制器採用的用於讀取資料的ECC方案的容量。如果所讀取的碼字的錯誤位元數目n_e不大於通過閾值th_p,則記憶體控制器150將確定通過驗證操作(S440)且回應於寫入命令的寫入操作完成。如果未通過驗證操作且所讀取的碼字的錯誤位元數目n_e大於第一閾值th_1,則記憶體控制器150將再次根據第一寫入條件將碼字寫入到記憶體陣列130中(S420),且再次執行驗證操作(S430)。
如果未通過驗證操作且所讀取的碼字的錯誤位元數目n_e不大於第一閾值th_1,則記憶體控制器150將重複地根據第二寫入條件將碼字寫入到記憶體陣列130中,直到重複次數n_o超過第二閾值th_2(例如,五)。具體來說,記憶體控制器150可記錄根據第二寫入條件寫入的碼字的重複次數n_o。當未通過驗證操作且所讀取的碼字的錯誤位元數目n_e被確定為不大於第一閾值th_1時,記憶體控制器150將會將重複次數n_o與第二閾值th_2進行比較(S460)。如果重複次數n_o不超過第二閾值th_2,則記憶體控制器150將根據第二寫入條件將碼字寫入到記憶體陣列130中(S450),再次執行驗證操作(S430),且重複次數n_o將增加一。否則,記憶體控制器150完成對資料的寫入。
在一些實施例中,當經解碼資料與所述資料相同但未通過驗證操作時,記憶體控制器150可根據所讀取的碼字的錯誤位元數目n_e使用不同的寫入條件再次寫入碼字。以下說明示例性實施例。
圖5說明根據本發明實施例的資料寫入方法的流程圖。可由圖1所示實施例的記憶體儲存裝置100來執行資料寫入方法。因此,在本實施例中,可通過參照前述記憶體儲存裝置100來說明資料寫入方法。參照圖5,步驟S510、S520、S531、S532、S533、S534、S540、及S550分別與步驟S410、S420、S431、S432、S433、S434、S440、及S450相似,因此本文中不再對其予以贅述。在本實施例中,記憶體控制器150將所讀取的碼字的錯誤位元數目n_e與通過閾值th_p及第一閾值th_1進行比較(S535),且如圖4所示實施例中一樣,如果錯誤位元數目n_e不大於通過閾值th_p,則確定通過驗證操作(S540)。然而,如果未通過驗證操作且錯誤位元數目n_e大於第一閾值th_1,則記憶體控制器150會根據第三寫入條件而非第一寫入條件將碼字寫入到記憶體陣列130中(S560)。如果未通過驗證操作且錯誤位元數目n_e不大於第一閾值th_1,則記憶體控制器150會根據第二寫入條件將碼字寫入到記憶體陣列130中(S550)。在本實施例中,無論所使用的寫入條件如何,總是在將碼字寫入到記憶體陣列130中之後執行驗證操作(S530)。
應注意,在本實施例中,第三寫入條件具有從以下中的一個或其組合選出的性質:第三寫入電壓高於第二寫入條件的第二寫入電壓;第三寫入脈衝持續時間長於第二寫入條件的第二寫入脈衝持續時間;以及對應於所讀取的碼字的至少一個錯誤位元的相反極性寫入。
還應注意,可通過與圖4所示實施例中所教示的方式相似的方式,限制根據第二寫入條件或第三寫入條件將碼字寫入到記憶體陣列130中的重複次數,以下說明示例性實施例。
圖6說明根據本發明實施例的資料寫入方法的流程圖。可由圖1所示實施例的記憶體儲存裝置100來執行資料寫入方法。因此,在本實施例中,可通過參照前述記憶體儲存裝置100來說明資料寫入方法。參照圖6,步驟S610、S620、S631、S632、S633、S634、S635、S640、S650、及S660分別與步驟S510、S520、S531、S532、S533、S534、S535、S540、S550、及S560相似,因此本文中不再對其予以贅述。本實施例與圖5所示實施例之間的唯一不同在於根據第三寫入條件寫入碼字的重複次數有限,因此本實施例具有額外的步驟S670。
在本實施例中,如果未通過驗證操作且所讀取的碼字的錯誤位元數目n_e大於第一閾值th_1,則記憶體控制器150將重複地根據第三寫入條件將碼字寫入到記憶體陣列130中,直到重複次數n_o’超過第三閾值th_3(例如,三)。具體來說,記憶體控制器150可記錄根據第三寫入條件寫入碼字的重複次數n_o’。當未通過驗證操作且所讀取的碼字的錯誤位元數目n_e被確定為大於第一閾值th_1時,記憶體控制器150將會將重複次數n_o’與第三閾值th_3進行比較(S670)。如果重複次數n_o’不超過第三閾值th_3,則記憶體控制器150將根據第三寫入條件將碼字寫入到記憶體陣列130中(S660),再次執行驗證操作(S630),且重複次數n_o’將增加一。另一方面,如果未通過驗證操作且所讀取的碼字的錯誤位元數目n_e不大於第一閾值th_1,則記憶體控制器150將根據第二寫入條件將碼字寫入到記憶體陣列130中(S650)且再次執行驗證操作(S630)。否則,記憶體控制器150完成對資料的寫入。在一些實施例中,可通過相似的方式限制根據第二寫入條件寫入碼字的重複次數,本文中不再對其予以贅述。
應注意,在每一驗證操作中用於讀取碼字的感測基準可總是相同或可不總是相同。在一個實施例中,這些感測基準總是相同。在另一實施例中,感測基準與上一次用於將碼字寫入到記憶體陣列130中的寫入條件相關聯。舉例來說,對於在根據第一寫入條件將碼字寫入到記憶體陣列130中的步驟之後執行的驗證操作,記憶體控制器150使用第一感測基準從記憶體陣列130讀取碼字,而對於在根據第二寫入條件將碼字寫入到記憶體陣列130中的步驟之後執行的驗證操作,則使用第二感測基準從記憶體陣列130讀取碼字。第二感測基準不同於第一感測基準。舉例來說,第一感測基準可為第一電壓基準且第二感測基準可為比第一電壓基準低的第二電壓基準。然而,本發明並不限於本文中所述內容,感測基準也可為電流基準。
綜上所述,通過採用本發明中所提供的資料寫入方法及記憶體儲存裝置,資料被編碼成碼字且所述碼字隨後被讀取以驗證所讀取的碼字中是否存在過多的錯誤位元。如果未通過驗證操作,則可使用與原始寫入條件(即,第一寫入條件)不同的另一寫入條件來再次寫入碼字。因此,可根據另一寫入條件通過進行碼字的另一寫入來修正所讀取的碼字的錯誤位元。在一些實施例中,可使用另一寫入條件在寫入操作迴圈中處置所讀取的碼字的錯誤位元,因此在本發明的實施例中,無論所述錯誤位元是否是卡死位元,所述錯誤位元均可被恰當地且高效地處置。如此一來,平均寫入時間可減少,因而系統效率可提高。
對於所屬領域中的技術人員來說,在不背離本發明的範圍或精神的條件下,可對本發明的結構作出各種潤飾及變化。根據上述內容,意欲使本發明涵蓋本發明的潤飾及變化,只要其落於發明申請專利範圍及其等效形式的範圍內即可。
100:記憶體儲存裝置 110:主機介面 130:記憶體陣列 150:記憶體控制器 151:ECC編碼器 153:ECC解碼器 155:控制電路 D1:數據 D2:碼字 D3:所讀取的碼字 D4:經解碼數據 n_e:錯誤位元數目 n_o、n_o’:重複次數 th_1:第一閾值 th_2:第二閾值 th_3:第三閾值 th_p:通過閾值 S210、S220、S230、S231、S232、S233、S234、S235、S240、S250、S410、S420、S430、S431、S432、S433、S434、S435、S440、S450、S460、S510、S520、S530、S531、S532、S533、S534、S535、S540、S550、S560、S610、S620、S630、S631、S632、S633、S634、S635、S640、S650、S660、S670:步驟
為提供對本發明的進一步理解,在本說明書中包含附圖,所述附圖併入本說明書中並構成本說明書的一部分。所述圖式示出本發明的實施例並與本說明一起用於闡釋本發明的原理。 圖1是說明根據本發明實施例的記憶體儲存裝置的方塊圖。 圖2是說明根據本發明實施例的資料寫入方法的流程圖。 圖3是說明根據本發明實施例的資料寫入方法的示意圖。 圖4是說明根據本發明實施例的資料寫入方法的流程圖。 圖5是說明根據本發明實施例的資料寫入方法的流程圖。 圖6是說明根據本發明實施例的資料寫入方法的流程圖。
Claims (20)
- 一種資料寫入方法,適合於採用錯誤修正碼方案的記憶體控制器而用於寫入資料,包括: 對所述資料進行編碼以產生碼字; 根據第一寫入條件將所述碼字寫入到記憶體陣列中; 執行驗證操作,包括: 從所述記憶體陣列讀取所述碼字; 將所讀取的碼字與所述碼字進行比較並獲得所述所讀取的碼字的錯誤位元數目; 由錯誤修正碼解碼器將所述所讀取的碼字解碼以產生經解碼資料; 將所述經解碼資料與所述資料進行比較;以及 如果所述經解碼資料與所述資料相同,則將所述所讀取的碼字的所述錯誤位元數目與通過閾值進行比較;以及 如果所述所讀取的碼字的所述錯誤位元數目大於所述通過閾值,則根據第二寫入條件將所述碼字寫入到所述記憶體陣列中,其中所述第二寫入條件不同於所述第一寫入條件。
- 如申請專利範圍第1項所述的資料寫入方法,其中,如果所述經解碼資料不與所述資料相同,則所述資料寫入方法更包括: 再次根據所述第一寫入條件將所述碼字寫入到所述記憶體陣列中;以及 再次執行所述驗證操作。
- 如申請專利範圍第1項所述的資料寫入方法,其中,所述如果所述經解碼資料與所述資料相同,則將所述所讀取的碼字的所述錯誤位元數目與所述通過閾值進行比較的步驟進一步包括: 將所述所讀取的碼字的所述錯誤位元數目與比所述通過閾值大的第一閾值進行比較, 其中如果所述所讀取的碼字的所述錯誤位元數目大於所述通過閾值且小於或等於所述第一閾值,則執行所述根據所述第二寫入條件將所述碼字寫入到所述記憶體陣列中的步驟, 其中所述第一閾值不超過所述記憶體控制器用於讀取資料所採用的所述錯誤修正碼方案的容量。
- 如申請專利範圍第3項所述的資料寫入方法,其中,如果所述所讀取的碼字的所述錯誤位元數目大於所述第一閾值,則所述資料寫入方法更包括: 再次根據所述第一寫入條件將所述碼字寫入到所述記憶體陣列中;以及 再次執行所述驗證操作。
- 如申請專利範圍第3項所述的資料寫入方法,更包括: 再次執行所述驗證操作;以及 如果所述所讀取的碼字的所述錯誤位元數目大於所述通過閾值且小於或等於所述第一閾值,則重複所述根據所述第二寫入條件將所述碼字寫入到所述記憶體陣列中的步驟及所述執行所述驗證操作的步驟,直到重複次數超過第二閾值。
- 如申請專利範圍第3項所述的資料寫入方法,其中,如果所述所讀取的碼字的所述錯誤位元數目大於所述第一閾值,則所述資料寫入方法更包括: 根據第三寫入條件將所述碼字寫入到所述記憶體陣列中;以及 再次執行所述驗證操作, 其中所述第三寫入條件不同於所述第二寫入條件及所述第一寫入條件。
- 如申請專利範圍第1項所述的資料寫入方法,其中,如果所述所讀取的碼字的所述錯誤位元數目不大於所述通過閾值,則確定通過所述驗證操作。
- 如申請專利範圍第5項所述的資料寫入方法,其中,在所述根據所述第一寫入條件將所述碼字寫入到所述記憶體陣列中的步驟之後執行的所述驗證操作使用第一感測基準從所述記憶體陣列讀取所述碼字,且在所述根據所述第二寫入條件將所述碼字寫入到所述記憶體陣列中的步驟之後執行的所述驗證操作使用第二感測基準從所述記憶體陣列讀取所述碼字,其中所述第二感測基準不同於所述第一感測基準。
- 如申請專利範圍第1項所述的資料寫入方法,其中,所述第二寫入條件具有從以下中的一個或其組合選出的性質: 寫入電壓高於所述第一寫入條件的寫入電壓, 寫入脈衝持續時間長於所述第一寫入條件的寫入脈衝持續時間,以及 對應於所述所讀取的碼字的至少一個錯誤位元的相反極性寫入。
- 如申請專利範圍第6項所述的資料寫入方法,更包括: 如果所述所讀取的碼字的所述錯誤位元數目大於所述第一閾值,則重複所述根據所述第三寫入條件將所述碼字寫入到所述記憶體陣列中的步驟以及所述執行所述驗證操作的步驟,直到所述重複次數超過第三閾值。
- 一種記憶體儲存裝置,包括: 記憶體陣列;以及 記憶體控制器,耦合到所述記憶體陣列且採用錯誤修正碼方案,其中所述記憶體控制器被配置成對資料進行編碼以產生碼字,根據第一寫入條件將所述碼字寫入到所述記憶體陣列中,並執行驗證操作,其中所述驗證操作包括: 從所述記憶體陣列讀取所述碼字; 將所讀取的碼字與所述碼字進行比較並獲得所述所讀取的碼字的錯誤位元數目; 由錯誤修正碼解碼器將所述所讀取的碼字解碼以產生經解碼資料; 將所述經解碼資料與所述資料進行比較;以及 如果所述經解碼資料與所述資料相同,則將所述所讀取的碼字的所述錯誤位元數目與通過閾值進行比較, 其中如果所述所讀取的碼字的所述錯誤位元數目大於所述通過閾值,則所述記憶體控制器進一步根據第二寫入條件將所述碼字寫入到所述記憶體陣列中,其中所述第二寫入條件不同於所述第一寫入條件。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中,如果所述經解碼資料不與所述資料相同,則所述記憶體控制器進一步再次根據所述第一寫入條件將所述碼字寫入到所述記憶體陣列中,且再次執行所述驗證操作。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中,所述記憶體控制器將所述所讀取的碼字的所述錯誤位元數目與所述通過閾值及比所述通過閾值大的第一閾值進行比較, 其中如果所述所讀取的碼字的所述錯誤位元數目大於所述通過閾值且小於或等於所述第一閾值,則所述記憶體控制器根據所述第二寫入條件將所述碼字寫入到所述記憶體陣列中, 其中所述第一閾值不超過所述記憶體控制器用於讀取資料所採用的所述錯誤修正碼方案的容量。
- 如申請專利範圍第13項所述的記憶體儲存裝置,其中,如果所述所讀取的碼字的所述錯誤位元數目大於所述第一閾值,則所述記憶體控制器再次根據所述第一寫入條件將所述碼字寫入到所述記憶體陣列中且再次執行所述驗證操作。
- 如申請專利範圍第13項所述的記憶體儲存裝置,其中,所述記憶體控制器再次執行所述驗證操作,且如果所述所讀取的碼字的所述錯誤位元數目大於所述通過閾值且小於或等於所述第一閾值,則所述記憶體控制器重複地根據所述第二寫入條件將所述碼字寫入到所述記憶體陣列中以及執行所述驗證操作,直到重複次數超過第二閾值。
- 如申請專利範圍第13項所述的記憶體儲存裝置,其中,如果所述所讀取的碼字的所述錯誤位元數目大於所述第一閾值,則所述記憶體控制器進一步根據第三寫入條件將所述碼字寫入到所述記憶體陣列中且再次執行所述驗證操作, 其中所述第三寫入條件不同於所述第二寫入條件及所述第一寫入條件。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中,如果所述所讀取的碼字的所述錯誤位元數目不大於所述通過閾值,則所述記憶體控制器確定通過所述驗證操作。
- 如申請專利範圍第15項所述的記憶體儲存裝置,其中,所述記憶體控制器使用第一感測基準從所述記憶體陣列讀取所述碼字以執行在根據所述第一寫入條件將所述碼字寫入到所述記憶體陣列中之後執行的所述驗證操作,且使用第二感測基準從所述記憶體陣列讀取所述碼字以執行在根據所述第二寫入條件將所述碼字寫入到所述記憶體陣列中之後執行的所述驗證操作,其中所述第二感測基準不同於所述第一感測基準。
- 如申請專利範圍第11項所述的記憶體儲存裝置,其中,所述第二寫入條件具有從以下中的一個或其組合選出的性質: 寫入電壓高於所述第一寫入條件的寫入電壓, 寫入脈衝持續時間長於所述第一寫入條件的寫入脈衝持續時間,以及 對應於所述所讀取的碼字的至少一個錯誤位元的相反極性寫入。
- 如申請專利範圍第16項所述的記憶體儲存裝置,其中,如果所述所讀取的碼字的所述錯誤位元數目大於所述第一閾值,則所述記憶體控制器重複地根據所述第三寫入條件將所述碼字寫入到所述記憶體陣列中以及執行所述驗證操作,直到重複次數超過第三閾值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/674,520 | 2017-08-11 | ||
US15/674,520 US10417086B2 (en) | 2017-08-11 | 2017-08-11 | Data write method and memory storage device using the same |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201911329A TW201911329A (zh) | 2019-03-16 |
TWI665680B true TWI665680B (zh) | 2019-07-11 |
Family
ID=65274124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107126688A TWI665680B (zh) | 2017-08-11 | 2018-08-01 | 資料寫入方法及使用其的記憶體儲存裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10417086B2 (zh) |
CN (1) | CN109388518B (zh) |
TW (1) | TWI665680B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111902804B (zh) | 2018-06-25 | 2024-03-01 | 阿里巴巴集团控股有限公司 | 用于管理存储设备的资源并量化i/o请求成本的系统和方法 |
KR20200016606A (ko) * | 2018-08-07 | 2020-02-17 | 삼성전자주식회사 | 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 시스템 |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US10790031B1 (en) * | 2019-06-05 | 2020-09-29 | Western Digital Technologies, Inc. | System handling for first read read disturb |
US11062077B1 (en) * | 2019-06-24 | 2021-07-13 | Amazon Technologies, Inc. | Bit-reduced verification for memory arrays |
CN112151104B (zh) * | 2019-06-28 | 2023-08-15 | 华邦电子股份有限公司 | 存储器存放装置及其动态数据修复的方法 |
CN112540866B (zh) * | 2019-09-20 | 2024-01-23 | 华邦电子股份有限公司 | 存储器装置及其数据存取方法 |
US11094394B2 (en) * | 2019-09-24 | 2021-08-17 | Micron Technology, Inc. | Imprint management for memory |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
TWI755764B (zh) * | 2020-06-22 | 2022-02-21 | 旺宏電子股份有限公司 | 記憶體裝置及其寫入方法 |
US11056205B1 (en) * | 2020-06-22 | 2021-07-06 | Macronix International Co., Ltd. | Memory device and write method thereof |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11443828B1 (en) | 2021-04-26 | 2022-09-13 | Micron Technology, Inc. | Read threshold adjustment techniques for memory |
US11476874B1 (en) * | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US11606104B1 (en) * | 2021-12-08 | 2023-03-14 | Amazon Technologies, Inc. | Data integrity protection |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822338A (en) * | 1998-01-28 | 1998-10-13 | International Business Machines Corporation | ECC-compare path of cache directory logic improvements |
TW200826108A (en) * | 2006-12-06 | 2008-06-16 | Key Technology Corp | Method of improving error correction ability of error correction code (ECC) module |
US20080235558A1 (en) * | 2004-06-16 | 2008-09-25 | Azul Systems, Inc. | Subsystem and Method for Encoding 64-bit Data Nibble Error Correct and Cyclic-Redundancy Code (CRC) Address Error Detect for Use in a 76-bit Memory Module |
US20110258515A1 (en) * | 2006-06-26 | 2011-10-20 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory Having an ECC System |
US20130166986A1 (en) * | 2011-12-22 | 2013-06-27 | Sandisk Technologies Inc. | Using ecc encoding to verify an ecc decode operation |
US20150242274A1 (en) * | 2014-02-25 | 2015-08-27 | Imagination Technologies Limited | Pipelined ecc-protected memory access |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149945B2 (en) | 2003-05-09 | 2006-12-12 | Hewlett-Packard Development Company, L.P. | Systems and methods for providing error correction code testing functionality |
KR100856129B1 (ko) * | 2006-12-29 | 2008-09-03 | 삼성전자주식회사 | 오정정 확률을 줄이는 에러 정정 회로, 그 방법 및 상기회로를 구비하는 반도체 메모리 장치 |
US8583986B2 (en) | 2008-12-17 | 2013-11-12 | Seagate Technology Llc | Solid-state memory with error correction coding |
CN101477481A (zh) * | 2009-02-06 | 2009-07-08 | 中国科学院计算技术研究所 | 一种自动纠错系统及方法 |
KR101015655B1 (ko) | 2009-05-29 | 2011-02-22 | 주식회사 하이닉스반도체 | 불휘발성 메모리 장치의 구동 방법 |
US20100332950A1 (en) * | 2009-06-30 | 2010-12-30 | Gurkirat Billing | Bit error threshold and content addressable memory to address a remapped memory device |
JP5204825B2 (ja) * | 2010-09-17 | 2013-06-05 | シャープ株式会社 | 半導体記憶装置 |
CN102073563B (zh) * | 2011-02-23 | 2015-09-09 | 深圳市江波龙电子有限公司 | 闪存设备、闪存设备中存储块的管理方法及系统 |
JP5269151B2 (ja) * | 2011-06-09 | 2013-08-21 | シャープ株式会社 | 半導体記憶装置 |
US8711646B2 (en) * | 2012-05-08 | 2014-04-29 | Samsung Electronics Co., Ltd. | Architecture, system and method for testing resistive type memory |
CN103699491B (zh) * | 2012-09-28 | 2017-05-10 | 群联电子股份有限公司 | 数据储存方法、存储器控制器与存储器储存装置 |
US8812934B2 (en) * | 2012-12-12 | 2014-08-19 | HGST Netherlands B.V. | Techniques for storing bits in memory cells having stuck-at faults |
CN104217762B (zh) * | 2013-05-31 | 2017-11-24 | 慧荣科技股份有限公司 | 数据储存装置及其错误校正方法以及数据读取方法 |
KR102262909B1 (ko) * | 2014-12-18 | 2021-06-10 | 에스케이하이닉스 주식회사 | 메모리 시스템 동작 방법 |
US10593398B2 (en) * | 2016-09-13 | 2020-03-17 | Toshiba Memory Corporation | Semiconductor storage device including a controller configured to execute a first write and a second write |
-
2017
- 2017-08-11 US US15/674,520 patent/US10417086B2/en active Active
-
2018
- 2018-08-01 TW TW107126688A patent/TWI665680B/zh active
- 2018-08-10 CN CN201810908650.4A patent/CN109388518B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822338A (en) * | 1998-01-28 | 1998-10-13 | International Business Machines Corporation | ECC-compare path of cache directory logic improvements |
US20080235558A1 (en) * | 2004-06-16 | 2008-09-25 | Azul Systems, Inc. | Subsystem and Method for Encoding 64-bit Data Nibble Error Correct and Cyclic-Redundancy Code (CRC) Address Error Detect for Use in a 76-bit Memory Module |
US20110258515A1 (en) * | 2006-06-26 | 2011-10-20 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory Having an ECC System |
TW200826108A (en) * | 2006-12-06 | 2008-06-16 | Key Technology Corp | Method of improving error correction ability of error correction code (ECC) module |
US20130166986A1 (en) * | 2011-12-22 | 2013-06-27 | Sandisk Technologies Inc. | Using ecc encoding to verify an ecc decode operation |
TW201331946A (zh) * | 2011-12-22 | 2013-08-01 | Sandisk Technologies Inc | 使用錯誤校正碼編碼以驗證錯誤校正碼解碼操作 |
US20150242274A1 (en) * | 2014-02-25 | 2015-08-27 | Imagination Technologies Limited | Pipelined ecc-protected memory access |
Also Published As
Publication number | Publication date |
---|---|
TW201911329A (zh) | 2019-03-16 |
US10417086B2 (en) | 2019-09-17 |
CN109388518B (zh) | 2022-05-31 |
CN109388518A (zh) | 2019-02-26 |
US20190050285A1 (en) | 2019-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI665680B (zh) | 資料寫入方法及使用其的記憶體儲存裝置 | |
TWI631570B (zh) | 錯誤檢查糾正解碼方法與裝置 | |
US9195539B2 (en) | Method for reading data from block of flash memory and associated memory device | |
KR101369444B1 (ko) | 정정 불가능한 에러를 해결하는 하이브리드 에러 정정 코딩 | |
US8707135B2 (en) | Method and system of dynamic data storage for error correction in a memory device | |
US10984882B2 (en) | Run-time memory device failure detection enhancement | |
TWI508082B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
US9543983B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
TWI582779B (zh) | 讀取電壓準位估測方法、記憶體儲存裝置及記憶體控制電路單元 | |
US20140281750A1 (en) | Detecting effect of corrupting event on preloaded data in non-volatile memory | |
US20160098316A1 (en) | Error processing method, memory storage device and memory controlling circuit unit | |
US10685711B1 (en) | Decoding method, memory controlling circuit unit and memory storage device | |
TWI446160B (zh) | 快閃記憶體控制器及資料讀取方法 | |
CN111415692B (zh) | 解码方法、存储器控制电路单元以及存储器存储装置 | |
TW201543496A (zh) | 資料處理方法、記憶體控制電路單元以及記憶體儲存裝置 | |
US20170322842A1 (en) | Memory controller, memory system, and method of controlling memory controller | |
US11726874B2 (en) | Storing critical data at a memory system | |
TWI838242B (zh) | 資料儲存裝置及其讀取電壓的搜尋方法 | |
CN113138947B (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
TWI779209B (zh) | 具有動態資料修復機制的記憶體存放裝置及其動態資料修復的方法 | |
CN110391815B (zh) | 解码方法及储存控制器 | |
US10348337B2 (en) | Data read method and memory storage device using the same | |
CN112151104A (zh) | 存储器存放装置及其动态数据修复的方法 |