TWI612524B - 控制一記憶體裝置之方法、用於耦合至一外部非揮發性記憶體之裝置及非暫時性電腦可讀媒體 - Google Patents

控制一記憶體裝置之方法、用於耦合至一外部非揮發性記憶體之裝置及非暫時性電腦可讀媒體 Download PDF

Info

Publication number
TWI612524B
TWI612524B TW102115758A TW102115758A TWI612524B TW I612524 B TWI612524 B TW I612524B TW 102115758 A TW102115758 A TW 102115758A TW 102115758 A TW102115758 A TW 102115758A TW I612524 B TWI612524 B TW I612524B
Authority
TW
Taiwan
Prior art keywords
threshold voltage
volatile memory
read
data
zero
Prior art date
Application number
TW102115758A
Other languages
English (en)
Other versions
TW201407618A (zh
Inventor
厄爾T 科漢
Original Assignee
Lsi公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lsi公司 filed Critical Lsi公司
Publication of TW201407618A publication Critical patent/TW201407618A/zh
Application granted granted Critical
Publication of TWI612524B publication Critical patent/TWI612524B/zh

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1072Adding 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 multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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
    • H03M13/1515Reed-Solomon codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Abstract

本發明揭示一種固態硬碟(SSD)控制器,其使讀取自一單位階記憶體胞(SLC)非揮發性記憶體(NVM)(或一多位階記憶體胞(MLC)之下頁)之各讀取單位維持零計數及壹計數,及/或在一些實施例中,維持零/壹不均等計數。當該讀取單位部分歸因於臨限電壓分佈移位遠離其等標稱分佈而不可校正時,所維持之計數能夠判定一方向及/或一量值以調整一讀取臨限值以追蹤該臨限電壓移位並恢復讀取資料零/壹平衡。在各種實施例中,以基於多個所述因數(經判定之臨限電壓分佈、已知儲存值、之前的NVM操作事件)之多種所述方式(計數、百分比)判定經調整之讀取臨限值。針對MLC記憶體描述前述技術之擴展。

Description

控制一記憶體裝置之方法、用於耦合至一外部非揮發性記憶體之裝置及非暫時性電腦可讀媒體
需要發展非揮發性儲存技術以提供使用效能、效率及效用之改良。
除非明確識別為公開或眾所周知,否則本文提及之技術及概念(包含上下文、定義或比較目的)不應被解釋為認同之前公開已知此等技術及概念或認同此等技術及概念係先前技術之部分。本文引用之包含專利、專利申請案及公開案之所有參考文獻(若有)無論是否具體併入皆係針對所有目的以引用方式全部併入本文。
現在將描述如由固態硬碟(SSD)控制器使用之快閃記憶體之各種態樣以部分建立一技術背景且部分建立於規範之平衡中使用的命名前提。藉由該SSD控制器讀取自非揮發性記憶體(NVM)之資料之最小大小係「讀取單位」,其受包含錯誤校正(諸如一低密度同位檢查(LDPC)程式碼)保護。在一些實施例中,各讀取單位含有大約4K至大約32K位元的使用者資料加上錯誤校正附加項。依據該SSD控制器之命令,自NVM記憶體胞讀取該等位元,取決於如下文論述之技術,每個記憶體胞可擁有一或多個位元。在一些實施例中,為安全原因,一SSD控制器在將資料寫入至NVM之前加密該資料。在一些實施例中,鑑於對長字串之經同等程式化之記憶體胞之電路設計限制,一SSD控制 器在將資料寫入NVM之前擾碼該資料。
經個別考慮,各記憶體胞具有對應於用於該記憶體胞之一裝置臨限電壓且進一步對應於儲存於該記憶體胞中之邏輯位元值之一特定儲存(程式化)電荷。雖然在理想狀況下NVM中的所有記憶體胞針對所儲存之邏輯位元值將具有相同的裝置臨限電壓,但是實務上由於多種原因,該等裝置臨限電壓跨該等記憶體胞在沿臨限電壓軸之類似於一高斯(Gaussian)形狀之概率分佈(即,「臨限電壓分佈」)係不同的。
因此,總而言之考慮(諸如一讀取單位之)極多個記憶體胞,存在的裝置臨限電壓分佈(例如,高斯概率曲線)與每個記憶體胞存在的狀態一樣多(每個記憶體胞之每個儲存位元具有兩個狀態)。即,對於每個儲存器之記憶體胞之N個位元,存在2**N個狀態及相同數目個臨限電壓分佈。大體上,NVM中之讀取電路需要(2**N)-1個不同讀取臨限值(讀取電壓參考VREAD1至VREAD(N-1))以區分該2**N個狀態。
繼續上文,對於單位階記憶體胞(SLC)快閃記憶體,N=1,SLC記憶體因此每個儲存單位儲存一個位元,具有兩個裝置臨限電壓分佈(一分佈係零且另一分佈係壹),且需要一單個讀取臨限值、讀取電壓參考VREAD1。從較低臨限電壓至較高臨限電壓,該兩個臨限電壓分佈被視為E(擦除)狀態及D1(第一資料)狀態。雖然係任意的,但是一共同映射(編碼)係將邏輯壹指派給該E狀態且將邏輯零指派給該D1狀態。因此,對零及壹之參考係用於分別解碼該D1狀態及該E狀態之代理(proxy)參考。
進一步繼續上文,對於多位階記憶體胞(MLC)快閃記憶體,N>1。MLC記憶體因此每個記憶體胞儲存一個以上位元,具有兩個以上裝置臨限電壓分佈,且需要多個不同讀取臨限值以區分該等分佈。例如,一4LC記憶體之每個記憶體胞儲存2個位元,具有四個裝置臨限電壓分佈,且大體上需要三個讀取臨限值(讀取電壓參考VREAD1、 VREAD2及VREAD3)。從較低臨限電壓至較高臨限電壓,該四個裝置臨限電壓分佈被視為E(擦除)、D1(Data1)、D2(Data2)及D3(Data3)狀態。雖然係任意的,但是該四個臨限電壓分佈之各者亦係根據一特定二進位序列(諸如一格雷碼(Gray code)序列)而加以映射(定址)。因此,對11、10、00及01狀態之一或多者之參考係用於分別解碼E、D1、D2及D3狀態之代理參考。
關於定址用於一MLC之狀態之映射,各自可被視為具有一最高有效位元(MSB)及一最低有效位元(LSB)(及對於每個記憶體胞2個以上位元,其等之間之有效位元)。雖然MLC NVM程式化其等記憶體胞存在各種方式,但是以下途徑係常見的。一初始程式化遍次(電荷分佈之一操縱)建立LSB,例如寫入「下頁」。這係以與用於寫入一SLC之方式相同之方式(例如,建立E狀態臨限電壓分佈及一第二狀態臨限電壓分佈之一電荷操縱)而輕鬆地進行。取決於所使用之二進位序列,該第二狀態臨限電壓分佈類似於D1狀態臨限電壓分佈,類似於D2狀態臨限電壓分佈或介於D1狀態臨限電壓分佈與D2狀態臨限電壓分佈之間。對於MLC,如MLC之位階數要求,一或多個額外的程式化遍次進一步(在數目、沿電壓臨限軸之位置及形狀方面)操縱裝置臨限電壓分佈。更特定言之,一或多個後續程式化操作寫入「中頁」(若有,針對每個記憶體胞具有2個以上位元),且一最終程式化操作建立MSB,例如寫入「上頁」。例如在一4LC(每個記憶體胞MLC具有2個位元)中,分別藉由一第二程式化遍次將該第一程式化遍次之E分佈及第二分佈分叉進入E分佈及D1分佈及D2分佈及D3分佈中。
由於一或多個因數(諸如讀取干擾、寫入干擾及保持損失)而使該等臨限電壓分佈經修改遠離其等初始/標稱分佈。更特定言之,隨著時間、溫度及與使用有關的其他因數變化,臨限電壓分佈之各者之位置可關於臨限電壓軸在周圍移動。此等變化增加使用用於先前基於標 稱臨限電壓分佈建立之讀取臨限值之一讀取參考電壓值執行之讀取錯誤之可能性。在一些SLC實施例中,當讀取自NVM之一讀取單位中面臨一硬判決不可校正錯誤時,執行一系列重試操作以恢復該讀取單位。該等重試操作包含NVM以諸如藉由經由來自該SSD控制器之一I/O命令寫入之一暫存器設定判定之讀取臨限值VREAD1之不同電壓值重讀(取樣)該讀取單位。藉由在該讀取臨限值VREAD1之不同設定下讀取,在臨限電壓軸上之不同點處取樣該讀取單位以嘗試定位可校正(硬判決)之讀取單位之一樣本。
由NVM廠商建議之一種演算法係向上緩慢地掃測SLC讀取臨限值(自其標稱值增加該讀取參考電壓VREAD1)以嘗試尋找可校正之讀取單位之一樣本。若此程序失效,則在另一方向上掃測該讀取臨限值(自其標稱值降低該讀取參考電壓VREAD1)。若此兩種掃測皆失效,則該讀取單位不可(藉由硬判決解碼)校正。線性掃測該讀取臨限值(在不同各自讀取參考電壓設定下可具有16至64個步驟)需要該讀取單位之許多耗時樣本(各自伴隨恢復時間延時)。即使當並未經常需要此一搜尋且因此此一搜尋並未對平均延時產生重大影響時,對於嚴格要求最大延時之應用(包含一些資料庫應用),此一耗時搜尋亦不可接受。
本發明可以數種方式實施,包含實施為程序、製品、設備、系統、組合物及諸如電腦可讀儲存媒體之電腦可讀媒體(例如,諸如光碟之光學及/或磁性大容量儲存裝置中之媒體或具有諸如快閃儲存器之非揮發性儲存器之積體電路)或電腦網路,其中經由光學或電子通信鏈路發送程式指令。在本說明書中,此等實施方案或本發明可採取之任何其他形式可被稱為技術。【實施方式】提供本發明之一或多項實施例之闡述,該一或多項實施例能夠改良在上文識別領域中之使用效能、效率及效用。【實施方式】包含<介紹>段落,以促進更快速 地理解【實施方式】之剩餘部分。<介紹>包含根據本文描述之概念之系統、方法、製品及電腦可讀媒體之一或多者之例示性實施例。如結論中更詳細地論述,本發明涵蓋所發佈申請專利範圍之範疇內之所有可能修改及變動。
發明者相信其等首先注意到擾碼寫入至NVM之資料及追蹤並管理擾碼資料之統計狀態分佈之讀取臨限管理及伴隨低延時效能及延長壽命優點之重要性。更特定言之,發明者相信其等首先注意到資料讀取對資料寫入之統計狀態分佈之不均等(disparity)指示用於讀取NVM之一較佳讀取臨限值之移位。在一些實施例中,一SSD控制器在將資料寫入至NVM之前經由(諸如)加密擾碼該資料。擾碼資料具有一已知零/壹平衡(儲存為零及壹之位元統計分佈),諸如具有近似零位元及壹位元之50-50平衡。運用有效率擾碼,資料實際上係隨機的。在一隨機樣本中,一NVM讀取單位之大小、零及壹之一分佈趨於極為緊密(狹窄地分散在平均值周圍)。例如,運用16K(16,384)個隨機位元,在任一方向上大於大約300遠離一平均值(8K)之零計數或壹計數之一概率<1%(且在任一方向上遠離大於大約500之一概率<百萬分之一)。
各種臨限電壓分佈相對於臨限電壓軸移位遠離一標稱分佈(歸因於任何數目個因數)用以改變臨限電壓分佈峰值之間之一中點之位置。改變實際「臨限電壓中點」而未對對應讀取臨限值作出對應追蹤調整係讀取錯誤之一原因。發明者相信其等首先注意到中點相對於讀取臨限電壓管理及伴隨低延時效能及延長壽命優點之此變化的重要性。
善用上述觀察,在一些實施例中,一SSD控制器至少暫時地使讀取自一SLC NVM(或一MIC之下頁)之各讀取單位維持零計數及壹計數。當讀取單位部分歸因於臨限電壓分佈移位遠離其等(初始)標稱分佈而不可校正時,零計數及/該壹計數能夠判定移動一讀取臨限值(讀 取電壓參考VREAD1)之一方向及/或一量值以追蹤移位臨限電壓並恢復零/壹平衡。如【實施方式】中陳述,根據實施例,以基於多個因數(觀察/推斷臨限電壓分佈、已知儲存值及之前的NVM操作事件)之多種方式(計數、百分比)判定讀取臨限值之新的設定。
針對MLC記憶體擴展上述技術,包含維持上頁之計數及移位多個讀取臨限值。上述技術亦可與具有除50-50平衡以外的已知零/壹平衡之多種加密/擾碼方法一起使用。
100‧‧‧固態硬碟控制器
101‧‧‧固態硬碟
102‧‧‧主機
103‧‧‧(選用)交換機/組/中間控制器
104‧‧‧中間介面
105‧‧‧作業系統
106‧‧‧韌體(FW)
107‧‧‧驅動程式
107D‧‧‧虛線箭頭(主機軟體←→輸入/輸出裝置通信)
109‧‧‧應用程式
109D‧‧‧虛線箭頭(應用程式←→經由驅動程式進行輸入/輸出裝置通信)
109V‧‧‧虛線箭頭(應用程式←→經由虛擬函式進行輸入/輸出裝置通信)
110‧‧‧外部介面
111‧‧‧主機介面
112C‧‧‧(選用)卡式記憶體
113‧‧‧標籤追蹤
114‧‧‧多裝置管理軟體
115‧‧‧主機軟體
116‧‧‧輸入/輸出卡
117‧‧‧輸入/輸出卡&儲存裝置/資源
118‧‧‧伺服器
119‧‧‧區域網路/廣域網路
121‧‧‧資料處理
123‧‧‧引擎
131‧‧‧緩衝器
133‧‧‧直接記憶體存取
135‧‧‧錯誤校正碼-X
137‧‧‧記憶體
141‧‧‧映射
143‧‧‧表
151‧‧‧回收器
161‧‧‧錯誤校正碼
171‧‧‧中央處理單元
172‧‧‧中央處理單元核心
173‧‧‧命令管理
175‧‧‧緩衝器管理
177‧‧‧轉譯管理
179‧‧‧連貫性管理
180‧‧‧記憶體介面
181‧‧‧裝置管理
182‧‧‧識別管理
190‧‧‧裝置介面
191‧‧‧裝置介面邏輯
192‧‧‧快閃裝置
193‧‧‧排程
194‧‧‧快閃晶粒
199‧‧‧非揮發性記憶體
210‧‧‧單位階記憶體胞標稱讀取臨限值
215‧‧‧單位階記憶體胞調整讀取臨限值
220‧‧‧單位階記憶體胞標稱最負臨限狀態
225‧‧‧單位階記憶體胞移位最負臨限狀態
230‧‧‧單位階記憶體胞標稱最正臨限狀態
235‧‧‧單位階記憶體胞移位最正臨限狀態
240‧‧‧多位階記憶體胞標稱第一讀取臨限值
242‧‧‧多位階記憶體胞標稱第二讀取臨限值
244‧‧‧多位階記憶體胞標稱第三讀取臨限值
250‧‧‧多位階記憶體胞標稱最負臨限狀態
251‧‧‧多位階記憶體胞調整最負臨限狀態
260‧‧‧多位階記憶體胞標稱第二最負臨限狀態
261‧‧‧多位階記憶體胞調整第二最負臨限狀態
265‧‧‧多位階記憶體胞調整第一讀取臨限值
270‧‧‧多位階記憶體胞標稱第二最正臨限狀態
271‧‧‧多位階記憶體胞調整第二最正臨限狀態
275‧‧‧多位階記憶體胞調整第二讀取臨限值
280‧‧‧多位階記憶體胞標稱最正臨限狀態
281‧‧‧多位階記憶體胞調整最正臨限狀態
285‧‧‧多位階記憶體胞調整第三讀取臨限值
306‧‧‧寫入資料
310‧‧‧擾碼器
311‧‧‧擾碼寫入資料
320‧‧‧錯誤校正碼編碼器
321‧‧‧錯誤校正碼編碼寫入資料
332‧‧‧非揮發性記憶體陣列
334‧‧‧可程式化讀取電壓電路
336‧‧‧控制/狀態暫存器
338‧‧‧輸入/輸出
340‧‧‧失衡偵測器
341‧‧‧失衡
351‧‧‧讀取資料
359‧‧‧未經校正&未經擾碼(原始)讀取資料
360‧‧‧錯誤校正碼解碼器
361‧‧‧校正讀取資料
362‧‧‧不可校正的讀取
370‧‧‧解擾碼器
371‧‧‧未經擾碼讀取資料
380‧‧‧平衡恢復邏輯
410‧‧‧擾碼資料
420‧‧‧錯誤校正碼編碼器
430‧‧‧寫入非揮發性記憶體
440‧‧‧讀取非揮發性記憶體
450‧‧‧資料恢復
460‧‧‧不可校正錯誤估計
470‧‧‧不均等判定
480‧‧‧讀取臨限調整
圖1A圖解說明一固態硬碟(SSD)之一實施例之選定細節,固態硬碟包含提供一平台以在非揮發性儲存器中實施零/壹平衡管理技術(諸如經由非揮發性記憶體(NVM)元件(例如,快閃記憶體)實施)之一SSD控制器。
圖1B圖解說明包含圖1A之SSD之一或多個例項之系統之各種實施例之選定細節。
圖2A至圖2D圖解說明與零/壹平衡恢復有關的例示性臨限電壓分佈。圖2A及圖2B係SLC特定的,分別圖解說明一第一時間及一稍後第二時間下的臨限電壓分佈。圖2C及圖2D係MLC特定的,分別圖解說明一第一時間及一稍後第二時間下的臨限電壓分佈。
圖3A圖解說明圖1A之SSD之一例項之一系統實施例之選定細節,提供關於零/壹平衡管理之特定細節。
圖3B圖解說明由圖3A之實施例使用之一讀取單位之組織之選定細節。
圖4圖解說明圖1A、圖1B及圖3之SSD之一實施例之選定控制流程細節,提供關於寫入相關操作(動作410至430)及讀取相關操作(動作440至480)之特定細節。
下文連同圖解說明本發明之選定細節之隨附圖式詳細描述本發明之一或多項實施例。本發明係結合該等實施例加以描述。本文之實施例被視為僅僅例示性,本發明明確地並不限於或受限於本文之任何或所有實施例,且本發明涵蓋數種替代、修改及等效物。為避免單調地闡釋,多種字詞標記(包含但不限於:第一、最後、某些、各種、進一步、其他、特定、選擇、一些及顯著的)可應用於不同組實施例;如本文使用,此等標記明確地並不意謂傳達品質或偏好或偏見之任何形式,反而僅僅方便區分該等不同組。所揭示程序之一些操作之順序在本發明之範疇內係可變更的。無論多項實施例在何種情況下用以描述程序、方法及/或程式指令特徵之變動,亦預期根據一預定或經動態判定之準則執行分別對應於複數個該多項實施例之複數個操作模式之一者之靜態及/或動態選擇之其他實施例。下列描述中陳述數種特定細節以提供對本發明之一完全理解。針對實例目的提供該等細節且可根據不具備一些或所有該等細節之申請專利範圍實踐本發明。為簡單起見,並未詳細描述於本發明有關的技術領域中已知之技術材料以免不必要地混淆本發明。
介紹
包含此<介紹>以僅促進更快速地理解【實施方式】;本發明並不限於<介紹>(包含明確的實例,若有)中陳述之概念,這係因為任何<介紹>段落一定係整個主題之一簡單的觀點且並不意謂詳盡或限制性描述。例如,接下來的<介紹>僅對某些實施例提供受限於空間及組織之概要資訊。遍及說明書之平衡論述許多其他實施例,包含最終將描寫申請專利範圍之實施例。
縮略詞
此處定義之至少一些各種速記縮寫(例如,縮略詞)指代本文所使用的某些元件。
Figure TWI612524BD00001
Figure TWI612524BD00002
Figure TWI612524BD00003
追蹤及恢復零/壹平衡
接下來的(追蹤且管理零及壹之計數且移位用以區分零及壹狀態之讀取臨限值之)初始論述可直接應用於SLC記憶體及(如提及,在變動細微之情況下)應用於MLC記憶體之下頁。更大體上關於MLC記憶體,下文不同段落中詳述追蹤及管理上頁之計數及移位多個讀取臨限值(例如,讀取電壓參考VREAD1、VREAD2及VREAD3)之程度。
在一些實施例中,讀取自一SLC NVM之各讀取單位(或每次自一NVM晶粒傳輸之讀取單位之各群組)獲得零計數及壹計數。當讀取單位部分歸因於臨限電壓分佈移位遠離其等(初始)標稱分佈而不可校正時,零計數及/或壹計數能夠判定移動(設定)臨限值之一方向及/或一 量值以追蹤該臨限電壓並恢復零/壹平衡。經調整之讀取臨限值係SCL記憶體之讀取電壓參考VREAD1及MLC記憶體之下頁之讀取參考電壓VREAD2。例如,在具有指派給擦除狀態之一邏輯壹且寫入一已知統計上相等(50-50百分比,又稱50/50百分比或僅僅50/50)的零及壹分佈之一SLC中,若當前零/壹計數指示以壹為主,則VREAD1經移位較低;且若當前零/壹計數指示以零為主,則VREAD1經移位較高。(在前述實例中對MLC記憶體之下頁用VREAD1替代VREAD2)。視需要,藉由多個零(或壹)之一百分比判定改變(移位)讀取臨限值之一程度量值。該量值係基於以下一或多者:一或多個樣本中觀察到之零及/或壹之數目;該一或多個樣本之一讀取臨限電壓增量;瞭解的對應於兩個分佈之峰值之間的一中點之預測臨限電壓分佈;程式/擦除計數(磨損);讀取干擾計數;保持時間;及其他類似因數。
尋找讀取均衡點
在進一步實施例中,使用一類似二進位搜尋操作(以讀取電壓參考之各別適當值反覆地取樣相同的讀取單位)以尋找一讀取臨限「讀取均衡點」。這係臨限電壓軸上介於相鄰臨限電壓分佈之一點,該點導致原始資料(預錯誤校正)統計狀態分佈,當讀取時其等在一統計錯誤邊限內匹配寫入模型或理想化模型相同之統計狀態分佈。
對於SLC記憶體及隨機擾碼(諸如由加密引起),讀取均衡點係其中(讀取自NVM之原始資料之)零/壹平衡最均勻(接近相同)之讀取臨限值(讀取電壓參考VREAD1)。在此等條件下,兩個狀態分佈具有一50-50平衡。即,所讀取狀態的50%係零且所讀取狀態的50%係壹。(在前述中,對MLC記憶體之下頁用VREAD1替代VREAD2)。
在一些實施例中,讀取均衡點對應於以下一或多者:兩個電壓分佈之間之一中點、兩個電壓分佈之間之一極小值、讀取資料中之零/壹平衡最接近50-50之一點及根據在兩個其他點處發現之零/壹平衡之 內插判定之一點。讀取均衡點對應於在具有對稱相鄰臨限電壓分佈之實施例中之相鄰臨限電壓分佈之間之一中心點。
為所要讀取均衡點尋找並設定讀取臨限值減小尋找嘗試硬判決解碼之一最佳點所需讀取次數。在又進一步實施例中,若在尋找讀取臨限讀取均衡點之前尋找一「足夠好」讀取臨限值,則以二進位搜尋在各讀取臨限取樣點處(SLC記憶體之VREAD1之各值或MLC記憶體之下頁之VREAD2之各值)嘗試硬判決解碼。唯如下文論述關於針對軟判決解碼目的在經判定之讀取均衡點周圍採取額外取樣以外,當尋找到足夠好的讀取臨限值時,大體上截斷該搜尋。在各種實施例中,「足夠好」讀取臨限值導致成功地硬判決解碼讀取資料。在一些實施例中,至少部分(基於)如上文詳述之關於讀取臨限電壓變化之量值之各種因數判定呈二進位搜尋之搜尋步驟之一量值(讀取臨限電壓增量)。
MLC考慮
在MLC記憶體中,管理多個讀取臨限值。在一些實施例中,這係藉由以下各者加以執行:假定均勻地位移該多個裝置臨限電壓分佈且基於針對該第一讀取臨限值(VREAD1)基於下頁之一讀取資料零/壹平衡作出之判決改變所有其他讀取臨限值。
對於一4LC NVM,理論上存在25-25-25-25之一11/10/00/01平衡(與50-50之零/壹平衡相比)。然而,鑑於通常經由兩個分離讀取操作使用三個讀取電壓參考而讀取4LC,不存在直接提供此平衡之單個操作,該三個讀取電壓參考係:用於下頁之VREAD2;及用於上頁之VREAD1及VREAD3。因此可估計兩個各自零/壹平衡:介於用於下頁之D1狀態與D2狀態之間;及介於E狀態與組合介於用於上頁之D2狀態與D3狀態之間之D1狀態之間。替代地,可實行三個分離的類似下頁之讀取,從而將單個下頁讀取臨限值設定為近似VREAD1、VREAD2及VREAD3之各者之值。
例如,在一些4LC NVM實施例中,至少對於儲存於記憶體胞中之兩個位元之一者而言,可能需要移位讀取電壓參考VREAD1、VREAD2及VREAD3。類似於SLC情況工作,儲存於記憶體胞中之兩個位元之一者需要在一第一讀取臨限值(在此MLC情況中,VREAD2)下進行一單個讀取。確定另一位元需要兩個額外讀取臨限值(VREAD1及VREAD3以及實際上在內部藉由NVM執行之兩個相關聯之各自額外讀取)。
根據各種實施例:另一位元之兩個讀取臨限值(VREAD1及VREAD3)一致地移動相同及/或不同量(假設兩個狀態之漂移類似);或另一位元之兩個讀取臨限值係獨立地移動(以額外的讀取操作為代價)。後一選項需要瞭解記憶體胞中之類似SLC位元(LSB)之狀態,這係因為類似SLC位元之狀態判定該兩個讀取臨限值(VREAD1及VREAD3)中用於確定對應的另一位元(MSB)之讀取臨限值。
在一些4LC實施例中,針對E分佈與D1分佈及D2分佈與D3分佈之同時混合估計一經組合之「上頁」讀取資料零/壹平衡。基於該經組合之零/壹平衡讀取對寫入之不均等且鑑於位元意義顛倒(由於自E移動至D1,1變為0;且由於自D2移動至D3,0變為1),對應的兩個讀取臨限值(VREAD1及VREAD3)係在相反方向上一致地移動。這加以進行使得該混合之各分量之零/壹平衡在「相同方向上」移動(例如,該等移動並不衝突)。
在一些4LC實施例中,該兩個上頁讀取臨限值(VREAD1及VREAD3)之移動係藉由分別估計上頁之零/壹平衡並同時對讀取單位之各位元使用一各自LSB加以分開判定。當LSB=1時,移動方向與LSB=0情況相反。例如,藉由基於下頁讀取資料之一對應位元選擇性地修改上頁讀取資料之各位元、將上頁讀取資料之位元之意義自一數值轉換為一方向值(其中例如,0表示一較高臨限電壓且1表示一較低臨限電壓)計算一上頁不均等,而非計算上頁讀取資料中之零計數與壹計數之間的 不均等。在一些實施例中,上頁讀取資料之位元與下頁讀取資料之對應位元之XNOB執行該轉換。
自軟判決樣本移除偏置
在一些實施例中,軟判決資訊係獲自NVM以執行基於軟判決之解碼。藉由在多個讀取臨限取樣點(對於一SLC,VREAD1值)處關於標稱(未經調整之)讀取臨限值讀取一讀取單位(或每次自一NVM晶粒傳送之讀取單位之各群組)而獲得該軟判決資訊,以獲得該讀取單位之多個資料樣本,因此建立該讀取單位之各位元之一值之一軟判決可能性。該等樣本之一間隔至少部分取決於所使用的NVM之特定性質,諸如NVM之電荷狀態之標稱分離。
然而,除非關於所採用的樣本之標稱讀取臨限值係一讀取臨限讀取均衡點(如上所述),否則偏置該軟判決資訊。若目前的讀取臨限值並非臨限讀取均衡點,則在一方向上或其他方向上偏置所有該軟判決資訊。調整此並獲得未偏置(或至少較少偏置)軟判決資訊存在兩種方式。
1.因為易於識別如讀取臨限取樣點之各者處取樣之讀取單位之零/壹平衡,所以(根據實施例,諸如藉由使用線性內插)易於判定讀取臨限讀取均衡點。計算對應於經判定之讀取臨限讀取均衡點與(舊的、未經調整的)標稱讀取臨限值之間的差之一偏差。先前判定之軟判決資訊能夠適當地「再居中」,且藉由相對於先前取樣該軟判決資訊之電壓施加該偏差(其中截斷大於1.0或小於0.0之值)而仍然使用先前判定之軟判決資訊。此途徑無需額外讀取,但是一些資料產生不同量的精度/精確度。
2.因為易於識別如讀取臨限取樣點之各者處取樣之讀取單位之零/壹平衡,所以在收集所有所需樣本之後,易於判定最接近讀取臨限讀取均衡點之讀取臨限取樣點。該最接近的讀取臨限取樣點係零/壹 平衡最接近零/壹平衡寫入之讀取臨限取樣點。對於SLC加密(或擾碼)情況,該最接近的讀取臨限取樣點係最接近具有一50-50平衡之讀取臨限取樣點。因為所有該等樣本標稱上具有彼此相等的間隔,所以選取最接近樣本作為一新標稱讀取臨限值,且視需要蒐集額外的軟判決資訊樣本(假定新標稱讀取臨限值不同於舊標稱讀取臨限值)。替代地,首先進行二進位搜尋以尋找臨限讀取均衡點,其中二進位搜尋之精度限於軟判決資訊之所要精度所需取樣之一最好的細微度。該軟判決資訊之所要精度在該新標稱讀取臨限值周圍具有一相關聯之取樣窗。除非該舊的標稱讀取臨限值落在所需精度取樣窗以外,否則進行二進位搜尋作為獲得軟判決資訊所需多次讀取之一部分無需額外讀取。
在目前描述之SLC加密實施例中,上述技術集中尋找產生最接近50-50之一讀取資料零/壹平衡之一較佳讀取臨限值。對於其中臨限電壓分佈大體上具有相同對稱形狀且實質上並不重疊之情況,此較佳讀取臨限電壓亦將對應於經組合之臨限電壓分佈之極小值。
自臨限電壓分佈上之已知點內插讀取臨限值
在一些實施例中,尋找較佳讀取臨限值之另一途徑反而係尋找兩點(一點係在各相鄰臨限電壓分佈上)且藉由內插判定此等兩點之間的中點。例如,在各臨限電壓分佈之峰值處取樣應產生讀取資料零/壹之一75/25平衡(或壹/零平衡,取決於峰值)。在識別該兩個峰值之後,使用臨限電壓軸上之該兩點之間之經計算中點以設定一新讀取臨限值。
若先驗已知臨限電壓分佈並不均勻(例如,諸如藉由具有一長尾部而在一側或另一側上不對稱地偏置),則在一些實施例中使用該資訊以解譯峰值位置且藉由一稍微更複雜的內插而定位中心(例如,不僅僅係中點)。諸如保持時間及/或磨損之因數可影響臨限電壓分佈之 對稱性且在一些實施例中加以考量。在一些實施例中亦使用多個讀取點以顯示臨限電壓分佈之形狀。
在一些實施例中,若限制臨限電壓調整之範圍,則無法尋找真實峰值。特定言之,即使E狀態之電壓分佈延伸至負臨限電壓中,一些快閃裝置亦不能使臨限電壓移動小於0V。對臨限電壓分佈的瞭解仍允許經由內插判定該中點。例如,若在0V下讀取資料零/壹平衡係60/40,則觀察到大約10%過量的零且E分佈在0V右邊之一面積係大約10%。在一些實施例之一第一途徑中,尋找D1分佈之峰值且基於對E分佈之大概形狀的瞭解內插該中點。在一些實施例之一第二途徑中,尋找該讀取資料零/壹平衡係40/60之D1分佈之點(與0V量測相反的點)。接著使用該60/40觀察與該40/60觀察之間之經計算中點以設定新較佳讀取臨限值。可在更大精度下以對該兩個臨限電壓分佈之額外瞭解及/或量測來判定該經計算中點。
在一些實施例中,經內插之點皆係在與讀取均衡點相同之側上。例如,已知一第一讀取臨限取樣點X產生75/25讀取資料零/壹平衡,且一第二讀取臨限取樣點Y產生62.5/37.5讀取資料零/壹平衡,該讀取均衡點將接近Y +/-(X-Y),其中「+」對「-」取決於Y是否小於X。該讀取均衡點位於的方向係對應於移動讀取資料零/壹平衡使其更接近50/50之方向。在給定的實例中,該方向係自X且朝向Y之方向。對臨限電壓分佈的瞭解將產生一更準確的內插而非所指示的簡單的線性內插。
例示性實施例
在結束對【實施方式】的介紹之後,接下來收集例示性實施例,包含明確地枚舉為「例示性組合」(ES)之至少一些實施例,根據本文中描述之概念對多種實施例類型提供額外描述;此等實例並不意謂相互排斥、詳盡或限制性;且本發明並不限於此等例示性實施例, 反而涵蓋所發佈申請專利範圍及其等等效物之範疇內之所有可能的修改及變動。
EC1)一種方法,其包括:對於一NVM之至少一或多次讀取而判定零數目與壹數目之間的不均等;及回應於來自該NVM之一不可校正讀取,經由至少部分基於經判定之不均等選擇性地移位一臨限電壓而減小一後續不均等。
EC2)如EC1之方法,其進一步包括:其中該NVM係具有複數個狀態之一MLC記憶體,該等狀態之各者具有根據一預定格雷碼映射之一相關聯之MSB及LSB值,該NVM之該一或多次讀取係MSB讀取;及其中該判定一不均等包括使用對應於該一或多次MSB讀取之LSB讀取以選擇性地反轉該等MSB讀取之資料。
EC3)如EC1之方法,其中該至少一或多次讀取之各者係該NVM之一各自頁之至少一部分之一分離讀取。
EC4)如EC1之方法,其中該不均等之該判定包括:判定零數目與壹數目之間的差。
EC5)如EC1之方法,其中零數目及壹數目係經由各自計數加以判定。
EC6)如EC4之方法,其中若該差之絕對值低於一預定量,則不執行該移位。
EC7)如EC1之方法,其中若該差之絕對值低於一預定量,則該移位係移位一預定電壓。
EC8)如EC1之方法,其中該臨限電壓移位之一方向係至少部分基於邏輯狀態至NVM電荷狀態之一映射。
EC9)如EC1之方法,其中該NVM係具有邏輯壹至擦除狀態之一 映射之一SLC記憶體,且該臨限電壓係至少部分基於零數目少於壹數目之一判定而移位為較低。
EC10)如EC9之方法,其中該臨限電壓係進一步至少部分基於該不均等超過一預定量之判定而移位為較低。
EC11)如EC1之方法,其中該NVM係具有邏輯壹至該擦除狀態之一映射之一SLC記憶體,且該臨限電壓係基於該不均等主要指示壹之一判定而移位為較低。
EC12)如EC1之方法,其中該NVM係具有邏輯壹至該擦除狀態之一映射之一SLC記憶體,且該臨限電壓係至少部分基於零數目大於壹數目之一判定而移位為較高。
EC13)如EC12之方法,其中該不均等超過一預定量。
EC14)如EC1之方法,其中該NVM係具有邏輯壹至該擦除狀態之一映射之一SLC記憶體,且該臨限電壓係基於該不均等主要指示零之一判定而移位為較高。
EC15)如EC4之方法,其中該差中使用之零數目及壹數目係基於複數次讀取。
EC16)如EC1之方法,其中該判定係在複數個臨限電壓之各者下加以執行,且該移位係至少部分基於該等經判定之不均等。
EC17)一種裝置,其包括:用於對於一NVM之至少一或多次讀取而判定零數目與壹數目之間的不均等之構件;及用於回應於來自該NVM之一不可校正讀取經由至少部分基於經判定之不均等選擇性地移位一臨限電壓而減小一後續不均等之構件。
EC18)如EC17之裝置,其進一步包括:其中該NVM係具有複數個狀態之一MLC記憶體,該等狀態之各者具有根據一預定格雷碼映射之一相關聯之MSB及LSB值,該NVM之 該一或多次讀取係MSB讀取;及其中用於判定一不均等之構件包括用於使用對應於該一或多次MSB讀取之LSB讀取以選擇性地反轉該等MSB讀取之資料之構件。
EC19)如EC17之裝置,其中該至少一或多次讀取之各者係該NVM之一各自頁之至少一部分之一分離讀取。
EC20)如EC17之裝置,其中該不均等之該判定包括判定零數目與壹數目之間的差。
EC21)如EC17之裝置,其中零數目及壹數目係經由各自計數加以判定。
EC22)如EC20之裝置,其中若該差之絕對值低於一預定量,則不執行該移位。
EC23)如EC20之裝置,其中該差中使用之零數目及壹數目係基於複數次讀取。
EC24)如EC17之裝置,其中該判定係在複數個臨限電壓之各者下加以執行,且該移位係至少部分基於該等經判定之不均等。
EC25)一種方法,其包括:判定不均等,該等不均等之各者具有一各自量值且係儲存於一NVM中之值及讀取自該NVM之各自值之一各自已知分佈之一各自不均等;及定期地回應於來自該NVM之一不可校正讀取,至少部分基於在移位之前判定之該等不均等之至少一者在至少一讀取臨限電壓下選擇性地移位。
EC26)如EC25之方法,其中該至少一讀取臨限電壓之各經定期移位之值係根據使繼該移位之後判定之該等不均等之至少一者之各自量值保持低於一預定量之一目標加以判定。
EC27)如EC26之方法,其中繼該移位之後判定之該等不均等之該 至少一者之該等各自量值經由該至少一讀取臨限電壓之一單個更新而減小至該預定量以下,至少直至下一次不可校正讀取。
EC28)如EC25之方法,其中該NVM係一SLC。
EC29)如EC25之方法,其中該NVM係一MLC。
EC30)如EC29之方法,其中該MLC係一4LC MLC,且對於一E狀態及複數個D狀態之至少兩個狀態估計該等不均等。
EC31)如EC29之方法,其中該MLC係一4LC MLC,且該已知分佈在四個狀態之間係25-25-25-25百分比。
EC32)如EC25之方法,其中該NVM係具有複數個狀態之一MLC,該等狀態之各者具有根據一預定格雷碼映射之一相關聯之MSB及LSB值,該至少一臨限電壓係鑑於對下頁讀取執行之該等判定不均等而移位,且該電壓移位係回應於主要為零不均等而在一第一方向上及回應於主要為壹不均等而在一第二方向上。
EC33)如EC25之方法,其中該NVM係具有複數個狀態之一MLC,該等狀態之各者具有根據一預定格雷碼映射之一相關聯之MSB及LSB值,且該至少一臨限電壓係鑑於對上頁讀取執行之該等判定不均等而移位。
EC34)如EC33之方法,其中使用一特定LSB對該讀取單位之各位元執行對該等判定不均等執行之該等上頁讀取,且對於一第一LSB值,該電壓移位係回應於主要為零不均等而在一第一方向上及回應於主要為壹不均等而在一第二方向上,且對於一第二LSB值,該電壓移位之方向意義顛倒。
EC35)如EC33之方法,其中使用一特定LSB對該讀取單位之各位元執行對該判定不均等執行之該等上頁讀取,且該電壓移位之該方向係至少部分基於該等上頁讀取之該特定LSB值及至少部分基於該不均等之本質。
EC36)如EC25之方法,其中該NVM係具有一E狀態及複數個D狀態之一MLC,且該至少一臨限電壓係介於該E狀態與該複數個D狀態之一選定狀態之間。
EC37)如EC25之方法,其中該NVM係具有一E狀態及複數個D狀態之一MLC,且該至少一臨限電壓係介於該複數個D狀態之一選定兩個相鄰狀態之間。
EC38)如EC25之方法,其進一步包括:其中該NVM係具有複數個狀態之一MLC記憶體,該等狀態之各者具有根據一預定格雷碼映射之一相關聯之MSB及LSB值,且對於讀取自該NVM之值,該等讀取係MSB讀取;及其中該判定不均等包括使用對應於該一或多次MSB讀取之LSB讀取以選擇性地反轉該等MSB讀取之資料。
EC39)一種裝置,其包括:用於判定不均等之構件,該等不均等之各者具有一各自量值且係儲存於一NVM中之值及讀取自該NVM之各自值之一各自已知分佈之一各自不均等;及用於定期地回應於來自該NVM之一不可校正讀取至少部分基於在移位之前判定之該等不均等之至少一者在至少一讀取臨限電壓下選擇性地移位之構件。
EC40)如EC39之裝置,其中該至少一讀取臨限電壓之各經定期移位之值係根據使繼該移位之後判定之該等不均等之至少一者之各自量值保持低於一預定量之一目標加以判定。
EC41)如EC40之裝置,其中繼該移位之後判定之該等不均等之該至少一者之該等各自量值經由該至少一讀取臨限電壓之一單個更新而減小至該預定量以下,至少直至下一次不可校正讀取。
EC42)如EC39之裝置,其中該NVM係一SLC。
EC43)如EC39之裝置,其中該NVM係一MLC。
EC44)一種方法,其包括:判定讀取自一NVM之資料之一或多個部分之各者之零計數及壹計數之差;其中在一讀取臨限值之複數個讀取參考電壓設定之各者下執行該判定且計算該差;使用該等經計算之差之內插以計算一臨限中心點;及至少部分基於該經計算之臨限中心點移位該讀取臨限值至一更新讀取參考電壓設定。
EC45)如EC44之方法,其中該內插係一線性內插。
EC46)如EC44之方法,其中該判定一差包括在計算該零計數與該壹計數之差之前對該NVM之至少一或多次讀取而判定該零計數及該壹計數。
EC47)一種裝置,其包括:用於判定讀取自一NVM之資料之一或多個部分之各者之零計數及壹計數之差之構件,其中在一讀取臨限值之複數個讀取參考電壓設定之各者下執行該判定且計算該差;用於使用該等經計算之差之內插以計算一臨限中心點之構件;及用於至少部分基於該經計算之臨限中心點移位該讀取臨限值至一更新讀取參考電壓設定之構件。
EC48)如EC47之裝置,其中該內插係一線性內插。
EC49)如EC47之裝置,其中用於判定一差之該構件包括用於在計算該零計數與該壹計數之差之前對該NVM之至少一或多次讀取而判定該零計數及該壹計數之一構件。
EC50)一種方法,其包括: 在複數個臨限電壓之各者下讀取一相同讀取單位之資料;對於該相同讀取單位之各讀取,判定零讀取計數及壹讀取計數;至少部分基於該等讀取計數計算一臨限中心點;及至少部分基於該資料讀取及該經計算之臨限中心點,產生軟判決資訊。
EC51)如EC50之方法,其中該臨限中心點計算係至少部分使用該零讀取計數與該壹讀取計數之經計算之差之內插加以執行。
EC52)如EC51之方法,其中該內插係一線性內插。
EC53)如EC50之方法,其中基於在相對於該經計算之臨限中心點之各自臨限電壓偏差下讀取之資料,產生該軟判決資訊之複數個值。
EC54)如EC53之方法,其中對應於高於及低於該經計算之臨限中心點之相等數目個各自電壓偏差,產生偶數個值。
EC55)如EC53之方法,其中使用該經計算之臨限中心點作為用於產生該軟判決資訊之一參考而改良藉由減小原本存在之偏置產生該軟判決資訊之功效。
EC56)一種裝置,其包括:用於在複數個臨限電壓之各者下讀取一相同讀取單位之資料之構件;用於對該相同讀取單位之各讀取而判定零讀取計數及壹讀取計數之構件;用於至少部分基於該等讀取計數計算一臨限中心點之構件;及用於至少部分基於該資料讀取及該經計算之臨限中心點產生軟判決資訊之構件。
EC57)如EC56之裝置,其中該臨限中心點計算係至少部分使用該零讀取計數與該壹讀取計數之經計算之差之內插加以執行。
EC58)如EC57之裝置,其中該內插係一線性內插。
EC59)如EC56之裝置,其中基於在相對於該經計算之臨限中心點之各自臨限電壓偏差下讀取之資料,產生該軟判決資訊之複數個值。
EC60)如EC59之裝置,其中對應於高於及低於該經計算之臨限中心點之相等數目個各自電壓偏差,產生偶數個值。
EC61)如EC59之裝置,其中使用該經計算之臨限中心點作為用於產生該軟判決資訊之一參考而改良藉由減小原本存在之偏置產生該軟判決資訊之功效。
EC62)一種方法,其包括:在複數個臨限電壓之各者下讀取一相同讀取單位之資料;對於該相同讀取單位之各讀取,判定零讀取計數及壹讀取計數;至少部分基於該等讀取計數,識別最接近該複數個臨限電壓之中心點臨限電壓之一臨限電壓,最接近中心點臨限電壓之該臨限電壓對應於一概念臨限中心點;及至少部分基於該資料讀取及經識別之最接近中心點臨限電壓之臨限電壓產生軟判決資訊。
EC63)如EC62之方法,其中該臨限中心點計算係至少部分使用該零讀取計數與該壹讀取計數之經計算之差之內插加以執行。
EC64)如EC63之方法,其中該內插係一線性內插。
EC65)如EC62之方法,其中基於在相對於該經計算之臨限中心點之各自臨限電壓偏差下讀取之資料產生該軟判決資訊之複數個值。
EC66)如EC65之方法,其中產生對應於藉由該等各自電壓偏差判定之多個間隔之多個值。
EC67)如EC62之方法,其中使用該經計算之臨限中心點作為用於產生該軟判決資訊之一參考而改良藉由減小原本存在之偏置產生該軟 判決資訊之功效。
EC68)一種裝置,其包括:用於在複數個臨限電壓之各者下讀取一相同讀取單位之資料之構件;用於對該相同讀取單位之各讀取而判定零讀取計數及壹讀取計數之構件;用於至少部分基於該等讀取計數識別最接近該複數個臨限電壓之中心點臨限電壓之一臨限電壓之構件,最接近中心點臨限電壓之該臨限電壓對應於一概念臨限中心點;及用於至少部分基於該資料讀取及經識別之最接近中心點臨限電壓之臨限電壓產生軟判決資訊之構件。
EC69)如EC68之裝置,其中該臨限中心點計算係至少部分使用該零讀取計數與該壹讀取計數之經計算之差之內插加以執行。
EC70)如EC69之裝置,其中該內插係一線性內插。
EC71)如EC68之裝置,其中基於在相對於該經計算之臨限中心點之各自臨限電壓偏差下讀取之資料產生該軟判決資訊之複數個值。
EC72)如EC72之裝置,其中產生對應於藉由該等各自電壓偏差判定之多個間隔之多個值。
EC73)如EC68之裝置,其中使用該經計算之臨限中心點作為用於產生該軟判決資訊之一參考而改良藉由減小原本存在之偏置產生該軟判決資訊之功效。
EC74)一種方法,其包括:儲存資料於一NVM中,其中該經儲存之資料具有一特定零-壹平衡;維持零計數及壹計數,其中該零計數及該壹計數係讀取計數;依據該零計數、該壹計數及該特定零-壹平衡估計該NVM之零-壹 平衡;繼來自該NVM之一不可校正讀取且判定該零-壹平衡係在一指定範圍以外之後,當該臨限電壓儘可能少移位時,移位該臨限電壓至至少部分基於該估計且根據恢復該零-壹平衡至該指定範圍內之一目標判定之一值;及其中最佳化來自該NVM之資料恢復。
EC75)如EC74之方法,其進一步包括:其中該臨限電壓之該移位係基於該零-壹平衡相對於該特定零-壹平衡包括過量壹之一判定而移位至一較低電壓;及其中該臨限電壓之該移位係基於該零-壹平衡相對於該特定零-壹平衡包括過量零之一判定而移位至一較高電壓。
EC76)如EC74之方法,其中由於使用加密方法而儲存該資料且該特定零-壹平衡係50%的零及50%的壹。
EC77)如EC74之方法,其中該特定零-壹平衡對應於小於55%的零及大於45%的壹。
EC78)如EC74之方法,其中該特定零-壹平衡對應於大於52.5%的零之一概率小於一萬分之一。
EC79)如EC74之方法,其中該特定零-壹平衡對應於小於45%的零及大於55%的壹。
EC80)一種裝置,其包括:用於儲存資料於一NVM中之構件,其中該經儲存之資料具有一特定零-壹平衡;用於維持零計數及壹計數之構件,其中該零計數及該壹計數係讀取計數;用於依據該零計數、該壹計數及該特定零-壹平衡估計該NVM之零-壹平衡之構件; 用於繼來自該NVM之一不可校正讀取且判定該零-壹平衡係在一指定範圍以外之後、當該臨限電壓儘可能少移位時、移位該臨限電壓至至少部分基於該估計且根據恢復該零-壹平衡至該指定範圍內之一目標判定之一值之構件;及其中最佳化來自該NVM之資料恢復。
EC81)如EC80之裝置,其進一步包括:其中該臨限電壓之該移位係基於該零-壹平衡相對於該特定零-壹平衡包括過量壹之一判定而移位至一較低電壓;及其中該臨限電壓之該移位係基於該零-壹平衡相對於該特定零-壹平衡包括過量零之一判定而移位至一較高電壓。
EC82)如EC80之裝置,其中由於使用加密方法而儲存該資料且該特定零-壹平衡係50%的零及50%的壹。
EC83)如EC80之裝置,其中該特定零-壹平衡對應於小於55%的零及大於45%的壹。
EC84)如EC80之裝置,其中該特定零-壹平衡對應於大於52.5%的零之一概率小於一萬分之一。
EC85)如EC80之裝置,其中該特定零-壹平衡對應於小於45%的零及大於55%的壹。
EC86)一種方法,其包括:擾碼待寫入至一非揮發性記憶體之一部分之資料以產生具有已知統計平均數目個零位元及已知統計平均數目個壹位元之擾碼資料;將該擾碼資料寫入至該非揮發性記憶體之該部分;繼該寫入之後,讀取該非揮發性記憶體之該部分;計算讀取自該非揮發性記憶體之該部分之資料中之零位元數目與壹位元數目之間的不均等;及至少部分基於該不均等而判定用於該非揮發性記憶體之一後續 讀取的一臨限電壓。
EC87)如EC86之方法,其中該判定係進一步基於該已知統計平均數目個零位元或該已知統計平均數目個壹位元。
EC88)如EC86之方法,其進一步包括:使用該臨限電壓再讀取該非揮發性記憶體之該部分。
EC89)如EC88之方法,其中該寫入包括使用一ECC編碼器來編碼該擾碼資料及將經編碼之擾碼資料寫入至該非揮發性記憶體之該部分,且進一步包括:在該再讀取之前,使用一ECC解碼器來解碼讀取自該非揮發性記憶體之該部分之資料,以判定讀取自該非揮發性記憶體之該部分之該資料係不可校正的。
EC90)如EC89之方法,其中該不均等係一第一不均等,該臨限電壓係一第一臨限電壓,且進一步包括:使用該ECC解碼器來解碼使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之資料,以判定使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之該資料係不可校正的;計算使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之該資料中之零位元數目與壹位元數目之間之一第二不均等;及至少部分基於該第一不均等及該第二不均等判定用於該非揮發性記憶體之一第二再讀取的一第二臨限電壓。
EC91)如EC90之方法,其進一步包括:使用該第二臨限電壓再讀取該非揮發性記憶體之該部分。
EC92)如EC89之方法,其中該ECC編碼器添加一或多個位元組至該擾碼資料,且其中藉由該ECC編碼器添加之該一或多個位元組具有該已知統計平均數目個零位元或該已知統計平均數目個壹位元。
EC93)一種裝置,其包括: 用於擾碼待寫入至一非揮發性記憶體之一部分之資料以產生具有已知統計平均數目個零位元及已知統計平均數目個壹位元之擾碼資料之構件;用於將該擾碼資料寫入至該非揮發性記憶體之該部分之構件;用於繼該寫入之後讀取該非揮發性記憶體之該部分之構件;用於計算讀取自該非揮發性記憶體之該部分之資料中之零位元數目與壹位元數目之間的不均等之構件;及用於至少部分基於該不均等而判定用於該非揮發性記憶體之一後續讀取的一臨限電壓之構件。
EC94)如EC93之裝置,其中該判定係進一步基於該已知統計平均數目個零位元或該已知統計平均數目個壹位元。
EC95)如EC93之裝置,其進一步包括:用於使用該臨限電壓再讀取該非揮發性記憶體之該部分之構件。
EC96)如EC95之裝置,其中該寫入包括使用一ECC編碼器來編碼該擾碼資料及將經編碼之擾碼資料寫入至該非揮發性記憶體之該部分,且進一步包括:用於在該再讀取之前、使用一ECC解碼器來解碼讀取自該非揮發性記憶體之該部分之資料以判定讀取自該非揮發性記憶體之該部分之該資料係不可校正的之構件。
EC97)如EC96之裝置,其中該不均等係一第一不均等,該臨限電壓係一第一臨限電壓,且進一步包括:用於使用該ECC解碼器來解碼使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之資料以判定使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之該資料係不可校正的之構件;用於計算使用該第一臨限電壓再讀取自該非揮發性記憶體之該 部分之該資料中之零位元數目與壹位元數目之間之一第二不均等之構件;及用於至少部分基於該第一不均等及該第二不均等而判定用於該非揮發性記憶體之一第二再讀取的一第二臨限電壓之構件。
EC98)如EC97之裝置,其進一步包括:用於使用該第二臨限電壓再讀取該非揮發性記憶體之該部分之構件。
EC99)如EC96之裝置,其中該ECC編碼器添加一或多個位元組至該擾碼資料,且其中藉由該ECC編碼器添加之該一或多個位元組具有該已知統計平均數目個零位元或該已知統計平均數目個壹位元。
EC100)一種有形電腦可讀媒體,該有形電腦可讀媒體中儲存有當藉由一處理元件執行時導致該處理元件執行及/或控制操作之一指令集,該等操作包括:擾碼待寫入至一非揮發性記憶體之一部分之資料以產生具有已知統計平均數目個零位元及已知統計平均數目個壹位元之擾碼資料;將該擾碼資料寫入至該非揮發性記憶體之該部分;繼該寫入之後,讀取該非揮發性記憶體之該部分;計算讀取自該非揮發性記憶體之該部分之資料中之零位元數目與壹位元數目之間的不均等;及至少部分基於該不均等而判定用於該非揮發性記憶體之一後續讀取的一臨限電壓。
EC101)如EC100之有形電腦可讀媒體,其中該判定係進一步基於該已知統計平均數目個零位元或該已知統計平均數目個壹位元。
EC102)如EC100之有形電腦可讀媒體,該等操作進一步包括:使用該臨限電壓再讀取該非揮發性記憶體之該部分。
EC103)如EC102之有形電腦可讀媒體,其中該寫入包括使用一 ECC編碼器來編碼該擾碼資料及將經編碼之擾碼資料寫入至該非揮發性記憶體之該部分,且該等操作進一步包括:在該再讀取之前,使用一ECC解碼器來解碼讀取自該非揮發性記憶體之該部分之資料,以判定讀取自該非揮發性記憶體之該部分之該資料係不可校正的。
EC104)如EC103之有形電腦可讀媒體,其中該不均等係一第一不均等,該臨限電壓係一第一臨限電壓,且該等操作進一步包括:使用該ECC解碼器來解碼使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之資料,以判定使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之該資料係不可校正的;計算使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之該資料中之零位元數目與壹位元數目之間之一第二不均等;及至少部分基於該第一不均等及該第二不均等而判定用於該非揮發性記憶體之一第二再讀取的一第二臨限電壓。
EC105)如EC104之有形電腦可讀媒體,該等操作進一步包括:使用該第二臨限電壓再讀取該非揮發性記憶體之該部分。
EC106)如EC103之有形電腦可讀媒體,其中該ECC編碼器添加一或多個位元組至該擾碼資料,且其中藉由該ECC編碼器添加之該一或多個位元組具有該已知統計平均數目個零位元或該已知統計平均數目個壹位元。
系統
圖1A圖解說明SSD 101之一實施例之選定細節,該SSD 101包含使用用於管理非揮發性儲存器之零/壹平衡恢復之(諸如經由NVM元件(例如,快閃記憶體)實施)一SSD控制器。SSD控制器100經由一或多個外部介面110通信地耦合至一主機(諸如圖1B之主機102)。根據各種實施例,外部介面110係以下一或多者:一SATA介面;一SAS介面; 一PCIe介面;一光纖通道介面;一乙太網路介面(諸如百億位元乙太網路);任何前述介面之一非標準版本;一自訂介面;或用以互連儲存及/或通信及/或計算裝置之任何其他類型介面。例如,在一些實施例中,SSD控制器100包含一SATA介面及一PCIe介面。
SSD控制器100經由一或多個裝置介面190進一步通信地耦合至包含一或多個儲存裝置(諸如快閃裝置192之一或多者)之NVM 199。根據各種實施例,裝置介面190係以下一或多者:一不對稱介面;一對稱介面;一單倍資料速率(SDR)介面;一雙倍資料速率(DDR)介面;一DRAM可相容DDR或DDR2對稱介面;一ONFI可相容介面,諸如一ONFI 2.2或ONFI 3.0可相容介面;一雙態觸發模式可相容快閃介面;任何前述介面之一非標準版本;一自訂介面;或用以互連儲存裝置之任何其他類型介面。
在一些實施例中,各快閃裝置192具有一或多個個別快閃晶粒194。根據快閃裝置192之一特定者之類型,該特定快閃裝置192中之複數個快閃晶粒194可視需要及/或選擇性地並行存取。快閃裝置192僅僅表示經啟用以通信地耦合至SSD控制器100之一種類型的儲存裝置。在各種實施例中,任何類型的儲存裝置係可用的,諸如一SLC NAND快閃記憶體、MLC NAND快閃記憶體、NOR快閃記憶體、使用多晶矽或基於氮化矽技術之電荷儲存記憶體胞之快閃記憶體、基於二維或三維技術之快閃記憶體、唯讀記憶體、靜態隨機存取記憶體、動態隨機存取記憶體、鐵磁記憶體、相變記憶體、賽道(Racetrack)記憶體、ReRAM或任何其他類型的記憶體裝置或儲存媒體。
根據各種實施例,將裝置介面190組織為:一或多個匯流排,其中每個匯流排具有快閃裝置192之一或多者;一或多個匯流排群組,其中每個匯流排具有快閃裝置192之一或多者,其中一群組中之匯流排大體上係並行存取;或裝置介面190上之快閃裝置192之一或多者之 任何其他組織。
繼續圖1A,SSD控制器100具有一或多個模組,諸如主機介面111、資料處理121、緩衝器131、映射141、回收器151、ECC 161、裝置介面邏輯191及CPU 171。圖1A中圖解說明之特定模組及互連件僅僅表示一實施例,且設想一些或所有該等模組以及未圖解說明之額外模組之許多配置及互連件。在一第一實例中,在一些實施例中,存在兩個或更多個主機介面111以提供雙埠(dual-porting)。在一第二實例中,在一些實施例中,資料處理121及/或ECC 161組合緩衝器131。在一第三實例中,在一些實施例中,主機介面111直接耦合至緩衝器131,且資料處理121視需要及/或選擇性地操作儲存於緩衝器131中之資料。在一第四實例中,在一些實施例中,裝置介面邏輯191直接耦合至緩衝器131,且ECC 161視需要及/或選擇性地操作儲存於緩衝器131中之資料。
主機介面111經由外部介面110發送並接收命令及/或資料,且在一些實施例中,經由標籤追蹤113追蹤個別命令之進展。例如,該等命令包含指定讀取一位址(諸如一LBA)及資料量(諸如LBA總額(例如,區段)之數目)之一讀取命令;作為回應,該SSD提供讀取狀態及/或讀取資料。對於另一實例,該等命令包含指定寫入一位址(諸如一LBA)及資料量(諸如LBA總額(例如,區段)之數目)之一寫入命令;作為回應,該SSD提供寫入狀態及/或請求寫入資料且視需要隨後提供寫入狀態。對於又另一實例,該等命令包含指定不再需要分配之一或多個位址(諸如一或多個LBA)之一解除分配命令(例如,一修整(trim)命令);作為回應,該SSD因此修改映射且視需要提供解除分配狀態。在一些情境中,一ATA可相容TRIM命令係一例示性解除分配命令。對於又另一實例,該等命令包含一超級電容器測試命令或一資料強化成功查詢;作為回應,該SSD提供適當狀態。在一些實施例中,主機 介面111可與一SATA協定相容,且使用NCQ命令啟用主機介面111以具有多達32個暫停命令,其中各暫停命令具有表示為自0至31之一數字之一唯一標籤。在一些實施例中,啟用標籤追蹤113以使用於經由外部介面110接收之一命令之一外部標籤與用以在藉由SSD控制器100處理期間追蹤該命令之一內部標籤相關聯。
根據各種實施例,以下一或多者:資料處理121視需要及/或選擇性地處理在緩衝器131與外部介面110之間發送之一些或所有資料;且資料處理121視需要及/或選擇性地處理儲存於緩衝器131中之資料。在一些實施例中,資料處理121使用一或多個引擎123以執行以下一或多者:格式化;重新格式化;轉碼;及任何其他資料處理及/或操縱任務。
緩衝器131儲存自裝置介面190發送至外部介面110之資料及自外部介面110發送至裝置介面190之資料。在一些實施例中,緩衝器131此外儲存系統資料,諸如由SSD控制器100使用以管理快閃裝置192之一或多者之一些或所有映射表。在各種實施例中,緩衝器131具有以下一或多者:用於暫時儲存資料之記憶體137;用以控制移動資料至緩衝器131及/或自緩衝器131移動資料之DMA 133;及用以提供高階錯誤校正及/或冗餘功能之ECC-X 135;及其他資料移動及/或操縱功能。一較高階冗餘功能之一實例係一類似RAID能力,其中冗餘係處於一快閃裝置(例如,快閃裝置192之多個快閃裝置)級及/或一快閃晶粒(例如,快閃晶粒194)級而非一光碟級。
根據各種實施例,以下一或多者:ECC 161視需要及/或選擇性地處理在緩衝器131與裝置介面190之間發送之一些或所有資料;且ECC 161視需要及/或選擇性地處理儲存於緩衝器131中之資料。在一些實施例中,ECC 161係用以提供諸如根據一或多種ECC技術之較低階錯誤校正及/或冗餘功能。在一些實施例,ECC 161實施以下一或多者: 一CRC碼;一漢明碼;一RS碼;一BCH碼;一LDPC碼;一維特比碼;一格狀碼;一硬判決碼;一軟判決碼;一基於擦除之碼;任何錯誤偵測及/或校正碼;及前述碼之任何組合。在一些實施例中,ECC 161包含一或多個解碼器(諸如LDPC解碼器)。
裝置介面邏輯191經由裝置介面190控制快閃裝置192之例項。啟用裝置介面邏輯191以根據快閃裝置192之一協定發送資料至快閃裝置192之例項/自快閃裝置192之例項發送資料。裝置介面邏輯191包含排程193以經由裝置介面190選擇性地循序控制快閃裝置192之例項。例如,在一些實施例中,啟用排程193以佇列快閃裝置192之例項之操作,且由於快閃裝置192(或快閃晶粒194)之例項之個別例項可用而選擇性地將該等操作發送至快閃裝置192(或快閃晶粒194)之例項之個別例項。
映射141使用表143以在外部介面110上使用之資料定址與裝置介面190上使用之資料定址之間轉換,以將外部資料位址映射至NVM199中的位置。例如,在一些實施例中,映射141經由藉由表143提供之映射而將外部介面110上使用之LBA轉換為以一或多個快閃晶粒194為目標之區塊及/或頁位址。對於自碟機製造或解除分配以來從未被寫入之LBA,映射指向當讀取LBA時所傳回之一預設值。例如,當處理一解除分配命令時,修改該映射使得對應於經解除分配之LBA之項指向該等預設值之一者。在各種實施例中,存在各種預設值,各預設值具有一對應的指標。該複數個預設值使能夠讀取一些經解除分配之LBA(諸如一第一範圍中)作為一預設值,並同時讀取其他經解除分配之LBA(諸如一第二範圍中)作為另一預設值。在各種實施例中,該等預設值係藉由快閃記憶體、硬體、韌體、命令及/或原始自變數及/或參數、可程式化暫存器或其等之各種組合加以定義。
在一些實施例中,映射141使用表143以執行及/或查找介於外部 介面110上使用之位址與裝置介面190上使用之資料定址之間的轉譯。根據各種實施例,表143係以下一或多者:一單階映射;二階映射;多位階映射;一映射快取;一壓縮映射;自一位址空間至另一位址空間之任何類型的映射;及前述之任何組合。根據各種實施例,表143包含以下一或多者:靜態隨機存取記憶體;動態隨機存取記憶體;NVM(諸如快閃記憶體);快取記憶體;晶片上記憶體;晶片外記憶體;及前述之任何組合。
在一些實施例中,回收器151執行記憶體回收(garbage collection)。例如,在一些實施例中,快閃裝置192之例項含有必須在可覆寫區塊之前擦除之區塊。啟用回收器151以藉由諸如掃描藉由映射141維持之一映射而判定快閃裝置192之例項中主動使用(例如,分配而非解除分配)之部分,且藉由擦除可用於寫入之快閃裝置192之例項之部分而使其等不可用(例如,解除分配)。在進一步實施例中,啟用該回收器151以移動儲存於快閃裝置192之例項內之資料以使快閃裝置192之例項之更大連續部分可用於寫入。
在一些實施例中,快閃裝置192之例項經選擇性地及/或動態地組態、管理及/或使用以具有用於儲存不同類型及/或性質之資料之一或多個帶(band)。可動態地改變該等帶之數目、配置、大小及類型。例如,將來自一計算主機之資料寫入至一熱(作用)帶,同時將來自回收器151之資料寫入至一冷(較少作用)帶。在一些使用案例中,若該計算主機寫入一長循序串流,則該熱帶之一大小增長,而若該計算主機並非隨機寫入或較少寫入,則該冷帶之一大小增長。
CPU 171控制SSD控制器100之各個部分。CPU 171包含CPU核心172。根據各種實施例,CPU核心172係一或多個單核心或多核心處理器。在一些實施例中,CPU核心172中之個別處理器係多執行緒式。CPU核心172包含指令及/或資料快取區及/或記憶體。例如,指令記憶 體含有啟用CPU核心172以執行控制SSD控制器100之程式(例如,有時候稱為韌體之軟體)之指令。在一些實施例中,藉由CPU核心172執行之一些或所有韌體係儲存在快閃裝置192之例項上(如圖解說明,例如,如圖1B中之NVM 199之韌體106)
在各種實施例中,CPU 171進一步包含:當經由外部介面110接收之命令正在進行時追蹤並控制該等命令之命令管理173;控制緩衝器131之分配及使用之緩衝器管理175;控制映射141之轉譯管理177;控制資料定址之一致性且避免諸如外部資料存取與回收資料存取之間的衝突之連貫性管理179;控制裝置介面邏輯191之裝置管理181;控制識別資訊之修改及通信之識別管理182及視需要其他管理單元。根據各種實施例,藉由硬體、軟體(諸如對CPU核心172或經由外部介面110連接之一主機執行之韌體)或其等之任何組合未控制及/或管理藉由CPU 171執行之管理功能、控制及/或管理藉由CPU 171執行之任何或所有管理功能。
在一些實施例中,啟用CPU 171以執行其他管理任務,諸如以下一或多者:蒐集及/或報告效能統計;實施SMART;控制開機定序、控制及/或監控及/或調整功耗;回應於電源故障;控制及/或監控及/或調整時脈速率;及其他管理任務。
各種實施例包含一計算主機快閃記憶體控制器,其類似於SSD控制器100且可經由主機介面111及/或外部介面110之調適而與各種計算主機之操作相容。各種計算主機包含以下之一或任何組合:電腦、工作站電腦、伺服器電腦、儲存伺服器、SAN、NAS裝置、DAS裝置、儲存器具、PC、膝上型電腦、筆記型電腦、小筆電電腦、平板裝置或電腦、超筆電電腦、電子閱讀裝置(諸如電子閱讀器)、PDA、導航系統、(手持式)GPS裝置、汽車控制系統、汽車媒體控制系統或電腦、印表機、影印機或傳真機或多合裝置、POS裝置、收銀機、媒體 播放器、電視機、媒體攝影機、DVR、數位相機、蜂巢式手機、無接線電話手機及電子遊戲。
在各種實施例中,在單個IC、多晶粒IC之單晶粒、多晶粒IC之複數個晶粒或複數個IC上實施SSD控制器(或計算主機快閃記憶體控制器)之所有或任何部分。例如,在與SSD控制器100之其他元件相同之晶粒上實施緩衝器131。對於另一實例,在不同於SSD控制器100之其他元件之晶粒在實施緩衝器131。
圖1B圖解說明包含圖1A之SSD之一或多個例項之系統之各種實施例之選定細節。SSD 101包含經由裝置介面190耦合至NVM 199之SSD控制器100。圖1B圖解說明各種類別的實施例:直接耦合至主機之單個SSD、分別經由各自外部介面直接耦合至主機之複數個SSD及經由各種互連元件間接地耦合至主機之一或多個SSD。
作為直接耦合至主機之單個SSD之例示性實施例,SSD 101之例項經由外部介面110(例如,省略、旁通或直通交換機/組構/中間控制器103)直接耦合至主機102。作為各自經由各自外部介面直接耦合至主機之複數個SSD之例示性實施例,SSD 101之複數個例項之各者分別經由外部介面110之各自例項(例如,省略、旁通或直通交換機/組構/中間控制器103)直接耦合至主機102。作為經由各種互連元件間接地耦合至主機之一或多個SSD之例示性實施例,SSD 101之或多個例項之各者係分別間接地耦合至主機102。各間接耦合係經由外部介面110之各自例項耦合至交換機/組構/中間控制器103且經由中間介面104耦合至主機102。
包含交換機/組構/中間控制器103之一些實施例亦包含經由記憶體介面180耦合且可藉由SSD存取之卡式記憶體112C。在各種實施例中,該等SSD之一或多者、該交換機/組構/中間控制器103及/或該卡式記憶體係包含於一實體可識別模組、卡或可插入元件(例如,I/O卡 116)上。在一些實施例中,SSD 101(或其變體)對應於耦合至運行為主機102之一起始器之一SAS碟機或一SATA碟機。
啟用主機102以執行主機軟體115之各種元件,諸如OS 105、驅動程式107、應用程式109及多裝置管理軟體114之各種組合。虛線箭頭107D表示主機軟體←→I/O裝置通信,例如:往返於SSD 101之例項之一或多者發送/接收資料,以及往返於OS 105(經由驅動程式107)、驅動程式107及應用程式109(經由驅動程式107或直接作為VF)之任一或多者發送/接收資料。
OS 105包含及/或經啟用以描配用於用於介接SSD之驅動程式(概念上藉由驅動程式107圖解說明)操作。各種版本的Windows(例如,95、98、ME、NT、XP、2000、Server、Vista及7)、各種版本的Linux(例如,Red Hat、Debian及Ubuntu)及各種版本的MacOS(例如,8、9及X)係OS 105之實例。在各種實施例中,驅動程式係可在一標準介面及/或協定(諸如SATA、AHCI或快速NVM)下操作之標準及/或泛型(generic)驅動程式(有時候被稱為「現成套裝」(shrink-wrapped)或「預安裝」),或視需要經客製化及/或特定於廠商以能夠使用特定於SSD 101之命令。一些碟機及/或驅動程式具有直通模式以經由最佳化NAND存取(有時候被稱為ONA)或直接NAND存取(有時候被稱為DNA)技術使應用程式層級程式(諸如應用程式109)能夠將命令直接傳送至SSD 101,從而即使使用一泛型驅動程式亦使一客製化應用程式能夠使用特定於SSD 101之命令。ONA技術包含以下一或多者:使用非標準修改程式(modifier)(提示);使用廠商特定命令;非標準統計的通信,諸如根據可壓縮性之實際NVM使用;及其他技術。DNA技術包含以下一或多者:使用非標準命令或提供對NVM之未映射讀取、寫入及/或擦除存取之廠商特定命令;使用非標準命令或提供更直接存取NVM之廠商特定命令,諸如藉由旁通I/O裝置原本進行的資料格 式化;及其他技術。驅動程式之實例係無ONA或DNA支援之驅動程式、啟用ONA之驅動程式、啟用DNA之驅動程式及啟用ONA/DNA之驅動程式。驅動程式之進步實例係廠商提供、廠商研發及/或廠商增強型驅動程式及用戶端提供、用戶端研發及/或用戶端增強型驅動程式。
應用程式層級程式之實例係無ONA或DNA支援之應用程式、啟用ONA之應用程式、啟用DNA之應用程式及啟用ONA/DNA之應用程式。虛線箭頭109D表示應用程式←→I/O裝置通信(例如,經由驅動程式旁通或對於應用程式經由VF旁通),例如啟用ONA之應用程式及啟用ONA之驅動程式與SSD通信,諸如該應用程式未使用OS作為媒介。虛線箭頭109V表示應用程式←→I/O裝置通信(例如,對於應用程式經由VF旁通),例如啟用DNA之應用程式及啟用DNA之驅動程式與SSD通信,諸如該應用程式未使用OS或驅動程式作為媒介。
在一些實施例中,NVM 199之一或多個部分係用於韌體儲存器,例如韌體106。該韌體儲存器包含一或多個韌體影像(或其之部分)。例如,一韌體影像具有(例如)藉由SSD控制器100之CPU核心172執行之韌體之一或多個影像。對於另一實例,韌體影像具有(例如)在韌體執行期間由CPU核心參考之常數、參數值及NVM裝置資訊之一或多個影像。韌體之影像對應於(例如)目前的韌體影像及零或更多先前(相對於韌體更新)韌體影像。在各種實施例中,韌體提供泛型、標準、ONA及或DNA操作模式。在一些實施例中,經由密鑰或視需要藉由一驅動程式傳送及/或提供之各種軟體技術啟用該等韌體操作模式之一或多者(例如,「解鎖」一或多個API)。
在缺少交換機/組構/中間控制器之一些實施例中,該SSD經由外部介面110直接耦合至主機。在各種實施例中,SSD控制器100經由其他控制器(諸如一RAID控制器)之一或多個中間層級耦合至主機。在一 些實施例中,SSD 101(或其變體)對應於一SAS碟機或一SATA碟機,且交換機/組構/中間控制器103對應於繼而耦合至一起始器之一擴展器,或替代地交換機/組構/中間控制器103對應於經由一擴展器間接地耦合至一起始器之一橋接器。在一些實施例中,交換機/組構/中間控制器103包含一或多個PCIe交換機及/或組構。
在各種實施例(諸如其中主機102係計算主機(例如,電腦、工作站電腦、伺服器電腦、儲存伺服器、SAN、NAS裝置、DAS裝置、儲存器具、PC、膝上型電腦、筆記型電腦及/或小筆電電腦)之一些實施例)中,視需要啟用該計算主機以(例如,經由選用I/O及儲存裝置/資源117及選用LAN/WAN 119)與一或多個本端及/或遠端伺服器(例如,選用伺服器118)通信。例如,該通信實現本端及/或遠端存取、管理及/或SSD 101元件之一或多者的使用。在一些實施例中,該通信係完全或部分經由乙太網路。在一些實施例中,該通信係完全或部分經由光纖通道。在各種實施例中,LAN/WAN 119表示一或多個區域網路及/或廣域網路,諸如伺服器群中之網路、耦合伺服器群之網路、都會區域網路及網際網路之任何一或多者。
在各種實施例中,SSD控制器及/或與一或多個NVM組合之計算主機快閃記憶體控制器被實施為非揮發性儲存器組件,諸如USB儲存器組件、CF儲存器組件、MMC儲存器組件、eMMC儲存器組件、Thunderbolt儲存器組件、UFS儲存器組件、SD儲存器組件、記憶卡(Memory Stick)儲存器組件及xD-picture卡儲存器組件。
在各種實施例中,SSD控制器(或計算主機快閃記憶體控制器)之所有或任何部分或其之功能係實施於該控制器與其耦合之主機(例如,圖1B之主機102)中。在各種實施例中,經由硬體(例如,邏輯電路)、軟體及/或韌體(例如,驅動程式軟體或SSD控制韌體)或其等之任何組合而實施SSD控制器(或計算主機快閃記憶體控制器)之所有或 任何部分或其之功能。例如,經由一主機上之軟體且部分經由SSD控制器中之韌體與硬體之組合而部分實施與ECC單元(諸如類似於圖1A之ECC 161及/或ECC-X 135)相關聯之功能性。對於另一實例,部分經由主機上之軟體且部分經由計算主機快閃記憶體控制器中之硬體而實施與回收器單元(諸如類似於圖1A之回收器151)相關聯之功能性。
零/壹平衡恢復
圖2A至圖2D圖解說明與「零/壹」平衡恢復相關之臨限電壓分佈。為此論述之目的,各山狀凸塊係表示一NVM之一讀取單位大小的部分之一各自狀態之一臨限電壓概率分佈之一獨立的類高斯曲線之一抽象概念。繪製臨限電壓軸使得右側之正電壓逐漸增加。並未刻意地提供一絕對標度且不識別參考點,使得標繪圖更一般地適用於一更大規模的NVM。圖2A及圖2B係特定於SLC,而圖2C及圖2D係特定於MLC。
在圖2A中,表示一始時間(例如,當寫入對應資料時),最左側分佈220表示邏輯壹且最右側分佈230表示邏輯零。取決於技術,最左側分佈可(至少主要)駐留在負電壓。在理想狀況下,讀取臨限值210位於該兩個分佈之間。
唯藉由本文中的實施例鏈結以外,獨立於此等臨限電壓分佈,在一些實施例中,在對經儲存之零及壹之統計分佈之特定瞭解下寫入NVM。更特定言之,在一些實施例中,使用各種加密及/或擾碼技術使得零及壹之統計分佈係50-50百分比(50%的零及50%的壹)。當使用在理想狀況下適用於圖2A之情況之標稱讀取臨限值讀取SLC時,觀察到的零及壹之讀取資料統計分佈同樣係50-50百分比。係50-50百分比之統計分佈並不意謂任何一資料樣本將具有零位元與壹位元之一確切完全平衡,反而許多樣本之一平均產生會聚於50-50百分比之零位元與壹位元之一比率,其中緊密概率界限隨樣本數目增加而逐漸增加。 一比擬係當多次投擲硬幣時正面與反面之一分佈,從而產生方差接近n/4之一高斯分佈,其中n係投擲硬幣之次數。例如,若一讀取單位中存在18432個位元,其中零位元與壹位元之統計分佈係50-50百分比,則零位元(或壹位元)數目之方差係大約4608且標準差係大約68。由於一標準差為68,所以期望小於一百萬分之一的讀取單位之樣本具有相距平均數9216大於340(5個標準差)之零位元數目。
在圖2B中,表示一稍晚時間,標稱讀取臨限值210與圖2A中一樣,且兩個臨限電壓分佈225及235相對於其等更早在圖2A中之各自分佈220及230移位。為實例之目的,該兩個分佈展示為皆均勻地移位至左側(朝更負電壓移位)。應瞭解,更一般地啟用該兩個分佈以彼此獨立移動且在一正方向或負方向上移動。
鑑於圖2B,當使用該標稱讀取臨限值210再次讀取SLC時,可預測(例如,在任何錯誤校正之前)直接讀取自NVM之觀察到的零與壹之統計分佈將並非50-50百分比。更特定言之,對於給定的概念實例,由於讀取臨限值致使一些零將被錯誤地讀取為壹,所以錯誤地期望壹過量。
實務上,推斷方向顛倒。即,實務上,大體上並未已知或直接可知臨限電壓分佈之此等移位。在一些實施例中,反而,使用讀取自NVM之零與壹之不均等之觀察(相對於已知儲存的零與壹之分佈)以推斷臨限電壓分佈中存在移位。此外,在此等實施例中,按照需要至少部分基於所觀察到的不均等(如本文任何之處詳述)將該讀取臨限值調整為讀取臨限值215,直至恢復零/壹平衡。
類似地,圖2C用初始臨限電壓分佈表示一初始時間(諸如當寫入對應資料時),同時圖2D用對應的稍晚臨限電壓分佈表示一稍晚時間。更特定言之,對於一選定格雷碼映射,分別表示11、10、00及10狀態之臨限電壓分佈251、261、271及281(圖2D)相對於其等更早各自 臨限電壓分佈250、260、270及280(圖2C)移位。亦展示三個標稱(初始)讀取臨限值:VREAD1 240、VREAD2 242及VREAD3 244。再次為實例之目的,在圖2D中,該四個分佈展示為皆均勻地移位至左側(朝更負電壓移位)。應瞭解,更一般地啟用該四個分佈以彼此獨立移動且在一正方向或負方向上移動。
在一些實施例中,使用各種擾碼技術使得該四個狀態統計分佈係25-25-25-25百分比(各狀態為25百分比)。當使用在理想狀況下適用於圖2C之情況之標稱讀取臨限值讀取MLC時,在一些實施例中,啟用該四個狀態統計分佈以同樣被確認為25-25-25-25百分比。(如任何之處論述,零及壹係可直接藉由控制器觀察,但是按照需要可推斷所有四個狀態)。在一些實施例中,使用讀取自NVM之不均等(偏離所期25-25-25-25百分比)之觀察(相對於已知儲存的狀態分佈)以推斷臨限電壓分佈中存在移位。接著如圖2D中所示般調整讀取臨限值(如本文任何之處詳述)以成為VREAD1 265、VREAD2 275及VREAD3 285。在一些實施例中,對下頁讀取(調整VREAD2 275)及上頁讀取(調整VREAD1 265及/或VREAD3 285)分開執行讀取臨限值調整。
零/壹平衡恢復之功能
圖3A提供圖1A及圖1B之SSD 101、SSD控制器100及NVM 199之替代圖式,重新繪製選定邏輯區塊邊界以強調特定功能。SSD 101在最頂層之特徵為外部介面110、SSD控制器100、NVM 199及裝置介面190。
外部介面110係耦合至一主機,諸如圖1B之主機102,且支援諸如SATA之一進階儲存協定,包括來源於主機之儲存器相關命令及寫入資料及來源於控制器之讀取資料,且在圖1A之上文論述中加以詳述。如圖1A之上文論述中詳述般,裝置介面190支援低層級NVM I/O異動。NVM 199之特徵為NVM陣列332、可程式化讀取電壓電路 334、控制/狀態暫存器336及I/O 338。SSD控制器100之特徵為主機介面111、擾碼器310、ECC編碼器320、裝置介面邏輯191、失衡偵測器340、緩衝器131、ECC解碼器360、解擾碼器370及平衡恢復邏輯380。主機介面111如先前論述般經由外部介面110耦合該主機,提供寫入資料306至擾碼器310且自緩衝器131接收讀取資料351。
寫入路徑及功能性如下。擾碼器310操作寫入資料306以產生至ECC編碼器320之擾碼寫入資料311。擾碼器310以一可逆方式擾碼寫入資料306且使得該擾碼寫入資料311具有所儲存的一已知統計狀態分佈。在一些實施例中,擾碼器310諸如經由將資料隨機化為一加密副產物之一AES編碼器執行加密。在一些實施例中,擾碼器310使用一線性回饋移位暫存器(LFSR)以隨機化該資料(但是不具備任何資料安全意圖)。ECC編碼器320處理該擾碼寫入資料311以添加額外ECC位元,從而導致經ECC編碼之寫入資料321,經由裝置介面190提供該寫入資料321至裝置介面191以儲存至NVM 199中。
基本讀取路徑及功能性如下。經由裝置介面190自NVM 199接收包括未經校正且經擾碼之(原始)讀取資料359之NVM頁。在一些實施例中且如圖3B中詳述,各NVM頁讀取包括四個碼字(又稱讀取單位):碼字0至碼字3。繼續關於圖3A,各碼字標稱地包括藉由擾碼器301擾碼之資料以及由ECC編碼器320產生之額外ECC位元,但是大體上由於NVM儲存及擷取操作而非刻意地變更。經由緩衝器131提供該等碼字至ECC解碼器360。ECC解碼器360處理該等碼字,善用所包含的額外ECC位元以大體上校正在自首先ECC編碼該資料以後的任何時間點處出現的任何錯誤,從而導致提供至解擾碼器370之經校正讀取資料361。該解擾碼器370操作該經校正之讀取資料361,從而撤除藉由擾碼器310執行之擾碼,導致未經擾碼之讀取資料371,其經由緩衝器131作為讀取資料351提供至主機介面111。
讀取路徑及功能性進一步包含失衡偵測器340及平衡恢復邏輯380。失衡偵測器340監控接收自NVM之原始讀取資料359,且至少暫時地維持關於統計狀態分佈之資料。平衡恢復邏輯380經由裝置介面邏輯191及NVM I/O 338而與NVM控制/狀態暫存器336互動,以經由NVM可程式化讀取電壓電路334選擇性地調整NVM讀取臨限值(用以讀取該NVM陣列332)。該等讀取臨限值係基於以下各者而調整:a)藉由ECC解碼器360偵測之一不可校正讀取362;及b)藉由失衡偵測器340偵測之一失衡341(統計狀態分佈中)。在SLC及MLC實施例中,讀取單位係二進位資料。SLC情況中(或當一MLC經操作如同一SLC時)可直接量測零與壹之不均等。在一些實施例中,基於對在NVM中如何儲存資料的瞭解推斷一MLC之兩個以上狀態之不均等。
圖3A圖解說明在主機運行為寫入至且讀取自NVM 199之資料之來源及接收器(sink)之背景下零/壹平衡恢復之功能。在各種實施例中(諸如藉由圖1A及圖1B圖解說明),一或多個其他代理程式(agent)運行為寫入至且讀取自NVM 199之資料之來源及接收器。該等其他代理程式之一實例係圖1A之回收器151,如本文任何之處所述,該回收器151將資料自NVM 199中之一位置移動至另一位置。
在各種實施例中,至少部分使用(皆為圖1A之)資料處理121及ECC 161之一或多者實施與擾碼器310、ECC編碼器320、ECC解碼器360及解擾碼器370之任何一或多者相關聯之功能性之任何或所有部分。
控制零/壹平衡恢復之流程
圖4圖解說明圖1A、圖1B及圖3A之SSD之一實施例之選定控制流程細節,提供關於寫入相關操作及讀取相關操作之特定細節。寫入操作開始於動作410且繼續至430。雖然未明確繪製一返回路徑,但是後續寫入操作重新開始於動作410。類似地,讀取操作開始於動作440, 繼續至460且有條件地繼續至480。雖然未明確繪製一返回路徑,但是後續讀取操作重新開始於動作440。假定至少一初始寫入對相同位置進行一讀取。否則,唯人為情況以外,諸如在測試中,由於應用需要規定而大體上對相同或大體上不同位置獨立地調用讀取操作及寫入操作。然而,在一啟發式實施例中,從概念上而言,在最後寫入操作430後即刻對一相同位置繼續該第一讀取操作440。
更詳細地考慮寫入相關操作,大體上首先在動作410中經由諸如加密或使用一LFSR而擾碼待寫入至NVM之原始資料。唯採用更多的特定性以外,如本文中使用的術語「擾碼」指代經由導致在儲存於NVM中之各種狀態之間之一已知統計分佈之任何操縱或選擇來操縱待寫入之原始資料。擾碼方法包含加密及LFSR技術。(亦參見圖3A之擾碼器310)。在一些加密實施例中,該擾碼係根據AES加密規範之至少一版本。在一些LFSR實施例中,該擾碼係根據LFSR之至少一選擇。在一些實施例中,經由選擇一或多個測試型樣而更直接地加以判定該擾碼,從而當將狀態寫入至NVM時提供一選取統計狀態分佈(無須使用加密或LFSR處理)。
LFSR係一硬體移位暫存器,其具有由該移位暫存器之選定分接頭之一線性函數產生一輸入位元之一組合邏輯回饋網路或其之一軟體模型。該LFSR產生一確定性偽隨機序列。至少從概念上而言,LFSR產生的偽隨機序列係按2為模數,其添加至該原始資料以提供擾碼資料。
隨後,如動作420中圖解說明,接著大體上(但視需要)經ECC編碼該擾碼資料。(亦參見圖3A之ECC編碼器320)。ECC編碼提供在面臨當使用NVM時由於多種原因而產生的錯誤時(經由錯誤校正)促進資料恢復之冗餘資訊。此等錯誤更為普遍,且因此ECC編碼更為合理,使得以下一或多者:MLC記憶體幾何形狀更小、使用更多、壽命更 長、溫度偏離額定值(temperature excursion)更大及使用更多。
接著如動作430(最後的寫入相關操作)中所示將經擾碼且視需要經ECC編碼之資料寫入至NVM。由於該擾碼而已知被寫入之狀態分佈。在使用SLC記憶體及AES加密之情況中,零-壹分佈被視為50-50(即,50%的零及50%的壹)。在使用4LC(4階MLC)記憶體及AES加密之情況中,寫入下頁及上頁之後的分佈被視為25-25-25-25(即,該四個狀態之各者為25%)。
在一些實施例中,針對使用如上所述之一或多個測試型樣規定至少一參考區域。在一些實施例中,選擇該參考區域之位置以最小化(或相反地,以最大化)對各種NVM寫入/讀取失真之測試型樣的影響。在一些實施例中,該參考區域係一參考頁,且其位置經選取為寫入在一區塊中之最後一頁,以最小化寫入干擾對寫入之資料的影響。由於影響電壓分佈之某種現象係隨時間及/或溫度變化,該參考區域用作對零/壹不均等之此等影響之一已知衡量。
更詳細地考慮開始於動作440之讀取相關操作,自NVM讀取一或多個讀取單位且擷取狀態分佈。在一些實施例中,直接判定零計數及壹計數之各者。接著,在動作450中,嘗試恢復原始資料。無論在寫入之前執行何種資料操縱操作,這皆反向執行該等資料操縱操作。通常,在寫入之前添加ECC編碼,且因此通常該等讀取單位接著經歷ECC解碼。(亦參見圖3A之ECC解碼器360)。基於讀取單位,若ECC解碼成功,則接著適當地執行解擾碼。例如,若在寫入之前使用AES加密,則執行AES解密。或者,當使用一LFSR產生的偽隨機序列時,相同序列係按2為模數,添加至來自該讀取單位之經ECC解碼之資料。
在不具備錯誤之情況下或由於可經由ECC解碼校正錯誤,當原始資料可恢復時提早結束該等讀取相關操作。參見來自判決460之「否 定」路徑。然而,亦對任何讀取單位之不可校正的錯誤執行動作470及480。參見來自判決460之「肯定」路徑。在動作470中,估計狀態分佈之不均等。(亦參見圖3A之失衡偵測器340)。在一些實施例中,經判定之不均等係零計數與壹計數之間之一判定差。在各種實施例中,即使少於所有讀取單位具有不可校正的錯誤,亦對所有讀取單位計算該經判定之不均等。
接著,在動作480中,至少部分基於該經判定之不均等之量值判定至少一讀取臨限值之一調整值(又稱一臨限移位)。在一些實施例中,若該經判定之不均等之量值低於一預定容限,則不調整該讀取臨限值。在一些實施例中,採用一多因數「校正演算法」以判定該經調整之讀取臨限值,這係因為該經判定之不均等之量值僅僅係一因數。
在一些實施例中,該校正演算法採取用以對該讀取臨限值選擇一替代值之一查找表之形式。該經判定之不均等之量值係該查找表中之索引之至少部分之基礎。在一些實施例中,基於所使用的NVM之特定廠商預特徵化(加權)該查找表。在一些實施例中,該索引具有額外的構成要素,包括以下一或多者:P/E循環、壽命、保持時間(自最後寫入以後的時間)、溫度及可能係關於NVM之臨限電壓分佈之漂移或干擾之任何其他因數。(亦參見圖3A之平衡恢復邏輯380)。
此處且遍及【實施方式】,應牢記在通常使用的快閃記憶體微架構中,所存取之資料粒細微度在讀取與寫入之間係不同的。一讀取存取(一讀取單位)之最小大小係一頁。如本文任何之處論述,該頁被組織為一或多個碼字,在一些實施例中組織為四個碼字。相比之下,一寫入存取之最大大小係許多頁之一區塊。
在一些實施例中,基於一整頁估計不均等。在一些實施例中,基於一碼字估計不均等。對與寫入最近區塊寫入中相同之(頁或碼字)位置執行結合一不可校正的錯誤對一次讀取執行之不均等估計,該最 近區塊寫入包含該相同位置。
例示性實施技術
在一些實施例中,藉由可與一電腦系統進行的處理相容之一規範指定藉由零-壹平衡SSD執行之操作之所有或部分與例如)快閃記憶體、一計算主機快閃記憶體控制器及/或一SSD控制器(諸如圖1A之SSD控制器100)之各種組合及以下各者之部分:處理器、微處理器、單晶片系統、特定應用積體電路、硬體加速度計或提供該等前述提及的操作之所有或其他部分之其他電路。該規範係根據各種描述,諸如硬體描述語言、電路描述、接線對照表描述、遮罩描述或佈局描述。例示性描述包含:Verilog、VHDL、SPICE、SPICE變體(諸如PSpice)、IBIS、LEF、DEF、GDS-II、OASIS或其他描述。在各種實施例中,該處理包含解譯、編譯、模擬及合成之任何組合以產生、驗證或指定適用於包含在一或多個積體電路上之邏輯及/或電路。根據各種實施例,各積體電路可根據多種技術設計及/或製造。該等技術包含一可程式化技術(諸如一場可程式化閘陣列或遮罩可程式化閘陣列積體電路)、一半客製化技術(諸如一完全或部分基於胞之積體電路)及一全半客製化技術(諸如實質上經特製之一積體電路)、其等之任何組合或可與積體電路之設計及/或製造相容之任何其他技術。
在一些實施例中,藉由實施及/或解譯一或多個程式指令、解譯及/或編譯一或多個源語言/描述性語言陳述式或實施藉由編譯、轉譯及/或解譯程式設計及/或描述性語言陳述式中表達之資訊產生之二進位指令來執行如其中儲存一指令集之一電腦可讀媒體描述之操作之所有或部分之任何組合。該等語言可與任何標準程式設計或描述性語言(諸如C、C++、Fortran、Pascal、Ada、Java、VBScript及核心介面程式)相容。該等程式指令、該等語言陳述式或該等二進位指令之一或多者視需要儲存在一或多個電腦可讀儲存媒體元件上。在各種實施例 中,該等程式指令之一些、所有或各種部分被視為一或多個函式、常式、副常式、內嵌常式、程序、巨集或其等之部分。
結論
在製備上下文及圖式時僅僅為方便起見在該描述中作出某些選擇,且除非指示相反的情形,否則該等選擇本質上不應被解釋為傳達關於所述實施例之結構或操作之額外資訊。該等選擇之實例包含:用於圖式編號之指定符之特定組織或指派及用以識別並參考該等實施例之特徵及元件之元件識別符(例如插圖編號或數字指定符)之特定組織或指派。
字詞「包含」係具體旨在解釋為描述無限制範圍之邏輯集之抽象概念且除非後續明確跟著字詞「在……內」,否則並不意謂傳達實際含有。
雖然已針對描述及理解明瞭之目的在某些細節上描述前述實施例,但是本發明並不限於所提供的細節。本發明存在許多實施例。該等揭示之實施例係例示性且並非限制性。
應瞭解,結構、配置及使用之許多變動可能符合該描述,且係在所發佈專利之範疇及申請專利範圍內。例如,互連件及功能單元位元寬度、時脈速度及所使用的技術類型可根據各組件區塊中之各種實施例改變。賦予互連件及邏輯之名稱僅僅係例示性,且不應被解釋為限制所述概念。流程及流程圖程序、動作及功能元件之順序及配置可根據各種實施例改變。又,除非具體說明相反的情況,否則所指定的值範圍、所使用的最大值及最小值或其他特定規範(諸如快閃記憶體技術類型;及暫存器及緩衝器中之輸入項或級之數目)僅僅係所述實施例之值範圍、最大值及最小值或規範,有望追蹤實施技術之改良及變化,且不應被解釋為限制。
可採用此項技術者已知的功能等效的技術來代替經描述以實施 各種組件、子系統、操作、函式、常式、副常式、內嵌常式、程序、巨集或其等之部分之技術。亦瞭解,可在硬體(例如,一般專用電路)或軟體(例如,經由程式化控制器或處理器之某種方式)中依據實施例相依設計限制及更快處理之技術趨勢(促進先前在硬體中之功能遷移至軟體中)及更高整合密度(促進先前在軟體中之功能遷移至硬體中)選擇性地實現實施例之許多功能態樣。各種實施例中之特定變動包含(但不限於):分區之差;不同的外觀尺寸及組態;不同作業系統及其他系統軟體的使用;不同介面標準、網路協定或通信鏈路的使用;及當實施本文中根據一特定應用之獨特設計及業務限制描述之概念時期望的其他變動。
已就遠遠超出所述實施例之許多態樣之最少實施方案所需的細節及環境上下文描述該等實施例。一般技術者應辨識,一些實施例省略所揭示組件或特徵而不變更剩餘元件之間的基本協作。因此應瞭解,實施所述實施例之各種態樣無需所揭示之大部分細節。就可區分該等剩餘元件與先前技術而言,所省略的組件及特徵並未限制在本文所述之概念上。
所有此等設計變動在藉由所述實施例傳達之教示內並無實質上的變化。亦應瞭解,本文所述之實施例對其他計算及網路連接應用具有廣泛的可適用性,且並不限於所述實施例之特定應用或行業。因此本發明被解釋為包含所發佈專利之申請專利範圍之範疇內涵蓋之所有可能修改及變動。

