TW201939279A - 記憶體中基於機率資料結構之前瞻修正動作 - Google Patents
記憶體中基於機率資料結構之前瞻修正動作 Download PDFInfo
- Publication number
- TW201939279A TW201939279A TW108110196A TW108110196A TW201939279A TW 201939279 A TW201939279 A TW 201939279A TW 108110196 A TW108110196 A TW 108110196A TW 108110196 A TW108110196 A TW 108110196A TW 201939279 A TW201939279 A TW 201939279A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- subset
- data structure
- data
- identification information
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0727—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2084—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring on the same storage unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
Abstract
本發明包含用於記憶體中基於一機率資料結構之前瞻修正動作之設備及方法。若干實施例包含一記憶體及電路,該電路經組態以:將與儲存於該記憶體中之資料之一子集相關聯之資訊輸入至一機率資料結構中;及至少部分使用該機率資料結構前瞻地判定是否對儲存於該記憶體中之資料之該子集採取一修正動作。
Description
本發明大體上係關於半導體記憶體及方法,且更特定言之,係關於記憶體中基於一機率資料結構之前瞻修正動作。
記憶體裝置通常被提供為電腦或其他電子裝置中之內部半導體積體電路及/或外部可抽換式裝置。存在許多不同類型之記憶體,包含揮發性及非揮發性記憶體。揮發性記憶體可需要電力來維持其資料且可包含隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)及同步動態隨機存取記憶體(SDRAM)等。非揮發性記憶體可在未經供電時留存經儲存資料且可包含NAND快閃記憶體、NOR快閃記憶體、相變隨機存取記憶體(PCRAM)、電阻性隨機存取記憶體(RRAM)及磁性隨機存取記憶體(MRAM)等。
可將記憶體裝置組合在一起以形成一固態磁碟(SSD)。一SSD可包含非發揮性記憶體(例如,NAND快閃記憶體及/或NOR快閃記憶體)及/或可包含揮發性記憶體(例如,DRAM及/或SRAM),以及各種其他類型之非發揮性及揮發性記憶體。快閃記憶體裝置可包含(例如)將資料儲存於一電荷儲存結構(諸如一浮動閘極)中之記憶體胞,且可用作用於廣泛範圍之電子應用之非揮發性記憶體。快閃記憶體裝置通常使用容許高記憶體密度、高可靠性及低電力消耗之一單電晶體記憶體胞。
可將一陣列架構中之記憶體胞程式化至一目標(例如,所要)狀態。舉例而言,可將電荷放置於一記憶體胞之電荷儲存結構(例如,浮動閘極)上或自其上移除以將該胞程式化至一特定資料狀態。記憶體胞之電荷儲存結構上之經儲存電荷可指示該胞之一臨限值電壓(Vt)。
舉例而言,可將一單位階胞(SLC)程式化至兩個不同資料狀態之一目標狀態,其可由二進位單元1或0表示。可將一些快閃記憶體胞程式化至兩個以上資料狀態之一目標狀態(例如,1111、0111、0011、1011、1001、0001、0101、1101、1100、0100、0000、1000、1010、0010、0110及1110)。可將此等胞稱為多狀態記憶體胞、多單元胞或多位階胞(MLC)。MLC可提供較高密度之記憶體而不增加記憶體胞之數目,此係因為各胞可表示一個以上數位(例如,一個以上位元)。
可藉由感測一快閃記憶體胞之電荷儲存結構上之經儲存電荷(例如,Vt)而判定該胞之一狀態。然而,諸如讀取干擾、程式化干擾、胞間干擾及/或電荷損耗(例如,電荷洩漏)之若干機制(例如)可引起記憶體胞之Vt改變,其可降低儲存於記憶體中之資料之品質。舉例而言,一記憶體胞之Vt之一改變可引起該胞被感測為處在除了目標狀態之外之一狀態(例如,不同於胞被程式化至之狀態之一狀態)中。若不採取修正動作,則資料之品質之此一降低可減少記憶體之壽命及/或可引起記憶體失效。
可將記憶體裝置組合在一起以形成一固態磁碟(SSD)。一SSD可包含非發揮性記憶體(例如,NAND快閃記憶體及/或NOR快閃記憶體)及/或可包含揮發性記憶體(例如,DRAM及/或SRAM),以及各種其他類型之非發揮性及揮發性記憶體。快閃記憶體裝置可包含(例如)將資料儲存於一電荷儲存結構(諸如一浮動閘極)中之記憶體胞,且可用作用於廣泛範圍之電子應用之非揮發性記憶體。快閃記憶體裝置通常使用容許高記憶體密度、高可靠性及低電力消耗之一單電晶體記憶體胞。
可將一陣列架構中之記憶體胞程式化至一目標(例如,所要)狀態。舉例而言,可將電荷放置於一記憶體胞之電荷儲存結構(例如,浮動閘極)上或自其上移除以將該胞程式化至一特定資料狀態。記憶體胞之電荷儲存結構上之經儲存電荷可指示該胞之一臨限值電壓(Vt)。
舉例而言,可將一單位階胞(SLC)程式化至兩個不同資料狀態之一目標狀態,其可由二進位單元1或0表示。可將一些快閃記憶體胞程式化至兩個以上資料狀態之一目標狀態(例如,1111、0111、0011、1011、1001、0001、0101、1101、1100、0100、0000、1000、1010、0010、0110及1110)。可將此等胞稱為多狀態記憶體胞、多單元胞或多位階胞(MLC)。MLC可提供較高密度之記憶體而不增加記憶體胞之數目,此係因為各胞可表示一個以上數位(例如,一個以上位元)。
可藉由感測一快閃記憶體胞之電荷儲存結構上之經儲存電荷(例如,Vt)而判定該胞之一狀態。然而,諸如讀取干擾、程式化干擾、胞間干擾及/或電荷損耗(例如,電荷洩漏)之若干機制(例如)可引起記憶體胞之Vt改變,其可降低儲存於記憶體中之資料之品質。舉例而言,一記憶體胞之Vt之一改變可引起該胞被感測為處在除了目標狀態之外之一狀態(例如,不同於胞被程式化至之狀態之一狀態)中。若不採取修正動作,則資料之品質之此一降低可減少記憶體之壽命及/或可引起記憶體失效。
本發明包含用於記憶體中基於一機率資料結構之前瞻修正動作之設備及方法。若干實施例包含一記憶體及電路,該電路經組態以:將與儲存於該記憶體中之資料之一子集相關聯之資訊輸入至一機率資料結構中;及至少部分使用該機率資料結構前瞻地判定是否對儲存於該記憶體中之資料之該子集採取一修正動作。
本發明之實施例可使用一機率資料結構(諸如(例如)一計數型布隆(Bloom)篩選器)來追蹤記憶體中之資料品質之指標以前瞻地判定何時可需要對資料採取修正動作。舉例而言,本發明之實施例可使用一機率資料結構來追蹤讀取干擾、磨損均衡及/或熱及冷資料分類以及資料品質之其他指標(例如,度量)以前瞻地判定何時採取修正動作。因而,本發明之實施例可用於減少記憶體中之失效及/或增加記憶體之壽命以及其他益處。此外,本發明之實施例可適用於快速及/或直觀的硬體及/或韌體實施方案。
此外,藉由使用一機率資料結構來追蹤資料品質指標,本發明之實施例可比追蹤資料品質指標之先前方法(諸如其中指派一不同計數器以追蹤儲存於記憶體中之資料之各各自子集(例如,區塊)之資料品質指標之方法)使用(例如,消耗)顯著更少記憶體。舉例而言,根據本發明使用一機率資料結構來追蹤資料品質指標可消除如同此等先前方法之對於記憶體包含針對各各自子集之一不同計數器之需要。因而,本發明之實施例可比用於追蹤資料品質指標之此等先前方法使用顯著更少之記憶體,(例如,作為一實例)近似少75%之記憶體。
此外,本發明之實施例可有效及/或準確地(例如,恰如使用顯著更多記憶體之先前方法般有效及/或準確地)動態追蹤記憶體中之資料品質指標。舉例而言,相較於一理想無錯誤系統,與本發明之實施例相關聯之錯誤率(例如,當實際可能不需要修正動作時採取修正動作之錯誤率及/或當實際可能需要修正動作時未採取修正動作之錯誤率)可係可忽略的。舉例而言,作為一實例,與本發明之實施例相關聯之錯誤率可係近似1.5×10-5 。
如本文中使用,「若干」事物可指一或多個此等事物。舉例而言,若干記憶體胞可指一或多個記憶體胞。另外,如本文中使用,尤其關於圖式中之元件符號之標示符「R」、「B」、「S」、「K」及「N」指示本發明之若干實施例可包含如此標示之若干特定特徵。
本文中之圖遵循一編號慣例,其中第一數位或若干數位對應於圖式圖號且剩餘數位識別圖式中之一元件或組件。可藉由使用類似數位識別不同圖之間之類似元件或組件。
圖1繪示根據本發明之若干實施例之具有若干實體區塊之一記憶體陣列100之一部分之一圖式。記憶體陣列100可係(例如)一NAND快閃記憶體陣列。然而,本發明之實施例不限於一特定類型之記憶體或記憶體陣列。舉例而言,記憶體陣列100可係一DRAM陣列、一RRAM陣列或一PCRAM陣列以及其他類型之記憶體陣列。此外,雖然在圖1中未展示,但記憶體陣列100可連同與其操作相關聯之各種周邊電路一起定位於一特定半導體晶粒上。
如圖1中展示,記憶體陣列100具有記憶體胞之若干實體區塊116-0 (區塊0)、116-1 (區塊1)、…、116-B (區塊B)。記憶體胞可係單位階胞及/或多位階胞,諸如(例如)二位階胞、三位階胞(TLC)或四位階胞(QLC)。作為一實例,記憶體陣列100中之實體區塊之數目可係128個區塊、512個區塊或1024個區塊,但實施例不限於2的一特定次冪或記憶體陣列100中之實體區塊之任何特定數目。
記憶體胞之若干實體區塊(例如,區塊116-0、116-1、…、116-B)可包含於記憶體胞之一平面中,且記憶體胞之若干平面可包含於一晶粒上。舉例而言,在圖1中展示之實例中,各實體區塊116-0、116-1、…、116-B可係一單一晶粒之部分。即,圖1中繪示之記憶體陣列100之部分可係記憶體胞之晶粒。
如圖1中展示,各實體區塊116-0、116-1、…、116-B包含耦合至存取線(例如,字線)之記憶體胞之若干實體列(例如,120-0、120-1、…、120-R)。各實體區塊中之列(例如,字線)之數目可係32,但實施例不限於每一實體區塊之列120-0、120-1、…、120-R之一特定數目。此外,雖然在圖1中未展示,但記憶體胞可耦合至感測線(例如,資料線及/或數位線)。
如一般技術者將瞭解,各列120-0、120-1、…、120-R可包含記憶體胞之若干頁(例如,實體頁)。一實體頁係指程式化及/或感測之一單元(例如,作為一功能群組被一起程式化及/或感測之若干記憶體胞)。在圖1中展示之實施例中,各列120-0、120-1、…、120-R包括記憶體胞之一個實體頁。然而,本發明之實施例並不如此受限制。舉例而言,在若干實施例中,各列可包括記憶體胞之多個實體頁(例如,耦合至偶數編號之位元線之記憶體胞之一或多個偶數頁,及耦合至奇數編號之位元線之記憶體胞之一或多個奇數頁)。另外,針對包含多位階胞之實施例,記憶體胞之一實體頁可儲存資料之多個頁(例如,邏輯頁)(例如,資料之一上部頁及資料之一下部頁,其中一實體頁中之各胞儲存朝向資料之一上部頁之一或多個位元及朝向資料之一下部頁之一或多個位元)。
一程式化操作(例如,一寫入操作)可包含將若干程式化脈衝(例如,16 V至20 V)施加至一選定字線以便將耦合至該選定字線之選定胞之臨限值電壓(Vt)增加至對應於一目標(例如,所要)資料狀態之一所要程式化電壓位準。一感測操作(諸如一讀取或程式化驗證操作)可包含感測耦合至一選定胞之一感測線之一電壓及/或電流改變以便判定選定胞之資料狀態。
在本發明之若干實施例中,且如圖1中展示,記憶體胞之一頁可包括若干實體區段122-0、122-1、…、122-S (例如,記憶體胞之子集)。胞之各實體區段122-0、122-1、…、122-S可儲存資料之若干邏輯區段(例如,資料字)。另外,資料之各邏輯區段可對應於資料之一特定頁之一部分。作為一實例,儲存於一特定實體區段中之資料之一第一邏輯區段可對應於對應於資料之一第一頁之一邏輯區段,且儲存於該特定實體區段中之資料之一第二邏輯區段可對應於資料之一第二頁。各實體區段122-0、122-1、…、122-S可儲存系統及/或使用者資料及/或可包含附加項資料,諸如錯誤修正碼(ECC)資料、邏輯區塊位址(LBA)資料及復現錯誤資料。
邏輯區塊定址係可由一主機用於識別資料之一邏輯區段之一方案。舉例而言,各邏輯區段可對應於一唯一邏輯區塊位址(LBA)。另外,一LBA亦可對應於(例如,動態映射至)一實體位址。資料之一邏輯區段可係資料之若干位元組(例如,256個位元組、512個位元組或1024個位元組)。然而,實施例不限於此等實例。
應注意,實體區塊116-0、116-1、…、116-B、列120-0、120-1、…、120-R、區段122-0、122-1、…、122-S及頁之其他組態係可行的。舉例而言,實體區塊116-0、116-1、…、116-B之列120-0、120-1、…、120-R可各儲存對應於可包含(例如)資料之多於或少於512個位元組之一單一邏輯區段之資料。
圖2繪示根據本發明之若干實施例之一機率資料結構202之一方塊圖。機率資料結構202可係(例如)基於可用於前瞻地判定是否對儲存於記憶體中之資料之一子集採取一修正動作之一計數型布隆篩選器(例如,其之一經修改版本),如本文中將進一步描述。
諸如一計數型布隆篩選器之一機率資料結構可包含若干計數器(例如,圖2中繪示之計數器232)。舉例而言,一計數型布隆篩選器可包含M個d位元遞增/遞減計數器,其中M係計數器之數量且d係各各自計數器之位元之數量。因而,可藉由M×d給定計數型布隆篩選器之大小。當計數型布隆篩選器係空的時,各計數器(例如,各計數器之值)設定為0。雖然在圖2中繪示之實例包含16個計數器(例如,0至15),但本發明之實施例不限於特定數量之計數器。
計數型布隆篩選器可進一步包含若干(例如,K個)不同雜湊函數,該等雜湊函數之各者可較佳使用一均勻隨機分佈將一輸入(例如,主體)元素雜湊(例如,映射)至計數器之一者。舉例而言,可根據K個雜湊函數之各者處理輸入元素以判定元素經映射至之對應K個計數器,且可相應地更新此等計數器(例如,此等計數器之值)。當一計數器之值達到一特定臨限值時,計數器可重設為0。
作為一實例,圖2展示具有若干雜湊函數230-1、230-2、…、230-K (例如,H1 、H2 、…、HK )之機率資料結構(例如,計數型布隆篩選器) 202。在圖2中繪示之實例中,一元素234 (例如,X)經展示為由計數型布隆篩選器)202處理(例如,通過計數型布隆篩選器202)以產生各自雜湊輸出(例如,H1 (X)、H2 (X)、…、HK (X))。舉例而言,如由雜湊函數230-1處理之元素234經指示為H1 (X)且對應於計數型布隆篩選器202之計數器232之計數器7,該計數器7經展示為被更新至8之一值。此外,如由雜湊函數230-2處理之元素234經指示為H2 (X)且對應於計數器232之計數器14,該計數器14經展示為被更新至2之一值。此外,如由雜湊函數230-K處理之元素234經指示為HK (X)且對應於計數器232之計數器1,該計數器1經展示為被更新至12之一值。在若干實施例中,雜湊函數230-1、230-2、…、230-K可基於二進位運算(諸如XOR運算、SHIFT運算等)而產生其等各自輸出,此可使計數型布隆篩選器202之硬體及/或韌體實施方案快速及/或直觀。
因而,計數型布隆篩選器202可用於擷取一特定元素出現之頻率(例如,元素被輸入至計數型布隆篩選器202中且由計數型布隆篩選器202處理之頻率)。相比之下,一標準布隆篩選器可簡單用於指示元素包含在一特定元素集中或自一特定元素集排除(例如,檢查一元素是否係該集之一成員)。
應注意,在一些例項中,雜湊函數230-1、230-2、…、230-K之輸出可針對不同輸入元素重疊,此可導致假陽性及/或假陰性錯誤(例如,一元素經指示為比其實際更頻率或更不頻繁地出現)。然而,可基於用於M、d及K之數量而減少(例如,最小化或最佳化)此等錯誤。舉例而言,在其中計數型布隆篩選器202包含兩個雜湊函數及1024個8位元計數器之實施例中(例如,在其中M、d及K分別為1024、8及2之實施例中)可減少(例如,最小化)此等誤差。在此等實施例中,計數型布隆篩選器202之記憶體部分之大小(例如,不包含兩個雜湊函數)將係1千位元組(kB)。然而,本發明之實施例不限於此等實施例。
圖3係根據本發明之若干實施例之包含呈一記憶體裝置344之形式之一設備之一計算系統304之一功能方塊圖。如本文中使用,一「設備」可指(但不限於)各種結構或結構之組合之任一者,諸如(例如)一電路、一晶粒或若干晶粒、一模組或若干模組、一裝置或若干裝置或一系統或若干系統。
記憶體裝置344可係(例如)一固態磁碟(SSD)。在圖3中繪示之實施例中,記憶體裝置344包含一實體主機介面346、若干記憶體350-1、350-2、...、350-N (例如,固態記憶體裝置)及耦合至實體主機介面346及記憶體350-1、350-2、...、350-N之一控制器348 (例如,一SSD控制器)。
記憶體350-1、350-2、...、350-N可包含(例如)若干非揮發性記憶體陣列(例如,非揮發性記憶體胞陣列)。舉例而言,記憶體350-1、350-2、...、350-N可包含類似於先前結合圖1描述之記憶體陣列100之若干記憶體陣列。
實體主機介面346可用於在記憶體裝置344與諸如一主機342之另一裝置之間傳送資訊。主機342可包含一記憶體存取裝置(例如,一處理器)。一般技術者將瞭解,「一處理器」可意指若干處理器,諸如一平行處理系統、若干協同處理器等。例示性主機可包含個人膝上型電壓、桌上型電腦、數位相機、數位記錄及播放裝置、行動電話(諸如智慧型電話)、PDA、記憶卡讀取器、介面集線器及類似者。
實體主機介面346可呈一標準化實體介面之形式。舉例而言,當記憶體裝置344用於計算系統304中之資訊儲存時,實體主機介面346可係一串列進階附接技術(SATA)實體介面、一周邊組件互連快速(PCIe)實體介面或一通用串列匯流排(USB)實體介面以及其他實體連接器及/或介面。然而,一般言之,實體主機介面346可提供用於在記憶體裝置344與具有用於實體主機介面346之相容接受器之一主機(例如,主機342)之間傳遞控制、位址、資訊(例如,資料)及其他信號之一介面。
控制器348可包含(例如)控制電路及/或邏輯(例如,硬體及韌體)。控制器348可與記憶體350-1、350-2、...、350-N包含在相同實體裝置(例如,相同晶粒)上。舉例而言,控制器348可係耦合至包含實體主機介面346及記憶體350-1、350-2、...、350-N之一印刷電路板之一特定應用積體電路(ASIC)。替代地,控制器348可包含在可通信地耦合至包含記憶體350-1、350-2、...、350-N之實體裝置之一單獨實體裝置上。在若干實施例中,控制器348之組件可作為一分佈式控制器而跨多個實體裝置散佈(例如,一些組件與記憶體在相同晶粒上,且一些組件在一不同晶粒、模組或板上)。
控制器348可與記憶體350-1、350-2、...、350-N通信以感測(例如,讀取)、程式化(例如,寫入)及/或擦除資訊以及其他操作。控制器348可具有可係若干積體電路及/或離散組件之電路。在若干實施例中,控制器348中之電路可包含用於控制跨記憶體350-1、350-2、...、350-N之存取之控制電路及/或用於提供主機342與記憶體裝置344之間之一轉譯層之電路。
在若干實施例中,控制器348可使用一機率資料結構(諸如(例如)先前結合圖2描述之機率資料結構(例如,計數型布隆篩選器) 202)來追蹤儲存於記憶體350-1、350-2、...、350-N中之資料之品質之指標(例如,度量)(包含(例如)讀取干擾、磨損均衡及/或熱及冷資料分類以及其他資料品質指標)以前瞻地判定何時可需要對資料採取修正動作。舉例而言,控制器348可將與儲存於記憶體350-1、350-2、...、350-N中之資料之一子集相關聯之資訊輸入至機率資料結構中,且至少部分使用機率資料結構前瞻地判定是否對資料之子集採取一修正動作。舉例而言,控制器348可使用機率資料結構來對經輸入資訊執行一操作,且至少部分基於操作之結果而前瞻地判定是否對資料之子集採取修正動作。如本文中使用,「前瞻地」判定何時可需要採取修正動作及「前瞻地」判定是否採取修正動作可指在可實際需要採取修正動作之前(諸如(例如)在記憶體之一失效實際出現(例如,預期一失效將很快出現)之前)判定可需要採取修正動作及判定是否採取修正動作。
在若干實施例中,機率資料結構可包含於控制器348中。舉例而言,控制器348之DRAM可用於機率資料結構之計數器。
經輸入資訊可對應於先前結合圖2描述之元素234,且可係(例如)與資料之子集相關聯之識別資訊(例如,識別該子集之資訊)。此外,資料之子集可係資料之一區塊(或資料之(若干)其他單元,諸如資料之一區塊或多個區塊之一子集),諸如(例如)已藉由控制器348對其執行一感測(例如,讀取)或程式化(例如,寫入)操作之一區塊(例如,包含對其執行一感測或程式化操作之記憶體胞之一頁之一區塊)。舉例而言,可在藉由控制器348執行之感測或程式化操作之後(例如,回應於藉由控制器348執行之感測或程式化操作),將識別資訊輸入至機率資料結構中。
藉由機率資料結構對經輸入資訊執行之操作可包含藉由機率資料結構之雜湊函數處理經輸入資訊,如先前結合圖2描述。舉例而言,各各自雜湊函數之輸出可對應於機率資料結構之一不同計數器(例如,位置),如先前結合圖2描述,且可相應地更新(例如,增大、減小或重設)此等計數器之各者(例如,此等計數器之各者之各自值)。計數器之各者之各自值在其等經更新之後,可對應於藉由機率資料結構執行之操作之結果。
各各自雜湊函數之輸出所對應之不同計數器之各者經更新(例如,增大、減小或重設)之數量(例如,量)可取決於由機率資料結構追蹤之資料品質指標之(若干)類型。舉例而言,若回應於一感測操作而輸入資訊(例如,若其係對資料之子集執行一感測操作),且機率資料結構正在追蹤讀取干擾,則不同計數器之各者可更新達對其執行感測操作之資料之子集中之頁之數量。然而,本發明之實施例不限於此特定實例。舉例而言,若機率資料結構正在追蹤熱及冷資料分類,則不同計數器之各者可更新達在對資料之子集執行之感測及/或程式化操作期間存取資料之子集之次數。作為一額外實例,若機率資料結構正在追蹤磨損均衡,則不同計數器之各者可更新達對資料之子集執行之程式化及/或擦除循環之數量。
此程序可針對後續經輸入資訊(例如,在記憶體裝置344之操作期間執行之後續感測操作)繼續,直至由機率資料結構執行之操作之結果(例如,經更新計數器之值)滿足或超過一特定臨限值。臨限值可係一固定臨限值,或其可係一可調整(例如,可程式化及/或可改變)臨限值。作為一實例,若機率資料結構正在追蹤讀取干擾,則機率資料結構中之臨限值可小於或等於(2^d)–1,其中d係各各自計數器之位元之數量。然而,本發明之實施例不限於此特定實例。
在由機率資料結構執行之操作之結果(例如,經更新計數器之值)滿足或超過特定臨限值之後,可將計數器(例如,計數器之值)重設(例如,為零),且可將與資料之子集相關聯之資訊(例如,識別資訊)儲存於(例如,移動至包含於控制器348中之一快取區中。舉例而言,快取區可包含若干計數器,且計數器之一者可與資料之該子集相關聯(例如,指派至資料之該子集)。快取區中之各各自計數器可包含32-d個位元。因而,可藉由L×(32-d)給定快取區之大小,其中L係快取區中之計數器之數量且d係機率資料結構中之各各自計數器之位元之數量。作為一實例,快取區可包含1060個計數器(例如,L可係1060)。在此一實例中,快取區之大小將係近似3.88 kB (包含快取區附加項)。作為一額外實例,在快取區中使用之各計數器之大小可係至少ceil(log2(T–T1)),其中ceil(.)係頂函數,log2(.)係以2為底數之對數函數,T1係機率資料結構中之臨限值,且T係執行一修正動作之臨限值。
在其中包含機率資料結構之控制器之記憶體係二層級式記憶體(例如,包含二層級式記憶體胞)之實施例中,機率資料結構可包含於兩個層級之一第一者(例如,一層級)中,且快取區可包含於兩個層級之一第二者(例如,另一層級)中。在其中包含機率資料結構之控制器之記憶體係三層級式記憶體(例如,包含TLC)之實施例中,機率資料結構可包含於一第一層級及一第二層級(例如,三個層級之兩者)中,且快取區可包含於一第三層級(例如,剩餘層級)中。
在與資料之子集相關聯之資訊儲存於快取區中之後,對資料之子集執行之後續感測操作可不導致與該子集相關聯之資訊被輸入至機率資料結構中。實情係,可在對資料之子集執行之各後續感測操作之後(例如,回應於對資料之子集執行之各後續感測操作),更新快取區中與該子集相關聯之計數器。快取區中之計數器被更新之數量(例如,量)可對應於機率資料結構之計數器被更新之數量。舉例而言,若機率資料結構正在追蹤讀取干擾且機率資料結構之計數器被更新達對其執行感測操作之資料之子集中之頁之數量,則快取區中之計數器亦可被更新達對其執行感測操作之子集中之頁之數量。
此程序可繼續直至快取區中與資料之子集相關聯之計數器之值滿足或超過一特定臨限值。臨限值可係一固定臨限值,或其可係一可調整(例如,可程式化及/或可改變)臨限值。此外,此臨限值可比機率資料結構中使用之臨限值大得多(例如,更大數量級)。因而,機率資料結構可用於動態地篩選儲存於記憶體350-1、350-2、...、350-N中之品質可能正在下降之資料之子集(諸如(例如)可達到一高讀取干擾計數之資料之子集),且接著可使用快取區進一步追蹤資料之此等子集。
在快取區中與資料之子集相關聯之計數器之值滿足或超過快取區臨限值之後,控制器348可對資料之子集採取修正動作,且可將計數器(例如,計數器之值)重設(例如,為零)且可自快取區移除與資料之子集相關聯之資訊。修正動作可係(例如)資料之子集至記憶體350-1、350-2、...、350-N中之一不同位置(例如,一不同實體位置)之一重新定位。舉例而言,資料之子集可經程式化至及/或儲存於記憶體350-1、350-2、...、350-N之一不同頁、區塊或晶粒中。作為一額外實例,在其中記憶體350-1、350-2、...、350-N包含SLC及MLC之實施例中,修正動作可包含將儲存於記憶體350-1、350-2、...、350-N之SLC中之子集之資料程式化至記憶體350-1、350-2、...、350-N之MLC (例如,將SLC資料摺疊至MLC,或反之亦然)。舉例而言,可將SLC資料摺疊至記憶體350-1、350-2、...、350-N中具有MLC組態之另一實體位置,或反之亦然。
在若干實施例(諸如(例如)其中機率資料結構用於追蹤讀取干擾之實施例)中,對資料之子集執行之一程式化操作可導致機率資料結構及/或快取區之一重設。舉例而言,在程式化操作之後(例如,回應於程式化操作),可將與資料之子集相關聯之資訊(例如,識別資訊)輸入至機率資料結構中,且可藉由機率資料結構以類似於本文中先前描述之方式之一方式處理經輸入資訊。然而,取代更新機率資料結構之各各自雜湊函數之輸出所對應之機率資料結構之不同計數器之各者(例如,如回應於一感測操作將出現般),可將不同計數器之各者(例如,不同計數器之各者之值)重設(例如,為零)。此外,若與資料之子集相關聯之資訊儲存於快取區中(例如,若程式化操作在滿足或超過機率資料結構臨限值且將資訊自機率資料結構移動至快取區之後發生),則回應於程式化操作,可重設快取區中與資料之子集相關聯之計數器,且可自快取區移除資訊。
根據本發明使用一機率資料結構來追蹤資料品質指標可使用(例如,消耗)比由追蹤資料品質指標之先前方法(諸如其中指派一不同計數器來追蹤儲存於記憶體中之資料之各各自子集(例如,區塊)之資料品質指標之方法)將使用之控制器348之(例如,控制器348之記憶體之)一顯著更低部分。舉例而言,根據本發明使用一機率資料結構來追蹤資料品質指標可消除如同此等先前方法般將控制器348及/或記憶體350-1、350-2、...、350-N中之一計數器(例如,一專用計數器)指派至各各自子集之需要。
舉例而言,在本文中先前描述之實例中,針對專用於追蹤資料品質指標之總共近似4.88 kB之記憶體,機率資料結構可具有1 kB之一大小,且快取區可具有近似3.88 kB之一大小。相比之下,一先前方法可使用具有將專用於追蹤資料品質指標之20 kB之一大小之一快取區。因而,本發明之實施例可使用比用於追蹤資料品質指標之此等先前方法顯著更少之記憶體,(例如)近似少75%之記憶體。
此外,本發明之實施例可有效及/或準確地(例如,恰如使用顯著更多記憶體之先前方法般有效及/或準確地)追蹤記憶體350-1、350-2、...、350-N中之資料品質指標。舉例而言,如本文中先前描述,機率資料結構之雜湊函數之輸出可針對不同輸入元素重疊,此可導致假陽性及/或假陰性錯誤,此可繼而導致當實際可能不需要修正動作時採取修正動作及/或當實際可能需要修正動作時未採取修正動作。然而,如本文中先前描述,可基於用於機率資料結構中之M、d及K之數量而減少(例如,最小化)此等錯誤。舉例而言,如在結合圖2描述之實例中描述,針對M、d及K分別使用1024、8及2之值可導致近似1.5×10-5 之一錯誤率,相較於一理想、無錯誤系統,該錯誤率可係可忽略的。然而,此僅係一例示性圖解,且本發明之實施例並不如此受限制。
圖3中繪示之實施例可包含未繪示以免使本發明之實施例模糊之額外電路、邏輯及/或組件。舉例而言,記憶體裝置344可包含位址電路以鎖存經由I/O連接器透過I/O電路提供之位址信號。位址信號可由一列解碼器及一行解碼器接收並解碼以存取記憶體350-1、350-2、...、350-N。
圖4繪示根據本發明之若干實施例之用於操作記憶體(諸如(例如)先前結合圖3描述之記憶體350-1、350-2、...、350-N)之一方法406。方法406可由(例如)先前結合圖3描述之控制器348執行。
方法406可用於(例如)追蹤記憶體中之資料品質之指標以前瞻地判定何時可需要對資料採取修正動作。舉例而言,方法406可用於追蹤記憶體中之讀取干擾。然而,本發明之實施例並不如此受限制,且方法406可用於追蹤其他資料品質指標,如本文中先前描述。
在方塊460處,方法406包含判定與儲存於記憶體中之資料之一子集相關聯之識別資訊。資料之子集可係(例如)已對其執行一感測(例如,讀取)操作之資料之一區塊,如本文中先前(例如,結合圖3)描述。即,當已執行一感測操作時,可使用方法406。可藉由(例如)映射與感測操作相關聯之邏輯區塊位址(LBA)(例如,用於識別對其執行感測操作之資料之子集之LBA)而判定識別資訊。
在方塊462處,方法406包含判定與資料之子集相關聯之識別資訊是否儲存於一快取區中。舉例而言,快取區可包含若干計數器,如本文中先前(例如,結合圖3)描述,且判定識別資訊是否儲存於快取區中可包含判定計數器之任一者是否與識別資訊相關聯(例如,經指派至資料之子集)。
若判定與資料之子集相關聯之識別資訊未儲存於快取區中,則在方塊464處可將識別資訊輸入至一機率資料結構中。機率資料結構可係(例如)結合圖2描述之機率資料結構(例如,計數型布隆篩選器) 202。舉例而言,經輸入資訊可對應於先前結合圖2描述之元素234。
在方塊466處,方法406包含使用機率資料結構對經輸入識別資訊執行一操作。操作可包含藉由機率資料結構之雜湊函數處理經輸入資訊,如本文中先前(例如,結合圖2及圖3)描述。
在方塊468處,方法406包含判定操作之結果是否滿足或超過一特定臨限值。操作之結果可對應於在操作期間更新之機率資料結構之計數器之值,如本文中先前(例如,結合圖3)描述。
若判定操作之結果(例如,在操作期間更新之計數器之值)未滿足或超過臨限值,則方法406在方塊472處結束。若判定操作之結果滿足或超過臨限值,則在方塊470處將識別資訊儲存於快取區中(例如,可將快取區之計數器之一者指派至識別資訊),且可重設在操作期間更新之機率資料結構之計數器之值。
若在方塊462處判定與資料之子集相關聯之識別資訊儲存於快取區中(例如,已將識別資訊指派至快取區之計數器之一者),則在方塊474處更新該計數器之值。計數器被更新之數量(例如,量)可對應於機率資料結構之計數器被更新之數量,如本文中先前(例如,結合圖3)描述。
在方塊476處,方法406包含判定在方塊474處更新之快取區之計數器之值是否滿足或超過一特定臨限值。此臨限值可比在機率資料結構中使用之臨限值大得多,如本文中先前(例如,結合圖3)描述。
若判定快取區之計數器之值未滿足或超過臨限值,則方法406在方塊480處結束。若判定快取區之計數器之值滿足或超過臨限值,則在方塊478處對資料之子集採取一修正動作,且自快取區移除與資料之子集相關聯之識別資訊。修正動作可係(例如)資料之子集至記憶體中之一不同位置之一重新定位及/或可包含將儲存於記憶體之SLC中之子集之資料程式化至記憶體之MLC (或反之亦然),如本文中先前(例如,結合圖3)描述。
圖5繪示根據本發明之若干實施例之用於操作記憶體(諸如(例如)先前結合圖3描述之記憶體350-1、350-2、...、350-N)之一方法508。方法508可由(例如)先前結合圖3描述之控制器348執行。
方法508可用於(例如)追蹤記憶體中之資料品質之指標以前瞻地判定何時可需要對資料採取修正動作。舉例而言,方法508可用於追蹤記憶體中之讀取干擾。然而,本發明之實施例並不如此受限制,且方法508可用於追蹤其他資料品質指標,如本文中先前描述。
此外,在若干實施例中,可僅在受對資料之一子集(例如,區塊)執行之一程式化操作影響之頁之數量滿足或超過一特定臨限值之情況下,使用(例如,觸發)方法508。舉例而言,在此等實施例中,若此臨限值係100,且在一程式化操作期間僅程式化50頁,則將不觸發方法508。另外或替代地,在若干實施例中,可僅在對資料之一子集執行一特定類型或若干類型之程式化操作之情況下,使用(例如,觸發)方法508。舉例而言,在此等實施例中,可僅在程式化操作將資料重新程式化至子集之一部分(例如,將資料程式化至先前已使資料程式化至其之子集之一部分)之情況下,觸發方法508。
在方塊582處,方法508包含判定與儲存於記憶體中之資料之一子集相關聯之識別資訊。資料之子集可係(例如)已對其執行一程式化(例如,寫入)操作之資料之一區塊,如本文中先前(例如,結合圖3)描述。即,當已執行一程式化操作時,可使用方法508。可藉由(例如)映射與程式化操作相關聯之邏輯區塊位址(LBA)(例如,用於識別對其執行程式化操作之資料之子集之LBA)而判定識別資訊。
在方塊584處,方法508包含判定與資料之子集相關聯之識別資訊是否儲存於一快取區中。舉例而言,快取區可包含若干計數器,如本文中先前(例如,結合圖3)描述,且判定識別資訊是否儲存於快取區中可包含判定計數器之任一者是否與識別資訊相關聯(例如,經指派至資料之子集)。
若判定與資料之子集相關聯之識別資訊未儲存於快取區中,則在方塊586處可將識別資訊輸入至一機率資料結構中。機率資料結構可係(例如)結合圖2描述之機率資料結構(例如,計數型布隆篩選器) 202。舉例而言,經輸入資訊可對應於先前結合圖2描述之元素234。
在方塊588處,方法508包含使用機率資料結構對經輸入識別資訊執行一操作。操作可包含藉由機率資料結構之雜湊函數處理經輸入資訊,如本文中先前(例如,結合圖2及圖3)描述。然而,取代更新機率資料結構之各各自雜湊函數之輸出所對應之機率資料結構之不同計數器之各者之操作(例如,如諸如(例如)在結合圖4描述之方法406之方塊466處回應於一感測操作將出現般),操作可將不同計數器之各者(例如,不同計數器之各者之值)重設(例如,為零)。即,方法508包含在方塊590處重設機率資料結構之此等計數器。
若在方塊584處判定與資料之子集相關聯之識別資訊儲存於快取區中,則在方塊592處自快取區移除識別資訊。舉例而言,可重設快取區中與識別資訊相關聯之計數器。
雖然已在本文中繪示並描述特定實施例,但一般技術者將暸解,經計算以達成相同結果之一配置可取代展示之特定實施例。本發明旨在涵蓋本發明之若干實施例之調適或變動。應瞭解,已按一闡釋性方式且非一限制性方式做出上述描述。一般技術者在檢視上述描述後將明白上述實施例之組合及在本文中未具體描述之其他實施例。本發明之若干實施例之範疇包含其中使用上述結構及方法之其他應用。因此,應參考隨附發明申請專利範圍以及此等發明申請專利範圍所授權之等效物之全範圍判定本發明之若干實施例之範疇。
在前述實施方式中,出於簡化本發明之目的,將一些特徵一起集中於一單一實施例中。本發明之此方法不應解釋為反映本發明之所揭示實施例必須使用多於每一技術方案中明確敘述之特徵之一意圖。實情係,如以下發明申請專利範圍反映,本發明標的物在於少於一單一所揭示實施例之所有特徵。因此,特此將以下發明申請專利範圍併入實施方式中,其中每一技術方案獨立地作為一單獨實施例。
本發明之實施例可使用一機率資料結構(諸如(例如)一計數型布隆(Bloom)篩選器)來追蹤記憶體中之資料品質之指標以前瞻地判定何時可需要對資料採取修正動作。舉例而言,本發明之實施例可使用一機率資料結構來追蹤讀取干擾、磨損均衡及/或熱及冷資料分類以及資料品質之其他指標(例如,度量)以前瞻地判定何時採取修正動作。因而,本發明之實施例可用於減少記憶體中之失效及/或增加記憶體之壽命以及其他益處。此外,本發明之實施例可適用於快速及/或直觀的硬體及/或韌體實施方案。
此外,藉由使用一機率資料結構來追蹤資料品質指標,本發明之實施例可比追蹤資料品質指標之先前方法(諸如其中指派一不同計數器以追蹤儲存於記憶體中之資料之各各自子集(例如,區塊)之資料品質指標之方法)使用(例如,消耗)顯著更少記憶體。舉例而言,根據本發明使用一機率資料結構來追蹤資料品質指標可消除如同此等先前方法之對於記憶體包含針對各各自子集之一不同計數器之需要。因而,本發明之實施例可比用於追蹤資料品質指標之此等先前方法使用顯著更少之記憶體,(例如,作為一實例)近似少75%之記憶體。
此外,本發明之實施例可有效及/或準確地(例如,恰如使用顯著更多記憶體之先前方法般有效及/或準確地)動態追蹤記憶體中之資料品質指標。舉例而言,相較於一理想無錯誤系統,與本發明之實施例相關聯之錯誤率(例如,當實際可能不需要修正動作時採取修正動作之錯誤率及/或當實際可能需要修正動作時未採取修正動作之錯誤率)可係可忽略的。舉例而言,作為一實例,與本發明之實施例相關聯之錯誤率可係近似1.5×10-5 。
如本文中使用,「若干」事物可指一或多個此等事物。舉例而言,若干記憶體胞可指一或多個記憶體胞。另外,如本文中使用,尤其關於圖式中之元件符號之標示符「R」、「B」、「S」、「K」及「N」指示本發明之若干實施例可包含如此標示之若干特定特徵。
本文中之圖遵循一編號慣例,其中第一數位或若干數位對應於圖式圖號且剩餘數位識別圖式中之一元件或組件。可藉由使用類似數位識別不同圖之間之類似元件或組件。
圖1繪示根據本發明之若干實施例之具有若干實體區塊之一記憶體陣列100之一部分之一圖式。記憶體陣列100可係(例如)一NAND快閃記憶體陣列。然而,本發明之實施例不限於一特定類型之記憶體或記憶體陣列。舉例而言,記憶體陣列100可係一DRAM陣列、一RRAM陣列或一PCRAM陣列以及其他類型之記憶體陣列。此外,雖然在圖1中未展示,但記憶體陣列100可連同與其操作相關聯之各種周邊電路一起定位於一特定半導體晶粒上。
如圖1中展示,記憶體陣列100具有記憶體胞之若干實體區塊116-0 (區塊0)、116-1 (區塊1)、…、116-B (區塊B)。記憶體胞可係單位階胞及/或多位階胞,諸如(例如)二位階胞、三位階胞(TLC)或四位階胞(QLC)。作為一實例,記憶體陣列100中之實體區塊之數目可係128個區塊、512個區塊或1024個區塊,但實施例不限於2的一特定次冪或記憶體陣列100中之實體區塊之任何特定數目。
記憶體胞之若干實體區塊(例如,區塊116-0、116-1、…、116-B)可包含於記憶體胞之一平面中,且記憶體胞之若干平面可包含於一晶粒上。舉例而言,在圖1中展示之實例中,各實體區塊116-0、116-1、…、116-B可係一單一晶粒之部分。即,圖1中繪示之記憶體陣列100之部分可係記憶體胞之晶粒。
如圖1中展示,各實體區塊116-0、116-1、…、116-B包含耦合至存取線(例如,字線)之記憶體胞之若干實體列(例如,120-0、120-1、…、120-R)。各實體區塊中之列(例如,字線)之數目可係32,但實施例不限於每一實體區塊之列120-0、120-1、…、120-R之一特定數目。此外,雖然在圖1中未展示,但記憶體胞可耦合至感測線(例如,資料線及/或數位線)。
如一般技術者將瞭解,各列120-0、120-1、…、120-R可包含記憶體胞之若干頁(例如,實體頁)。一實體頁係指程式化及/或感測之一單元(例如,作為一功能群組被一起程式化及/或感測之若干記憶體胞)。在圖1中展示之實施例中,各列120-0、120-1、…、120-R包括記憶體胞之一個實體頁。然而,本發明之實施例並不如此受限制。舉例而言,在若干實施例中,各列可包括記憶體胞之多個實體頁(例如,耦合至偶數編號之位元線之記憶體胞之一或多個偶數頁,及耦合至奇數編號之位元線之記憶體胞之一或多個奇數頁)。另外,針對包含多位階胞之實施例,記憶體胞之一實體頁可儲存資料之多個頁(例如,邏輯頁)(例如,資料之一上部頁及資料之一下部頁,其中一實體頁中之各胞儲存朝向資料之一上部頁之一或多個位元及朝向資料之一下部頁之一或多個位元)。
一程式化操作(例如,一寫入操作)可包含將若干程式化脈衝(例如,16 V至20 V)施加至一選定字線以便將耦合至該選定字線之選定胞之臨限值電壓(Vt)增加至對應於一目標(例如,所要)資料狀態之一所要程式化電壓位準。一感測操作(諸如一讀取或程式化驗證操作)可包含感測耦合至一選定胞之一感測線之一電壓及/或電流改變以便判定選定胞之資料狀態。
在本發明之若干實施例中,且如圖1中展示,記憶體胞之一頁可包括若干實體區段122-0、122-1、…、122-S (例如,記憶體胞之子集)。胞之各實體區段122-0、122-1、…、122-S可儲存資料之若干邏輯區段(例如,資料字)。另外,資料之各邏輯區段可對應於資料之一特定頁之一部分。作為一實例,儲存於一特定實體區段中之資料之一第一邏輯區段可對應於對應於資料之一第一頁之一邏輯區段,且儲存於該特定實體區段中之資料之一第二邏輯區段可對應於資料之一第二頁。各實體區段122-0、122-1、…、122-S可儲存系統及/或使用者資料及/或可包含附加項資料,諸如錯誤修正碼(ECC)資料、邏輯區塊位址(LBA)資料及復現錯誤資料。
邏輯區塊定址係可由一主機用於識別資料之一邏輯區段之一方案。舉例而言,各邏輯區段可對應於一唯一邏輯區塊位址(LBA)。另外,一LBA亦可對應於(例如,動態映射至)一實體位址。資料之一邏輯區段可係資料之若干位元組(例如,256個位元組、512個位元組或1024個位元組)。然而,實施例不限於此等實例。
應注意,實體區塊116-0、116-1、…、116-B、列120-0、120-1、…、120-R、區段122-0、122-1、…、122-S及頁之其他組態係可行的。舉例而言,實體區塊116-0、116-1、…、116-B之列120-0、120-1、…、120-R可各儲存對應於可包含(例如)資料之多於或少於512個位元組之一單一邏輯區段之資料。
圖2繪示根據本發明之若干實施例之一機率資料結構202之一方塊圖。機率資料結構202可係(例如)基於可用於前瞻地判定是否對儲存於記憶體中之資料之一子集採取一修正動作之一計數型布隆篩選器(例如,其之一經修改版本),如本文中將進一步描述。
諸如一計數型布隆篩選器之一機率資料結構可包含若干計數器(例如,圖2中繪示之計數器232)。舉例而言,一計數型布隆篩選器可包含M個d位元遞增/遞減計數器,其中M係計數器之數量且d係各各自計數器之位元之數量。因而,可藉由M×d給定計數型布隆篩選器之大小。當計數型布隆篩選器係空的時,各計數器(例如,各計數器之值)設定為0。雖然在圖2中繪示之實例包含16個計數器(例如,0至15),但本發明之實施例不限於特定數量之計數器。
計數型布隆篩選器可進一步包含若干(例如,K個)不同雜湊函數,該等雜湊函數之各者可較佳使用一均勻隨機分佈將一輸入(例如,主體)元素雜湊(例如,映射)至計數器之一者。舉例而言,可根據K個雜湊函數之各者處理輸入元素以判定元素經映射至之對應K個計數器,且可相應地更新此等計數器(例如,此等計數器之值)。當一計數器之值達到一特定臨限值時,計數器可重設為0。
作為一實例,圖2展示具有若干雜湊函數230-1、230-2、…、230-K (例如,H1 、H2 、…、HK )之機率資料結構(例如,計數型布隆篩選器) 202。在圖2中繪示之實例中,一元素234 (例如,X)經展示為由計數型布隆篩選器)202處理(例如,通過計數型布隆篩選器202)以產生各自雜湊輸出(例如,H1 (X)、H2 (X)、…、HK (X))。舉例而言,如由雜湊函數230-1處理之元素234經指示為H1 (X)且對應於計數型布隆篩選器202之計數器232之計數器7,該計數器7經展示為被更新至8之一值。此外,如由雜湊函數230-2處理之元素234經指示為H2 (X)且對應於計數器232之計數器14,該計數器14經展示為被更新至2之一值。此外,如由雜湊函數230-K處理之元素234經指示為HK (X)且對應於計數器232之計數器1,該計數器1經展示為被更新至12之一值。在若干實施例中,雜湊函數230-1、230-2、…、230-K可基於二進位運算(諸如XOR運算、SHIFT運算等)而產生其等各自輸出,此可使計數型布隆篩選器202之硬體及/或韌體實施方案快速及/或直觀。
因而,計數型布隆篩選器202可用於擷取一特定元素出現之頻率(例如,元素被輸入至計數型布隆篩選器202中且由計數型布隆篩選器202處理之頻率)。相比之下,一標準布隆篩選器可簡單用於指示元素包含在一特定元素集中或自一特定元素集排除(例如,檢查一元素是否係該集之一成員)。
應注意,在一些例項中,雜湊函數230-1、230-2、…、230-K之輸出可針對不同輸入元素重疊,此可導致假陽性及/或假陰性錯誤(例如,一元素經指示為比其實際更頻率或更不頻繁地出現)。然而,可基於用於M、d及K之數量而減少(例如,最小化或最佳化)此等錯誤。舉例而言,在其中計數型布隆篩選器202包含兩個雜湊函數及1024個8位元計數器之實施例中(例如,在其中M、d及K分別為1024、8及2之實施例中)可減少(例如,最小化)此等誤差。在此等實施例中,計數型布隆篩選器202之記憶體部分之大小(例如,不包含兩個雜湊函數)將係1千位元組(kB)。然而,本發明之實施例不限於此等實施例。
圖3係根據本發明之若干實施例之包含呈一記憶體裝置344之形式之一設備之一計算系統304之一功能方塊圖。如本文中使用,一「設備」可指(但不限於)各種結構或結構之組合之任一者,諸如(例如)一電路、一晶粒或若干晶粒、一模組或若干模組、一裝置或若干裝置或一系統或若干系統。
記憶體裝置344可係(例如)一固態磁碟(SSD)。在圖3中繪示之實施例中,記憶體裝置344包含一實體主機介面346、若干記憶體350-1、350-2、...、350-N (例如,固態記憶體裝置)及耦合至實體主機介面346及記憶體350-1、350-2、...、350-N之一控制器348 (例如,一SSD控制器)。
記憶體350-1、350-2、...、350-N可包含(例如)若干非揮發性記憶體陣列(例如,非揮發性記憶體胞陣列)。舉例而言,記憶體350-1、350-2、...、350-N可包含類似於先前結合圖1描述之記憶體陣列100之若干記憶體陣列。
實體主機介面346可用於在記憶體裝置344與諸如一主機342之另一裝置之間傳送資訊。主機342可包含一記憶體存取裝置(例如,一處理器)。一般技術者將瞭解,「一處理器」可意指若干處理器,諸如一平行處理系統、若干協同處理器等。例示性主機可包含個人膝上型電壓、桌上型電腦、數位相機、數位記錄及播放裝置、行動電話(諸如智慧型電話)、PDA、記憶卡讀取器、介面集線器及類似者。
實體主機介面346可呈一標準化實體介面之形式。舉例而言,當記憶體裝置344用於計算系統304中之資訊儲存時,實體主機介面346可係一串列進階附接技術(SATA)實體介面、一周邊組件互連快速(PCIe)實體介面或一通用串列匯流排(USB)實體介面以及其他實體連接器及/或介面。然而,一般言之,實體主機介面346可提供用於在記憶體裝置344與具有用於實體主機介面346之相容接受器之一主機(例如,主機342)之間傳遞控制、位址、資訊(例如,資料)及其他信號之一介面。
控制器348可包含(例如)控制電路及/或邏輯(例如,硬體及韌體)。控制器348可與記憶體350-1、350-2、...、350-N包含在相同實體裝置(例如,相同晶粒)上。舉例而言,控制器348可係耦合至包含實體主機介面346及記憶體350-1、350-2、...、350-N之一印刷電路板之一特定應用積體電路(ASIC)。替代地,控制器348可包含在可通信地耦合至包含記憶體350-1、350-2、...、350-N之實體裝置之一單獨實體裝置上。在若干實施例中,控制器348之組件可作為一分佈式控制器而跨多個實體裝置散佈(例如,一些組件與記憶體在相同晶粒上,且一些組件在一不同晶粒、模組或板上)。
控制器348可與記憶體350-1、350-2、...、350-N通信以感測(例如,讀取)、程式化(例如,寫入)及/或擦除資訊以及其他操作。控制器348可具有可係若干積體電路及/或離散組件之電路。在若干實施例中,控制器348中之電路可包含用於控制跨記憶體350-1、350-2、...、350-N之存取之控制電路及/或用於提供主機342與記憶體裝置344之間之一轉譯層之電路。
在若干實施例中,控制器348可使用一機率資料結構(諸如(例如)先前結合圖2描述之機率資料結構(例如,計數型布隆篩選器) 202)來追蹤儲存於記憶體350-1、350-2、...、350-N中之資料之品質之指標(例如,度量)(包含(例如)讀取干擾、磨損均衡及/或熱及冷資料分類以及其他資料品質指標)以前瞻地判定何時可需要對資料採取修正動作。舉例而言,控制器348可將與儲存於記憶體350-1、350-2、...、350-N中之資料之一子集相關聯之資訊輸入至機率資料結構中,且至少部分使用機率資料結構前瞻地判定是否對資料之子集採取一修正動作。舉例而言,控制器348可使用機率資料結構來對經輸入資訊執行一操作,且至少部分基於操作之結果而前瞻地判定是否對資料之子集採取修正動作。如本文中使用,「前瞻地」判定何時可需要採取修正動作及「前瞻地」判定是否採取修正動作可指在可實際需要採取修正動作之前(諸如(例如)在記憶體之一失效實際出現(例如,預期一失效將很快出現)之前)判定可需要採取修正動作及判定是否採取修正動作。
在若干實施例中,機率資料結構可包含於控制器348中。舉例而言,控制器348之DRAM可用於機率資料結構之計數器。
經輸入資訊可對應於先前結合圖2描述之元素234,且可係(例如)與資料之子集相關聯之識別資訊(例如,識別該子集之資訊)。此外,資料之子集可係資料之一區塊(或資料之(若干)其他單元,諸如資料之一區塊或多個區塊之一子集),諸如(例如)已藉由控制器348對其執行一感測(例如,讀取)或程式化(例如,寫入)操作之一區塊(例如,包含對其執行一感測或程式化操作之記憶體胞之一頁之一區塊)。舉例而言,可在藉由控制器348執行之感測或程式化操作之後(例如,回應於藉由控制器348執行之感測或程式化操作),將識別資訊輸入至機率資料結構中。
藉由機率資料結構對經輸入資訊執行之操作可包含藉由機率資料結構之雜湊函數處理經輸入資訊,如先前結合圖2描述。舉例而言,各各自雜湊函數之輸出可對應於機率資料結構之一不同計數器(例如,位置),如先前結合圖2描述,且可相應地更新(例如,增大、減小或重設)此等計數器之各者(例如,此等計數器之各者之各自值)。計數器之各者之各自值在其等經更新之後,可對應於藉由機率資料結構執行之操作之結果。
各各自雜湊函數之輸出所對應之不同計數器之各者經更新(例如,增大、減小或重設)之數量(例如,量)可取決於由機率資料結構追蹤之資料品質指標之(若干)類型。舉例而言,若回應於一感測操作而輸入資訊(例如,若其係對資料之子集執行一感測操作),且機率資料結構正在追蹤讀取干擾,則不同計數器之各者可更新達對其執行感測操作之資料之子集中之頁之數量。然而,本發明之實施例不限於此特定實例。舉例而言,若機率資料結構正在追蹤熱及冷資料分類,則不同計數器之各者可更新達在對資料之子集執行之感測及/或程式化操作期間存取資料之子集之次數。作為一額外實例,若機率資料結構正在追蹤磨損均衡,則不同計數器之各者可更新達對資料之子集執行之程式化及/或擦除循環之數量。
此程序可針對後續經輸入資訊(例如,在記憶體裝置344之操作期間執行之後續感測操作)繼續,直至由機率資料結構執行之操作之結果(例如,經更新計數器之值)滿足或超過一特定臨限值。臨限值可係一固定臨限值,或其可係一可調整(例如,可程式化及/或可改變)臨限值。作為一實例,若機率資料結構正在追蹤讀取干擾,則機率資料結構中之臨限值可小於或等於(2^d)–1,其中d係各各自計數器之位元之數量。然而,本發明之實施例不限於此特定實例。
在由機率資料結構執行之操作之結果(例如,經更新計數器之值)滿足或超過特定臨限值之後,可將計數器(例如,計數器之值)重設(例如,為零),且可將與資料之子集相關聯之資訊(例如,識別資訊)儲存於(例如,移動至包含於控制器348中之一快取區中。舉例而言,快取區可包含若干計數器,且計數器之一者可與資料之該子集相關聯(例如,指派至資料之該子集)。快取區中之各各自計數器可包含32-d個位元。因而,可藉由L×(32-d)給定快取區之大小,其中L係快取區中之計數器之數量且d係機率資料結構中之各各自計數器之位元之數量。作為一實例,快取區可包含1060個計數器(例如,L可係1060)。在此一實例中,快取區之大小將係近似3.88 kB (包含快取區附加項)。作為一額外實例,在快取區中使用之各計數器之大小可係至少ceil(log2(T–T1)),其中ceil(.)係頂函數,log2(.)係以2為底數之對數函數,T1係機率資料結構中之臨限值,且T係執行一修正動作之臨限值。
在其中包含機率資料結構之控制器之記憶體係二層級式記憶體(例如,包含二層級式記憶體胞)之實施例中,機率資料結構可包含於兩個層級之一第一者(例如,一層級)中,且快取區可包含於兩個層級之一第二者(例如,另一層級)中。在其中包含機率資料結構之控制器之記憶體係三層級式記憶體(例如,包含TLC)之實施例中,機率資料結構可包含於一第一層級及一第二層級(例如,三個層級之兩者)中,且快取區可包含於一第三層級(例如,剩餘層級)中。
在與資料之子集相關聯之資訊儲存於快取區中之後,對資料之子集執行之後續感測操作可不導致與該子集相關聯之資訊被輸入至機率資料結構中。實情係,可在對資料之子集執行之各後續感測操作之後(例如,回應於對資料之子集執行之各後續感測操作),更新快取區中與該子集相關聯之計數器。快取區中之計數器被更新之數量(例如,量)可對應於機率資料結構之計數器被更新之數量。舉例而言,若機率資料結構正在追蹤讀取干擾且機率資料結構之計數器被更新達對其執行感測操作之資料之子集中之頁之數量,則快取區中之計數器亦可被更新達對其執行感測操作之子集中之頁之數量。
此程序可繼續直至快取區中與資料之子集相關聯之計數器之值滿足或超過一特定臨限值。臨限值可係一固定臨限值,或其可係一可調整(例如,可程式化及/或可改變)臨限值。此外,此臨限值可比機率資料結構中使用之臨限值大得多(例如,更大數量級)。因而,機率資料結構可用於動態地篩選儲存於記憶體350-1、350-2、...、350-N中之品質可能正在下降之資料之子集(諸如(例如)可達到一高讀取干擾計數之資料之子集),且接著可使用快取區進一步追蹤資料之此等子集。
在快取區中與資料之子集相關聯之計數器之值滿足或超過快取區臨限值之後,控制器348可對資料之子集採取修正動作,且可將計數器(例如,計數器之值)重設(例如,為零)且可自快取區移除與資料之子集相關聯之資訊。修正動作可係(例如)資料之子集至記憶體350-1、350-2、...、350-N中之一不同位置(例如,一不同實體位置)之一重新定位。舉例而言,資料之子集可經程式化至及/或儲存於記憶體350-1、350-2、...、350-N之一不同頁、區塊或晶粒中。作為一額外實例,在其中記憶體350-1、350-2、...、350-N包含SLC及MLC之實施例中,修正動作可包含將儲存於記憶體350-1、350-2、...、350-N之SLC中之子集之資料程式化至記憶體350-1、350-2、...、350-N之MLC (例如,將SLC資料摺疊至MLC,或反之亦然)。舉例而言,可將SLC資料摺疊至記憶體350-1、350-2、...、350-N中具有MLC組態之另一實體位置,或反之亦然。
在若干實施例(諸如(例如)其中機率資料結構用於追蹤讀取干擾之實施例)中,對資料之子集執行之一程式化操作可導致機率資料結構及/或快取區之一重設。舉例而言,在程式化操作之後(例如,回應於程式化操作),可將與資料之子集相關聯之資訊(例如,識別資訊)輸入至機率資料結構中,且可藉由機率資料結構以類似於本文中先前描述之方式之一方式處理經輸入資訊。然而,取代更新機率資料結構之各各自雜湊函數之輸出所對應之機率資料結構之不同計數器之各者(例如,如回應於一感測操作將出現般),可將不同計數器之各者(例如,不同計數器之各者之值)重設(例如,為零)。此外,若與資料之子集相關聯之資訊儲存於快取區中(例如,若程式化操作在滿足或超過機率資料結構臨限值且將資訊自機率資料結構移動至快取區之後發生),則回應於程式化操作,可重設快取區中與資料之子集相關聯之計數器,且可自快取區移除資訊。
根據本發明使用一機率資料結構來追蹤資料品質指標可使用(例如,消耗)比由追蹤資料品質指標之先前方法(諸如其中指派一不同計數器來追蹤儲存於記憶體中之資料之各各自子集(例如,區塊)之資料品質指標之方法)將使用之控制器348之(例如,控制器348之記憶體之)一顯著更低部分。舉例而言,根據本發明使用一機率資料結構來追蹤資料品質指標可消除如同此等先前方法般將控制器348及/或記憶體350-1、350-2、...、350-N中之一計數器(例如,一專用計數器)指派至各各自子集之需要。
舉例而言,在本文中先前描述之實例中,針對專用於追蹤資料品質指標之總共近似4.88 kB之記憶體,機率資料結構可具有1 kB之一大小,且快取區可具有近似3.88 kB之一大小。相比之下,一先前方法可使用具有將專用於追蹤資料品質指標之20 kB之一大小之一快取區。因而,本發明之實施例可使用比用於追蹤資料品質指標之此等先前方法顯著更少之記憶體,(例如)近似少75%之記憶體。
此外,本發明之實施例可有效及/或準確地(例如,恰如使用顯著更多記憶體之先前方法般有效及/或準確地)追蹤記憶體350-1、350-2、...、350-N中之資料品質指標。舉例而言,如本文中先前描述,機率資料結構之雜湊函數之輸出可針對不同輸入元素重疊,此可導致假陽性及/或假陰性錯誤,此可繼而導致當實際可能不需要修正動作時採取修正動作及/或當實際可能需要修正動作時未採取修正動作。然而,如本文中先前描述,可基於用於機率資料結構中之M、d及K之數量而減少(例如,最小化)此等錯誤。舉例而言,如在結合圖2描述之實例中描述,針對M、d及K分別使用1024、8及2之值可導致近似1.5×10-5 之一錯誤率,相較於一理想、無錯誤系統,該錯誤率可係可忽略的。然而,此僅係一例示性圖解,且本發明之實施例並不如此受限制。
圖3中繪示之實施例可包含未繪示以免使本發明之實施例模糊之額外電路、邏輯及/或組件。舉例而言,記憶體裝置344可包含位址電路以鎖存經由I/O連接器透過I/O電路提供之位址信號。位址信號可由一列解碼器及一行解碼器接收並解碼以存取記憶體350-1、350-2、...、350-N。
圖4繪示根據本發明之若干實施例之用於操作記憶體(諸如(例如)先前結合圖3描述之記憶體350-1、350-2、...、350-N)之一方法406。方法406可由(例如)先前結合圖3描述之控制器348執行。
方法406可用於(例如)追蹤記憶體中之資料品質之指標以前瞻地判定何時可需要對資料採取修正動作。舉例而言,方法406可用於追蹤記憶體中之讀取干擾。然而,本發明之實施例並不如此受限制,且方法406可用於追蹤其他資料品質指標,如本文中先前描述。
在方塊460處,方法406包含判定與儲存於記憶體中之資料之一子集相關聯之識別資訊。資料之子集可係(例如)已對其執行一感測(例如,讀取)操作之資料之一區塊,如本文中先前(例如,結合圖3)描述。即,當已執行一感測操作時,可使用方法406。可藉由(例如)映射與感測操作相關聯之邏輯區塊位址(LBA)(例如,用於識別對其執行感測操作之資料之子集之LBA)而判定識別資訊。
在方塊462處,方法406包含判定與資料之子集相關聯之識別資訊是否儲存於一快取區中。舉例而言,快取區可包含若干計數器,如本文中先前(例如,結合圖3)描述,且判定識別資訊是否儲存於快取區中可包含判定計數器之任一者是否與識別資訊相關聯(例如,經指派至資料之子集)。
若判定與資料之子集相關聯之識別資訊未儲存於快取區中,則在方塊464處可將識別資訊輸入至一機率資料結構中。機率資料結構可係(例如)結合圖2描述之機率資料結構(例如,計數型布隆篩選器) 202。舉例而言,經輸入資訊可對應於先前結合圖2描述之元素234。
在方塊466處,方法406包含使用機率資料結構對經輸入識別資訊執行一操作。操作可包含藉由機率資料結構之雜湊函數處理經輸入資訊,如本文中先前(例如,結合圖2及圖3)描述。
在方塊468處,方法406包含判定操作之結果是否滿足或超過一特定臨限值。操作之結果可對應於在操作期間更新之機率資料結構之計數器之值,如本文中先前(例如,結合圖3)描述。
若判定操作之結果(例如,在操作期間更新之計數器之值)未滿足或超過臨限值,則方法406在方塊472處結束。若判定操作之結果滿足或超過臨限值,則在方塊470處將識別資訊儲存於快取區中(例如,可將快取區之計數器之一者指派至識別資訊),且可重設在操作期間更新之機率資料結構之計數器之值。
若在方塊462處判定與資料之子集相關聯之識別資訊儲存於快取區中(例如,已將識別資訊指派至快取區之計數器之一者),則在方塊474處更新該計數器之值。計數器被更新之數量(例如,量)可對應於機率資料結構之計數器被更新之數量,如本文中先前(例如,結合圖3)描述。
在方塊476處,方法406包含判定在方塊474處更新之快取區之計數器之值是否滿足或超過一特定臨限值。此臨限值可比在機率資料結構中使用之臨限值大得多,如本文中先前(例如,結合圖3)描述。
若判定快取區之計數器之值未滿足或超過臨限值,則方法406在方塊480處結束。若判定快取區之計數器之值滿足或超過臨限值,則在方塊478處對資料之子集採取一修正動作,且自快取區移除與資料之子集相關聯之識別資訊。修正動作可係(例如)資料之子集至記憶體中之一不同位置之一重新定位及/或可包含將儲存於記憶體之SLC中之子集之資料程式化至記憶體之MLC (或反之亦然),如本文中先前(例如,結合圖3)描述。
圖5繪示根據本發明之若干實施例之用於操作記憶體(諸如(例如)先前結合圖3描述之記憶體350-1、350-2、...、350-N)之一方法508。方法508可由(例如)先前結合圖3描述之控制器348執行。
方法508可用於(例如)追蹤記憶體中之資料品質之指標以前瞻地判定何時可需要對資料採取修正動作。舉例而言,方法508可用於追蹤記憶體中之讀取干擾。然而,本發明之實施例並不如此受限制,且方法508可用於追蹤其他資料品質指標,如本文中先前描述。
此外,在若干實施例中,可僅在受對資料之一子集(例如,區塊)執行之一程式化操作影響之頁之數量滿足或超過一特定臨限值之情況下,使用(例如,觸發)方法508。舉例而言,在此等實施例中,若此臨限值係100,且在一程式化操作期間僅程式化50頁,則將不觸發方法508。另外或替代地,在若干實施例中,可僅在對資料之一子集執行一特定類型或若干類型之程式化操作之情況下,使用(例如,觸發)方法508。舉例而言,在此等實施例中,可僅在程式化操作將資料重新程式化至子集之一部分(例如,將資料程式化至先前已使資料程式化至其之子集之一部分)之情況下,觸發方法508。
在方塊582處,方法508包含判定與儲存於記憶體中之資料之一子集相關聯之識別資訊。資料之子集可係(例如)已對其執行一程式化(例如,寫入)操作之資料之一區塊,如本文中先前(例如,結合圖3)描述。即,當已執行一程式化操作時,可使用方法508。可藉由(例如)映射與程式化操作相關聯之邏輯區塊位址(LBA)(例如,用於識別對其執行程式化操作之資料之子集之LBA)而判定識別資訊。
在方塊584處,方法508包含判定與資料之子集相關聯之識別資訊是否儲存於一快取區中。舉例而言,快取區可包含若干計數器,如本文中先前(例如,結合圖3)描述,且判定識別資訊是否儲存於快取區中可包含判定計數器之任一者是否與識別資訊相關聯(例如,經指派至資料之子集)。
若判定與資料之子集相關聯之識別資訊未儲存於快取區中,則在方塊586處可將識別資訊輸入至一機率資料結構中。機率資料結構可係(例如)結合圖2描述之機率資料結構(例如,計數型布隆篩選器) 202。舉例而言,經輸入資訊可對應於先前結合圖2描述之元素234。
在方塊588處,方法508包含使用機率資料結構對經輸入識別資訊執行一操作。操作可包含藉由機率資料結構之雜湊函數處理經輸入資訊,如本文中先前(例如,結合圖2及圖3)描述。然而,取代更新機率資料結構之各各自雜湊函數之輸出所對應之機率資料結構之不同計數器之各者之操作(例如,如諸如(例如)在結合圖4描述之方法406之方塊466處回應於一感測操作將出現般),操作可將不同計數器之各者(例如,不同計數器之各者之值)重設(例如,為零)。即,方法508包含在方塊590處重設機率資料結構之此等計數器。
若在方塊584處判定與資料之子集相關聯之識別資訊儲存於快取區中,則在方塊592處自快取區移除識別資訊。舉例而言,可重設快取區中與識別資訊相關聯之計數器。
雖然已在本文中繪示並描述特定實施例,但一般技術者將暸解,經計算以達成相同結果之一配置可取代展示之特定實施例。本發明旨在涵蓋本發明之若干實施例之調適或變動。應瞭解,已按一闡釋性方式且非一限制性方式做出上述描述。一般技術者在檢視上述描述後將明白上述實施例之組合及在本文中未具體描述之其他實施例。本發明之若干實施例之範疇包含其中使用上述結構及方法之其他應用。因此,應參考隨附發明申請專利範圍以及此等發明申請專利範圍所授權之等效物之全範圍判定本發明之若干實施例之範疇。
在前述實施方式中,出於簡化本發明之目的,將一些特徵一起集中於一單一實施例中。本發明之此方法不應解釋為反映本發明之所揭示實施例必須使用多於每一技術方案中明確敘述之特徵之一意圖。實情係,如以下發明申請專利範圍反映,本發明標的物在於少於一單一所揭示實施例之所有特徵。因此,特此將以下發明申請專利範圍併入實施方式中,其中每一技術方案獨立地作為一單獨實施例。
100‧‧‧記憶體陣列
116-0‧‧‧實體區塊
116-1‧‧‧實體區塊
116-B‧‧‧實體區塊
120-0‧‧‧實體區塊之列
120-1‧‧‧實體區塊之列
120-R‧‧‧實體區塊之列
122-0‧‧‧實體區段
122-1‧‧‧實體區段
122-S‧‧‧實體區段
202‧‧‧機率資料結構/計數型布隆篩選器
230-1‧‧‧雜湊函數
230-2‧‧‧雜湊函數
230-K‧‧‧雜湊函數
232‧‧‧計數器
234‧‧‧元素
304‧‧‧計算系統
342‧‧‧主機
344‧‧‧記憶體裝置
346‧‧‧實體主機介面
348‧‧‧控制器
350-1‧‧‧記憶體
350-2‧‧‧記憶體
350-N‧‧‧記憶體
406‧‧‧方法
460‧‧‧方塊
462‧‧‧方塊
464‧‧‧方塊
466‧‧‧方塊
468‧‧‧方塊
470‧‧‧方塊
472‧‧‧方塊
474‧‧‧方塊
476‧‧‧方塊
478‧‧‧方塊
480‧‧‧方塊
508‧‧‧方法
582‧‧‧方塊
584‧‧‧方塊
586‧‧‧方塊
588‧‧‧方塊
590‧‧‧方塊
592‧‧‧方塊
圖1繪示根據本發明之若干實施例之具有若干實體區塊之一記憶體陣列之一部分之一圖式。
圖2繪示根據本發明之若干實施例之一機率資料結構之一方塊圖。
圖3係根據本發明之若干實施例之包含呈一記憶體裝置之形式之一設備之一計算系統之一功能方塊圖。
圖4繪示根據本發明之若干實施例之用於操作記憶體之一方法。
圖5繪示根據本發明之若干實施例之用於操作記憶體之一方法。
Claims (20)
- 一種設備,其包括: 一第一記憶體; 一第二記憶體,其中該第二記憶體係具有一機率資料結構之一多位階記憶體;及 電路,其經組態以: 將與儲存於該第一記憶體中之資料之一子集相關聯之識別資訊輸入至該機率資料結構中;及 至少部分使用該機率資料結構前瞻地判定是否對儲存於資料之該子集採取一修正動作。
- 如請求項1之設備,其中: 該多位階記憶體包含一快取區;及 該電路經組態以: 判定是否與儲存於該第一記憶體中之資料之該子集相關聯之該識別資訊儲存於該快取區中;及 在判定該識別資訊未儲存於該快取區中之後,將與儲存於該第一記憶體中之資料之該子集相關聯之該識別資訊輸入至該機率資料結構中。
- 如請求項1之設備,其中: 該多位階記憶體係一二層級式記憶體;及 該機率資料結構係包含於該二層級式記憶體之一層級中。
- 如請求項1之設備,其中: 該多位階記憶體係一三層級式記憶體;及 該機率資料結構係包含於該三層級式記憶體之二層級中。
- 如請求項1之設備,其中該電路經組態以藉由以下而前瞻地判定是否對儲存於該第一記憶體中之資料之該子集採取一修正動作: 使用該機率資料結構對與資料之該子集相關聯之該經輸入識別資訊執行一操作;及 基於該操作之一結果前瞻地判定是否採取該修正動作。
- 如請求項5之設備,其中該操作包含: 藉由該機率資料結構之若干雜湊函數處理該經輸入識別資訊,其中每一個別雜湊函數之一輸出對應於該機率資料結構之一不同計數器; 若在該識別資訊輸入至該機率資料結構中之前對資料之該子集執行一感測操作,更新每一個別雜湊函數之該輸出所對應之該等不同計數器之各者;及 若在該識別資訊輸入至該機率資料結構中之前對資料之該子集執行一程式化操作,重設每一個別雜湊函數之該輸出所對應之該等不同計數器之各者。
- 一種用於操作記憶體之方法,其包括: 判定是否與儲存於一記憶體中之資料之一子集相關聯之識別資訊儲存於一快取區中,其中該快取區係包含於一二層級式記憶體之一第一層級中; 在判定該識別資訊未儲存於該快取區中之後,將與資料之該子集相關聯之該識別資訊輸入至一機率資料結構中,其中該機率資料結構係包含於一二層級式記憶體之一第二層級中; 使用該機率資料結構對該經輸入識別資訊執行一操作;及 至少部分基於該操作之一結果而前瞻地判定是否對資料之該子集採取一修正動作。
- 如請求項7之方法,其中該操作包含: 藉由該機率資料結構之若干雜湊函數處理該經輸入識別資訊,其中每一個別雜湊函數之一輸出對應於該機率資料結構之一不同計數器;及 更新每一個別雜湊函數之該輸出所對應之該等不同計數器之各者。
- 如請求項8之方法,其中該操作包含更新該等不同計數器之各者達對其執行一感測操作之資料之該子集中之頁之一數量。
- 如請求項8之方法,其中該操作包含更新該等不同計數器之各者達在對資料之該子集之至少一部分執行之一感測或程式化操作期間存取資料之該子集之次數之一數量。
- 如請求項8之方法,其中該操作包含更新該等不同計數器之各者達對資料之該子集之至少一部分執行之程式化及/或擦除循環之一數量。
- 如請求項8之方法,其中該操作之該結果對應於在已更新該等不同計數器之後之該等不同計數器之各者之一值。
- 如請求項8之方法,其中更新該等不同計數器之各者包含增加該等不同計數器之各者之一值。
- 如請求項8之方法,其中更新該等不同計數器之各者包含重設該等不同計數器之各者之一值。
- 如請求項7之方法,其中該二層級式記憶體包含二位階記憶體胞。
- 一種設備,其包括: 一第一記憶體; 一第二記憶體,其中該第二記憶體係一三層級式記憶體,其中: 該三層級式記憶體之一第一層級與一第二層級包含一機率資料結構;及 該三層級式記憶體之一第三層級包含一快取區;及 電路,其經組態以: 判定與儲存於該第一記憶體中之資料之一子集相關聯之識別資訊是否儲存於該快取區中; 在判定該識別資訊未儲存於該快取區中之後,將與資料之該子集相關聯之該識別資訊輸入至該機率資料結構中; 使用該機率資料結構對該經輸入識別資訊執行一操作;及 至少部分基於該操作之一結果而前瞻地判定是否對資料之該子集採取一修正動作。
- 如請求項16之設備,其中該第二記憶體係包含於該設備之一控制器中。
- 如請求項16之設備,其中該第二記憶體係一動態隨機存取記憶體(DRAM)。
- 如請求項16之設備,其中該第二記憶體及該電路係包含於該設備之一相同實體裝置上。
- 如請求項16之設備,其中該三層級式記憶體包含三位階記憶體胞。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/229,301 | 2016-08-05 | ||
US15/229,301 US10275541B2 (en) | 2016-08-05 | 2016-08-05 | Proactive corrective actions in memory based on a probabilistic data structure |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201939279A true TW201939279A (zh) | 2019-10-01 |
TWI719434B TWI719434B (zh) | 2021-02-21 |
Family
ID=61069408
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108110196A TWI719434B (zh) | 2016-08-05 | 2017-08-04 | 用以基於機率資料結構之前瞻修正動作之記憶體設備及操作該設備之方法 |
TW106126460A TWI658358B (zh) | 2016-08-05 | 2017-08-04 | 記憶體中基於機率資料結構之前瞻修正動作 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106126460A TWI658358B (zh) | 2016-08-05 | 2017-08-04 | 記憶體中基於機率資料結構之前瞻修正動作 |
Country Status (6)
Country | Link |
---|---|
US (3) | US10275541B2 (zh) |
EP (1) | EP3494478A4 (zh) |
KR (1) | KR102174293B1 (zh) |
CN (1) | CN109564532B (zh) |
TW (2) | TWI719434B (zh) |
WO (1) | WO2018026570A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10715619B2 (en) * | 2017-10-16 | 2020-07-14 | Red Hat, Inc. | Cache management using a probabilistic data structure |
US10725699B2 (en) | 2017-12-08 | 2020-07-28 | Sandisk Technologies Llc | Microcontroller instruction memory architecture for non-volatile memory |
US10824376B2 (en) | 2017-12-08 | 2020-11-03 | Sandisk Technologies Llc | Microcontroller architecture for non-volatile memory |
US10777240B1 (en) | 2019-03-07 | 2020-09-15 | Sandisk Technologies Llc | Efficient control of memory core circuits |
CN110706733A (zh) * | 2019-08-13 | 2020-01-17 | 浙江工商大学 | 一种dram内存行扰动错误解决方法 |
US11080205B2 (en) * | 2019-08-29 | 2021-08-03 | Micron Technology, Inc. | Classifying access frequency of a memory sub-system component |
US11138107B2 (en) * | 2020-02-20 | 2021-10-05 | Micron Technology, Inc. | Modifying subsets of memory bank operating parameters |
US11507498B2 (en) | 2020-03-05 | 2022-11-22 | Sandisk Technologies Llc | Pre-computation of memory core control signals |
CN112532598B (zh) * | 2020-11-19 | 2021-10-26 | 南京大学 | 一种用于实时入侵检测***的过滤方法 |
US11409599B2 (en) | 2020-12-04 | 2022-08-09 | Micron Technology, Inc. | Managing probabilistic data integrity scans in workloads with localized read patterns |
US11699498B2 (en) | 2020-12-04 | 2023-07-11 | Micron Technology, Inc. | Managing probabilistic data integrity scan intervals |
US11609857B2 (en) * | 2020-12-04 | 2023-03-21 | Micron Technology, Inc. | Identification and caching of frequent read disturb aggressors |
US11467737B2 (en) | 2020-12-04 | 2022-10-11 | Micron Technology, Inc. | Reducing probabilistic data integrity scan collisions |
CN112597193B (zh) * | 2020-12-22 | 2021-10-22 | 北京九章云极科技有限公司 | 一种数据处理方法和数据处理*** |
US11704027B2 (en) | 2021-11-12 | 2023-07-18 | Western Digital Technologies, Inc. | Optimizing recovery of recurrent blocks using bloom filter |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7424498B1 (en) * | 2003-06-30 | 2008-09-09 | Data Domain, Inc. | Probabilistic summary data structure based encoding for garbage collection |
US7930547B2 (en) | 2007-06-15 | 2011-04-19 | Alcatel-Lucent Usa Inc. | High accuracy bloom filter using partitioned hashing |
US8060719B2 (en) * | 2008-05-28 | 2011-11-15 | Micron Technology, Inc. | Hybrid memory management |
US9092447B1 (en) * | 2008-10-20 | 2015-07-28 | Jpmorgan Chase Bank, N.A. | Method and system for duplicate detection |
US8290972B1 (en) * | 2009-04-29 | 2012-10-16 | Netapp, Inc. | System and method for storing and accessing data using a plurality of probabilistic data structures |
US8352490B2 (en) * | 2009-10-22 | 2013-01-08 | Vmware, Inc. | Method and system for locating update operations in a virtual machine disk image |
US8533564B2 (en) * | 2009-12-23 | 2013-09-10 | Sandisk Technologies Inc. | System and method of error correction of control data at a memory device |
US8451664B2 (en) * | 2010-05-12 | 2013-05-28 | Micron Technology, Inc. | Determining and using soft data in memory devices and systems |
US8578049B2 (en) * | 2010-10-04 | 2013-11-05 | Futurewei Technologies, Inc. | Content router forwarding plane architecture |
US9176864B2 (en) * | 2011-05-17 | 2015-11-03 | SanDisk Technologies, Inc. | Non-volatile memory and method having block management with hot/cold data sorting |
GB2493243B (en) * | 2011-07-26 | 2014-04-23 | Ibm | Method and storage controller for determining an access characteristic of a data entity |
US20130031431A1 (en) | 2011-07-28 | 2013-01-31 | Eran Sharon | Post-Write Read in Non-Volatile Memories Using Comparison of Data as Written in Binary and Multi-State Formats |
US8726104B2 (en) * | 2011-07-28 | 2014-05-13 | Sandisk Technologies Inc. | Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages |
US9519614B2 (en) * | 2012-01-10 | 2016-12-13 | Verizon Digital Media Services Inc. | Multi-layer multi-hit caching for long tail content |
US9710397B2 (en) * | 2012-02-16 | 2017-07-18 | Apple Inc. | Data migration for composite non-volatile storage device |
US9465826B2 (en) | 2012-11-27 | 2016-10-11 | Hewlett Packard Enterprise Development Lp | Estimating unique entry counts using a counting bloom filter |
US9164832B2 (en) * | 2013-02-27 | 2015-10-20 | Seagate Technology Llc | ECC management for variable resistance memory cells |
CN105122745B (zh) * | 2013-02-27 | 2019-06-28 | 马维尔国际贸易有限公司 | 用于网络设备的高效最长前缀匹配技术 |
US9384126B1 (en) * | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9274967B2 (en) * | 2013-08-07 | 2016-03-01 | Nimble Storage, Inc. | FIFO cache simulation using a bloom filter ring |
KR102042859B1 (ko) * | 2013-10-14 | 2019-11-08 | 에스케이하이닉스 주식회사 | 반도체 장치 및 그 동작 방법 |
US9601194B2 (en) * | 2014-02-28 | 2017-03-21 | Crossbar, Inc. | NAND array comprising parallel transistor and two-terminal switching device |
US20150270015A1 (en) | 2014-03-19 | 2015-09-24 | Micron Technology, Inc. | Memory mapping |
KR102147916B1 (ko) | 2014-04-14 | 2020-08-26 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 동작 방법 |
US10645002B2 (en) * | 2014-06-20 | 2020-05-05 | Hewlett Packard Enterprise Development Lp | System, apparatus and method for managing redundancy elimination in packet storage during observation of data movement |
US20150378807A1 (en) * | 2014-06-30 | 2015-12-31 | International Business Machines Corporation | Predicting process failures using analytics |
KR20160042224A (ko) * | 2014-10-07 | 2016-04-19 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US9639280B2 (en) * | 2015-06-18 | 2017-05-02 | Advanced Micro Devices, Inc. | Ordering memory commands in a computer system |
US10263784B2 (en) * | 2015-09-09 | 2019-04-16 | Amazon Technologies, Inc. | Signature verification for data set components using probabilistic data structures |
US10693786B2 (en) * | 2015-11-26 | 2020-06-23 | International Business Machines Corporation | Efficient size reduction of a bloom filter |
US10198325B2 (en) * | 2016-05-24 | 2019-02-05 | Mastercard International Incorporated | Method and system for desynchronization recovery for permissioned blockchains using bloom filters |
-
2016
- 2016-08-05 US US15/229,301 patent/US10275541B2/en active Active
-
2017
- 2017-07-25 KR KR1020197005944A patent/KR102174293B1/ko active IP Right Grant
- 2017-07-25 WO PCT/US2017/043594 patent/WO2018026570A1/en unknown
- 2017-07-25 EP EP17837401.3A patent/EP3494478A4/en not_active Withdrawn
- 2017-07-25 CN CN201780048451.4A patent/CN109564532B/zh active Active
- 2017-08-04 TW TW108110196A patent/TWI719434B/zh active
- 2017-08-04 TW TW106126460A patent/TWI658358B/zh active
-
2019
- 2019-03-18 US US16/356,759 patent/US10929474B2/en active Active
-
2021
- 2021-02-15 US US17/175,932 patent/US11586679B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TW201816609A (zh) | 2018-05-01 |
US10929474B2 (en) | 2021-02-23 |
US20180039535A1 (en) | 2018-02-08 |
WO2018026570A1 (en) | 2018-02-08 |
US11586679B2 (en) | 2023-02-21 |
EP3494478A4 (en) | 2020-04-01 |
EP3494478A1 (en) | 2019-06-12 |
TWI719434B (zh) | 2021-02-21 |
US20210165832A1 (en) | 2021-06-03 |
KR20190027388A (ko) | 2019-03-14 |
KR102174293B1 (ko) | 2020-11-05 |
CN109564532B (zh) | 2022-07-22 |
TWI658358B (zh) | 2019-05-01 |
US10275541B2 (en) | 2019-04-30 |
US20190213218A1 (en) | 2019-07-11 |
CN109564532A (zh) | 2019-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI658358B (zh) | 記憶體中基於機率資料結構之前瞻修正動作 | |
KR102214947B1 (ko) | 온도-기반 메모리 동작 | |
US9552888B2 (en) | Methods, devices, and systems for data sensing | |
US9646709B2 (en) | Proxy wordline stress for read disturb detection | |
US8417879B2 (en) | Method for suppressing errors, and associated memory device and controller thereof | |
US9582224B2 (en) | Memory control circuit unit, memory storage apparatus and data accessing method | |
JP2010530595A (ja) | セル当たりのビットの変更を用いたメモリのプログラミング | |
US10503433B2 (en) | Memory management method, memory control circuit unit and memory storage device | |
CN113302699B (zh) | 存储器中的单调计数器 | |
CN116529693A (zh) | 加电时的媒体管理 | |
JP2023025687A (ja) | メモリ装置およびその動作方法 | |
KR102460860B1 (ko) | 센티넬 셀을 기초로 한 데이터 무결성 결정 | |
US20230187002A1 (en) | Storage controller using history data, method of operating the same, and method of operating storage device including the same | |
US20220027277A1 (en) | Tokens to indicate completion of data storage | |
CN115938440A (zh) | 确定错误计数的存储控制器、操作其的方法以及操作包括其的存储设备的方法 | |
US10886002B1 (en) | NAND field use erase plus defect detections | |
KR20160129418A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US20220310168A1 (en) | Operating method of storage controller using count value of direct memory access, storage device including storage controller, and operating method of storage device |