TW201530554A - 操作記憶體之方法及記憶體裝置 - Google Patents
操作記憶體之方法及記憶體裝置 Download PDFInfo
- Publication number
- TW201530554A TW201530554A TW103112067A TW103112067A TW201530554A TW 201530554 A TW201530554 A TW 201530554A TW 103112067 A TW103112067 A TW 103112067A TW 103112067 A TW103112067 A TW 103112067A TW 201530554 A TW201530554 A TW 201530554A
- Authority
- TW
- Taiwan
- Prior art keywords
- ecc
- level
- data
- memory
- data set
- 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/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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M13/356—Unequal error protection [UEP]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
- H03M13/6505—Memory efficient implementations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
一種操作記憶體的方法,包括接收輸入資料組、儲存用於輸入資料組之資料的第一階層錯誤更正碼(Error Correction Code, ECC)、儲存用於輸入資料組之多個第二階層群組資料的多個第二階層ECC、儲存資料組於記憶體、以及測試資料組以決定使用第一階層ECC或多個第二階層ECC。此方法包括若使用第一階層ECC,儲存使用第一階層ECC的旗標。若使用多個第二階層ECC,儲存使用多個第二階層ECC的旗標。此方法包括儲存多個第二階層ECC於替換ECC記憶體,以及儲存指標以指示多個第二階層ECC於替換ECC記憶體的多個位置。
Description
本發明是有關於一種記憶體裝置與系統,且特別是有關於一種包括錯誤更正碼(error correction code, ECC)邏輯的記憶體裝置與系統。
積體電路的記憶體所使用的製程尺寸逐漸減小,且在單一積體電路中配置記憶體陣列越來越大。隨著記憶體科技的演進,感測記憶體資料的邊界(margin)變得更小。此外,導因於高速以及大量的存取記憶胞(memory cell)以及鄰近記憶胞,當存在記憶胞狀態的干擾(disturbance)時,記憶胞維持資料值的能力也會受限於變小的邊界。
因應記憶體科技尺寸以及密度持續演進,為克服變小的感測邊界以及記憶胞干擾所引起的問題,已發展使用錯誤更正碼(ECC)於積體電路記憶體中。然而,記憶體中僅有有限的資源儲存錯誤更正碼。
因此,提出一種有效利用記憶體中有限資源以作為ECC之用的方法,乃目前業界所致力的課題之一。
本發明係有關於一種操作記憶體之方法,此方法包括接收輸入資料組、儲存用於輸入資料組之資料的第一階層ECC、儲存用於輸入資料組之多個第二階層群組資料的多個第二階層ECC、儲存資料組於記憶體、以及測試資料組以決定使用第一階層ECC或多個第二階層ECC。因此,針對給定的資料組,所需使用的ECC資源可根據資料組儲存後的測試而動態決定。在第一階層ECC以及第二階層ECC被儲存於記憶體之前,第一階層ECC以及第二階層ECC可由耦接至記憶體之處理器計算得到。
第一階層ECC及多個第二階層ECC的大小係決定於ECC的位元數,因此多個第二階層ECC的組合可以較單獨的第一階層ECC有較佳的偵測錯誤以及更正錯誤的能力。舉例而言,第一階層ECC及第二階層ECC可以有相同大小。
若使用第一階層ECC,儲存使用第一階層ECC的旗標。若使用多個第二階層ECC,儲存使用多個第二階層ECC的旗標。可儲存多個第二階層ECC於替換ECC記憶體,並可儲存指標以指示多個第二階層ECC於替換ECC記憶體的多個位置。其中替換ECC記憶體儲存多個記憶體所儲存其他資料組的第二階層ECC。
測試資料組的步驟可包括若輸入資料組之資料的失敗位元數量小於第一臨界值,則決定使用第一階層ECC。
可使用多於兩個階層的ECC。舉例而言,此方法可包括儲存用於資料組之多個第三階層群組資料的多個第三階層ECC,其中第三階層群組較第二階層群組具有較少的位元數。在使用三個階層的例子中,此方法包括若輸入資料組之資料的失敗位元數量小於第一臨界值,則使用第一階層ECC。若輸入資料組之資料的失敗位元數量大於等於第一臨界值且小於第二臨界值,則使用多個第二階層ECC。以及若輸入資料組之資料的失敗位元數量大於等於第二臨界值且小於第三臨界值,則使用多個第三階層ECC。在第三階層ECC被儲存於記憶體之前,第三階層ECC可由耦接至記憶體之處理器計算得到。
本發明並提出一種記憶體裝置以及用以執行如上述方法的處理器。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉較佳實施例,並配合所附圖式,作詳細說明如下:
100、820‧‧‧裝置
105‧‧‧資料匯流排
110‧‧‧控制器
120‧‧‧電壓供應源
130、175‧‧‧匯流排
140‧‧‧列解碼器
145‧‧‧字元線
150‧‧‧ECC邏輯
155‧‧‧信號線
160、160a、822‧‧‧記憶體
165‧‧‧字元線
170‧‧‧頁面緩衝區
180‧‧‧替換ECC記憶體
190‧‧‧輸入/輸出電路
210、220、230、240‧‧‧位址
211、221、231、241‧‧‧資料組
213、223、233、243‧‧‧第一階層ECC
215、225、235、245‧‧‧旗標
217、227、237、247‧‧‧指標
219、229、239、249‧‧‧位置
410、420、430、440、445、450、455、465、510、515、520、530、540、550‧‧‧步驟
610、620、630、640‧‧‧VT分佈
615、625、635、645‧‧‧感測窗
617、627、637‧‧‧重疊處
710、720‧‧‧臨界電壓範圍
713、723、717、727‧‧‧臨界電壓
715‧‧‧低邊界
725‧‧‧高邊界
730‧‧‧感測窗
810‧‧‧處理器
812、814‧‧‧邏輯電路
830‧‧‧信號
第1圖繪示依照本發明一實施例包括記憶體的裝置的方塊圖。
第2圖繪示記憶體以及替換ECC記憶體的詳細圖。
第3圖繪示旗標如何指示使用第一階層ECC於一資料組或是多個ECC分別對應於此資料組中多個群組的資料。
第4圖繪示儲存資料及ECC替換旗標的流程圖。
第5圖繪示讀取儲存有ECC替換旗標的資料的流程圖。
第6圖繪示位元數與臨界電壓的關係圖。
第7圖繪示目標頁面中記憶胞的兩個資料值的臨界電壓範圍之間的感測窗。
第8圖繪示依照本發明一實施例處理器耦接至包括有記憶體裝置的方塊圖。
請參照圖示,底下詳細說明本發明的實施例。雖然本揭露以如下較佳實施例揭露,然其並非用以限定本揭露。本揭露所屬技術領域中具有通常知識者,在不脫離本揭露之精神和範圍內,當可作各種之更動與潤飾。因此,本揭露之保護範圍當視後附之申請專利範圍所界定者為準。在說明書與圖式中,即使是不同實施例中,相同的元件符號係用以指示相同或相似的元件。
第1圖繪示依照本發明一實施例包括記憶體的裝置的簡化晶片方塊圖。於第1圖所繪示的例子中,裝置100包括記憶體160,記憶體160儲存多個資料組(data set)。多個資料組中包括至少一個資料組使用一個第一階層(level)ECC,以及至少另一個資料組使用多個ECC,多個ECC分別對應到在此資料組內的多個群組(group)的資料上。各個資料組可以有相同的大小。記憶體160於記憶體160a中儲存第一階層ECC,係邏輯關聯於第一階層ECC所對應的資料組的位址。
包括有記憶體(例如記憶體160)的裝置(例如裝置100)可以使用一個位址轉換表,以將主機(例如是處理器,如第8圖的處理器810)使用的邏輯位址(logical address),轉換成記憶體使用的實體位址(physical address)。舉例而言,邏輯位址0x0010, 0x0011, 0x0012及0x0013可以分別轉換為實體位址0x0AAA, 0x0123, 0x0456及0x1000,其中“0x”代表十六進位值。因此記憶體中一個資料組的實體位址,是根據位址轉換表從邏輯位址轉換而來。此外,主機可以決定改變位址轉換表中邏輯位址到實體位址的對映關係,以執行記憶體管理功能,包括有壞區塊管理(bad block management)、重新對映(re-mapping)、復新(refreshing)、以及平均抹除(wear leveling)。
第一階層ECC可儲存於記憶體160a中邏輯關聯於第一階層ECC所對應的資料組的位址,第一階層ECC與其對應的資料組有相同的邏輯位址。當資料組的邏輯位址與實體位址對映關係改變時,此資料組的第一階層ECC也會有相同的改變。舉例而言,邏輯位址0x0010的資料組原先被轉換至實體位址0x0AAA,之後因執行記憶體管理功能而改變為轉換至實體位址0x0BBB,然而在改變前與改變後,資料組與第一階層ECC皆可以透過邏輯位址0x0010存取。
如之後所述的第2圖中的ECC替換旗標215, 225, 235, 245以及指標217, 227, 237, 247,亦是邏輯關聯於其對應資料組的位址,與前述的第一階層ECC概念相同。
記憶體160儲存旗標以及指標於記憶體中,邏輯關聯於對應的資料組的位址,並儲存多個ECC於替換ECC記憶體180中,其中多個ECC又稱作「替換ECC」(replacement ECC)。旗標用以指示要使用第一階層ECC或是使用多個ECC,指標用以指示多個ECC在替換ECC記憶體180中的位置。替換ECC記憶體180儲存用於記憶體160中所儲存其他資料組的多個ECC。在一些實施例中,記憶體160儲存的第一階層ECC與替換ECC記憶體180儲存的多個ECC其中的每一個ECC可以有相同的長度。
在一種實作方式中,裝置100對於每一個字元線(word line)的頁面(pages)可以有一個替換ECC記憶體。例如每一個字元線可以有64個頁面。用於每一個字元線頁面的替換ECC記憶體可以包括多個區段(segments),例如4或8個區段。因此每一個字元線上的64個頁面共享替換ECC記憶體當中的多個區段。每一個區段可以儲存2個、4個或8個用於此字元線上一個頁面的替換ECC。用以指示替換ECC位置的指標即代表多個區段中的特定一個區段。舉例而言,對於一個包括4個區段的替換ECC記憶體,指標的值可以是“00”, “01”, “10” ,“11”以分別代表替換ECC記憶體中的第1、第2、第3、第4個區段。由於對每一個字元線有一個替換ECC記憶體,指標僅需2個位元即可以表示用於每個頁面的4個區段,能夠有效地利用記憶體中有限的資源。相較之下,若是裝置100對於記憶體中的所有頁面使用一個一般的替換ECC記憶體,每個頁面的指標則需要有更多位元以指示一般替換ECC記憶體中的替換ECC位置。
如第1圖所示的例子中,使用偏壓安排狀態機的控制器110控制偏壓安排供應電壓的應用,例如是讀取或是編程電壓,其中偏壓安排供應電壓係經由電壓供應源120所產生或提供。控制器110耦接至頁面緩衝區170、ECC邏輯150、以及記憶體160。ECC邏輯150經由信號線155耦接至頁面緩衝區170。
控制器110包括邏輯電路以經由輸入/輸出電路190接收輸入資料,以儲存資料組於記憶體160中,以儲存旗標用於指示使用第一階層ECC於資料組中的資料或是使用多個ECC於資料組中的多個群組的資料。控制器110更包括邏輯電路以儲存多個ECC於替換ECC記憶體180中,以及邏輯電路以儲存指標用於指示多個ECC在替換ECC記憶體180中的位置。
控制器110更包括邏輯電路以讀取資料組、此資料組的旗標(指示此資料組使用第一階層ECC或使用多個ECC)、第一階層ECC、以及多個ECC。若旗標指示為第一階層ECC,則使用第一階層ECC執行ECC邏輯於此資料組;若旗標指示為多個ECC,則使用多個ECC執行ECC邏輯於此資料組。
控制器110可使用本領域熟知的特殊目的邏輯電路而實作。在另一實施例中,控制邏輯電路包括一般用途處理器,可實作於同一個積體電路上,處理器執行電腦程式以控制裝置的運作。又或著在更另一實施例中,控制邏輯電路可利用特殊目的邏輯電路以及一般用途處理器的組合而實作完成。
如第1圖所示的例子中,列解碼器140耦接至多個字元線145,並沿著記憶體160的列(row)方向排列。頁面緩衝區170耦接至多條字元線165,用以從記憶體160讀取資料以及寫入資料至記憶體160,字元線165沿著記憶體的行(column)方向排列。位址係由控制器110經由匯流排130提供至頁面緩衝區170及列解碼器140。頁面緩衝區170可包括耦接至記憶體160以及匯流排130的行解碼器、用於讀取操作的感測放大器(sense amplifier)、及用於編程操作的編程緩衝區,感測放大器及編程緩衝區耦接至行解碼器。頁面緩衝區170耦接至輸入/輸出電路190,於此例中係經由匯流排175。輸入/輸出電路190將資料驅動至裝置100外部的目標。輸入/輸出資料以及控制信號係經由資料匯流排105傳送於下列模組之間:輸入/輸出電路190、控制器110、以及裝置100的輸入/輸出埠或是裝置100內部或外部的其他資料來源,例如一般用途處理器、特殊目的應用電路、或是提供單晶片系統(system-on-a-chip)功能(由記憶體160所支援)模組的組合。
第2圖繪示第1圖中記憶體以及替換ECC記憶體更詳細的圖。如第2圖所示的例子中,記憶體160儲存多個資料組211、221、231、241,係邏輯關聯於多個資料組的位址210、220、230、240。記憶體160儲存第一階層ECC 213、223、233、243邏輯關聯於這些資料組的位址。
記憶體160並儲存旗標215、225、235、245以及指標217、227、237、247邏輯關聯於這些資料組的位址。替換ECC記憶體180可儲存多個ECC分別用於資料組內的多個群組的資料。記憶體包括的內容可由部份的資料組位址以及指標而定址,資料組位址例如是頁面位址(page address)或是區塊位址(block address)。旗標指示使用第一階層ECC或是多個ECC。指標指示多個ECC在替換ECC記憶體中的位置。舉例而言,對於邏輯關聯於位址210的資料組211,旗標215指示資料組211係使用多個ECC,而指標217指示資料組211使用的多個ECC在替換ECC記憶體180中的位置219。對於邏輯關聯於位址220的資料組221,旗標225指示資料組221係使用第一階層ECC,因此資料組221無需使用替換記憶體180以及指標227。
第3圖繪示旗標如何指示使用第一階層ECC於一資料組或是多個ECC分別對應於此資料組中多個群組的資料。如第3圖所示的例子中,旗標有2個位元,其值包括有“00”、“01”以及“10”。此處以一個頁面的資料為資料組中的資料作為例子。旗標值“00”代表此頁面使用一個30位元第一階層ECC。旗標值“01”代表此頁面使用兩個30位元第二階層ECC,每半頁使用一個ECC。旗標值“10”代表此頁面使用四個30位元第三階層ECC,每四分之一頁使用一個ECC。30位元第一階層ECC、兩個30位元第二階層ECC中的每一個ECC、以及四個30位元第三階層ECC中的每一個ECC皆有相同長度。
第4圖繪示依照本發明一實施例儲存資料及ECC替換旗標的流程圖。於此例中提供一種步驟的順序。這些步驟亦可以其他順序執行,在一些例子中這些步驟亦可以平行執行。如下所述的方法可以由如第1圖所示的控制器110以及如第8圖所示的處理器執行。
如第4圖所示的例子中,於步驟410接收輸入資料組。於步驟420,儲存輸入資料組資料的第一階層ECC,並且儲存資料組內多個第二階層群組資料的第二階層ECC。亦可以使用多於兩個階層,例如也可以儲存資料組內多個第三階層群組資料的第三階層ECC。在儲存第一階層ECC、第二階層ECC、及第三階層ECC至記憶體之前,第一階層ECC、第二階層ECC、及第三階層ECC可由耦接至記憶體的處理器計算得到。於步驟430,資料組可儲存於記憶體。儲存資料組的步驟可包括對資料組內資料的每一位元進行編程操作及驗證操作。未通過驗證操作的資料位元視作失敗位元。資料組中失敗位元的數量可用以決定使用第一階層ECC、第二階層ECC、或是第三階層ECC。
於步驟440,決定失敗位元的數量是否小於第一臨界值。若失敗位元的數量小於第一臨界值,則儲存旗標以使用第一階層ECC(步驟445)。若失敗位元的數量不小於第一臨界值,則決定失敗位元的數量是否大於等於第一臨界值且小於第二臨界值(步驟450),若是的話,儲存旗標以使用第二階層ECC(步驟455),若否的話,且若第三階層ECC已被計算且儲存,可再進一步決定失敗位元的數量是否大於等於第二臨界值且小於第三臨界值。關於旗標如何指示使用第一階層ECC於一資料組或是多個ECC分別對應於此資料組中多個群組的資料之例子,其描述可配合參考第3圖。
若失敗位元的數量大於等於第一臨界值且小於第二臨界值(步驟450),可將第二階層ECC儲存於替換ECC記憶體中(如第2圖所示的替換ECC記憶體180),並可將用以指示替換ECC記憶體內第二階層ECC位置的指標(如第2圖所示指標217)儲存於記憶體中邏輯關聯於對應資料組的位址。
若失敗位元的數量大於等於第二臨界值且小於第三臨界值,可將第三階層ECC儲存於替換ECC記憶體中(如第2圖所示的替換ECC記憶體180),並可將用以指示替換ECC記憶體內第三階層ECC位置的指標(如第2圖所示指標217)儲存於記憶體中邏輯關聯於對應資料組的位址。
第二臨界值大於第一臨界值,且第三臨界值大於第二臨界值,一個頁面資料的第一臨界值、第二臨界值及第三臨界值可以預先決定為特定的大小。舉例而言,對於有1K位元組(bytes)的一個頁面資料,第一臨界值、第二臨界值及第三臨界值可以預先決定分別為25、30及40個失敗位元。
若是判定資料組的失敗位元數量大於最大臨界值(例如40個失敗位元),以致於資料組無法以ECC更正,或是替換ECC記憶體(如第2圖所示的替換ECC記憶體180)已經滿了而無法儲存更多的替換ECC(例如第二階層ECC),則此資料組可被標示為失敗資料組,此資料組可使用例如記憶體冗餘(memory redundancy)的技術修復。更進一步關於最大臨界值的描述可配合參考第6圖及第7圖。
第5圖繪示讀取儲存有ECC替換旗標的資料的流程圖。如第5圖所示的例子中,於步驟510,讀取一資料組以及此資料組對應的旗標,其中旗標用以指示使用第一階層ECC於此資料組或是第二階層ECC分別對應於此資料組中多個群組的資料。於步驟510亦讀取第一階層ECC及第二階層ECC。於步驟515,檢查此資料組的旗標。若判定是指示第一階層ECC(步驟520的分支「是」),則使用第一階層ECC執行ECC邏輯於此資料組(步驟530)。若判定是指示第二階層ECC(步驟540的分支「是」),則使用第二階層ECC執行ECC邏輯於此資料組(步驟550)。儘管第5圖僅繪示第一階層ECC以及分別對應於此資料組中多個群組資料的第二階層ECC,然而亦可以使用多於兩個階層的ECC。舉例而言,關於第三階層ECC的描述可配合參考第3圖。ECC替換旗標可指示是否使用多於兩個階層的ECC,如第3圖所示的例子中,旗標值“10”代表使用第三階層ECC。此處所描述讀取資料的方法可由如第1圖所示的裝置100中的控制器110所執行。
對於讀取儲存有ECC替換旗標(例如第二階層ECC)的資料,可執行ECC邏輯以施加一序列的動作於資料組中的每一個第二階層群組的資料。可先執行ECC邏輯以施加序列中的第一動作至一個第二階層群組的資料,接著執行ECC邏輯以施加序列中的第二動作至此群組的資料,並於此同時執行ECC邏輯以施加序列中的第一動作至另一個第二階層群組的資料。
於一種實作方式中,序列的動作包括有癥狀(syndrome)動作、鑰匙(key)動作以及Chien搜尋(Chien search)。癥狀動作計算出癥狀(例如多項式, polynomial)用以指示是否ECC邏輯執行的資料正確無誤,或是資料中的哪一個位元有錯誤。鑰匙動作以癥狀作為輸入以輸出鑰匙(例如錯誤定位多項式, error locator polynomial)。Chien搜尋以鑰匙作為輸入,並輸出錯誤的位置。
在一例子中,一個資料組內包括兩個第二階層群組的資料,其中每個第二階層群組包括資料組中一半的資料。可先執行ECC邏輯以施加第一動作至其中一群組以產生癥狀,此群組包含資料組中一半的資料。接著可執行ECC邏輯以施加後續的第二動作至此群組以產生鑰匙,而於此同時並執行ECC邏輯以施加第一動作至另一群組以產生癥狀,另一群組係包含資料組中另外一半的資料。
因此,序列中的不同動作可以平行地施加至資料組中不同的第二階層群組資料,而能減少在資料組中不同群組資料執行ECC邏輯的時間,不致影響記憶體的讀取速度。
第6圖繪示位元數與臨界電壓的關係圖,顯示記憶體中多個頁面中的2位元記憶胞的臨界電壓(threshold voltage, VT
)分佈。對2位元記憶胞而言,記憶體係依照記憶胞的臨界電壓所落在的4個臨界電壓範圍以偵測資料。如第6圖所繪示的例子中,2位元記憶胞的4種資料值是“11”, “10”, “00”, “01”,感測窗615位於資料值“11”的VT
分佈610以及相鄰的資料值“10”的VT
分佈620之間。另外,感測窗625位於資料值“10”的VT
分佈620以及相鄰的資料值“01”的VT
分佈630之間,感測窗635位於資料值“01”的VT
分佈630以及相鄰的資料值“00”的VT
分佈640之間。
記憶體中各頁面間的VT
分佈不相同,係導因於不同位元數的分佈、不同編程圖樣(program pattern)的分佈、不同程序收尾位元(process tail bits)的分佈、以及不同隨機電報雜訊(random telegraph noise)的分佈。因此,對於記憶體中多頁面組合的VT
分佈,相鄰的VT
分佈可能會重疊。例如,一個資料值的VT
分佈會與另一個資料值的VT
分佈重疊。如第6圖所示的例子中,資料值“11”的VT
分佈610重疊於資料值“10”的VT
分佈620(重疊處617),資料值“10”的VT
分佈620重疊於資料值“01”的VT
分佈630(重疊處627),以及資料值“01”的VT
分佈630重疊於資料值“00”的VT
分佈640(重疊處637)。
若是根據記憶體中多個頁面的VT
分佈的臨界電壓範圍(相鄰的VT
分佈有重疊的現象),決定對多個頁面使用單一長度的ECC,則此單一長度的ECC對於記憶體中的某些頁面(有較寬的感測邊界)是不必要地過長,然而對於記憶體中的其他頁面(有較窄的感測邊界)卻仍可能是不夠長。
單一長度的ECC可定義為記憶體中一個頁面最大長度的ECC。最大長度的ECC即為一個頁面中最多可以被更正的失敗位元。舉例而言,若最大長度的ECC是40位元,則最多可以更正40個位元。
第7圖繪示目標頁面中記憶胞的兩個資料值的臨界電壓範圍之間的感測窗。如第7圖所示的例子中,2位元記憶胞有4種資料值“11”, “10”, “00”, “01”,感測窗730介於兩個相鄰資料值的臨界電壓範圍710與720之間。舉例而言,相鄰的資料值可以是11及10、10及00、或是00及01。對於有臨界電壓713的記憶胞(臨界電壓713低於臨界電壓範圍710中的低邊界715),以及對於有臨界電壓723的記憶胞(臨界電壓723高於臨界電壓範圍720中的高邊界725),這樣的記憶胞內的資料較少機會發生錯誤或需要ECC更正。相對的,對於有臨界電壓717的記憶胞(臨界電壓717高於臨界電壓範圍710中的低邊界715),以及對於有臨界電壓727的記憶胞(臨界電壓727低於臨界電壓範圍720中的高邊界725),這樣的記憶胞內的資料有較高的機會發生錯誤或需要ECC更正。目標頁面中的記憶胞(包括有臨界電壓717或是臨界電壓727的記憶胞)的資料錯誤,可藉由第一階層ECC或是第二階層ECC更正,選擇何種ECC係依據目標頁面的感測窗730的寬度決定。
由於每個目標頁面的感測窗係寬於多個頁面的感測窗,對每個目標頁面決定ECC長度時,這樣的ECC長度可以小於前述相關於第6圖的最大長度ECC。舉例而言,對於記憶體中的多個頁面的資料,若最大長度的ECC是40個位元,則例如30位元的較短長度ECC可用於每個目標頁面、半個目標頁面、或四分之一個目標頁面,如第3圖所示。
第8圖繪示處理器耦接至如上所述的裝置並執行如上所述的方法。於一種實作方式中,處理器810包括邏輯電路812以對資料組中的資料計算並儲存第一階層ECC,以及對資料組中多個第二階層群組資料計算並儲存第二階層ECC。處理器810可包括邏輯電路814以對資料組測試,以決定使用第一階層ECC或是第二階層ECC。處理器810耦接至裝置820。裝置820包括記憶體822,記憶體822可儲存多個資料組,其中包括至少一個資料組使用第一階層ECC,以及至少另外一個資料組以多個ECC分別用於資料組內的多個群組的資料。各個資料組可以有相同大小。處理器810及裝置820經由信號830耦接,使得可以從處理器810傳送第一階層ECC、多個ECC、以及指示使用第一階層ECC或多個ECC的旗標至裝置820,並且可以從裝置820傳送資料組中失敗位元的資訊至處理器810。
測試資料組的邏輯電路可包括邏輯電路以決定若輸入資料的失敗位元數量小於第一臨界值時,使用第一階層ECC,並可包括邏輯電路以決定若輸入資料的失敗位元數量大於等於第一臨界值且小於第二臨界值時,使用第二階層ECC。處理器810更可包括邏輯電路以計算並儲存第三階層ECC,第三階層ECC係用於資料組內的多個第三階層群組的資料。測試資料組的邏輯電路可包括邏輯電路以決定若輸入資料的失敗位元數量大於等於第二臨界值且小於第三臨界值時,使用第三階層ECC。
處理器810可使用如上所述的方法處理多個資料組,其中多個資料組可包括一或多個字元線的數個頁面的資料,或是裝置820中記憶體822全部頁面的資料。於一種實作方式中,處理器可先對多個資料組中的資料計算並儲存第一階層ECC,以及計算並儲存分別用於多個群組資料的多個ECC。接著對每一個資料組,測試此資料組以決定使用第一階層ECC或是多個ECC。於另一種實作方式中,處理器可對於每個資料組測試以決定使用第一階層ECC或是多個ECC,接著再對資料組中的資料計算並儲存第一階層ECC或是分別用於多個群組資料的多個ECC。
如上所述,第一階層ECC以及第二階層ECC中的每一個ECC,皆有相同長度。以131,072個頁面進行估算,其中一個頁面有512位元組(4096個位元),若前述的相同長度是30位元,則所有頁面中99.99%的錯誤可藉由30位元的第一階層ECC偵測並且更正,而所有頁面中剩餘0.01%的錯誤可藉由第二階層ECC偵測並且更正。相較之下,若前述的相同長度減少至20位元,則所有頁面中95%的錯誤可藉由20位元的第一階層ECC偵測並且更正,而所有頁面中剩餘5%的錯誤可藉由第二階層ECC偵測並且更正。因此,所有頁面中5%的頁面儲存兩個20位元的替換ECC(第二階層ECC),所有頁面中95%的頁面儲存第一階層ECC的位元數減少了10個位元。此分析可用於指定一實作方式中所需的替換ECC記憶體的大小。
綜上所述,雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
410、420、430、440、445、450、455、465‧‧‧步驟
Claims (10)
- 一種操作記憶體之方法,包括: 接收一輸入資料組; 儲存用於該輸入資料組之資料的一第一階層錯誤更正碼(ECC),以及儲存用於該輸入資料組之複數個第二階層群組資料的複數個第二階層ECC; 儲存該輸入資料組於該記憶體;以及 測試該輸入資料組以決定使用該第一階層ECC或該些第二階層ECC。
- 如申請專利範圍第1項所述之方法,包括: 在儲存該第一階層ECC的步驟之前,計算該第一階層ECC;以及 在儲存該些第二階層ECC的步驟之前,計算該些第二階層ECC; 其中測試該輸入資料組的步驟包括: 若該輸入資料組之資料的一失敗位元數量小於一第一臨界值,則決定使用該第一階層ECC;以及 若該輸入資料組之資料的該失敗位元數量大於等於該第一臨界值且小於一第二臨界值,則決定使用該些第二階層ECC。
- 如申請專利範圍第1項所述之方法,包括: 計算用於該輸入資料組之複數個第三階層群組資料的複數個第三階層ECC;以及 儲存該些第三階層ECC; 其中測試該輸入資料組的步驟包括: 若該輸入資料組之資料的一失敗位元數量小於一第一臨界值,則決定使用該第一階層ECC; 若該輸入資料組之資料的該失敗位元數量大於等於該第一臨界值且小於一第二臨界值,則決定使用該些第二階層ECC;以及 若該輸入資料組之資料的該失敗位元數量大於等於該第二臨界值且小於一第三臨界值,則決定使用該些第三階層ECC。
- 如申請專利範圍第1項所述之方法,包括: 若使用該第一階層ECC,儲存一使用該第一階層ECC的旗標,若使用該些第二階層ECC,儲存一使用該些第二階層ECC的旗標; 儲存該些第二階層ECC於一替換ECC記憶體;以及 儲存一指標以指示該些第二階層ECC於該替換ECC記憶體的複數個位置; 其中該替換ECC記憶體儲存複數個該記憶體所儲存其他資料組的第二階層ECC; 其中該第一階層ECC以及各該些第二階層ECC之長度相同。
- 一種操作記憶體的方法,包括: 讀取一資料組、該資料組的一旗標、一第一階層ECC、複數個第二階層ECC,其中該旗標用以指示使用該第一階層ECC於該資料組之資料或是使用該些第二階層ECC分別於該資料組之複數個第二階層群組資料; 若指示為該第一階層ECC,使用該第一階層ECC執行一ECC邏輯於該資料組;以及 若指示為該些第二階層ECC,使用該些第二階層ECC執行該ECC邏輯於該資料組。
- 如申請專利範圍第5項所述之方法,其中該ECC邏輯施加一序列的動作至該資料組內各該些第二階層群組資料,使用該些第二階層ECC執行該ECC邏輯的步驟包括: 執行該ECC邏輯以施加該序列中的一第一動作至該些第二階層群組資料中的一群組資料;以及 執行該ECC邏輯以施加該序列中後續的一第二動作至該群組資料,並於此同時執行該ECC邏輯以施加該序列中的該第一動作至該些第二階層群組資料中的另一群組資料。
- 一種裝置,包括: 一記憶體,用以儲存複數個資料組,該些資料組包括至少一使用一第一階層ECC的資料組,以及至少另一使用複數個ECC分別於資料組內複數個群組資料的資料組,其中各該些資料組之大小相同。
- 如申請專利範圍第7項所述之裝置,其中該記憶體儲存一旗標及一指標邏輯關聯於一對應資料組的一位址,且該些ECC儲存於一替換ECC記憶體中,其中該旗標指示使用該第一階層ECC或該些ECC,該指標指示該些ECC於該替換ECC記憶體中的複數個位置,且該替換ECC記憶體儲存複數個該記憶體所儲存其他資料組的複數個ECC,其中該第一階層ECC以及各該些ECC之長度相同。
- 如申請專利範圍第7項所述之裝置,包括一控制器耦接至該記憶體,該控制器包括: 一第一邏輯電路,用以接收一輸入資料組; 一第二邏輯電路,用以儲存該輸入資料組於該記憶體; 一第三邏輯電路,用以儲存一旗標,該旗標用以指示使用該第一階層ECC於該輸入資料組之資料或是使用該些ECC分別於該輸入資料組之該些群組資料; 一第四邏輯電路,用以儲存該些ECC於一替換ECC記憶體中; 一第五邏輯電路,用以儲存一指標,該指標用以指示該些ECC於該替換ECC記憶體中的複數個位置,其中該替換ECC記憶體儲存複數個該記憶體所儲存其他資料組的複數個ECC; 一第六邏輯電路,用以讀取該輸入資料組、該輸入資料組的該旗標、該第一階層ECC、該些ECC,其中該旗標用以指示使用該第一階層ECC或該些ECC; 一第七邏輯電路,用以當指示為該第一階層ECC時,使用該第一階層ECC執行一ECC邏輯於該輸入資料組;以及 一第八邏輯電路,用以當指示為該些ECC時,使用該些ECC執行該ECC邏輯於該輸入資料組; 其中該ECC邏輯施加一序列的動作至該輸入資料組內各該些群組資料,該第八邏輯電路包括: 一第九邏輯電路,用以執行該ECC邏輯以施加該序列中的一第一動作至該些群組資料中的一群組資料;以及 一第十邏輯電路,用以執行該ECC邏輯以施加該序列中後續的一第二動作至該群組資料,並於此同時執行該ECC邏輯以施加該序列中的該第一動作至該些群組資料中的另一群組資料。
- 如申請專利範圍第7項所述之裝置,該裝置耦接至一處理器,該處理器包括: 一第十一邏輯電路,用以計算並儲存該第一階層ECC,以及計算並儲存該些ECC,該些ECC係複數個第二階層ECC; 一第十二邏輯電路,用以測試該些資料組其中之一輸入資料組,以決定該輸入資料組使用該第一階層ECC或該些第二階層ECC,該第十二邏輯電路包括: 一第十三邏輯電路,用以決定當該輸入資料組之資料的一失敗位元數量小於一第一臨界值時,使用該第一階層ECC;以及 一第十四邏輯電路,用以決定當該輸入資料組之資料的該失敗位元數量大於等於該第一臨界值且小於一第二臨界值時,使用該些第二階層ECC;以及 一第十五邏輯電路,用以計算並儲存用於該些資料組其中之一的複數個第三階層群組資料的複數個第三階層ECC。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/167,927 US9542268B2 (en) | 2014-01-29 | 2014-01-29 | Dynamic data density ECC |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201530554A true TW201530554A (zh) | 2015-08-01 |
TWI527049B TWI527049B (zh) | 2016-03-21 |
Family
ID=53679153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103112067A TWI527049B (zh) | 2014-01-29 | 2014-04-01 | 操作記憶體之方法及記憶體裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9542268B2 (zh) |
CN (1) | CN104809031B (zh) |
TW (1) | TWI527049B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10546628B2 (en) | 2018-01-03 | 2020-01-28 | International Business Machines Corporation | Using dual channel memory as single channel memory with spares |
US10606713B2 (en) | 2018-01-03 | 2020-03-31 | International Business Machines Corporation | Using dual channel memory as single channel memory with command address recovery |
US10853167B2 (en) * | 2019-01-28 | 2020-12-01 | Winbond Electronics Corp. | Memory apparatus having hierarchical error correction code layer |
JP2020154728A (ja) | 2019-03-20 | 2020-09-24 | キオクシア株式会社 | メモリシステム及びその制御方法 |
US11409601B1 (en) * | 2021-01-26 | 2022-08-09 | Micron Technology, Inc. | Memory device protection |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5359468A (en) * | 1991-08-06 | 1994-10-25 | R-Byte, Inc. | Digital data storage tape formatter |
JP4129381B2 (ja) | 2002-09-25 | 2008-08-06 | 株式会社ルネサステクノロジ | 不揮発性半導体記憶装置 |
US20060080515A1 (en) * | 2004-10-12 | 2006-04-13 | Lefthand Networks, Inc. | Non-Volatile Memory Backup for Network Storage System |
JP2007018563A (ja) * | 2005-07-05 | 2007-01-25 | Toshiba Corp | 情報記憶媒体、情報記録方法及び装置、情報再生方法及び装置 |
US8595573B2 (en) * | 2006-12-03 | 2013-11-26 | Apple Inc. | Automatic defect management in memory devices |
US8151163B2 (en) * | 2006-12-03 | 2012-04-03 | Anobit Technologies Ltd. | Automatic defect management in memory devices |
KR100873824B1 (ko) * | 2007-05-04 | 2008-12-15 | 삼성전자주식회사 | 오류 제어 코드 장치 및 그 방법 |
US8327249B2 (en) * | 2009-08-20 | 2012-12-04 | Broadcom Corporation | Soft error rate protection for memories |
JP5540969B2 (ja) * | 2009-09-11 | 2014-07-02 | ソニー株式会社 | 不揮発性メモリ装置、メモリコントローラ、およびメモリシステム |
JP5764392B2 (ja) * | 2011-06-13 | 2015-08-19 | 株式会社メガチップス | メモリコントローラ |
US8898548B1 (en) * | 2012-08-24 | 2014-11-25 | Western Digital Technologies, Inc. | Methods, data storage devices and systems having variable size ECC page size |
US9071281B2 (en) * | 2013-03-10 | 2015-06-30 | Intel Corporation | Selective provision of error correction for memory |
-
2014
- 2014-01-29 US US14/167,927 patent/US9542268B2/en active Active
- 2014-03-26 CN CN201410116208.XA patent/CN104809031B/zh active Active
- 2014-04-01 TW TW103112067A patent/TWI527049B/zh active
Also Published As
Publication number | Publication date |
---|---|
US20150212875A1 (en) | 2015-07-30 |
TWI527049B (zh) | 2016-03-21 |
CN104809031A (zh) | 2015-07-29 |
US9542268B2 (en) | 2017-01-10 |
CN104809031B (zh) | 2018-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI529735B (zh) | 二次組態記憶體裝置之錯誤更正碼方法與裝置 | |
KR101675075B1 (ko) | 비-휘발성 램 에러 재-맵핑을 위한 방법 및 장치 | |
US9223648B2 (en) | Memory storage device, memory controller thereof, and method for processing data thereof | |
US9535785B2 (en) | ECC method for flash memory | |
US8862953B2 (en) | Memory testing with selective use of an error correction code decoder | |
TWI527049B (zh) | 操作記憶體之方法及記憶體裝置 | |
CN105144302A (zh) | 存储器装置中的错误校正操作 | |
KR20160024966A (ko) | 데이터 에러 교정용 회로, 장치, 및 방법 | |
US9552244B2 (en) | Real time correction of bit failure in resistive memory | |
KR20170135691A (ko) | 복수의 데이터 비트와 복수의 어드레스 비트로 이루어진 블록용 에러 코드 발생장치 및 방법 | |
US10248497B2 (en) | Error detection and correction utilizing locally stored parity information | |
US9009548B2 (en) | Memory testing of three dimensional (3D) stacked memory | |
JP6018508B2 (ja) | 不揮発性半導体記憶装置及びそのテスト方法 | |
WO2017107160A1 (zh) | 基于异构混合内存的nvm坏块识别处理及纠错方法和系统 | |
US11106532B1 (en) | Selective sampling of a data unit during a program erase cycle based on error rate change patterns | |
CN106067326B (zh) | 错误校正电路及包括其的半导体存储器件 | |
TWI511158B (zh) | 記憶體模組上之記憶體備用技術 | |
CN104637542B (zh) | 储存对应于数据的错误更正码的存储器装置及其操作方法 | |
TWI509622B (zh) | 具分散錯誤功能的記憶體及其分散錯誤位元的方法 | |
JP2008102693A (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US9519539B2 (en) | Monitoring data error status in a memory | |
TWI523023B (zh) | 用於記憶體之錯誤校正碼方法 | |
JP2012230730A (ja) | 半導体装置 |