Claims (22)

  1. 一種控制一記憶體裝置之方法,其包括:擾碼(scrambling)待寫入至一非揮發性記憶體之一部分之資料以產生具有一已知統計平均數目個零位元(known statistical average number of zero bits)及一已知統計平均數目個壹位元(one bits)之擾碼資料;將該擾碼資料寫入至該非揮發性記憶體之該部分;繼該寫入之後,讀取該非揮發性記憶體之該部分;計算讀取自該非揮發性記憶體之該部分之資料中之一零位元數目與一壹位元數目之間的一不均等(disparity);至少部分基於該不均等而判定用於該非揮發性記憶體之一後續讀取的一臨限電壓(threshold voltage);使用該臨限電壓再讀取該非揮發性記憶體之該部分;及在該再讀取之前,使用一ECC解碼器來解碼讀取自該非揮發性記憶體之該部分之資料,以判定讀取自該非揮發性記憶體之該部分之該資料係不可校正的(uncorrectable):其中該寫入包括使用一ECC編碼器來編碼該擾碼資料及將該經編碼之擾碼資料寫入至該非揮發性記憶體之該部分;且其中該ECC編碼器添加一或多個位元組至該擾碼資料,且其中藉由該ECC編碼器添加之該一或多個位元組具有該已知統計平均數目個零位元及該已知統計平均數目個壹位元。
  2. 如請求項1之方法,其中該計算包括:估計讀取自該非揮發性記憶體之該部分之該資料中之該零位元數目與一期望零位元數目之間之一差。
  3. 如請求項1之方法,其中該判定係進一步基於該已知統計平均數 目個零位元或該已知統計平均數目個壹位元。
  4. 如請求項1之方法,其中該不均等係一第一不均等,該臨限電壓係一第一臨限電壓,且進一步包括:使用該ECC解碼器來解碼使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之資料,以判定使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之該資料係不可校正的;計算使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之該資料中之一零位元數目與一壹位元數目之間之一第二不均等;及至少部分基於該第二不均等而判定用於該非揮發性記憶體之一第二再讀取的一第二臨限電壓。
  5. 如請求項4之方法,其進一步包括:使用該第二臨限電壓再讀取該非揮發性記憶體之該部分。
  6. 如請求項4之方法,其中基於該第二不均等指示相對於該已知統計平均數目個零位元及該已知統計平均數目個壹位元之壹位元之一過量(an excess of one bits),該第二臨限電壓低於該第一臨限電壓。
  7. 如請求項4之方法,其中基於該第二不均等指示相對於該已知統計平均數目個零位元及該已知統計平均數目個壹位元之零位元之一過量(an excess of zero bits),該第二臨限電壓高於該第一臨限電壓。
  8. 如請求項1之方法,其中該外部非揮發性記憶體包括多位階記憶體胞(multi-level cell)非揮發性記憶體,且該不均等係相對於下頁讀取(lower page reads)。
  9. 一種用於耦合至一外部非揮發性記憶體之裝置,該裝置包括:用於擾碼待寫入至該外部非揮發性記憶體之一部分之資料以 產生具有一已知統計平均數目個零位元及一已知統計平均數目個壹位元之擾碼資料之構件;用於將該擾碼資料寫入至該外部非揮發性記憶體之該部分之構件;用於繼該寫入之後讀取該外部非揮發性記憶體之該部分之構件;用於計算讀取自該外部非揮發性記憶體之該部分之資料中之一零位元數目與一壹位元數目之間的一不均等之構件;用於至少部分基於該不均等而判定用於該外部非揮發性記憶體之一後續讀取的一臨限電壓之構件;用於使用該臨限電壓再讀取該外部非揮發性記憶體之該部分之構件;用於在該再讀取之前、使用一ECC解碼器來解碼讀取自該非揮發性記憶體之該部分之資料以判定讀取自該非揮發性記憶體之該部分之該資料係不可校正的之構件;其中該寫入包括使用一ECC編碼器來編碼該擾碼資料及將該經編碼之擾碼資料寫入至該非揮發性記憶體之該部分;且其中該ECC編碼器添加一或多個位元組至該擾碼資料,且其中藉由該ECC編碼器添加之該一或多個位元組具有該已知統計平均數目個零位元或該已知統計平均數目個壹位元。
  10. 如請求項9之裝置,其中該判定係進一步基於該已知統計平均數目個零位元或該已知統計平均數目個壹位元。
  11. 如請求項9之裝置,其中該不均等係一第一不均等,該臨限電壓係一第一臨限電壓,且進一步包括:用於使用該ECC解碼器來解碼使用該第一臨限電壓再讀取自該外部非揮發性記憶體之該部分之該資料以判定使用該第一臨限 電壓再讀取自該外部非揮發性記憶體之該部分之該資料係不可校正的之構件;用於計算使用該第一臨限電壓再讀取自該外部非揮發性記憶體之該部分之該資料中之一零位元數目與一壹位元數目之間之一第二不均等之構件;及用於至少部分基於該第二不均等而判定用於該外部非揮發性記憶體之一第二再讀取的一第二臨限電壓之構件。
  12. 如請求項11之裝置,其進一步包括:用於使用該第二臨限電壓再讀取該外部非揮發性記憶體之該部分之構件。
  13. 如請求項11之裝置,其中基於該第二不均等指示相對於該已知統計平均數目個零位元及該已知統計平均數目個壹位元之壹位元之一過量,該第二臨限電壓低於該第一臨限電壓。
  14. 如請求項11之裝置,其中基於該第二不均等指示相對於該已知統計平均數目個零位元及該已知統計平均數目個壹位元之零位元之一過量,該第二臨限電壓高於該第一臨限電壓。
  15. 如請求項9之裝置,其中該外部非揮發性記憶體包括多位階記憶體胞非揮發性記憶體,且該不均等係相對於下頁讀取。
  16. 一種非暫時性電腦可讀媒體,該有形電腦可讀媒體中儲存有當藉由一處理元件執行時導致該處理元件執行及/或控制操作之一指令集,該等操作包括:擾碼待寫入至一非揮發性記憶體之一部分之資料以產生具有一已知統計平均數目個零位元及一已知統計平均數目個壹位元之擾碼資料;將該擾碼資料寫入至該非揮發性記憶體之該部分;繼該寫入之後,讀取該非揮發性記憶體之該部分; 計算讀取自該非揮發性記憶體之該部分之資料中之一零位元數目與一壹位元數目之間的一不均等;至少部分基於該不均等而判定用於該非揮發性記憶體之一後續讀取的一臨限電壓;使用該臨限電壓再讀取該非揮發性記憶體之該部分;及在該再讀取之前,使用一ECC解碼器來解碼讀取自該非揮發性記憶體之該部分之資料,以判定讀取自該非揮發性記憶體之該部分之該資料係不可校正的;其中該寫入包括使用一ECC編碼器來編碼該擾碼資料及將該經編碼之擾碼資料寫入至該非揮發性記憶體之該部分;且其中該ECC編碼器添加一或多個位元組至該擾碼資料,且其中藉由該ECC編碼器添加之該一或多個位元組具有該已知統計平均數目個零位元或該已知統計平均數目個壹位元。
  17. 如請求項16之非暫時性電腦可讀媒體,其中該判定係進一步基於該已知統計平均數目個零位元或該已知統計平均數目個壹位元。
  18. 如請求項16之非暫時性電腦可讀媒體,其中該不均等係一第一不均等,該臨限電壓係一第一臨限電壓,且該等操作進一步包括:使用該ECC解碼器來解碼使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之該資料,以判定使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之該資料係不可校正的;計算使用該第一臨限電壓再讀取自該非揮發性記憶體之該部分之該資料中之一零位元數目與一壹位元數目之間之一第二不均等;及至少部分基於該第二不均等而判定用於該非揮發性記憶體之 一第二再讀取的一第二臨限電壓。
  19. 如請求項18之非暫時性電腦可讀媒體,該等操作進一步包括:使用該第二臨限電壓再讀取該非揮發性記憶體之該部分。
  20. 如請求項18之非暫時性電腦可讀媒體,其中基於該第二不均等指示相對於該已知統計平均數目個零位元及該已知統計平均數目個壹位元之壹位元之一過量,該第二臨限電壓低於該第一臨限電壓。
  21. 如請求項18之非暫時性電腦可讀媒體,其中基於該第二不均等指示相對於該已知統計平均數目個零位元及該已知統計平均數目個壹位元之零位元之一過量,該第二臨限電壓高於該第一臨限電壓。
  22. 如請求項16之非暫時性電腦可讀媒體,其中該非揮發性記憶體包括多位階記憶體胞非揮發性記憶體,且該不均等係相對於下頁讀取。
