TWI803203B - 儲存裝置、控制器以及操作方法 - Google Patents
儲存裝置、控制器以及操作方法 Download PDFInfo
- Publication number
- TWI803203B TWI803203B TW111106308A TW111106308A TWI803203B TW I803203 B TWI803203 B TW I803203B TW 111106308 A TW111106308 A TW 111106308A TW 111106308 A TW111106308 A TW 111106308A TW I803203 B TWI803203 B TW I803203B
- Authority
- TW
- Taiwan
- Prior art keywords
- ecc
- memory array
- array
- logic
- memory
- Prior art date
Links
Images
Classifications
-
- 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/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/353—Adaptation to the channel
-
- 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
-
- 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/6508—Flexibility, adaptability, parametrability and configurability of the implementation
- H03M13/6513—Support of multiple code types, e.g. unified decoder for LDPC and turbo codes
-
- 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/6508—Flexibility, adaptability, parametrability and configurability of the implementation
- H03M13/6516—Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Vehicle Body Suspensions (AREA)
- Electrotherapy Devices (AREA)
- Steering Control In Accordance With Driving Conditions (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
本發明提供一種儲存裝置,包含記憶體陣列及記憶體控制器。記憶體控制器產生用於記憶體陣列的讀取及寫入命令。用於儲存裝置的錯誤校正碼引擎可操作以使用多個不同碼字大小、不同碼率或不同錯誤校正碼(Error Correction Code,ECC)演算法。包含取決於記憶體陣列的操作條件而應用選定碼字大小、碼率或ECC演算法的邏輯。
Description
本發明是關於使用用於記憶體中的資料的儲存的錯誤校正,所述記憶體可具有不同錯誤率,取決於記憶體的操作條件。
在資料儲存系統中,錯誤檢查與校正ECC演算法通常用以改良可靠性。ECC演算法更通常用於積體電路記憶體裝置中,例如高容量NAND及NOR快閃裝置,其中錯誤率可取決於記憶體的操作條件,例如溫度、寫入和抹除週期次數、存取頻率等。
此外,在許多儲存系統中,需要使操作的功耗及速度最佳化同時保持在指定錯誤率規範內。結合ECC演算法,儲存系統用以儲存碼字,所述碼字包含承載資料段及在承載資料段上計算的ECC碼段的組合。舉例而言,一種演算法可計算具有4千位元承載資料段外加在4千位元上計算的ECC碼段的碼字。另一演算法可計算具有2千位元承載資料段外加在2千位元上計算的ECC碼段的碼字。此外,不同ECC演算法可具有不同碼率,其中碼率為承載資料段的大小除以碼字中承載資料段的大小及ECC碼段的大小的總和,其指示在給定大小碼字內傳輸的可用資料量。可根據系統的特定需要使用各種大小的碼字及各種碼率。
碼字的大小及碼率可根據所應用的特定ECC演算法而變化。針對給定承載資料段大小的較大ECC碼字可提供較佳的防錯保護強度,但需要較多的功耗及較複雜的演算法,所述演算法可能消耗較大量的處理資源。另一方面較小碼字可節省功耗及依賴於較簡單的演算法,但針對給定碼率可具有較弱的保護強度。
提供一種結合資料儲存系統就功耗、操作速度以及複雜度而言需要更高效使用ECC演算法的技術。
所述的一種儲存技術,其為錯誤率可隨操作條件改變的記憶體陣列提供具有不同碼字大小及/或不同碼率的ECC演算法的可適性選擇。
所述錯誤率可取決於操作條件的儲存裝置。在一個態樣中,儲存裝置包括記憶體陣列,及設置於用以接收承載資料的輸入端與記憶體陣列之間的資料路徑中的控制器。控制器包含錯誤校正碼ECC引擎及調整邏輯。ECC引擎產生用於儲存在記憶體陣列的寫入位址中的碼字,所述碼字包含各別承載資料段及ECC碼段。ECC引擎包含用以實施具有至少二ECC碼率的碼字的邏輯,調整邏輯用以依據儲存於多個記憶體區塊中的已定址記憶體區塊中資料可靠性(data reliability),將所述至少二ECC碼率映射至位址的日誌以及用以使用隨所述位址及所述操作條件而變化的所述日誌,自至少二ECC碼率選擇其一ECC碼率。
在所述儲存技術的一個態樣中,記憶體陣列包含多個記憶體區塊,多個記憶體區塊中的每一記憶體區塊設置於單個積體電路晶片上;以及包含ECC引擎的控制器,設置於用以接收承載資料及記憶體陣列的輸入端之間的資料路徑中,所述ECC引擎用以產生用於儲存在多個記憶體區塊中的已定址記憶體區塊中的位址中的碼字,所述碼字包含各別承載資料段及ECC碼段,所述ECC引擎包含用以實施具有至少二ECC碼率的碼字的邏輯。控制器更包含調整邏輯,調整邏輯是將至少二ECC碼率映射至位址的日誌以及用以使用隨位址及操作條件而變化的日誌自至少二ECC碼率選擇其一ECC碼率的邏輯。在技術的此態樣中,給定碼字的承載資料段及ECC碼段一起儲存在記憶體陣列的相同區塊中。在一些實施例中,給定碼字的承載資料段及ECC碼段一起儲存在記憶體陣列的相同區塊的相同頁面上。
在所述儲存技術的各種態樣中,儲存裝置包括記憶體陣列以及可操作方式連接至記憶體陣列的記憶體控制器。記憶體控制器產生用於記憶體陣列的讀取及寫入命令。用於儲存裝置的ECC引擎包含可操作以實施多個不同ECC演算法的邏輯,其可能會導致使用不同碼字大小、不同碼率以及不同校正能力。包含取決於記憶體陣列的操作條件而應用選定碼字大小、碼率或ECC演算法的邏輯。
在一種途徑中,記憶體控制器包含用以對記憶體陣列的部分的存取進行計數的邏輯,且操作條件包含對碼字待寫入至其中的記憶體陣列的部分的存取計數。
在另一途徑中,包含記憶體控制器可存取的溫度感測器或其他環境感測器。此途徑中的操作條件可包含感測器的輸出,其可指示記憶體陣列或記憶體陣列中所存取部分的操作溫度。
在另一實施方法中,存儲器控制器包括磨損均衡邏輯(wear leveling),應用於高密度快閃記憶體,而基於受監控的記憶體區塊耐久性(例如存儲器陣列的區塊中的寫入和擦除週期次數),以及在閃存中資料訪問頻率,用以識別該資料為熱(Hot data)或冷資料(Cold data)。 操作條件可以包括磨損平衡狀態及冷或熱資料。
。在一些實施例中,記憶體器控制器包含一邏輯用以記錄邏輯地址對應實體地址所選用的碼字大小、碼率或ECC算法,將這個對應表存儲在閃存部份陣列空間。
在另一態樣中,記憶體陣列可包含用於「熱」資料儲存的部分及用於「冷」資料儲存的部分,其分別具有高存取頻率及低存取頻率。在ECC演算法、碼字大小或碼率的選擇中應用的操作條件可包含位址部分是否指定用於「熱」或「冷」資料。
在本文中所描述的一種儲存技術中,記憶體陣列可包括第一子陣列及第二子陣列。在一個實施方案中,記憶體陣列可包括積體電路上的高密度快閃記憶體,具有用以操作積體電路上的第一子陣列以每記憶體單元儲存一個位元及用以操作積體電路上的第二子陣列以每記憶體單元儲存多於一個位元的邏輯。舉例而言,記憶體控制器可在程序上應用以選擇對第一子陣列進行存取的ECC演算法,且可應用不同程序以選擇如上文所論述的對第二子陣列進行存取的ECC演算法。
此外,記憶體控制器可執行程序以將資料集合自第一子陣列移動至第二子陣列,且在程序的執行中,改變應用於資料集合的ECC演算法。
一般而言,描述一種用於操作儲存裝置的方法,其包含將資料集合寫入至記憶體陣列。寫入資料集合的過程包含識別儲存資料集合的碼字的記憶體陣列的一部分,及判定識別出的部分的操作條件。過程可包含自多個ECC演算法中選擇ECC演算法,其取決於所判定的操作條件可具有不同碼字大小或碼率。在選擇ECC演算法時,使用資料集合的選定ECC演算法計算一或多個碼字。接著,將所計算的一或多個碼字寫入至記憶體陣列的識別出的一部分或部分。
方法亦可包含自記憶體陣列的已定址部分讀取特定碼字;將記憶體陣列的已定址部分映射至針對已定址部分而選擇的ECC演算法;以及應用選定ECC演算法以檢查特定碼字中的錯誤。
使用「自適應ECC」提供技術。非揮發性儲存控制器可含有可支持數目「n」的不同類型ECC碼字的可組態的ECC引擎。ECC的較小碼字可節省功耗及邏輯閘數。ECC的較大碼字可提供較佳的保護強度但佔據較大額外空間,且涉及較大功耗及較大邏輯閘數。
在審閱以下圖式、詳細描述以及申請專利範圍之後可見技術的其他態樣及優勢。
參考圖1至圖12提供技術的實施例的詳細描述。
圖1為包含記憶體控制器及記憶體陣列的一個實例儲存系統100的方塊圖。在此實例中,儲存系統100可作為固態磁碟操作。本技術可應用於利用ECC技術的其他類型的儲存系統中。
圖1中所繪示的儲存系統100包含主機介面101,其連接至可使用邏輯位址產生用於承載資料的資料集合的讀取及寫入命令的主機系統。此外,儲存系統100包含記憶體陣列110,其可包括一個積體電路非揮發性記憶體裝置,或如圖1中所示出的多個積體電路非揮發性記憶體裝置。在所示出的實例中,積體電路非揮發性記憶體裝置可包括具有NAND陣列架構、NOR陣列架構或其他陣列架構的高密度快閃記憶體。此外,積體電路非揮發性記憶體裝置可包含多個子陣列。在所示出的實例中,子陣列102a用於每單元儲存一個位元的單級單元(Single Level Cell,SLC)操作,且子陣列102b用於每單元儲存多於一個位元的多級單元(Multiple Level Cell)操作,例如三級單元(Triple Level Cell,TLC)。
在此實例中,記憶體控制器連接於主機介面101與記憶體陣列110之間。記憶體控制器可包含一或多個處理器103以執行記憶體程序,例如損耗平衡、邏輯至實體位址變換、對記憶體陣列110進行存取的仲裁、維持熱及冷資料分類的讀取存取計數、維持記憶體陣列的部分的程式及擦除計數等。記憶體控制器可包含例如使用DRAM或SRAM實施的緩衝器104,其可藉由一或多個處理器103存取。一些實施例中的記憶體控制器包含與一或多個處理器103及緩衝器104進行資料流通信的加擾器105。圖1中所繪示的記憶體控制器包含多模式ECC引擎106,其包含用以實施適用於特定實施例的具有不同碼字大小及不同碼率的多個ECC演算法的邏輯。多模式ECC引擎106可包含使用專用邏輯電路、可組態邏輯電路、執行軟體的通用處理器或以其他方式實施的狀態機。在一些實施例中,可使用藉由一或多個處理器103執行的處理器程式實施多模式ECC引擎106。記憶體控制器可實施例如快閃轉換層(Flash Translation Layer,FTL)的協定以將承載資料的主機讀取及寫入命令翻譯為可藉由用於讀取及寫入ECC碼字的快閃記憶體實體位址使用的命令。
在圖1的組態中,多模式ECC引擎106與NAND介面107進行資料流通信(在使用NAND架構積體電路實施記憶體陣列110的情況下)。NAND介面107可包含用以在記憶體陣列110中執行用於積體電路記憶體裝置的輸入/輸出協定的電路,包含用以在記憶體陣列110中提供用於讀取、寫入以及擦除操作的命令及實體位址的邏輯。非揮發性記憶體的「寫入」操作可為「編程」操作,或編程及擦除操作的組合。
記憶體控制器亦可保存日誌,例如記憶體中的映射表109或其他類型的邏輯電路或程式,所述日誌將寫入碼字的實體位址(例如,區塊位址)映射至用於產生碼字的選定ECC演算法。
記憶體陣列110可由記憶體陣列110的不同部分中的錯誤率表徵,其在不同操作條件中變化。操作條件可以下各者反映:操作溫度;藉由損耗平衡程序提供的損耗平衡參數;寫入/擦除次數以及可維持在記憶體控制器中的存取頻率(包含讀取);可使用陣列110中的記憶體單元的區塊的讀取及拷貝返回程序週期性地檢測到的錯誤率(不常更動的資料);某些記憶體操作,例如將資料集合自一個子陣列(例如,SLC子陣列)移動至不同子陣列(例如,TLC子陣列);或可由應用於記憶體控制器的信號或提供至記憶體控制器的資料表示的其他條件。在圖1中,儲存系統100包含將資料提供至記憶體控制器的溫度感測器108(或其他類型的環境感測器),其可指示記憶體陣列110或記憶體陣列110的部分的操作的溫度或其他環境條件,且由記憶體控制器中的邏輯使用以選擇ECC演算法、碼率或碼字大小。
許多類別的ECC演算法適合在本技術中使用。ECC演算法的類別的實例包含低密度同位檢查(Low-Density Parity Check;LDPC)演算法(亦稱為加拉格爾(Gallagher)演算法)、漢明(Hamming)演算法、瑞德-所羅門(Reed-Solomon)演算法以及玻色-喬杜里-霍昆格姆(Bose-Chaudhuri-Hocquenghem;BCH)演算法。可調整單一類別的演算法以藉由改變用以計算碼字的參數來達成不同錯誤檢測與校正能力、不同碼率以及不同碼字大小。因此,出於本說明書的目的,可使用一種類別的演算法以藉由在記憶體控制器中(例如,多模式ECC引擎106中)使用ECC演算法的不同參數來實施多個ECC演算法的邏輯。此外,可使用多於一種類別的演算法以實施記憶體控制器中的多個ECC演算法的邏輯。通常儲存於非揮發性記憶體中之各該記憶體陣列中資料可靠性,乃是透過一些參數的組合而設定,比如,記憶體陣列之溫度、編程/擦除週期次數(a number of P/E cycles)、多個讀取周期(a number of read cycles)、擦除時間(an erase time)、讀取時間(a read time),溫度(temperature),和儲存單元的閾值電壓等,用以更強健的對應於各該記憶體陣列中真實的情況的資料可靠性,以便增強資料的可靠程度。
參考圖1描述其實例的記憶體控制器包含用以執行用於操作記憶體的程序的邏輯,所述程序包含在記憶體陣列中讀取及寫入碼字,其中碼字組合形成用於主機處理器中所使用的資料集合。在此情形下執行的程序可包含將資料集合寫入至記憶體陣列,包含識別記憶體陣列的一部分且判定識別出的部分的操作條件;取決於所判定的操作條件及陣列的識別出的部分,自具有不同碼字大小或碼率的多個ECC演算法中選擇ECC演算法;使用用於資料集合所選定ECC演算法來計算一或多個碼字;以及將計算出的一或多個碼字寫入至記憶體陣列識別出的部分。此外,在此情形下執行的程序可包含自記憶體陣列的已定址部分讀取特定碼字;將記憶體陣列的已定址部分映射至針對已定址部分而選擇的ECC演算法;以及應用選定ECC演算法以檢查特定碼字中的錯誤。可如參考圖1所描述的或以其他組態實施用以執行程序的邏輯。舉例而言,記憶體控制器及記憶體陣列可為單個積體電路的部分。
圖2示出儲存系統的一部分技術具有ECC碼率日誌及記憶體結構的。在此實例中,承載資料源將匯流排201上的輸入提供至多模式ECC引擎106。此外,操作條件在信號線202上作為輸入自如上文所論述的操作條件信號傳送至多模式ECC引擎106。多模式ECC引擎106使用選自日誌210的ECC碼率產生用於儲存在記憶體陣列220中的碼字。多模式ECC引擎106用於跨匯流排204與NAND介面205進行資料流通信,所述NAND介面205可管理對一或多個積體電路記憶體裝置的存取。在所示出的實施例中,NAND介面205用於跨匯流排206與包含記憶體陣列220的積體電路進行資料通信。其中,以本實施例為例,控制器中之處理器103中,另包括調整邏輯因應於記憶體陣列220的資料可靠度,可為操作條件的一個或多個參數或一個或多個的參數歷史來調整對應的ECC碼率,所述參數包括:編程/擦除週期次數(a number of P/E cycles),多個讀取周期(a number of read cycles),擦除時間(an erase time),讀取時間(a read time),溫度(temperature),和儲存單元的閾值電壓…等;用以維持不同操作條件下的資料可靠度,更符合實際儲存於各該記憶體陣列之資料可靠性之情況。
在此實例中,記憶體陣列220為設置於具有周邊電路221的單個積體電路上的NAND快閃記憶體,所述周邊電路221包含命令解碼器、位址解碼器以及對於在記憶體陣列220中進行記憶體操作必需的其他電路。此外,在此實例中,記憶體在單個積體電路上組織成多個區塊,標記為區塊位址BLK 0、區塊位址BLK 1、區塊位址BLK 2、…區塊位址BLK n-1。多個區塊可組織成出於此實例的目的包含具有位址BLK 0及BLK 1的區塊的多個偽單級單元SLC區塊250及出於此實例的目的包含具有位址BLK 2至位址BLK n-1的區塊的多個三級單元TLC區塊251。多個區塊可包括使用相同技術實施的記憶體單元,所述記憶體單元在一些區塊中操作為單級單元且在其他區塊中操作為多級單元(例如,三級單元)。在其他實例中,多個區塊可包含在不同類型的區塊中的不同類型或變化形式的記憶體單元。
如本文中所描述的記憶體區塊為可藉由區塊位址識別的實體記憶體的一部分。區塊位址為用以在記憶體陣列中存取資料的位址的一部分。舉例而言,記憶體位址可包含38位元以識別儲存於記憶體陣列中的個別位元的儲存位置。在38位元中,數個高階位元可識別積體電路晶片上的記憶體平面,例如兩個高階位元的,數個第一中間階位元可識別記憶體平面內的個別區塊(例如16個中間階位元),數個第二中間階位元可識別個別區塊內的個別頁面(例如12個中間階位元),以及數個低階位元可識別個別頁面內的個別位元(例如8個低階位元)。在一些實施例中,區塊內的個別頁面可包含通常用以保持與個別頁面中的資料相關聯的元資料的擴展(或備用)區域。區塊位址包含記憶體位址中足以獨特地識別區塊的位址位元。區塊的邏輯及實體配置取決於多種因素,包含特定類型的記憶體、寫入及擦除演算法、施加的製造技術等,且因此可自一種類型的記憶體陣列變化成另一種。
如圖2中所示出,多模式ECC引擎106藉由信號線203耦接至日誌210,所述日誌210可存儲在包括如暫存器檔案(register file)、SRAM、DRAM、PCRAM或快閃記憶體相似的儲存器,其保存區塊位址至ECC碼率的映射,其中ECC碼率由此圖示中的參數ECC LEVEL #指示。不同區塊可具有不同ECC碼率。如上文所提及,多模式ECC引擎106可具有用以執行多個不同ECC演算法及實施多個不同碼率的資源。每一ECC LEVEL可指示用以實施選定碼率的演算法中所選的一個。如圖示中所見,記憶體陣列220中具有區塊位址BLK 0、區塊位址BLK 1、區塊位址BLK 2、…區塊位址BLK n-1的區塊中的每一者在日誌210中具有對應入口。亦在此實例中,如由ECC LEVEL圖215所指示,SLC區塊BLK 0及SLC區塊BLK 1可具有判定用於對應記憶體級別的ECC LEVEL,當次所述ECC LEVEL可固定設定為如此圖中所指示為ECC LEVEL 5或其他任意值,或使用與應用於其他區塊的不同程序動態地來判定(例如參見下文的圖11至圖12)。
圖3示出與圖1的系統相似的系統的組態,其中記憶體陣列包含耦接至NAND介面306的多個NAND快閃記憶體晶片,所述NAND介面306與圖1中的NAND 介面107相似。在此組態中,NAND介面306提供與多個資料通道Ch(0)、資料通道Ch(1)、…資料通道Ch(N-1)的通信。每一資料通道耦接至多個NAND快閃晶片。因此,如所示出,通道Ch(N-1)耦接至NAND快閃晶片321、NAND快閃晶片322、NAND快閃晶片323…的集合。通道Ch(0)耦接至包含NAND快閃晶片310的NAND快閃晶片的集合。通道Ch(1)耦接至包含NAND快閃晶片311的NAND快閃晶片的集合。圖3的系統中的NAND快閃晶片中的每一者可包含一或多個區塊。對於具有兆位元儲存容量的NAND快閃晶片,出於實例的目的,晶片可包含4個平面,每一平面具有1438個區塊,每一區塊具有1536個頁面,且每一頁面具有16,384個主要區域位元及2048個備用區域位元。
圖4示出單個積體電路上的3D NAND快閃陣列的結構,其支持如本文中所描述的多模式ECC操作。在此實例中,平面401包含多個區塊(例如410)。每一區塊包含多個頁面,其中每一頁面包含主要區域420及備用區域421,備用區域421通常用於存放元資料(metadata)。當寫入如本文中所描述的碼字時,碼字的承載資料段及ECC碼段兩者可寫入在相同實體區塊中,且在一些實施例中可寫入在相同實體頁面中。在將ECC碼字寫入在實體頁面上的實施例中,承載資料段及ECC碼段可連續地寫入在主要區域內。在將ECC碼字寫入在實體頁面上的其他實施例中,承載資料段可寫入在頁面的主要區域內,且ECC碼段可寫入在頁面的備用區域中。 在另一的實施例中,具有不同碼率的碼字被存儲以便它們可以在單個晶片中的單個讀取操作中被檢索,例如單頁讀取操作,或在使用來自存儲器陣列的連續頁的連續地址的連續讀取操作中。在所示出的實例中,基於區塊位址設定ECC LEVEL或碼率。在其他實施例中,可基於區塊位址及頁面位址的組合設定ECC LEVEL或碼率用於記憶體陣列中的一些或所有區塊。
圖5為包括第一子陣列501及第二子陣列502的記憶體陣列的圖示。在此實例中,第一子陣列501包括多個單級單元SLC區塊且第二子陣列502包括多個三級單元TLC區塊,其呈現以高密度NAND快閃積體電路裝置部署且可以其他類型的記憶體裝置部署的組態。在一些實施例中,SLC區塊及TLC區塊可實施於同一積體電路上。在一些實施例中,SLC區塊及TLC區塊是靜態配置且可具有不同記憶體單元結構或不同讀取/編程/擦除演算法以適應每單元單位元或每單元多位元操作。在其他實施例中,提供適用於多級單元操作的記憶體單元的陣列,且可動態地選擇第一子陣列中的區塊用於SLC操作,有時稱作偽SLC區塊。SLC區塊與多級單元區塊相比可具有較快存取時間及較大操作容忍電位偏移量。因此,在一些實例中,對於給定的資料量,SLC區塊與TLC區塊相比可以較高ECC碼率(每碼字較多資料)及較小碼字操作。因此,在具有此特徵的實施例中,用於選擇ECC演算法的操作條件可為實體位址是否指向SLC區塊或TLC區塊。
圖6為在與圖1的記憶體控制器相似的記憶體控制器中實施的程序的簡化流程圖。在圖6中,在記憶體控制器處接收寫入命令(步驟600)。記憶體控制器自操作條件監視器602接收輸入且用待使用多模式ECC引擎應用的演算法選擇ECC LEVEL,以實施於被選定的ECC碼率(步驟601)。被選定的ECC LEVEL亦可為記憶體陣列中待寫入資料的實體位址的函數。
在選定ECC LEVEL(步驟601)之後,多模式ECC引擎使用被選定的ECC LEVEL以產生待寫入至記憶體陣列的碼字(步驟603)。接下來,將碼字寫入至記憶體陣列(步驟604)。此外,記錄被選定的ECC碼率在表中以映射實體位址至碼字,將被選定的ECC碼率寫入至被選定的ECC LEVEL以產生碼字(步驟605)。接著,完成圖6的流程圖(步驟606)。
圖7為藉由記憶體控制器執行的用於回應於操作條件而選擇ECC LEVEL的程序的流程圖。在此實例中多個ECC LEVEL由具有不同ECC碼率表徵,其中對於具有「n」個位元的原生承載資料段及且「k」個位元的冗餘ECC碼資料段的ECC碼字,ECC碼率等於n/n+k。
在圖7的程序中,流程在步驟700處開始。設定初始ECC碼率為最大碼率(步驟701),其通常與較低錯誤校正能力及較高吞吐量相關。程序週期性地或不時地以適用特定限制的形式探測記憶體陣列中的頁面以檢測位元的計數,所述位元的計數是藉由ECC操作(步驟702)或其他操作條件校正(位元翻轉)。可使用讀取及拷貝返回操作執行此等探測。可累積位元翻轉資訊以形成統計量測值「m」(步驟703)。舉例而言,在包含具有多個區塊的子陣列的記憶體陣列中,統計量測值可為已最早存取的子陣列中的區塊集的字元線上的位元翻轉數量(bit flip counts)的平均值。在其他實施例中,統計量測值可僅為單一字元線上的位元翻轉計數,一般而言,其可視為反映陣列或陣列的部分的操作條件。
接下來,將統計量測值m與臨界值TH進行比較(步驟704)。若量測值m大於臨界值TH,則ECC演算法分支至選擇下一ECC碼率的程序(步驟705)。接下來,判定呈遞減形式的ECC碼率參數(例如ECC LEVEL #)是否小於或等於最小值,對應於可用於記憶體陣列的特定部分的最低ECC碼率(步驟706)。在一種途徑中,ECC碼率可遞減一,且若未在最小值設定遞減的ECC碼率參數,則ECC演算法改變為支持下一碼率的演算法(步驟707)且演算法結束(步驟710)。若在步驟706處ECC碼率參數小於或等於最小值,則設定或維持具有最小碼率的ECC演算法(步驟707),且流程圖結束(步驟710)。
圖8為藉由記憶體控制器執行的用於回應於記憶體陣列的操作條件而選擇ECC演算法的另一程序的流程圖,其中在此實例中,操作條件藉由例如溫度感測器的環境感測器指示。此演算法在步驟800處開始。在此程序中,溫度感測器的輸出用以計算統計參數「TA比率」,其等於HT/(HT+LT),其中HT為在間隔期間感測的高溫,且LT為在間隔期間感測的低溫(步驟801)。以此方式,較高TA比率指示間隔期間的較大溫度波動,且較低TA比率指示間隔期間的較小溫度波動。接著,對照臨界值週期性地檢查TA比率(步驟802)。若超出臨界值TH,則改變碼率新的ECC LEVEL被採用(步驟803),和流程圖結束(步驟804)。若TA比率未超過臨界值TH,則可保持相同ECC LEVEL,和流程圖結束(步驟804)。
可利用圖8中對應於溫度的其他演算法及其他統計參數,包含例如正使用的積體電路記憶體裝置的或其中部署儲存系統的環境的原始溫度量測值。
圖9為可藉由記憶體控制器執行的用於具有SLC子陣列及TLC子陣列(或多級單元子陣列)的記憶體陣列的寫入程序的流程圖。圖9的程序在步驟900處開始,接收寫入命令。處理命令以判定其中待寫入資料的實體位置,包含目標是否為SLC區塊(步驟901)。若目標實體位址在SLC區塊中,則使用為操作設定的SLC ECC LEVEL(例如,如在圖2中所使用的ECC LEVEL 5)產生碼字(步驟903)。若在步驟901處,目標實體位址不在SLC區塊中,則可基於操作條件而判定ECC模式為ECC LEVEL n(步驟902),將選定ECC模式記錄一映射表中,該映射表對應實體位址ECC LEVEL n於相對應的位置,且使用選定ECC模式產生ECC碼字(步驟904)。在步驟903或步驟904處產生碼字之後,在適當時將碼字寫入至SLC區塊或TLC區塊中的實體位址(步驟905)且流程圖結束(步驟906)。
記憶體陣列具有多個子陣列,例如SLC子陣列和TLC(或多級單元)子陣列,利用SLC與TLC子陣列訪問時間的差異,可以以將SLC子陣列視為高速緩衝存儲器的方式進行操作。在SLC子陣列與TLC子陣列之間移動資料作為高速緩存管理操作的部分,所述高速緩存管理操作可藉由處理器執行的處理器程式實施於圖1的儲存系統中。如圖10中所繪示,可以當資料在子陣列之間移動時導致ECC LEVEL改變的方式執行用以在SLC子陣列與TLC子陣列之間或在TLC子陣列與SLC子陣列之間移動資料的寫入程序。
圖10為可藉由記憶體控制器執行的用於具有SLC子陣列及TLC子陣列的記憶體陣列的讀取程序的流程圖。圖10的程序以接收讀取命令開始(步驟1000)。處理命令以判定實體區塊位址(Physical Block Address,PBA),及判定目標是否為SLC區塊(步驟1001)。若在步驟1001處,目標實體位址為SLC區塊,則確定SLC ECC模式(步驟1003),且自陣列輸出碼字(步驟1005)用於ECC處理。若在步驟1001處,目標實體位址為TLC區塊,則自將ECC模式映射至實體區塊位址的日誌判定ECC模式(步驟1002)。接著,確立藉由日誌指示的ECC模式(步驟1004),且自記憶體陣列輸出碼字用於ECC處理(步驟1005)。在輸出碼字之後,圖10中所繪示的程序完成(步驟1006)。
在一些實施例中,可以將SLC區域處理為循環緩衝器的方式操作包含SLC區域及MLC區域的記憶體裝置。可在記憶體控制器(例如,圖1的處理器103)處或系統中的其他控制節點中的快閃變換層邏輯中執行循環緩衝器管理常式。圖11為回應於寫入指標1101存取SLC區塊1100的簡化圖示。每一新碼字寫入至藉由寫入指標1101識別的實體區塊位址,且寫入指標遞增。當寫入指標遞增至陣列的末端時,其環繞至起點,以循環緩衝器配置繼續進行。可執行廢料收集常式或其他常式以將在寫入指標之後的下一區塊保持在就緒狀態以接收新碼字。舉例而言,可將在寫入指標後的區域中保持有效資料的SLC區塊拷貝至MLC區塊,且可擦除SLC區塊,藉此釋放SLC區塊從而寫入新碼字。以此方式,寫入指標1101不應溢位而導致有效資料的重寫。
對於作為循環緩衝器操作的SLC區域中ECC LEVEL的動態控制,系統亦可維持ECC LEVEL改變指標1102。可藉由判定寫入時SLC中區塊的操作條件對每次寫入至SLC區域執行ECC LEVEL的動態選擇。若判定ECC LEVEL應基於目前操作條件而改變,則將ECC LEVEL改變指標1102移動至目前寫入指標1101的位置,且將新ECC LEVEL應用於所有進行中的區塊直至回應於條件的改變而更新ECC模式為止。
對於讀取操作,將用於讀取的SLC區塊與ECC LEVEL改變指標1102進行比較。對於在ECC LEVEL改變為ECC LEVEL n+1的ECC LEVEL改變指標1102之間順時針(向右)定位的SLC的區域中的讀取,應用ECC LEVEL n+1以檢查用於錯誤的碼字。對於在ECC LEVEL改變指標1102與目前寫入指標1101之間定址的循環緩衝器中逆時針(向左)定位的SLC的區域中的讀取,應用先前ECC LEVEL n以檢查用於錯誤的碼字。
在此實例中,出於應用不同ECC的目的僅定義SLC循環緩衝器的兩個區域。可藉由如上文所論述的ECC LEVEL改變指標1102劃定此等區域。最終,使用較早ECC LEVEL n寫入的SLC區塊將藉由廢料收集或以其他方式釋放,以應用給新ECC LEVEL n+1使用。第一ECC區域包含在ECC LEVEL改變指標處的區塊及順時針方向上的區塊直至最新有效SLC區塊,其皆將在改變之後寫入。第二ECC區域包含ECC LEVEL改變指標之前的區塊及逆時針方向上的區塊直至最舊有效區塊。在一些實施例中,可維持多於一個ECC LEVEL改變指標,將SLC循環緩衝器分成多於兩個的區域。
圖12為包含例如參考圖11所描述的SLC循環緩衝器的記憶體的寫入操作的流程圖。在圖12中,接收寫入命令(步驟1200)。判定在記憶體的SLC區域中是否命中寫入命令(步驟1202)。若沒有,則基於用於寫入的實體區塊位址(Physical Block Address,PBA)的MLC操作條件而判定ECC模式(步驟1203)。使用所判定的ECC模式,產生碼字(步驟1204)。接著在實體區塊位址處寫入碼字,且在日誌中寫入用於所述實體區塊的ECC模式(步驟1205)。此時,寫入操作結束(步驟1220)。
若在步驟1202處,判定在SLC循環緩衝器區域中為命中,則基於SLC一般操作條件或SLC中的選定區塊的操作條件而判定ECC模式編號(步驟1211)。接下來判定是否基於操作條件改變目前ECC模式編號(步驟1212)。若其改變,則目前ECC模式改變,且將ECC模式改變指標移動至寫入指標的位置(步驟1213)。若在步驟1212處或在改變ECC模式(步驟1213)之後ECC模式未改變,則使用目前ECC模式產生ECC碼字(步驟1214)。接著,將碼字寫入至SLC區域中的寫入指標的實體區塊位址(步驟1215)。最後,演算法結束(步驟1220)。此為邏輯的實例,所述邏輯用以操作第一子陣列(例如,SLC區域)作為循環緩衝器及用以當執行目前寫入操作時基於操作條件中的第一改變而改變ECC碼率,以及用以將所改變的ECC碼率應用於第一子陣列中的後續寫入直至判定操作條件中的第二改變為止。此為方法的實例,所述方法操作第一子陣列作為循環緩衝器且維持寫入指標及ECC LEVEL改變指標;當執行寫入操作時基於操作條件中的改變來改變ECC碼率,且將ECC LEVEL改變指標更新為寫入指標;以及基於讀取位址相對於ECC LEVEL改變指標的位置應用選定ECC碼率。
本文中描述示出藉由記憶體控制器或藉由記憶體裝置執行的邏輯的多個流程圖。可使用儲存於電腦系統可存取的記憶體中的電腦程式來程式化的處理器來實施邏輯,且可藉由包含場可程式化積體電路的處理器、專用邏輯硬體以及專用邏輯硬體與電腦程式的組合來執行。如同本文中的所有流程圖,將瞭解,可組合、並行進行或以不同序列進行許多步驟而不影響所達成功能。在一些情況下,如讀者將瞭解,只要亦進行某些其他改變,則步驟的重新配置亦將達成相同結果。在其他情況下,如讀者將瞭解,只要滿足某些條件,則步驟的重新配置將達成相同結果。此外,將瞭解,本文中的流程圖僅繪示相關於理解本發明的步驟,且應瞭解,可在所繪示的彼等步驟之前、之後以及之間進行用於實現其他功能的大量額外步驟。
儘管參考上文詳述的較佳實施例及實例揭露本發明,但應理解,此等實例意欲為說明性而非限制性意義。預期所屬領域具有通常知識者將容易地想到各種修改及組合,所述修改及組合將在本發明的精神及以下申請專利範圍的範疇內。
100:儲存系統
101:主機介面
102a、102b:子陣列
103:處理器
104:緩衝器
105:加擾器
106:多模式ECC引擎
107:NAND介面
108:溫度感測器
109:映射表
110、220:記憶體陣列
201、204、206:匯流排
202、203:信號線
205、306:NAND介面
210:日誌
215:ECC LEVEL圖
221:周邊電路
250:偽單階單元SLC區塊
251:三階單元TLC區塊
310、311、321、322、323:NAND快閃晶片
401:平面
410:區塊
420:主要區域
421:備用區域
501:第一子陣列
502:第二子陣列
600、601、603、604、605、606、700、701、702、703、704、705、706、707、710、800、801、802、803、804、900、901、902、903、904、905、906、1000、1001、1002、1003、1004、1005、1006、1200、1202、1203、1204、1205、1211、1212、1213、1214、1215、1220:步驟
602:操作條件監視器
1100:SLC區塊
1101:寫入指標
1102:ECC LEVEL改變指標
BLK 0, BLK 2, …BLK n-1:區塊位址/區塊
Ch(0), Ch(1), …Ch(N-1):資料通道
圖1為具有記憶體陣列及記憶體控制器的儲存裝置的方塊圖,所述儲存裝置包含如本文中所描述的多模式ECC引擎。
圖2為示出與圖1的儲存裝置相似的儲存裝置的ECC碼率日誌及記憶體結構的圖。
圖3示出記憶體陣列的一個實例,所述記憶體陣列包含配置於與圖1的系統相似的系統的多個通道中的多個NAND記憶體晶片。
圖4示出記憶體結構的實例,所述記憶體結構包括適合用於如本文中所描述的儲存裝置中的頁面中的區塊。
圖5為根據技術的一個態樣的包含第一子陣列及第二子陣列的記憶體陣列的簡化方塊圖。
圖6為示出在寫入程序中選擇ECC演算法的記憶體控制器的一個態樣中的邏輯的操作的流程圖。
圖7為示出根據技術的一個態樣的選擇ECC演算法的操作的流程圖。
圖8為示出根據技術的另一態樣的選擇ECC演算法的操作的流程圖。
圖9為示出根據技術的一個態樣的在包含第一子陣列及第二子陣列的記憶體陣列中產生碼字的操作的流程圖。
圖10為自具有如圖9中所繪示產生的碼字的包含第一子陣列及第二子陣列的記憶體陣列讀取資料的流程圖。
圖11示出在循環資料緩衝區模式(circular buffer mode)中操作的SLC區域。
圖12為將資料寫入至與圖11的SLC區域相似的SLC區域中的流程圖。
100:儲存系統
101:主機介面
102a、102b:子陣列
103:處理器
104:緩衝器
105:加擾器
106:多模式ECC引擎
107:NAND介面
108:溫度感測器
109:映射表
110:記憶體陣列
Claims (21)
- 一種儲存裝置,其錯誤率可取決於操作條件,該儲存裝置包括:記憶體陣列,包含多個記憶體區塊,所述多個記憶體區塊中的每一記憶體區塊設置於單一積體電路晶片上;以及錯誤校正碼(Error Correction Code,ECC)引擎,位於用以接收承載資料的輸入端與所述記憶體陣列之間的資料路徑中,所述ECC引擎用以產生儲存在所述多個記憶體區塊中的已定址記憶體區塊中的位址中的碼字,所述碼字包含各別承載資料段及ECC碼段,所述ECC引擎包含(i)用以實施具有不同ECC碼率的所述碼字的邏輯、(ii)將所述不同ECC碼率映射至所述多個記憶體區塊的位址的日誌以及(iii)用以使用(a)依據所述多個記憶體區塊的所述位址識別所述不同ECC碼率的所述日誌及(b)所述操作條件而選擇所述不同ECC碼率的邏輯,依據所述不同ECC碼率實施所述碼字,使得取決於映射至所述不同ECC碼率的所述位址和所述操作條件來選擇所述不同ECC碼率。
- 如請求項1所述的儲存裝置,其中所述ECC引擎包含用以處理來自所述記憶體陣列中的讀取位址的具有所述不同ECC碼率的已讀取的碼字的邏輯,以及用以判定來自所述日誌的已讀取的所述碼字的ECC碼率的邏輯。
- 如請求項1所述的儲存裝置,包含用以對所述記憶體陣列的部分的存取進行計數的邏輯,且所述操作條件包含存取計數。
- 如請求項1所述的儲存裝置,包含溫度感測器,且 所述操作條件包含來自所述溫度感測器的輸出。
- 如請求項1所述的儲存裝置,包含損耗平衡邏輯,其維持關於所述記憶體陣列的部分的耐久性的資料,且所述操作條件包含耐久性資料。
- 如請求項1所述的儲存裝置,包含編程/擦除週期邏輯,其維持關於所述記憶體陣列的部分的編程/擦除週期計數的數據,且所述操作條件包含編程/擦除週期計數。
- 如請求項1所述的儲存裝置,其中所述位址包含所述多個記憶體區塊中的記憶體區塊的實體區塊位址,且所述日誌將所述實體區塊位址映射至ECC碼率。
- 如請求項1所述的儲存裝置,其中所述多個記憶體區塊中的記憶體區塊各自包含多個頁面,且其中所述碼字儲存在各別頁面中。
- 如請求項1所述的儲存裝置,其中所述記憶體陣列包含第一子陣列及第二子陣列,包含用以將ECC碼率的集合應用於所述第一子陣列中的位址的邏輯。
- 如請求項9所述的儲存裝置,其中所述第一子陣列及所述第二子陣列位於單個積體電路上,且所述儲存裝置包含用以操作所述第一子陣列以儲存每單元的一個位元及用以操作所述第二子陣列以儲存每單元的多個位元的邏輯。
- 一種控制器,其使用於非揮發性記憶體陣列與承載資料源之間,用於使用所述非揮發性記憶體陣列之實體位址的讀取命令及寫入命令,所述控制器包括:錯誤校正碼(Error Correction Code,ECC)引擎,位於用以 接收承載資料的輸入端與所述記憶體陣列之間的資料路徑中,且經組態以產生用於儲存在所述非揮發性記憶體陣列中的已定址記憶體區塊中的位址中的碼字,所述碼字包含各別承載資料段及ECC碼段,其中所述ECC引擎更包含(i)用以實施具有不同ECC碼率的所述碼字的邏輯、(ii)將所述不同ECC碼率映射至所述已定址記憶體區塊的所述位址的日誌以及(iii)用以使用(a)依據所述已定址記憶體區塊的所述位址識別所述不同ECC碼率的所述日誌及(b)操作條件而選擇所述不同ECC碼率的邏輯,依據所述不同ECC碼率實施所述碼字,使得取決於映射至所述不同ECC碼率的所述位址和所述操作條件來選擇所述不同ECC碼率;以及邏輯,用以產生所述寫入命令以將所述碼字寫入所述已定址記憶體區塊中。
- 如請求項11所述的控制器,包含用以產生所述讀取命令以使用讀取位址讀取所述碼字及用以處理具有所述不同ECC碼率的來自所述非揮發性記憶體陣列的已讀取的所述碼字的邏輯,以及包含用以判定來自所述日誌的已讀取的所述碼字的ECC碼率的邏輯。
- 如請求項11所述的控制器,包含用以對所述非揮發性記憶體陣列的部分的存取進行計數的邏輯,其中所述操作條件包含存取計數。
- 如請求項11所述的控制器,包含耦接至所述非揮發性記憶體陣列的溫度感測器,其中所述操作條件包含來自所述溫度感測器的輸出。
- 如請求項11所述的控制器,包含損耗平衡邏輯,其維持關於所述非揮發性記憶體陣列的耐久性,其中所述操作條件包含耐久性資料。
- 如請求項11所述的控制器,包括程式/擦除週期邏輯,其維持關於所述非揮發性記憶體陣列的部分的編程/擦除週期計數的數據,其中所述操作條件包括編程/擦除週期計數。
- 如請求項11所述的控制器,其中所述非揮發性記憶體陣列包含第一子陣列及第二子陣列,包含用以操作所述第一子陣列作為循環緩衝器及用以當執行寫入操作時基於所述操作條件中的第一改變來改變ECC碼率以及用以將所改變的所述ECC碼率應用於所述第一子陣列中的寫入直至判定所述操作條件中的第二改變為止的邏輯。
- 如請求項17所述的控制器,包含用以操作所述第一子陣列以儲存每單元的一個位元及用以操作所述第二子陣列以儲存每單元的多個位元的邏輯。
- 一種操作方法,用於錯誤率可取決於操作條件的儲存裝置,所述操作方法包括:識別記憶體陣列的一部分且判定被識別的部分的操作條件;自具有不同碼率的多個ECC演算法中選擇ECC演算法,所述ECC演算法取決於已識別的部分及被判定的操作條件被選擇;產生使用儲存在所述已識別的部分中的被選定的ECC演算法的一或多個碼字;將所述記憶體陣列的部分映射至表中的所述被選定的ECC演算法,所述表將不同的ECC演算法映射至所述記憶體陣列的位 址;以及依據所述被選定的ECC演算法將所述一或多個碼字寫入至所述記憶體陣列的所述已識別的部分。
- 如請求項19所述的操作方法,包含:自所述記憶體陣列的已定址部分讀取特定碼字;判定映射至所述已定址部分的所述被選定的ECC演算法;以及應用所述被選定的ECC演算法以檢查所述特定碼字中的錯誤。
- 如請求項19所述的操作方法,其中所述記憶體陣列包含第一子陣列及第二子陣列,且其中所述操作方法更包含操作所述第一子陣列作為循環緩衝器且維持寫入指標及ECC級別改變指標;當執行寫入操作時基於所述操作條件的變化改變ECC碼率,並將所述ECC級別變化指標更新為所述寫入指標;以及基於讀取位址相對於所述ECC級別改變指標的位置應用所改變的所述ECC碼率。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/494,361 | 2021-10-05 | ||
US17/494,361 US11658685B2 (en) | 2021-10-05 | 2021-10-05 | Memory with multi-mode ECC engine |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202316270A TW202316270A (zh) | 2023-04-16 |
TWI803203B true TWI803203B (zh) | 2023-05-21 |
Family
ID=85774629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111106308A TWI803203B (zh) | 2021-10-05 | 2022-02-22 | 儲存裝置、控制器以及操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11658685B2 (zh) |
CN (1) | CN115938458A (zh) |
TW (1) | TWI803203B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102496011B1 (ko) * | 2021-01-04 | 2023-02-06 | 서울시립대학교 산학협력단 | 코드 밀도를 조절하는 데이터 스크램블링 방법 |
KR20230152501A (ko) * | 2022-04-27 | 2023-11-03 | 한국과학기술원 | 플래시 기반 저장 장치 및 그 카피백 동작 방법 |
US12099725B2 (en) * | 2022-08-17 | 2024-09-24 | Micron Technology, Inc. | Code rate as function of logical saturation |
US12039176B2 (en) * | 2022-09-26 | 2024-07-16 | Micron Technology, Inc. | Providing multiple error correction code protection levels in memory |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201040977A (en) * | 2009-05-04 | 2010-11-16 | Nat Univ Tsing Hua | Non-volatile memory management method |
CN108463807A (zh) * | 2015-10-30 | 2018-08-28 | 英特尔公司 | 温度相关的多模式错误校正 |
CN112540867A (zh) * | 2019-09-20 | 2021-03-23 | 三星电子株式会社 | 存储模块以及存储控制器的纠错方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011159805A2 (en) * | 2010-06-15 | 2011-12-22 | Fusion-Io, Inc. | Apparatus, system, and method for providing error correction |
US8566667B2 (en) * | 2011-07-29 | 2013-10-22 | Stec, Inc. | Low density parity check code decoding system and method |
US20130031301A1 (en) * | 2011-07-29 | 2013-01-31 | Stec, Inc. | Backend organization of stored data |
US9152495B2 (en) * | 2013-07-03 | 2015-10-06 | SanDisk Technologies, Inc. | Managing non-volatile media using multiple error correcting codes |
US9984768B2 (en) * | 2014-10-20 | 2018-05-29 | Sandisk Technologies Llc | Distributing storage of ECC code words |
US10026483B1 (en) * | 2017-06-28 | 2018-07-17 | Western Digital Technologies, Inc. | Program temperature aware data scrub |
US10545685B2 (en) | 2017-08-30 | 2020-01-28 | Micron Technology, Inc. | SLC cache management |
US10896123B2 (en) * | 2018-12-13 | 2021-01-19 | Western Digital Technologies, Inc. | Enhancing the effectiveness of read scan performance and reliability for non-volatile memory |
KR20200099438A (ko) * | 2019-02-14 | 2020-08-24 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 |
US11200118B2 (en) * | 2019-08-29 | 2021-12-14 | Micron Technology, Inc. | Semiconductor device with modified command and associated methods and systems |
US11258464B1 (en) * | 2020-04-09 | 2022-02-22 | Kioxia Corporation | Codeword concatenation for correcting errors in data storage devices |
US11159176B1 (en) * | 2020-06-26 | 2021-10-26 | Western Digital Technologies, Inc. | Data-assisted LDPC decoding |
-
2021
- 2021-10-05 US US17/494,361 patent/US11658685B2/en active Active
-
2022
- 2022-02-22 TW TW111106308A patent/TWI803203B/zh active
- 2022-03-03 CN CN202210201751.4A patent/CN115938458A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201040977A (en) * | 2009-05-04 | 2010-11-16 | Nat Univ Tsing Hua | Non-volatile memory management method |
CN108463807A (zh) * | 2015-10-30 | 2018-08-28 | 英特尔公司 | 温度相关的多模式错误校正 |
CN112540867A (zh) * | 2019-09-20 | 2021-03-23 | 三星电子株式会社 | 存储模块以及存储控制器的纠错方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202316270A (zh) | 2023-04-16 |
US11658685B2 (en) | 2023-05-23 |
US20230106125A1 (en) | 2023-04-06 |
CN115938458A (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI803203B (zh) | 儲存裝置、控制器以及操作方法 | |
US8448018B2 (en) | Stripe-based memory operation | |
CN106257594B (zh) | 读取干扰收回策略 | |
CN109599143B (zh) | 具有读阈值机制的存储系统及其操作方法 | |
KR102407659B1 (ko) | 메모리 내 데이터 복원 작업의 수행 | |
CN110442529B (zh) | 可配置的存储器系统及配置和使用该存储器系统的方法 | |
CN114730598A (zh) | 利用分区命名空间简缩ssd中的逻辑到物理表指针 | |
US20090024787A1 (en) | Data writing method and apparatus | |
US11061769B2 (en) | Storage device selectively generating parity bits according to endurance of memory cell, and method thereof | |
US12045132B2 (en) | Non-volatile memory device, controller for controlling the same, storage device having the same, and reading method thereof | |
CN113921063A (zh) | 热区标签和热区离群值检测 | |
TWI651726B (zh) | 解碼方法以及儲存控制器 | |
US11955194B2 (en) | Tracking and refreshing state metrics in memory sub-systems | |
US20220359033A1 (en) | Health scan for content addressable memory | |
US20220164263A1 (en) | Error-handling flows in memory devices based on bins | |
TW202240594A (zh) | 用於管理具有動態錯誤更正碼保護之記憶體的方法及系統 | |
TWI642059B (zh) | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN116954491A (zh) | 用于存储控制器的操作方法和包括存储控制器的存储系统 | |
US11698832B2 (en) | Selective sampling of a data unit during a program erase cycle based on error rate change patterns | |
US11704055B2 (en) | Storage device, controller and method for operating thereof | |
US11698746B1 (en) | Journal scheme for a memory sub-system | |
US11914510B2 (en) | Layer interleaving in multi-layered memory | |
CN106297881B (zh) | 非挥发性存储器的健康管理 | |
CN114816828A (zh) | 存储器系统的固件参数自动调优 | |
WO2021021652A1 (en) | Selecting read voltage using write transaction data |