TWI763050B - 自適應損耗平衡方法及演算法與相關記憶體裝置及設備 - Google Patents
自適應損耗平衡方法及演算法與相關記憶體裝置及設備 Download PDFInfo
- Publication number
- TWI763050B TWI763050B TW109132921A TW109132921A TWI763050B TW I763050 B TWI763050 B TW I763050B TW 109132921 A TW109132921 A TW 109132921A TW 109132921 A TW109132921 A TW 109132921A TW I763050 B TWI763050 B TW I763050B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- tables
- physical
- segments
- data
- Prior art date
Links
Images
Classifications
-
- 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
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
本發明係關於一種用於在具有兩部分資料之記憶體中進行資料重新定位之方法。一實施例包含:一記憶體,其具有複數個記憶體胞實體區塊;及一第一部分及第二部分資料,其等分別具有與其相關聯之第一及第二數目個邏輯區塊位址。該複數個胞實體區塊之兩者中未儲存有資料。在該方法中,將與該第一數目個邏輯區塊位址之一者相關聯之該第一部分之該資料重新定位至其中未儲存有資料之該兩個胞實體區塊之一者,且將與該第二數目個邏輯區塊位址之一者相關聯之該第二部分之該資料重新定位至其中未儲存有資料之該兩個胞實體區塊之另一者。
Description
本發明大體上係關於半導體記憶體及方法,且更特定言之係關於一種自適應損耗平衡方法及演算法。
如在本技術領域中所熟知,記憶體裝置通常被提供為電腦或其他電子裝置中之內部半導體積體電路及/或外部可移除裝置。存在許多不同類型之記憶體裝置,包含揮發性及非揮發性記憶體。揮發性記憶體可需要電力來維持其資料,且可包含隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)及同步動態隨機存取記憶體(SDRAM)等等。非揮發性記憶體可在未被供電時保留經儲存資料,且可包含儲存記憶體,諸如NAND快閃記憶體、NOR快閃記憶體、相變隨機存取記憶體(PCRAM)、電阻式隨機存取記憶體(RRAM)及磁性隨機存取記憶體(MRAM)等等。
「主記憶體」係在此項技術中用於描述儲存可由一處理器直接存取及操縱之資料之記憶體的一術語。一主記憶體之一實例係一DRAM。一主記憶體提供資料之主要儲存且可為揮發性的或非揮發性的;例如,作為主記憶體管理之一非揮發性RAM可為被稱為NV-DIMM之一非揮發性雙列直插式記憶體模組。
輔助儲存器可用於提供資料之輔助儲存且可能無法藉由處理器直接存取。
記憶體裝置可組合在一起以形成諸如一固態硬碟(SSD)之一記憶體系統之一儲存容量。一SSD可包含非揮發性記憶體(例如,NAND快閃記憶體及/或NOR快閃記憶體),及/或可包含揮發性記憶體(例如,DRAM及/或SRAM),以及各種其他類型之非揮發性及揮發性記憶體。
一SSD可具有處置一本端主要儲存器以使SSD能夠針對輔助儲存器執行相對複雜的記憶體管理操作之一控制器。然而,與大多數輔助儲存器相比,一控制器之本端主要儲存器有限的且相對昂貴的資源。
一控制器之本端主要儲存器之大部分可專用於儲存邏輯至實體表,該等邏輯至實體表針對邏輯位址儲存邏輯位址至實體位址轉譯。
一邏輯位址係從一執行應用程式之視角來看,記憶體單元(即,一記憶體胞、一資料區段(data sector)、資料之一區塊等)看似駐留之處之位址,且可為由一主機裝置或一處理器產生之一位址。相反地,一實體位址係使資料匯流排能夠存取實體記憶體之一特定單元(諸如一記憶體胞、一資料區段或資料之一區塊)之一記憶體位址。
在此內容背景中,記憶體裝置經組態以容許將當前儲存於記憶體之一個實體位置中之資料重新定位至記憶體之另一實體位置係非常重要的。此操作被稱為損耗平衡,且為一種對於延長否則受過多次寫入循環影響因此致使可個別寫入片段不可靠之記憶體裝置之使用壽命有用的技術。
本發明之目標係揭示一種改良迄今為止採用之已知損耗平
衡解決方案之特徵的自適應損耗平衡方法及演算法。
根據本發明之一或多項實施例,提供一種用於一受管理記憶體裝置之自適應損耗平衡之方法。該方法包括:藉由一第一階表(first level table)對複數個第二階表進行定址,該複數個第二階表包含至一受管理記憶體裝置之指標;偵測該複數個第二階表之一第一者之一片段之更新階段的一數目;及基於更新階段之該數目滿足一定義臨限值而將該複數個第二階表之該第一者移位至該複數個第二階表之一第二者之一位置。
根據本發明之一或多項實施例,提供一種記憶體裝置。該記憶體裝置包括一邏輯記憶體位址與一實體記憶體位址之間之一對應表。該表包括:一第一階表,其對複數個第二階表進行定址,該複數個第二階表包含至該記憶體裝置之指標;及該複數個第二階表之一者中之複數個片段。該複數個片段之各者包括用於偵測該複數個片段之一對應者之更新階段之一數目的一計數器。該記憶體裝置具有不同於其實體組織之一邏輯組織。
根據本發明之一或多項實施例,提供一種設備。該設備包括:一受管理記憶體裝置;及一主機裝置,其耦合至該受管理記憶體裝置。該主機裝置包括一記憶體結構,該記憶體結構具有不同之邏輯及實體組織,且包括邏輯記憶體位址與實體記憶體位址之間之一對應表。該記憶體結構包括:一第一階表,其對複數個第二階表進行定址,該複數個第二階表包含至該受管理記憶體裝置中之實體位址之指標;及該複數個第二階表中之複數個片段,該複數個片段之各者包括用於偵測該複數個片段之對應者之更新階段之一數目的一片段計數器。
101:記憶體陣列
103-0至103-R:列
105-0至105-S:實體區段
107-0至107-B:實體區塊
200:電子系統或運算系統
202:主機/外部主機裝置或設備
204:介面
206:記憶體裝置
210:第一記憶體陣列/記憶體
212-1至212-N:第二記憶體陣列/記憶體
214:電路
400:矩陣
400i:片段
600:循環清單
700:表
710:框/熱表
720:框/冷表
730:框/表
801:步驟
802:測試步驟
803:步驟
804:測試步驟
805:步驟
806:步驟
807:步驟
808:步驟
809:步驟
810:步驟
901:步驟
902:步驟
903:步驟
904:步驟
905:步驟
906:步驟
907:步驟
908:步驟
909:步驟
-圖1繪示根據本發明之一實施例之具有複數個實體區塊之一記憶體陣列之一部分之一圖;-圖2係根據本發明之一實施例之包含一主機及呈一記憶體裝置之形式之一設備的一運算系統之一方塊圖;-圖3展示根據本發明之實施例之一邏輯至實體(L2P)表架構之一示意圖;-圖4示意性地展示根據本發明之實施例之一第二階表(SLT)結構;-圖5展示根據本發明之實施例之一L2P表片段之結構之一更詳細視圖;-圖6展示根據本發明之實施例之L2P表之實體記憶體位置之一循環清單;-圖7係根據本發明之實施例之結合一新提出的表交換機制展示圖6之清單的另一示意圖;-圖8展示實施本發明之一方法之一演算法之一流程圖;-圖9展示根據本發明之實施例之關於用於管理一自適應靜態臨限值損耗平衡之一方法的另一演算法之一流程圖;-圖10(包括圖10A及圖10B)展示根據本發明之實施例之圖8及圖9之自動調整演算法如何在具有不同熱度(hotness)特性之兩個工作負荷下操作之一實例;-圖11展示根據本發明之實施例之關於在相同實體表位址(PTA)上之一SLT表之三個後續寫入循環的一實施方案實例;
-圖12(包括圖12A及圖12B)展示根據本發明之實施例之具有及沒有L2P片段擾亂之模擬之一結果。
本發明係關於用於在具有兩部分資料之記憶體中進行資料重新定位之設備、方法及系統。一實施例包含:一記憶體,其具有複數個記憶體胞實體區塊;及一第一部分及第二部分資料,其等分別具有與其相關聯之第一及第二數目個邏輯區塊位址。該複數個胞實體區塊之兩者中未儲存有資料。電路經組態以將與該第一數目個邏輯區塊位址之一者相關聯之該第一部分之該資料重新定位至其中未儲存有資料之該兩個胞實體區塊之一者,且將與該第二數目個邏輯區塊位址之一者相關聯之該第二部分之該資料重新定位至其中未儲存有資料之該兩個胞實體區塊之另一者。一邏輯至實體(L2P)表經更新以反映儲存於損耗平衡之區塊中之資料之實體位址的變化。該L2P表可具有不同階,例如,一第一階表及一第二階表,表階之數目沒有限制。
耐久性係一記憶體技術之一關鍵特性。一旦記憶體胞達到所容許寫入循環之最大次數,其等便不再可靠(壽命終止)。
本發明提出一種用於位元可變(bit alterable)NVM及損耗平衡演算法以控制記憶體胞老化之L2P表架構。
一般而言,損耗平衡演算法監測實體位址被寫入之次數且基於寫入計數器之值來改變邏輯至實體映射。
一損耗平衡操作可包含及/或指代用於將當前儲存於一記憶體之一個實體位置中之資料重新定位至該記憶體之另一實體位置的一操作。執行此等損耗平衡操作可增加記憶體之效能(例如,增加速度,增加
可靠性及/或降低功率消耗),及/或可增加記憶體之耐久性(例如,壽命)。
先前或已知耗損平衡操作可使用表來重新定位記憶體中之資料。然而,此等表可較大(例如,可使用記憶體中之大量空間),且可造成損耗平衡操作緩慢。此外,需要在損耗平衡操作期間更新儲存表資訊之記憶體胞,使得此等記憶體胞可經歷加速老化。
相反地,根據本發明之用於重新定位資料之操作(例如,損耗平衡操作)可維持一代數映射(例如,邏輯位址與實體位址之間之一代數映射)以用於識別資料已重新定位至之實體位置(例如,實體區塊)。因此,與先前損耗平衡操作相比,根據本發明之用於重新定位資料之操作可使用記憶體中之較少空間,且可更快速且更可靠。
在本發明之一項實施例中,在一損耗平衡演算法之一更新階段期間,當甚至一第二階表之一單一區段已被過度重寫時,仍將一第二階表移動至一不同實體位置。
此解決方案具有使由一昂貴的揮發性記憶體部分實施之第一階表FLT之大小保持有限之極大優勢。
換言之,根據本發明中所提出之解決方案,一第二階表之一單一片段已達到預定數量之重寫循環足以針對後續更新階段改變整個第二階表。
本發明之一項實施例係關於一種用於一受管理記憶體裝置之自適應損耗平衡方法,其中一第一階表對複數個第二階表進行定址,該複數個第二階表包含至該記憶體裝置之指標,該方法包括:-偵測該第二階表之一片段之更新階段之一數目;-基於該數目滿足一定義臨限值而將該等第二階表之一者移位至另一
第二階表之一位置。
值得注意的是,在上述自適應損耗平衡方法中,偵測階段包含讀取一更新計數器之一值,該更新計數器提供於該第二階表之與正在更新之L2P條目相同之片段中。移位階段可包含將整個一個第二階表移位至不同於該一個第二階表之一起始實體位置的一實體位置,例如至已不太廣泛存取之另一第二階表之一實體位置。
本發明所專注之記憶體組件可包含(例如,被分離成及/或劃分成)兩個不同部分(例如,邏輯區)之資料,如本文中將進一步描述。在此等例項中,先前損耗平衡操作可必須獨立地應用於記憶體之各個各自部分(例如,各別操作可需要用於各個各自部分),且各個各自部分之資料可僅跨記憶體之一小分率重新定位(例如,各個各自部分之資料可保留於記憶體之各別實體區中)。然而,此一方法在增加記憶體之效能及/或耐久性方面可為無效的。例如,由於兩個不同邏輯區之大小及/或工作負荷可能不同,故在此一方法中,實體區之一者可能比另一者受更多應力(stressed more)。
相比之下,與先前損耗平衡操作相比,根據本發明之用於重新定位資料之操作(例如,損耗平衡操作)可在包含兩個不同部分之記憶體上更有效地工作(例如,增加效能及/或耐久性)。例如,根據本發明之用於重新定位資料之一操作可同時應用於記憶體之各個各自部分(例如,相同操作可在兩個部分上使用)。此外,各個各自部分之資料可跨整個記憶體重新定位(例如,各個各自部分之資料可跨記憶體之所有不同實體位置改變位置(slide))。因此,根據本發明之用於重新定位資料之操作可能夠解決(例如,補償)兩個部分之大小及/或工作負荷之一差異。
此外,先前損耗平衡操作可能無法在硬體中實施。相比之下,根據本發明之用於重新定位資料之操作(例如,損耗平衡操作)可在硬體中實施(例如,完全可實施)。例如,根據本發明之用於重新定位資料之操作可在記憶體之控制器中或在記憶體本身內實施。因此,根據本發明之用於重新定位資料之操作可不會影響記憶體之延時且可未將額外耗用(overhead)添加至記憶體。在一些實施例中,所揭示之解決方案可至少部分在韌體及/或軟體中實施。
儘管實施例不限於一特定類型之記憶體或記憶體裝置,但根據本發明之用於重新定位資料之操作(例如,損耗平衡操作)可在包含一第一記憶體陣列(其可為一儲存類記憶體)及若干第二記憶體陣列(其等可為NAND快閃記憶體)之一混合記憶體裝置上執行(perform)(例如,execute)。例如,該等操作可在第一記憶體陣列及/或若干第二記憶體陣列上執行以增加混合記憶體之效能及/或耐久性。
如本文中所使用,「一」、「一個」或「若干」可指代一或多個事物,且「複數個」可指代兩個或更多個此事物。例如,一記憶體裝置可指代一或多個記憶體裝置,且複數個記憶體裝置可指代兩個或更多個記憶體裝置。
如圖1中所展示,各實體區塊107-0、107-1、…、107-B包含耦合至存取線之若干記憶體胞實體列(例如,103-0、103-1、…、103-R)(例如,字線)。各實體區塊中之列(例如,字線)之數目可為32,但實施例不限於每實體區塊之列103-0、103-1、…、103-R之一特定數目。
此外,儘管圖1中未展示,但記憶體胞可耦合至感測線(例如,資料線及/或數位線)。
如一般技術者將明白,各列103-0、103-1、…、103-R可包含若干記憶體胞頁(例如,實體頁)。一實體頁指代程式化及/或感測之一單位(例如,作為一功能群組在一起程式化及/或感測之若干記憶體胞)。
在圖1中所展示之實施例中,各列103-0、103-1、…、103-R包括一個記憶體胞實體頁。然而,本發明之實施例不限於此。例如,在一實施例中,各列可包括多個記憶體胞實體頁(例如,耦合至偶數位元線之一或多個偶數記憶體胞頁,及耦合至奇數位元線之一或多個奇數記憶體胞頁)。另外,針對包含多位階胞之實施例,一記憶體胞實體頁可儲存資料之多個頁(例如,邏輯頁)(例如,資料之一上部頁及資料之一下部頁),其中一實體頁中之各胞儲存朝向資料之一上部頁之一或多個位元及朝向資料之一下部頁之一或多個位元)。
在本發明之一實施例中且如圖1中所展示,一記憶體胞頁可包括若干實體區段105-0、105-1、…、105-S(例如,記憶體胞之子集)。各胞實體區段105-0、105-1、…、105-S可儲存資料之若干邏輯區段。另外,資料之各邏輯區段可對應於資料之一特定頁之一部分。作為一實例,儲存於一特定實體區段中之資料之一第一邏輯區段可與對應於資料之一第一頁的一邏輯區段相對應,且儲存於特定實體區段中之資料之一第二邏輯區段可與資料之一第二頁相對應。各實體區段105-0、105-1、…、105-S可儲存系統及/或使用者資料,及/或可包含附加項資料(overhead data),諸如錯誤校正碼(ECC)資料、邏輯區塊位址(LBA)資料及後設資料。
邏輯區塊定址係可藉由一主機用於識別資料之一邏輯區段之一方案。例如,各邏輯區段可對應於一獨特邏輯區塊位址(LBA)。另
外,一LBA亦可對應於(例如,動態地映射至)可指示資料之該邏輯區段在記憶體中之實體位置的一實體位址,諸如一實體區塊位址(PBA)。資料之一邏輯區段可為若干資料位元組(例如,256個位元組、512個位元組、1,024個位元組或4,096個位元組)。然而,實施例不限於此等實例。此外,在本發明之一實施例中,記憶體陣列101可被分離成及/或劃分成具有與其相關聯之第一數目個LBA之資料之一第一邏輯區及具有與其相關聯之第二數目個LBA之資料之一第二邏輯區,如本文中將進一步描述(例如,結合圖2)。
應注意,實體區塊107-0、107-1、…、107-B,列103-0、103-1、…、103-R,區段105-0、105-1、…、105-S及頁之其他組態係可能的。例如,實體區塊107-0、107-1、…、107-B之列103-0、103-1、…、103-R可各自儲存對應於一單一邏輯區段之資料,該單一邏輯區段可包含例如多於或少於512個資料位元組。
圖2係根據本發明之實施例之包含一主機202及呈一記憶體裝置206之形式之一設備的一電子系統或一運算系統200之一方塊圖。如本文中所使用,一「設備」可指代但不限於多種結構或結構組合之任何者,舉例而言,諸如一或多個電路、一或多個晶粒、一或多個模組、一或多個裝置,或一或多個系統。此外,在一實施例中,運算系統200可包含類似於記憶體裝置206之若干記憶體裝置。
在圖2中所繪示之實施例中,記憶體裝置206可包含一第一類型之記憶體(例如,一第一記憶體陣列210)及一第二類型之記憶體(例如,若干第二記憶體陣列212-1、…、212-N)。記憶體裝置206可為一混合記憶體裝置,其中記憶體裝置206包含第一記憶體陣列210,第一記憶體
陣列210係不同於若干第二記憶體陣列212-1、…、212-N之一類型之記憶體。
第一記憶體陣列210可為儲存類記憶體(SCM),其可為充當記憶體裝置206之主記憶體之一非揮發性記憶體,因為其具有比若干第二記憶體陣列212-1、…、212-N快之一存取時間。例如,第一記憶體陣列210可為3D XPoint記憶體、FeRAM或電阻可變記憶體,諸如PCRAM、RRAM或STT等等。若干第二記憶體陣列212-1、…、212-N可充當記憶體裝置206之一資料儲存區(例如,儲存記憶體),且可為NAND快閃記憶體以及其他類型之記憶體。
儘管圖2中所繪示之實施例包含第一類型之記憶體之一個記憶體陣列,但本發明之實施例不限於此。例如,在一實施例中,記憶體裝置206可包含若干SCM陣列。然而,記憶體裝置206可包含少於第二類型之記憶體之第一類型之記憶體。例如,記憶體陣列210可儲存少於記憶體陣列212-1、…、212-N中所儲存之資料。
記憶體陣列210及記憶體陣列212-1、…、212-N可各自以類似於先前結合圖1所描述之記憶體陣列101之一方式具有複數個記憶體胞實體區塊。此外,記憶體(例如,記憶體陣列210及/或記憶體陣列212-1、…、212-N)可包含(例如,被分離成及/或劃分成)兩個不同部分(例如,邏輯區)之資料。例如,記憶體可包含具有與其相關聯之第一數目個(例如,第一數量之)邏輯區塊位址(LBA)之一第一部分資料,及具有與其相關聯之第二數目個(例如,第二數量之)LBA之一第二部分資料。第一數目個LBA可包含例如一第一序列之LBA,且第二數目個LBA可包含例如一第二序列之LBA。
作為一實例,第一部分資料可包括使用者資料,且第二部分資料可包括系統資料。作為一額外實例,第一部分資料可包括已在執行於記憶體上之程式化及/或感測操作期間以或高於一特定頻率存取之資料(例如,已存取其相關聯LBA之資料),且第二部分資料可包括已在執行於記憶體上之程式化及/或感測操作期間低於特定頻率存取之資料(例如,已存取其相關聯LBA之資料)。在此一實例中,第一部分資料可包括被分類為「熱(hot)」資料之資料,且第二部分資料可包括被分類為「冷(cold)」資料之資料。作為一額外實例,第一部分資料可包括作業系統資料(例如,作業系統檔案),且第二部分資料可包括多媒體資料(例如,多媒體檔案)。在此一實例中,第一部分資料可包括被分類為「關鍵」資料之資料,且第二部分資料可包括被分類為「非關鍵」資料之資料。
LBA之第一數目及第二數目可相同(例如,第一部分及第二部分資料可為相同大小),或LBA之第一數目可不同於LBA之第二數目(例如,第一部分資料及第二部分資料之大小可不同)。例如,LBA之第一數目可大於LBA之第二數目(例如,第一部分資料之大小可大於第二部分資料之大小)。此外,第一數目個LBA之各個各自者之大小可相同於第二數目個LBA之各個各自者之大小,或第一數目個LBA之各個各自者之大小可不同於第二數目個LBA之各個各自者之大小。
例如,第一數目個LBA之各個各自者之大小可為第二數目個LBA之各個各自者之大小的一倍數。此外,可隨機化與記憶體之各個各自部分相關聯之LBA。例如,可藉由一靜態隨機數產生器來處理LBA。
在一實施例中,記憶體之複數個實體區塊之至少兩者中可未儲存有效資料。例如,記憶體之實體區塊之兩者可為空白。此等實體區
塊可分離記憶體中之第一部分資料及第二部分資料(例如,在兩者之間)。例如,此兩個實體區塊之一第一者可在第一部分資料之後且在第二部分資料之前,且兩個實體區塊之一第二者可在第二部分之後並在第一部分之前。此等實體區塊在本文中可被稱為分離區塊。
如圖2中所繪示,主機202可經由介面204耦合至記憶體裝置206。主機202及記憶體裝置206可在介面204上進行通信(例如,發送命令及/或資料)。主機202可為一膝上型電腦、個人電腦、數位相機、數位記錄及回放裝置、行動電話、PDA、記憶卡讀取器或介面集線器,以及其他主機系統,且可包含一記憶體存取裝置(例如,一處理器)。一般技術者將明白,「一處理器」可意指一或多個處理器,諸如一平行處理系統、若干協同處理器等。
介面204可呈一標準化實體介面之形式。
例如,當記憶體裝置206用於運算系統200中之資訊儲存時,介面204可為一串列高級技術附件(serial advanced technology attachment)(SATA)實體介面、一周邊組件互連快速(peripheral component interconnect express)(PCie)實體介面、一通用串列匯流排(USB)實體介面或一小型電腦系統介面(SCSI),以及其他實體連接器及/或介面。然而,一般而言,介面204可提供用於在記憶體裝置206與具有用於介面204之相容接收器之一主機(例如,主機202)之間傳遞控制、位址、資訊(例如,資料)及其他信號的一介面。
記憶體裝置206包含用於與主機202且與第一記憶體陣列210及若干第二記憶體陣列212-1、…、212-N進行通信之控制器208。控制器208可發送用於在第一記憶體陣列210及若干第二記憶體陣列212-
1、…、212-N上執行操作之命令。控制器208可與第一記憶體陣列210及若干第二記憶體陣列212-1、…、212-N進行通信,以感測(例如,讀取)、程式化(例如,寫入)、移動及/或擦除資料,以及其他操作。
控制器208可包含於與記憶體210及212-1、…、212-N相同之實體裝置(例如,晶粒)上。替代地,控制器208可包含於通信地耦合至包含記憶體210及212-1、…、212-N之實體裝置之一分離實體裝置上。在一實施例中,控制器208之組件可作為一分佈式控制器跨多個實體裝置分佈(例如,一些組件在與記憶體相同之晶粒上,且一些組件在一不同晶粒、模組或板上)。
主機202可包含用於與記憶體裝置206進行通信之一主機控制器。主機控制器可經由介面204將命令發送至記憶體裝置206。主機控制器可與記憶體裝置206及/或記憶體裝置206上之控制器208進行通信,以讀取、寫入及/或擦除資料,以及其他操作。
記憶體裝置206上之控制器208及/或主機202上之主機控制器可包含控制電路及/或邏輯(例如,硬體及韌體)。在一實施例中,記憶體裝置206上之控制器208及/或主機202上之主機控制器可為耦合至包含一實體介面之一印刷電路板之一特定應用積體電路(ASIC)。再者,記憶體裝置206及/或主機202可包含揮發性及/或非揮發性記憶體之一緩衝器及若干暫存器。
例如,如圖2中所展示,記憶體裝置可包含電路214。在圖2中所繪示之實施例中,電路214包含於控制器208中。然而,本發明之實施例不限於此。
例如,在一實施例中,電路214可包含於記憶體210及/或
記憶體212-1、…、212-N中(例如,在與其等相同之晶粒上)(例如,代替在控制器208中)。
電路214可包括例如硬體,且可執行根據本發明之用於重新定位儲存於記憶體陣列210及/或記憶體陣列212-1、…、212-N中之資料的損耗平衡操作。例如,電路214可將與第一數目個LBA之一特定者相關聯之第一部分資料之資料重新定位至兩個分離區塊之一者,且可將與第二數目個LBA之一特定者相關聯之第二部分資料之資料重新定位至兩個分離區塊之另一者。電路214亦可管理邏輯至實體(L2P)對應表以使其等保持隨著任何資料重新定位更新,如下文將詳細描述。
例如,電路214可將與第一數目個LBA之最後一者(例如,第一序列之LBA中之最後一個LBA)相關聯之第一部分之資料重新定位至第二分離區塊(例如,在第二部分之後且在第一部分之前的分離區塊),且電路214可將與第二數目個LBA之最後一者(例如,第二序列之LBA中之最後一個LBA)相關聯之第二部分之資料重新定位至第一分離區塊(例如,在第一部分之後且在第二部分之前的分離區塊)。此一資料重新定位可導致記憶體之兩個不同實體區塊中未儲存有效資料(例如,可導致記憶體之兩個不同實體區塊成為分離區塊)。
例如,重新定位與第一數目個LBA之最後一者相關聯之第一部分之資料可導致一不同實體區塊成為在第二部分之後且在第一部分之前的分離區塊,且重新定位與第二數目個LBA之最後一者相關聯之第二部分之資料可導致一不同實體區塊成為在第一部分之後且在第二部分之前的分離區塊。此外,重新定位與第一數目個LBA之最後一者相關聯之第一部分之資料可導致第一數目個LBA之一不同者(例如,第一序列之LBA中之
倒數第二個LBA)成為第一數目個LBA之最後一者,且重新定位與第二數目個LBA之最後一者相關聯之第二部分之資料可導致第二數目個LBA之一不同者(例如,第二序列之LBA中之倒數第二個LBA)成為第二數目個LBA之最後一者。
在各實體區塊重新定位時,L2P表(圖2中未展示)亦經更新使得在請求存取一邏輯位址時可對正確實體區塊進行定址。根據一項實施例,L2P表以至少兩階進行組織;在操作期間,針對更快速度將第一階表複製於揮發性記憶體中(亦將該表保持於非揮發性記憶體中以避免在斷電期間丟失資訊)。第一階表條目指向第二階表,該等第二階表繼而指向實體記憶體位址。在一些實例中,第二階表在位元可變的非揮發性記憶體中實施。L2P表之一特殊管理可包括將對應於熱資料(例如,頻繁存取之資料)之第二階表交換或移位至其中第二階表對應於冷資料(例如,很少存取之資料)之實體位置。
根據本發明(例如,結合圖3及圖4),本文中將進一步描述繪示此一資料重新定位操作及對應L2P表更新之一實例。
在一實施例中,電路214可執行用於回應於一觸發事件而重新定位資料之一操作。觸發事件可為例如在記憶體上執行(perform)(例如,execute)之特定數目個程式化操作,舉例而言,諸如一百個程式化操作。例如,一計數器(圖2中未展示)可經組態以回應於執行特定數目個程式化操作而發送一起始信號,且電路214可執行回應於自計數器接收起始信號而重新定位資料之操作。作為一額外實例,觸發事件可為發生於記憶體中之一電力狀態轉變,諸如(舉例而言)記憶體裝置206自作用中模式變為待機模式、閒置模式或電源切斷模式。
在一實施例中,可在重新定位第一部分之資料之後立即重新定位第二部分之資料。然而,在一些例項中,可需要暫停重新定位資料之操作以執行由主機202請求之一操作,諸如一程式化或感測操作。
在此一例項中,可在重新定位第一部分之資料之後(例如,在完成資料之重新定位之後)執行由主機請求之操作,且可在執行經請求操作之後(例如,在完成操作之後)重新定位第二部分之資料。
電路214可執行額外(例如,後續)損耗平衡操作以在記憶體之整個壽命期間進一步重新定位儲存於記憶體陣列210及/或記憶體陣列212-1、…、212-N中之資料。例如,電路214可執行一額外(例如,後續)操作以回應於一額外(例如,後續)觸發事件而重新定位資料。
例如,在於本文中先前描述之例示性操作之後執行之重新定位記憶體中之資料的一操作中,電路214可將與現已成為最後一者(先前為第一序列之LBA中之倒數第二個LBA之一者)之第一數目個LBA之不同者相關聯的第一部分之資料重新定位至現已成為在第二部分之後且在第一部分之前之分離區塊的不同實體區塊,且電路214可將與現已成為最後一者(先前為第二序列之LBA中之倒數第二個LBA之一者)之第二數目個LBA之不同者相關聯的第二部分之資料重新定位至現已成為在第一部分之後且在第二部分之前之分離區塊的不同實體區塊。此一資料重新定位可再一次導致記憶體之兩個不同實體區塊成為分離區塊,且第一及第二數目個LBA之不同者分別成為第一及第二數目個LBA之最後一者,且後續資料重新定位操作可繼續以一類似方式來執行。
圖2中所繪示之實施例可包含額外電路、邏輯及/或組件,其等未繪示以免使本發明之實施例不清楚。例如,記憶體裝置206可包含
用於鎖存透過I/O電路經由I/O連接器提供之位址信號的位址電路。
位址信號可藉由一列解碼器及一行解碼器接收及解碼,以存取記憶體陣列210及212-1、…、212-N。此外,記憶體裝置206可包含與記憶體陣列210-1及212-1、…、212-N分離之一主記憶體(諸如(舉例而言)一DRAM或SDRAM)及/或除記憶體陣列210-1及212-1、…、212-N之外亦包含一主記憶體。
根據先前方法,NAND記憶體用於儲存實體區塊、韌體程式碼、L2P表及其他快閃記憶體轉譯層FTL資訊。L2P表提供邏輯區塊(LBA)至實體區塊(PBA)位址映射且其以多階進行結構化。由於NAND技術並非位元可變的,故必需將L2P表之一整個部分複製於一不同頁中以修改一單一PBA。
根據本發明之實施例,L2P表儲存於一位元可變的NVM(例如3D XPoint)中;因此,可原地更新與一LBA相關聯之PBA,而無需移動該PBA所屬之L2P表之部分。
通常,僅頻繁地寫入LBA之一子集(吾人稍後將此記憶體區段稱為「熱」LBA)。此暗示頻繁地寫入L2P表之僅一些條目,而很少更新其他條目。為了達到目標儲存裝置壽命,在不同實體位置中週期性地移動L2P表之部分,使得將頻繁寫入之條目儲存於不同實體位址中(損耗平衡)。應指出,LBA寫入分佈基於使用模型而顯著改變。
本發明定義一種用於最佳化L2P表損耗平衡之經改良方法及一種具備實施此一新穎損耗平衡方法之一控制器韌體之記憶體裝置。
在以下描述中,關於在一外部主機裝置或設備202可看到稱為邏輯區塊位址(LBA)之區塊或記憶體部分之意義上定義為「受管理」
之類型之一記憶體裝置(例如,一非揮發性記憶體裝置)來論述本發明之實施例。
相比之下,駐留式記憶體控制器208及相關聯韌體經結構化以在稱為可不同於邏輯區塊位址(LBA)之實體區塊位址(PBA)之位置中組織記憶體裝置之實體空間。
換言之,記憶體裝置之邏輯及實體組織係不同的,且提供報告由外部實體(例如,主機裝置)使用之邏輯位址與由內部控制器及其韌體使用之實體位址之間之一對應的一L2P(意謂邏輯至實體)表。根據其他實施例,該L2P表可由主機直接管理,其中必要調適對於本領域專家而言將為顯而易見的。
現在,大體上將L2P表結構化為一非揮發性快閃記憶體或NAND記憶體部分,該記憶體部分在其並非位元可變且不容許執行一記憶體胞之一原地更新之意義上具有一預定粒度。相比之下,一3D交叉點非揮發性記憶體裝置將容許執行甚至一單一位元之一更新。
圖3展示根據本發明之一L2P表之邏輯結構之一示意圖,其中由框(box)FLT(第一階表)指示之至少一第一階儲存於追蹤由區塊SLT(第二階表)指示之複數個第二階表之一者的實體位置中。
在一基於頁之FTL中,L2P表自各邏輯區塊位址(LBA)提供實體區塊位址(PBA)。L2P表以多階進行結構化。圖3展示二階結構:第一階(FLT)含有至第二階表(SLT)之實體指標。例如,取決於設備設計及容量,在一些實施例中可存在更多階,例如,包含一第一階表、一第二階表及一第三階表。在本發明中,SLT表儲存於稱為實體表位址(PTA)之實體位置中。SLT表含有L2P條目。
各LBA存在一L2P條目。一L2P條目指定PBA且其可含有其他LBA特定資訊。第一階表複製於SRAM中,而SLT表在NVM中。各SLT表係由一TableID(表ID)指定。
TableID範圍係自0至RoundUp(DevCapacity/SLTSize)-1,其中:
‧DevCapacity係LBA之數目
‧SLTSize係一SLT表中之條目之數目。
運用諸如3D Xpoint之一位元可變的NVM,可原地更新L2P條目,而無需移動其所屬之整個SLT表。讓吾人看看如何操作。
通常,在記憶體裝置之起動階段期間,即,在增壓(boost)階段期間,始終將FLT載入至一揮發性記憶體部分(例如,一RAM記憶體部分)中。此意謂第一階表之實體位置及實體結構不同於其他第二階表之實體位置及實體結構。
第二階表係儲存指標之一表,該等指標用於針對各單一LBA轉譯相對於經指示邏輯位置之實體位置。
換言之,每當一主機裝置需要重寫或更新一單一LBA時,有必要追蹤其中已儲存該資料之正確實體位置。此外,甚至必須因此更新含有至實體位置之指標的第二階表。
主機僅給出待更新之邏輯位址之指示,且歸因於L2P表,控制器韌體必須負責執行映射及對追蹤此一位置之正確實體位置的適當更新。
在主機裝置所請求之任何更新處,將執行儲存於記憶體裝置之第二階表中之指標的一對應更新。
根據本發明,第二階表係用位元可變的非揮發性記憶體部分(例如,3D交叉點(3D Xpoint)記憶體部分)進行結構化。此具有容許一所謂的原地更新或換言之更新一指標之相同實體位置的極大優勢。
在主機可見之可定址空間中,存在可被定義為「熱」之記憶體部分或位置或區域(在相對頻繁地存取此等熱記憶體區域之意義上),而其他記憶體部分或位置或區域可被定義為「冷」(在很少存取其等之意義上)。
因此,考慮到以一特定頻率原地更新相同指標之可能性,可能發生用於儲存該等指標之記憶體胞將比其他記憶體區域更早地老化。
此可為一非常嚴重的問題,因為包含一老化記憶體部分之一記憶體裝置可能急劇地降低其效能或有風險退出服務,從而產生頻繁的錯誤以致使主機裝置變得無用。
已採用耗損平衡演算法解決此問題,該等演算法能夠監測實體位址被寫入之次數且基於寫入計數器值將邏輯至實體映射移位。
然而,一些損耗平衡演算法所提供之已知解決方案不容許如預期般改良記憶體裝置之壽命,且本發明之目的係教示一種能夠克服上述已知解決方案之限制之新穎損耗平衡機制。
就此而言,非常重要的是將在後文中參考圖4之實例揭示之第二階表STL之組織。由於此一組織,可採用本發明之發明損耗平衡方法。
圖4展示包含複數個(N個)(a plurality of N)片段0、1、…、n-1之一SLT表之一示意圖,該複數個(N個)片段組織為一矩陣400之列,而複數個(P個)矩陣行係由一最終計數器WLCnt完成。
圖4示意性地展示SLT表結構。各SLT表包含n個L2P片段。L2P片段係可讀取或寫入SLT表之粒度。一L2P片段可含有L2P條目或表後設資料。
一L2P片段中存在複數個(P個)L2P條目,參見圖4。各L2P片段含有一損耗平衡計數器(WLCnt)。此計數器每當寫入L2P片段時遞增且其值藉由動態損耗平衡演算法使用。
當一SLT片段之損耗平衡計數器達到一定義臨限值時,將其所屬之整個SLT表移動至一不同實體位置,且將此SLT表之所有損耗平衡計數器重設為零。
何時已將一表移動至其實體位置之一指示儲存於L2P表後設資料中。一單調計數器(TableStamp(表戳記))在各SLT表移動時遞增。當移動一表時,將當前TableStamp值復製至表後設資料中。
專用於儲存L2P表之實體區域大於所需之實體區域,因為其含有在移動表時使用之一些備用PTA。備用或可用PTA實體表位址儲存於一清單(PTA清單)中,如圖6中所展示。PTA清單組織為一循環緩衝器。PTA清單之頭部指向待在一表移動中用作目的地位址之PTA(PTADEST)。在已移動一表之後,將較前PTA添加至PTA清單之尾部。
如所述,此第二階表之各片段400i表示可利用其更新至記憶體裝置之指標之最小粒度。換言之,當需要改變一指標且更新一片段之一單一條目時,必需重寫包含該特定條目之整個片段。
在各更新階段執行之操作呈一序列:讀取、原地更新及寫入整個表片段。顯然,在一通用第K片段之一更新階段期間,不涉及其他表片段。
矩陣400之各框係藉由標籤L2P表示且指示對應於一通用外部邏輯區塊位址LBA之一實體記憶體位置之一指標的存在。運用術語外部,吾人希望指示外部主機朝向經定址記憶體裝置所完成之請求。
圖5展示包含複數個指標L2P[0]、…、L2P[P-1]、其後接著一損耗平衡計數器WLCnt(有時亦稱為片段計數器或簡稱為一計數器)的一單一片段400i之一更詳細視圖。
矩陣400之最後一列n-1包含表後設資料及一最終計數器。僅在將一表移位時寫入後設資料片段。
SLT表矩陣400之最後一行僅包含各自經組態以對一給定區段已被更新之次數進行計數之計數器。儲存於對應計數器中之值之遞增容許記錄更新階段。
當行P之計數器之一者中所含之經記錄值(其指示重寫循環之次數)已達到一預定臨限值時,則將整個指標表移動至另一PTA。
計數器之內容係已知的,因為每當需要一更新時,一更新所涉及之操作序列包含:讀取階段、原地更新及重寫。因此,在更新階段開始時讀取計數器記錄之內容。
以此方式,負責更新階段之控制器韌體立即意識到計數器之值超過經設定臨限值且開始一程式化階段以將表移位或複製於記憶體裝置之另一實體位置中。
為清楚起見,上述語句意謂將一給定第二階邏輯表移位於一不同實體位置(PTA)中。
然而,此解決方案不容許完全利用併入於一給定第二階表中之複數個片段。
本發明的確解決此進一步問題且基於對老化片段之一更詳細評估來提供一更有效率損耗平衡解決方案。
最後一個後設資料片段含有對於識別對應實體位置中之選定第二階表有用之資訊,但與此後設資料區段相關聯之計數器(其將被稱為「最終計數器」)含有指示已執行多少次移位之一彙總值。表本身「熱度」之一指示儲存於表後設資料片段之TableStamp欄位中。
此最終計數器在最開始被設定為「0」且每當對應表移位於一新實體位置中時遞增,因此給出關於包含該最終計數器之對應表之「狀態」之一動態指示。
在後設資料區段含有關於儲存於第k實體位置中之第i表之資訊而最終計數器展示發生多少次表位移之意義上,後設資料區段及最終計數器之組合資訊容許識別一給定SLT表之一完整狀態。
比較兩個或更多個最終計數器之值,或簡單地比較一最終計數器中所含之值與臨限值(其可為不同於用於觸發SLT之移位之臨限值的一第二臨限值),可使一定性標籤(例如「熱」或「冷」)(例如,一使用率指示符)與一表相關聯,且可將此一表包含於一位移程式中或不將此一表包含於一位移程式中。
由與各對應區段相關聯之計數器及與後設資料區段相關聯之最終計數器獲得之交叉資訊可經組合以作出是否將一給定表移位之決策。
例如:若一單一計數器應將其值遞增直至滿足或超過一預定臨限值之一數量,則其將自動產生一韌體請求以將該整個表移位,但若最終計數器將指示一所謂的「冷」表,則可將此資訊與前一計數器組合以
獲得移位之一可能延遲,此係因為該表近來尚未被大量利用。
最終計數器之資訊如此重要以至於可優先於有關一單一片段之資訊,使得可提供一「冷」表之實體位置作為可能實體位置用於代管其他不太冷或更佳熱表之內容。
藉由吾人將在後文中看到之一對應演算法來調節此可能性。
圖6展示指示為實體表位址PTA且通常用於改變所謂的熱表之位置或將所謂的熱表之位置移位的實體位置之一循環清單600。此清單600之一條目指示可用於儲存表之自由實體位置(PTA)。
每當必需將一表移位於一新位置中時,無論出於何種原因,皆必需自此清單之頂側或頭部拾取一實體位置PTA,同時將經移除表放置於此清單之尾部位置中。換言之,根據一佇列規則FIFO(先進先出)來管理清單,其中將移位於一新實體位置中之一表之舊實體位置添加或佇列至尾部之最後一個可用位置。
當然,出於本發明之目的,此處吾人考慮到表之可用空間之總數目(PTA)大於表之數目。
在「熱」及「冷」表之循環僅為循環性之意義上,圖6之簡單清單中所提出之機制係嚴格的。
圖7係展示根據本發明之與一新提出的表交換機制組合之圖6之清單之另一示意圖。
圖7繪示本發明之損耗平衡演算法如何交換熱SLT表與冷SLT表。每當寫入一L2P片段時,其損耗平衡計數器遞增。當計數器達到定義臨限值(DynWLTh)時,整個SLT表自其當前實體位置(PTA_n)移動至
一不同位置。
若一冷SLT表先前被識別為儲存於PTA_m處,則將冷SLT表移動至PTA清單之頭部(PTA_i)處之PTA。接著,將熱SLT表移動至冷SLT表先前所在之處(PTA_m)且將其PTA(PTA_n)附加至PTA清單。若未識別冷表,則不存在表交換且將熱SLT表移動至取自PTA清單之頭部之PTA_i。
透過所有SLT表後設資料之一週期性掃描執行冷PTA選擇:比較儲存於後設資料欄位中之TableStamp與當前TableStamp值。若兩個值之間的差大於一臨限值(StaticWL),則SLT係冷的。
圖7中所展示之表700表示可用於儲存SLT表之可能的K個記憶體位置PTA。
框710指示對應於已根據先前揭示之動態損耗平衡方法識別為熱之一表之一PTA位置。
框720指示對應於已根據先前揭示之動態損耗平衡方法識別為冷之一表之一PTA位置。
框730指示已被識別為第一可用且待在圖6之清單中(例如,在清單之頭部處)使用之一通用且自由PTA位置。
根據本發明之方法建議將冷表720移位或交換至由表730表示之第一可用位置。此步驟藉由圖7中所報告之箭頭(1)展示。
由於冷表之位置現在係自由的,故代替再現清單尾部處之可用之此一位置(如先前解決方案所建議),其將用於代管熱表710。
因此,根據本發明,作為一第二步驟(2),將熱表710移位或交換至冷表720之位置。
最終,在步驟(3)中,將表710佇列在圖6之清單之尾部位置中。
以此方式:
‧交換L2P表之含有頻繁寫入條目之部分(熱表)與很少寫入之部分(冷);‧基於工作負荷特性自動調整識別冷部分之臨限值。
換言之,韌體已交換一熱邏輯表,從而將其寫入於先前由一冷邏輯表佔據之一實體位置中。同時,冷邏輯表已寫入於可用於交換圖6之清單中之一熱表的第一實體位置中。
上述機制僅在可正確地偵測所謂的冷表之情況下恰當運作。
比較寫入計數器與臨限值以判定何時應修改映射。必需基於工作負荷恰當地設定臨限值以最佳化效能。錯誤臨限值可能導致更短裝置壽命,因為無法將頻繁寫入之資料足夠頻繁地重新映射至不同實體位址,或相反地,因為此重新映射過於頻繁地發生。
一StaticWL(靜態WL)臨限值係一關鍵損耗平衡演算法參數。若其過高,則可難以找到一冷表進行交換,且熱表將移動至自PTA清單擷取之PTA。應注意,PTA清單中之PTA主要用於其他熱表。另一方面,若StaticWL臨限值過低,則所發現PTA可能已用於其他熱表且交換將為無益的。不幸的是,StaticWL臨限值之最佳值取決於工作負荷之熱度特性,因此其無法以一簡單方式進行預定義。為了解決此問題,定義且揭示一種自適應StaticWL臨限值演算法。
如稍後將在圖9中繪示,在各StaticWL Check_interval(檢查間隔)之末尾,評估命中次數。若已發現過少PTA係靜態的(Min_Hit_rate(最小命中率)),則意謂著當前StaticWL臨限值過高,接著將其值減小delta_th。
另一方面,若已發現過多PTA係靜態的(Max_Hit_rate(最大命中率)),則意謂著當前StaticWL臨限值過低,接著將其值增加delta_th。改變StaticWL Check_interval及delta_th之值,可控制演算法之反應性以適應工作負荷變化。
在所提出之方法中,根據工作負荷特性自動調整臨限值。
圖8以一流程圖之形式展示實施本發明之方法之一演算法之主要步驟。以表移動之相同速率執行靜態WL掃描,且所發現之可能冷表立即用於表交換中。替代地,可預先準備冷表之一清單。
在步驟801,每當將一L2P片段寫入於PTA_n中時,其損耗平衡計數器遞增(即,WearLevCnt+=1)。接著,方法進行至測試步驟802,其中判定儲存於PTA_n中之表是否為熱的。
換言之,若計數器達到定義臨限值(DynWL_th)(即,WearLevCnt>DynWL_th),則判定儲存於PTA_n中之表係熱的。否則,判定儲存於PTA_n中之表不熱。
若儲存於PTA_n中之表結果為不熱的,則方法結束且退出。
相比之下,若判定PTA_n係熱的,則該方法進行至步驟803,其中檢查由StaticWL_cursor(StaticWL游標)選擇之PTA_m。
StaticWL_cursor亦稱為上文已描述之StaticWL臨限值。
接著,在測試步驟804處,判定儲存於PTA_m中之表是否為冷的。判定方法與先前揭示之方法相同,且因此為了避免冗餘而不再進行描述。
若判定儲存於PTA_m中之表係冷的,則方法進行至步驟805,其中需要自PTA清單之頭部擷取靜態WL之一自由PTA(即,PTA_SWL=PTAList.head())。
接著,方法進行至步驟806,其中將儲存於PTA_m中之冷SLT表移動至在步驟805擷取之PTA_SWL。在此情況中,在步驟807將PTA_m設定為DynamicWL(動態WL)之一目標PTA,即,PTA_DWL=PTA_m。接著,方法進行至步驟809,其中將熱SLT表自PTA_n移動至PTA_DWL。
若判定儲存於PTA_m中之表不冷,則方法進行至步驟808,其中需要自PTA清單之頭部擷取DynamicWL之一自由PTA(即,PTA_DWL=PTAList.head())。
步驟807及808兩者繼續進行步驟809,其中將熱SLT表自PTA_n移動至在先前步驟擷取之PTA_DWL。
在熱SLT表已自PTA_n移動至PTA_DWL之後,方法進行至步驟810,其中將PTA_n添加至PTA清單之尾部,即,PTAList.tail()=PTA_n,且使StaticWL_cursor遞增。
圖9展示有關用於管理一自適應靜態損耗平衡臨限值之方法的演算法流程圖。
方法開始於步驟901,其中比較儲存於後設資料欄位中之TableStamp與當前TableStamp值(即,TableStamp-StaticWL.cursor().TableStamp>StaticWL_th?)。
若兩個值之間之差大於一臨限值(StaticWL_th),則將SLT表設定為冷。
接著,方法進行至步驟902,其中使StaticWL檢查命中之次數遞增,即,Nr_of_Hits++。而在步驟903,使StaticWL檢查之次數遞增(即,Nr_of_Checks++)。
若儲存於後設資料欄位中之TableStamp與當前TableStamp值之間的差不大於臨限值(StaticWL_th),則方法直接進行至步驟903。
接著,在各StaticWL Check_interval之末尾,評估命中次數。在步驟904,判定StaticWL檢查之次數是否等於StaticWL Check_interval(即,Nr_of_Checks=Check_interval?)。
若其並非StaticWL Check_interval之末尾,且換言之,若StaticWL檢查之次數不等於StaticWL Check_interval,則該方法結束且退出。
若StaticWL檢查之次數等於StaticWL Check_interval,則意謂著StaticWL Check_interval結束。且接著評估命中次數。在步驟905,若已發現過少PTA係靜態的(即,Nr_of_Hits<Min_Hit_rate),則意謂著當前StaticWL臨限值過高,則在步驟906將其值減小delta_th(即,StaticWL_th-=delta_th)。此後,該方法結束且退出。
另一方面,若未發現過少PTA係靜態的,則在步驟907判定是否已發現過多PTA係靜態的(即,Nr_of_Hits>Max_Hit_rate?)。若已發現過多PTA係靜態的,則意謂著當前StaticWL臨限值過低,則在步驟908將其值增加delta_th(即,StaticWL_th+=delta_th)。此後,方法結束且退出。
改變StaticWL Check_interval及delta_th之值,可控制演算法之反應性以適應工作負荷變化。
在各StaticWL Check_interval之末尾,將StaticWL檢查命中之次數(Nr_of_Hits)及StaticWL檢查之次數(Nr_of_Checks)兩者重設為零(即,Nr_of_Hits=0及Nr_of_Checks=0);接著,方法在步驟909結束且退出。
圖10展示自動調整演算法如何在具有不同熱度特性之兩個工作負荷下操作之一實例。
如自圖10可見,根據工作負荷特性自動調整StaticWL臨限值。
在兩個圖中:(a)中等熱度工作負荷及(b)高熱度工作負荷,StaticWL臨限值以不同方式改變。具體而言,在中等熱度工作負荷下,以一相對較小頻率調整StaticWL臨限值,而在高熱度工作負荷下,以一相對較大頻率調整StaticWL臨限值。先前已描述自動調整演算法。
現在,進一步參考圖11之實例,將揭示基於一L2P表條目擾亂之本發明之損耗平衡方法之另一態樣。
藉由擾亂SLT表內之L2P片段可達成損耗平衡之一進一步改良。
本發明方法之此進一步態樣開始於以下考量:L2P表後設資料之寫入頻率低於L2P片段;因此,在SLT表佈局中移動其實體位置係有益的。
此外,在一SLT表內,可能存在寫入頻率遠高於其他條目之L2P條目。位址擾亂應確保當將一表映射於相同PTA上時將L2P片段寫
入於不同實體位置中。
SLT表藉由一TableID指定且其等實體位置藉由PTA指定。
圖11展示相同PTA上之一SLT表之三個後續寫入循環之一實施方案實例。
此外,一雜湊函數可用於產生L2P片段擾亂。為了避免表後設資料始終儲存於相同實體位置中,在雜湊函數輸入中使用TableID係足夠的。由於TableID係表特定的,因此當將不同表映射於相同PTA上時,雜湊函數返回不同L2P片段擾亂。
L2P片段擾亂之隨機化亦可藉由使用TableStamp代替TableID而獲得。此方法避免在將一表多次映射至相同PTA時產生相同擾亂。
雜湊函數之一實例係模函數。若表含有N個L2P片段,則依以下方式計算一偏移:Offset=Table ID mod N
接著,使用Offset(偏移)來獲得經擾亂L2P片段ID:Scrambled Entry ID=(Entry ID+Offset)mod N
圖12展示具有及沒有L2P片段擾亂之模擬之結果。
模擬之結果指示具有L2P片段擾亂之寫入計數器值與沒有L2P片段擾亂之情形相比之一顯著減小。在具有L2P片段擾亂之情況下,L2P寫入循環減少,此因此可如預期般改良記憶體裝置之壽命。
本發明中所建議之方法改良表交換,因此延長記憶體裝置之壽命。此解決方案具有一極大優勢,因為已知記憶體裝置之部分很少被記憶體裝置安裝於其中之電子裝置(即,一行動電話或一電腦或任何其他
可能裝置)上運行之應用程式存取。
運用本發明之熱表及冷表交換方法,甚至記憶體裝置之遠程存取部分亦用於記憶體裝置之一更佳且更規則分佈之寫入階段。
200:電子系統或運算系統
202:主機/外部主機裝置或設備
204:介面
206:記憶體裝置
210:第一記憶體陣列/記憶體
212-1至212-N:第二記憶體陣列/記憶體
214:電路
Claims (17)
- 一種用於一受管理記憶體裝置之自適應損耗平衡(self-adaptive wear leveling)之方法,其包括:藉由一第一階表(first level table)對複數個第二階表進行定址,該複數個第二階表包含至一受管理記憶體裝置之指標;偵測該複數個第二階表之一第一者之一片段(segment)之更新階段之一數目;基於更新階段之該數目滿足一經定義臨限值而將該複數個第二階表之該第一者移位至該複數個第二階表之一第二者之一位置;及在由與該複數個第二階表之該各者(each)之各自(respective)片段相關聯之損耗平衡計數器及由與該複數個第二階表之該第一者之一後設資料片段(metadata segment)相關聯之一最終計數器獲得的資訊之一交叉檢查之後,將該複數個第二階表之該第一者移位。
- 如請求項1之方法,其中偵測更新階段之該數目包括讀取在相同於該複數個第二階表之該第一者之一條目之一片段中提供之一損耗平衡計數器之一值。
- 如請求項2之方法,其進一步包括基於該損耗平衡計數器達到該定義臨限值而將該複數個第二階表之該第一者移位至該複數個第二階表之該第二者之該位置。
- 如請求項1至3中任一項之方法,其進一步包括每當寫入該複數個片段之一對應者、更新該複數個片段之一對應者或其等之一組合時,使該複數個第二階表之該第一者之複數個片段之各者的一損耗平衡計數器遞增。
- 如請求項4之方法,其中將該複數個第二階表之該第一者移位包括將複數個片段之各者之各損耗平衡計數器重設為零。
- 如請求項1至3中任一項之方法,其進一步包括擾亂(scrambling)該複數個第二階表之該第一者內之邏輯至實體片段。
- 如請求項6之方法,其進一步包括使用一雜湊(hash)函數擾亂該等邏輯至實體片段以產生該複數個第二階表之該第一者之一擾亂序列,該雜湊函數回應於該複數個第二階表之不同表映射於一相同實體第二表位址上而返回不同邏輯至實體片段擾亂。
- 一種記憶體裝置,其包括:一邏輯記憶體位址與一實體記憶體位址之間的一對應表,其包括:一第一階表,其對複數個第二階表進行定址,該複數個第二階表包含至該記憶體裝置之指標;及該複數個第二階表之一者中之複數個片段,該複數個片段之各者包括用於偵測該複數個片段之一對應者之更新階段之一數目的一計數器,其中該記憶體裝置具有不同於其實體組織之一邏輯組織; 其中該複數個第二階表之該一者包括複數個片段;及其中該複數個片段之一最終片段用作一表後設資料且包括與該最終片段相關聯之一最終計數器。
- 如請求項8之記憶體裝置,其中:該複數個第二階表包括位元可變(bit alterable)的非揮發性記憶體部分;及該等位元可變的非揮發性記憶體部分係三維(3D)交叉點記憶體部分。
- 如請求項8之記憶體裝置,其進一步包括韌體,該韌體用於:偵測與該複數個第二階表之該一者之一片段相關聯之一損耗平衡計數器的遞增;及基於儲存於該損耗平衡計數器中之一數目滿足或超過一定義臨限值而將該複數個第二階表之該一者移位至一不同實體位置。
- 如請求項8之記憶體裝置,其進一步包括該最終計數器,該最終計數器經組態以每當將該複數個第二階表之該一者移位至一不同實體位置時遞增。
- 如請求項8之記憶體裝置,其進一步包括韌體,該韌體用於基於相關聯於該複數個片段之一者之一計數器與一第一臨限值之間之一比較的一結果、相關聯於一最終片段之該最終計數器與一第二臨限值之間之一比較的 一結果或其等之一組合來將該複數個第二階表之該一者移位至一不同位置。
- 如請求項8至10中任一項之記憶體裝置,其進一步包括可用實體表位址之一清單,該清單經組態以在該複數個第二階表之該一者每次移位至一不同實體位置時或在該複數個第二階表之一不同者每次移位至一不同實體位置時更新。
- 一種記憶體設備,其包括:一受管理記憶體裝置;及一主機裝置,其耦合至該受管理記憶體裝置且包括:一記憶體結構,其具有不同邏輯及實體組織且包括邏輯記憶體位址與實體記憶體位址之間的一對應表,其中該記憶體結構包括:一第一階表,其對複數個第二階表進行定址,該複數個第二階表包含至該受管理記憶體裝置中之實體位址之指標;及該複數個第二階表中之複數個片段,該複數個片段之各者包括用於偵測該複數個片段之一對應者之更新階段之一數目的一片段計數器,其中該複數個第二階表包括後設資料片段及與各自後設資料片段相關聯之最終計數器。
- 如請求項14之記憶體設備,其中該複數個第二階表包括位元可變的非揮發性記憶體部分。
- 如請求項15之記憶體設備,其中該等位元可變的記憶體部分係三維(3D)交叉點記憶體部分。
- 一種記憶體設備,其包括:一受管理記憶體裝置;及一主機裝置,其耦合至該受管理記憶體裝置且包括:一記憶體結構,其具有不同邏輯及實體組織且包括邏輯記憶體位址與實體記憶體位址之間的一對應表,其中該記憶體結構包括:一第一階表,其對複數個第二階表進行定址,該複數個第二階表包含至該受管理記憶體裝置中之實體位址之指標;及該複數個第二階表中之複數個片段,該複數個片段之各者包括用於偵測該複數個片段之一對應者之更新階段之一數目的一片段計數器,其中該複數個第二階表之各表經組態以基於相關聯於各表之一計數器與一第一臨限值之間之一比較的一結果、相關聯於各表之一最終片段之一最終計數器與一第二臨限值之間之一比較的一結果或其等之一組合而移位至一不同實體位置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/IB2019/000970 | 2019-10-09 | ||
PCT/IB2019/000970 WO2021069943A1 (en) | 2019-10-09 | 2019-10-09 | Self-adaptive wear leveling method and algorithm |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202127262A TW202127262A (zh) | 2021-07-16 |
TWI763050B true TWI763050B (zh) | 2022-05-01 |
Family
ID=75437221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109132921A TWI763050B (zh) | 2019-10-09 | 2020-09-23 | 自適應損耗平衡方法及演算法與相關記憶體裝置及設備 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20210406169A1 (zh) |
EP (1) | EP4042283A4 (zh) |
JP (1) | JP2022551627A (zh) |
KR (1) | KR20220066402A (zh) |
CN (1) | CN114503086A (zh) |
TW (1) | TWI763050B (zh) |
WO (1) | WO2021069943A1 (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200941487A (en) * | 2008-03-28 | 2009-10-01 | Phison Electronics Corp | Method and controller for promoting management efficiency of non-volatile memory storage device |
US7660941B2 (en) * | 2003-09-10 | 2010-02-09 | Super Talent Electronics, Inc. | Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories |
TW201040720A (en) * | 2009-01-21 | 2010-11-16 | Micron Technology Inc | Logical address offset |
TW201719416A (zh) * | 2015-11-18 | 2017-06-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
US20170154689A1 (en) * | 2015-12-01 | 2017-06-01 | CNEXLABS, Inc. | Method and Apparatus for Logically Removing Defective Pages in Non-Volatile Memory Storage Device |
US20190095123A1 (en) * | 2017-09-22 | 2019-03-28 | Silicon Motion, Inc. | Methods for internal data movements of a flash memory device and apparatuses using the same |
US20190227875A1 (en) * | 2014-08-07 | 2019-07-25 | Pure Storage, Inc. | Mapping Defective Memory in a Storage System |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6000006A (en) * | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
US20100299494A1 (en) * | 2005-12-22 | 2010-11-25 | Nxp B.V. | Memory with block-erasable locations and a linked chain of pointers to locate blocks with pointer information |
US8327187B1 (en) * | 2009-09-21 | 2012-12-04 | Tilera Corporation | Low-overhead operating systems |
US8838935B2 (en) * | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
WO2013101050A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Multi-level memory with direct access |
US9710176B1 (en) * | 2014-08-22 | 2017-07-18 | Sk Hynix Memory Solutions Inc. | Maintaining wear spread by dynamically adjusting wear-leveling frequency |
US9830087B2 (en) * | 2014-11-13 | 2017-11-28 | Micron Technology, Inc. | Memory wear leveling |
TWI563509B (en) * | 2015-07-07 | 2016-12-21 | Phison Electronics Corp | Wear leveling method, memory storage device and memory control circuit unit |
KR102593552B1 (ko) * | 2016-09-07 | 2023-10-25 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그의 동작 방법 |
US10824554B2 (en) * | 2016-12-14 | 2020-11-03 | Via Technologies, Inc. | Method and apparatus for efficiently sorting iteration with small sorting set |
JP2019020788A (ja) * | 2017-07-11 | 2019-02-07 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
KR20190107504A (ko) * | 2018-03-12 | 2019-09-20 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US10922221B2 (en) * | 2018-03-28 | 2021-02-16 | Micron Technology, Inc. | Memory management |
-
2019
- 2019-10-09 WO PCT/IB2019/000970 patent/WO2021069943A1/en unknown
- 2019-10-09 CN CN201980101099.5A patent/CN114503086A/zh active Pending
- 2019-10-09 EP EP19948398.3A patent/EP4042283A4/en not_active Withdrawn
- 2019-10-09 JP JP2022521187A patent/JP2022551627A/ja active Pending
- 2019-10-09 US US16/962,726 patent/US20210406169A1/en not_active Abandoned
- 2019-10-09 KR KR1020227014195A patent/KR20220066402A/ko unknown
-
2020
- 2020-09-23 TW TW109132921A patent/TWI763050B/zh active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7660941B2 (en) * | 2003-09-10 | 2010-02-09 | Super Talent Electronics, Inc. | Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories |
TW200941487A (en) * | 2008-03-28 | 2009-10-01 | Phison Electronics Corp | Method and controller for promoting management efficiency of non-volatile memory storage device |
TW201040720A (en) * | 2009-01-21 | 2010-11-16 | Micron Technology Inc | Logical address offset |
US20190227875A1 (en) * | 2014-08-07 | 2019-07-25 | Pure Storage, Inc. | Mapping Defective Memory in a Storage System |
TW201719416A (zh) * | 2015-11-18 | 2017-06-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
US20170154689A1 (en) * | 2015-12-01 | 2017-06-01 | CNEXLABS, Inc. | Method and Apparatus for Logically Removing Defective Pages in Non-Volatile Memory Storage Device |
US20190095123A1 (en) * | 2017-09-22 | 2019-03-28 | Silicon Motion, Inc. | Methods for internal data movements of a flash memory device and apparatuses using the same |
Also Published As
Publication number | Publication date |
---|---|
TW202127262A (zh) | 2021-07-16 |
EP4042283A1 (en) | 2022-08-17 |
EP4042283A4 (en) | 2023-07-12 |
KR20220066402A (ko) | 2022-05-24 |
US20210406169A1 (en) | 2021-12-30 |
JP2022551627A (ja) | 2022-12-12 |
CN114503086A (zh) | 2022-05-13 |
WO2021069943A1 (en) | 2021-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113196226B (zh) | 固态驱动器中的分区命名空间 | |
KR102149817B1 (ko) | 메모리 어드레싱 | |
US9507711B1 (en) | Hierarchical FTL mapping optimized for workload | |
KR102569783B1 (ko) | 비순차적 구역 네임스페이스들 | |
KR101405741B1 (ko) | 스트라이프-기반 비-휘발성 멀티레벨 메모리 동작 | |
US20130151759A1 (en) | Storage device and operating method eliminating duplicate data storage | |
US20150098271A1 (en) | System and method of storing data in a data storage device | |
US20210232508A1 (en) | Last written page searching | |
CN113015965A (zh) | 基于小计写入计数器执行混合损耗均衡操作 | |
CN114730598A (zh) | 利用分区命名空间简缩ssd中的逻辑到物理表指针 | |
CN112463647A (zh) | 使用散列来减小前向映射表的大小 | |
US11537305B1 (en) | Dissimilar write prioritization in ZNS devices | |
US11520523B2 (en) | Data integrity protection of ZNS needs | |
CN114730290A (zh) | 将变化日志表移动至与分区对准 | |
US9778862B2 (en) | Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus | |
TWI388986B (zh) | 快閃記憶體裝置的運作方法及快閃記憶體裝置 | |
US20140089566A1 (en) | Data storing method, and memory controller and memory storage apparatus using the same | |
US20120198125A1 (en) | Methods and systems for performing efficient page reads in a non-volatile memory | |
CN114730250A (zh) | 根据存储设备中的分区对读取命令加权 | |
US11847337B2 (en) | Data parking for ZNS devices | |
TWI763050B (zh) | 自適應損耗平衡方法及演算法與相關記憶體裝置及設備 | |
WO2021021652A1 (en) | Selecting read voltage using write transaction data | |
JP2021525924A (ja) | データの2つの部分を有するメモリのデータの再配置 | |
US12045461B2 (en) | Temporal metric driven media management scheme | |
US20240152449A1 (en) | Read and write address translation using reserved memory pages for multi-page translation units |