TW102115758A 2012-05-04 2013-05-02 控制一記憶體裝置之方法、用於耦合至一外部非揮發性記憶體之裝置及非暫時性電腦可讀媒體 TWI612524B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/464,433 2012-05-04
US13/464,433 US8839073B2 (en) 2012-05-04 2012-05-04 Zero-one balance management in a solid-state disk controller

Publications (2)

Publication Number Publication Date
TW201407618A TW201407618A (zh) 2014-02-16
TWI612524B true TWI612524B (zh) 2018-01-21

Family

ID=49513581

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102115758A TWI612524B (zh) 2012-05-04 2013-05-02 控制一記憶體裝置之方法、用於耦合至一外部非揮發性記憶體之裝置及非暫時性電腦可讀媒體

Country Status (7)

Country Link
US (3) US8839073B2 (zh)
EP (1) EP2845198A4 (zh)
JP (1) JP6163540B2 (zh)
KR (1) KR101754653B1 (zh)
CN (1) CN107094370B (zh)
TW (1) TWI612524B (zh)
WO (1) WO2013166200A1 (zh)

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101466555B1 (ko) 2010-03-12 2014-12-02 엘에스아이 코포레이션 플래시 메모리들을 위한 ldpc 소거 디코딩
US8719663B2 (en) 2010-12-12 2014-05-06 Lsi Corporation Cross-decoding for non-volatile storage
US8839073B2 (en) 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller
US8938659B2 (en) * 2012-05-04 2015-01-20 Lsi Corporation Low-density parity-check decoder disparity preprocessing
US8879325B1 (en) * 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US8923062B1 (en) * 2012-07-06 2014-12-30 Sk Hynix Memory Solutions Inc. Generating read thresholds using gradient descent and without side information
US8856431B2 (en) 2012-08-02 2014-10-07 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory
US9086982B1 (en) * 2012-08-15 2015-07-21 Marvell International Ltd. Adjusting bit reliability information input for decoding stored data
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US8913442B2 (en) * 2012-12-21 2014-12-16 Elite Semiconductor Memory Technology Inc. Circuit for sensing MLC flash memory
US9548135B2 (en) 2013-03-11 2017-01-17 Macronix International Co., Ltd. Method and apparatus for determining status element total with sequentially coupled counting status circuits
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
KR102131802B1 (ko) * 2013-03-15 2020-07-08 삼성전자주식회사 비휘발성 메모리 장치의 데이터 독출 방법, 비휘발성 메모리 장치, 및 메모리 시스템의 구동 방법
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
KR20140146333A (ko) * 2013-06-17 2014-12-26 삼성전자주식회사 메모리 컨트롤러와 이의 동작 방법
US9489300B2 (en) * 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489294B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
KR102076231B1 (ko) * 2013-07-09 2020-02-12 에스케이하이닉스 주식회사 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US20150074492A1 (en) * 2013-09-11 2015-03-12 Kabushiki Kaisha Toshiba Memory system and memory controller
US9164837B2 (en) * 2013-09-12 2015-10-20 Seagate Technology Llc Transfer unit management
US9213599B2 (en) * 2013-09-18 2015-12-15 Seagate Technology Llc Method of erase state handling in flash channel tracking
US9317364B2 (en) * 2013-09-25 2016-04-19 Intel Corporation Memory controller with distribution transformer
US9747157B2 (en) * 2013-11-08 2017-08-29 Sandisk Technologies Llc Method and system for improving error correction in data storage
US9209835B2 (en) 2013-11-27 2015-12-08 Seagate Technology Llc Read retry for non-volatile memories
US9582354B2 (en) * 2014-01-28 2017-02-28 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion
US9448745B2 (en) 2014-03-13 2016-09-20 NXGN Data, Inc. Configurable read-modify-write engine and method for operating the same in a solid state drive
US9354822B2 (en) * 2014-03-13 2016-05-31 NXGN Data, Inc. Programmable data read management system and method for operating the same in a solid state drive
US9454551B2 (en) * 2014-03-13 2016-09-27 NXGN Data, Inc. System and method for management of garbage collection operation in a solid state drive
TWI540586B (zh) 2014-04-15 2016-07-01 群聯電子股份有限公司 解碼方法、記憶體儲存裝置、記憶體控制電路單元
US9384128B2 (en) * 2014-04-18 2016-07-05 SanDisk Technologies, Inc. Multi-level redundancy code for non-volatile memory controller
KR102174030B1 (ko) * 2014-05-13 2020-11-05 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 읽기 방법
KR102249810B1 (ko) 2014-07-23 2021-05-11 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
GB2530043A (en) * 2014-09-10 2016-03-16 Ibm Device and method for storing data in a plurality of multi-level cell memory chips
US9251909B1 (en) 2014-09-29 2016-02-02 International Business Machines Corporation Background threshold voltage shifting using base and delta threshold voltage shift values in flash memory
TWI559314B (zh) * 2014-12-27 2016-11-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
US9224492B1 (en) * 2015-02-17 2015-12-29 Phison Electronics Corp. Memory management method, memory storage device and memory controlling circuit unit
US9811420B2 (en) * 2015-03-27 2017-11-07 Intel Corporation Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC)
CN106155812A (zh) 2015-04-28 2016-11-23 阿里巴巴集团控股有限公司 一种对虚拟主机的资源管理的方法、装置、系统及电子设备
US10121013B2 (en) 2015-05-07 2018-11-06 Samsung Electronics Co., Ltd. XOR-based scrambler/descrambler for SSD communication protocols
KR102519663B1 (ko) * 2015-07-31 2023-04-07 삼성전자주식회사 스토리지 장치, 스토리지 장치를 포함하는 시스템 및 그것의 동작 방법
CN105183371A (zh) * 2015-08-14 2015-12-23 山东大学 基于迁移均衡策略的用电信息分布式文件存储方法与装置
US9865338B2 (en) 2015-09-02 2018-01-09 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory by converting write data written to a page
US10192614B2 (en) * 2015-10-30 2019-01-29 Seagate Technology Llc Adaptive read threshold voltage tracking with gap estimation between default read threshold voltages
US10347343B2 (en) * 2015-10-30 2019-07-09 Seagate Technology Llc Adaptive read threshold voltage tracking with separate characterization on each side of voltage distribution about distribution mean
US9418731B1 (en) * 2015-11-06 2016-08-16 Phison Electronics Corp. Memory management method, memory storage device and memory control circuit unit
US9870472B2 (en) * 2015-11-18 2018-01-16 Dell Products, L.P. Detecting malign code in unused firmware memory
TWI573017B (zh) * 2015-12-11 2017-03-01 英業達股份有限公司 非揮發性記憶體固態硬碟之燈號控制系統
KR102459077B1 (ko) 2016-01-12 2022-10-27 삼성전자주식회사 비선형 필터링 방식을 사용하는 메모리 시스템 및 그것의 읽기 방법
US9842022B2 (en) * 2016-01-20 2017-12-12 Intel Corporation Technologies for reducing latency in read operations
US10162702B2 (en) * 2016-02-01 2018-12-25 Lattice Semiconductor Corporation Segmented error coding for block-based memory
KR102500616B1 (ko) * 2016-02-26 2023-02-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9721657B1 (en) * 2016-04-02 2017-08-01 Intel Corporation Managing threshold voltage shift in nonvolatile memory
KR102585221B1 (ko) 2016-04-21 2023-10-05 삼성전자주식회사 메모리 장치, 메모리 시스템 및 메모리 장치의 동작 방법
US10685710B2 (en) * 2016-11-17 2020-06-16 Toshiba Memory Corporation Memory controller
CN106598742B (zh) * 2016-12-26 2020-01-03 湖南国科微电子股份有限公司 一种ssd主控内部负载均衡系统及方法
US10503586B2 (en) 2017-04-26 2019-12-10 Sandisk Technologies Llc Dynamic read based on read statistics
JP6941971B2 (ja) * 2017-05-15 2021-09-29 ラピスセミコンダクタ株式会社 半導体記憶装置、メモリコントローラ及びメモリの監視方法
US10705910B2 (en) * 2017-06-16 2020-07-07 Alibaba Group Holding Limited Method and apparatus for operating a data storage system
TWI643196B (zh) * 2017-06-22 2018-12-01 點序科技股份有限公司 快閃記憶體裝置及其資料讀取方法
CN109119106B (zh) * 2017-06-26 2022-08-02 中兴通讯股份有限公司 数据存储方法、设备及计算机可读存储介质
US10171110B1 (en) * 2017-07-03 2019-01-01 Seagate Technology Llc Sequential power transitioning of multiple data decoders
US10403372B2 (en) * 2017-08-29 2019-09-03 SK Hynix Inc. Memory system with adaptive read-threshold scheme and method of operating such memory system
US10545685B2 (en) * 2017-08-30 2020-01-28 Micron Technology, Inc. SLC cache management
TWI653538B (zh) * 2017-11-13 2019-03-11 慧榮科技股份有限公司 資料儲存裝置與記憶體裝置之資料處理方法
US20190042137A1 (en) * 2018-02-05 2019-02-07 Intel Corporation Memory device with separate memory controllers for program/erase and read operations
JP2019164850A (ja) 2018-03-19 2019-09-26 東芝メモリ株式会社 メモリシステム
JP7074519B2 (ja) 2018-03-19 2022-05-24 キオクシア株式会社 メモリシステム、および、メモリ制御方法
KR102648618B1 (ko) * 2018-03-28 2024-03-19 에스케이하이닉스 주식회사 컨트롤러, 그것의 동작방법 및 컨트롤러를 포함하는 메모리 시스템
US10389335B1 (en) * 2018-05-04 2019-08-20 Apple Inc. Clock pulse generation circuit
CN108683423B (zh) * 2018-05-16 2022-04-19 广东工业大学 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置
CN108648778B (zh) * 2018-05-21 2020-10-09 深圳忆联信息系统有限公司 一种固态硬盘读系统及其方法
US10643719B2 (en) * 2018-09-04 2020-05-05 Micron Technology, Inc. Enhanced read disturbance detection and remediation for a memory sub-system
US10866763B2 (en) * 2018-10-30 2020-12-15 Western Digital Technologies, Inc. Dynamic read based on read statistics
US10922178B2 (en) * 2018-10-31 2021-02-16 Hewlett Packard Enterprise Development Lp Masterless raid for byte-addressable non-volatile memory
CN109582228B (zh) * 2018-11-15 2022-02-01 深圳忆联信息系统有限公司 基于nand闪存控制器的自动读重试的硬件加速方法及装置
US11204828B2 (en) * 2018-12-10 2021-12-21 Micron Technology, Inc. Management of corruptive read in memory systems
EP3672124A1 (en) * 2018-12-21 2020-06-24 Xieon Networks S.à r.l. Link margin estimation based on performance monitoring for a transmission system with forward error correction
CN111508547A (zh) * 2019-01-31 2020-08-07 睿宽智能科技有限公司 保存期限预测方法及资料保存方法
KR20200095103A (ko) * 2019-01-31 2020-08-10 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US11128314B2 (en) * 2019-06-24 2021-09-21 SK Hynix Inc. Error characteristic estimation for NAND flash
KR102645786B1 (ko) * 2019-07-08 2024-03-12 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR102654797B1 (ko) * 2019-07-12 2024-04-05 양쯔 메모리 테크놀로지스 씨오., 엘티디. 불량 컬럼 리페어를 제공하는 메모리 디바이스 및 이를 동작시키는 방법
US11016829B2 (en) * 2019-07-26 2021-05-25 Toshiba Memory Corporation Two-layered deterministic interprocess communication scheduler for input output determinism in solid state drives
US11010244B2 (en) * 2019-09-16 2021-05-18 Macronix International Co., Ltd. Memory data management method
JP2021047690A (ja) * 2019-09-19 2021-03-25 キオクシア株式会社 メモリシステム
CN110808079A (zh) * 2019-10-10 2020-02-18 鸿秦(北京)科技有限公司 一种新式延缓磨损延长固态硬盘使用寿命的方法
US11062756B2 (en) * 2019-10-14 2021-07-13 Western Digital Technologies, Inc. Extending operating temperature of storage device
CN111145820B (zh) * 2019-12-11 2021-12-28 合肥大唐存储科技有限公司 一种数据读取方法及装置、存储介质和设备
US11294819B2 (en) * 2020-03-31 2022-04-05 Western Digital Technologies, Inc. Command optimization through intelligent threshold detection
US11301321B2 (en) * 2020-05-28 2022-04-12 Western Digital Technologies, Inc. Data shaping for integrated memory assembly
US11295819B2 (en) * 2020-06-30 2022-04-05 Western Digital Technologies, Inc. Dual sense bin balancing in NAND flash
CN112558883A (zh) * 2020-12-23 2021-03-26 深圳大普微电子科技有限公司 一种数据存储管理方法、固态硬盘控制器及固态硬盘
JP2022121105A (ja) 2021-02-08 2022-08-19 株式会社メガチップス 不揮発性半導体記憶装置及び読み出し電圧補正方法
US11355216B1 (en) * 2021-04-06 2022-06-07 Beijing Tenafe Electronic Technology Co., Ltd. Adaptive DSP generation of read thresholds for gaussian and non-gaussian distributions in solid state storage using cumulative observed counts
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
US11869614B2 (en) 2021-08-25 2024-01-09 Western Digital Technologies, Inc. Cell statistics generator for NVM devices
US11656789B2 (en) 2021-08-25 2023-05-23 Western Digital Technologies, Inc. Asymmetric read sense
CN114546267B (zh) * 2022-02-14 2022-11-18 深圳源创存储科技有限公司 一种基于大数据计算的固态硬盘及固态硬盘系统
CN115547397B (zh) * 2022-11-25 2023-06-02 芯天下技术股份有限公司 读取芯片配置文件信息的方法、装置、设备及存储介质
CN116643915A (zh) * 2023-05-08 2023-08-25 西安秦派能智能科技有限公司 手机芯片数据恢复方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010030890A1 (en) * 1991-11-26 2001-10-18 Hajime Yamagami Storage device employing a flash memory
US6341085B1 (en) * 1991-11-26 2002-01-22 Hitachi, Ltd. Storage device employing a flash memory
US6678823B1 (en) * 2000-05-01 2004-01-13 Xtec, Incorporated Methods and apparatus for authenticating data stored in semiconductor memory cells
US20070159891A1 (en) * 2006-01-12 2007-07-12 Loc Tu Trimming of analog voltages in flash memory devices
TW200929238A (en) * 2007-10-25 2009-07-01 Samsung Electronics Co Ltd Data management method for non-volatile memory device
TW200949850A (en) * 2008-05-27 2009-12-01 Phison Electronics Corp Storage sysetm having multiple non-volatile memory, and controller and access method thereof
US20100020611A1 (en) * 2008-07-23 2010-01-28 Park Kitae Flash memory systems and operating methods using adaptive read voltage levels
TW201035975A (en) * 2009-02-26 2010-10-01 Samsung Electronics Co Ltd Flash memory devices, methods for programming the same, and memory systems including the same
US20110182119A1 (en) * 2010-01-27 2011-07-28 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63308800A (ja) * 1987-06-10 1988-12-16 Hitachi Ltd 記憶装置
US7580211B2 (en) * 2004-11-02 2009-08-25 Mediatek, Inc. DVD recording
JP4801935B2 (ja) 2005-06-08 2011-10-26 株式会社東芝 半導体記憶装置
US7681109B2 (en) 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
US7613043B2 (en) * 2006-05-15 2009-11-03 Apple Inc. Shifting reference values to account for voltage sag
US7639531B2 (en) * 2006-05-15 2009-12-29 Apple Inc. Dynamic cell bit resolution
US8296337B2 (en) * 2006-12-06 2012-10-23 Fusion-Io, Inc. Apparatus, system, and method for managing data from a requesting device with an empty data token directive
US8127200B2 (en) * 2006-12-24 2012-02-28 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
KR100816162B1 (ko) 2007-01-23 2008-03-21 주식회사 하이닉스반도체 낸드 플래시 메모리 장치 및 셀 특성 개선 방법
CN101715595A (zh) * 2007-03-12 2010-05-26 爱诺彼得技术有限责任公司 存储器单元读取阈的自适应估计
US7903468B2 (en) 2007-04-23 2011-03-08 Ramot At Telaviv University Ltd. Adaptive dynamic reading of flash memories
KR100891005B1 (ko) 2007-06-28 2009-03-31 삼성전자주식회사 고온 스트레스로 인한 읽기 마진의 감소를 보상하기 위한플래시 메모리 장치 및 그것의 읽기 전압 조정 방법
KR100888842B1 (ko) 2007-06-28 2009-03-17 삼성전자주식회사 읽기 전압을 최적화할 수 있는 플래시 메모리 장치 및그것의 독출 전압 설정 방법
KR101411976B1 (ko) 2007-07-09 2014-06-27 삼성전자주식회사 플래시 메모리 시스템 및 그것의 에러 정정 방법
US8321625B2 (en) 2007-12-05 2012-11-27 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith
KR100953047B1 (ko) 2007-12-28 2010-04-14 주식회사 하이닉스반도체 불휘발성 메모리 소자의 동작 방법
US7957187B2 (en) 2008-05-09 2011-06-07 Sandisk Corporation Dynamic and adaptive optimization of read compare levels based on memory cell threshold voltage distribution
KR101413137B1 (ko) 2008-07-04 2014-07-01 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
KR101434400B1 (ko) 2008-07-09 2014-08-27 삼성전자주식회사 불휘발성 메모리 장치 및 메모리 시스템 및 그것의 관리방법
US8089813B2 (en) 2008-07-18 2012-01-03 International Business Machines Corporation Controllable voltage reference driver for a memory system
KR100967004B1 (ko) 2008-08-05 2010-06-30 주식회사 하이닉스반도체 플래시 메모리 장치의 동작 제어 방법
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US7830693B2 (en) 2008-11-12 2010-11-09 Seagate Technology Llc NAND based resistive sense memory cell architecture
JP5284069B2 (ja) * 2008-12-11 2013-09-11 株式会社東芝 メモリシステム及びメモリアクセス方法
US9031241B2 (en) * 2009-02-05 2015-05-12 D.E. Shaw Research, Llc Link and physical coding sub-layer protocols
KR101005188B1 (ko) 2009-02-26 2011-01-04 주식회사 하이닉스반도체 불휘발성 메모리 소자 및 그 동작 방법
US8264890B2 (en) 2009-04-09 2012-09-11 Sandisk Technologies Inc. Two pass erase for non-volatile storage
JP4358299B2 (ja) * 2009-04-24 2009-11-04 株式会社東芝 メモリコントローラ及び半導体装置
US8345477B1 (en) 2009-07-29 2013-01-01 Marvell International Ltd. Non-volatile memory devices having uniform error distributions among pages
JP2011040124A (ja) 2009-08-07 2011-02-24 Toshiba Corp 半導体記憶装置のデータ読み出し方法
US8130544B2 (en) 2009-08-17 2012-03-06 Skymedi Corporation Method of reducing bit error rate for a flash memory
US8456926B2 (en) 2010-11-18 2013-06-04 Grandis, Inc. Memory write error correction circuit
US8305812B2 (en) 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US8351258B1 (en) * 2010-01-22 2013-01-08 Marvell International Ltd. Adapting read reference voltage in flash memory device
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
KR101466555B1 (ko) * 2010-03-12 2014-12-02 엘에스아이 코포레이션 플래시 메모리들을 위한 ldpc 소거 디코딩
US8539311B2 (en) * 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
US8531888B2 (en) 2010-07-07 2013-09-10 Marvell World Trade Ltd. Determining optimal reference voltages for progressive reads in flash memory systems
US8402349B2 (en) * 2010-12-06 2013-03-19 Apple Inc. Two dimensional data randomization for a memory
KR101765123B1 (ko) * 2011-01-14 2017-08-04 삼성전자주식회사 통신시스템에서 전송 신호의 호환성을 제공하기 위한 장치 및 방법
US8938659B2 (en) 2012-05-04 2015-01-20 Lsi Corporation Low-density parity-check decoder disparity preprocessing
US8839073B2 (en) * 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller
US20130343131A1 (en) 2012-06-26 2013-12-26 Lsi Corporation Fast tracking for flash channels
US9847139B2 (en) 2012-10-01 2017-12-19 Seagate Technology Llp Flash channel parameter management with read scrub

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010030890A1 (en) * 1991-11-26 2001-10-18 Hajime Yamagami Storage device employing a flash memory
US6341085B1 (en) * 1991-11-26 2002-01-22 Hitachi, Ltd. Storage device employing a flash memory
US6678823B1 (en) * 2000-05-01 2004-01-13 Xtec, Incorporated Methods and apparatus for authenticating data stored in semiconductor memory cells
US20070159891A1 (en) * 2006-01-12 2007-07-12 Loc Tu Trimming of analog voltages in flash memory devices
TW200929238A (en) * 2007-10-25 2009-07-01 Samsung Electronics Co Ltd Data management method for non-volatile memory device
TW200949850A (en) * 2008-05-27 2009-12-01 Phison Electronics Corp Storage sysetm having multiple non-volatile memory, and controller and access method thereof
US20100020611A1 (en) * 2008-07-23 2010-01-28 Park Kitae Flash memory systems and operating methods using adaptive read voltage levels
TW201035975A (en) * 2009-02-26 2010-10-01 Samsung Electronics Co Ltd Flash memory devices, methods for programming the same, and memory systems including the same
US20110182119A1 (en) * 2010-01-27 2011-07-28 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media

Also Published As

Publication number Publication date
WO2013166200A1 (en) 2013-11-07
CN107094370B (zh) 2021-01-05
US20130297986A1 (en) 2013-11-07
KR20150002829A (ko) 2015-01-07
CN107094370A (zh) 2017-08-25
EP2845198A1 (en) 2015-03-11
EP2845198A4 (en) 2015-11-25
US9430154B2 (en) 2016-08-30
KR101754653B1 (ko) 2017-07-06
US20160357631A1 (en) 2016-12-08
US8839073B2 (en) 2014-09-16
TW201407618A (zh) 2014-02-16
JP2015520907A (ja) 2015-07-23
JP6163540B2 (ja) 2017-07-12
US10002046B2 (en) 2018-06-19
US20150205527A1 (en) 2015-07-23

Similar Documents

Publication Publication Date Title
TWI612524B (zh) 控制一記憶體裝置之方法、用於耦合至一外部非揮發性記憶體之裝置及非暫時性電腦可讀媒體
US10734087B2 (en) Retention-drift-history-based non-volatile memory read threshold optimization
TWI584285B (zh) 用於快閃記憶體通道之快速追蹤
TWI534828B (zh) 非揮發性記憶體之以單一讀取爲基礎的軟決定解碼
JP6452278B2 (ja) 不揮発性メモリの耐久性平準化のためのセル損傷の測定
KR102155191B1 (ko) 비휘발성 메모리에 대한 기록들의 관리 및 그 기록들의 영역 선택

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees