TWI534821B - 修復均化的方法、系統與其相關的資料結構 - Google Patents

修復均化的方法、系統與其相關的資料結構 Download PDF

Info

Publication number
TWI534821B
TWI534821B TW103145178A TW103145178A TWI534821B TW I534821 B TWI534821 B TW I534821B TW 103145178 A TW103145178 A TW 103145178A TW 103145178 A TW103145178 A TW 103145178A TW I534821 B TWI534821 B TW I534821B
Authority
TW
Taiwan
Prior art keywords
memory block
memory
repair
repairs
memory blocks
Prior art date
Application number
TW103145178A
Other languages
English (en)
Other versions
TW201532064A (zh
Inventor
張育銘
李祥邦
呂函庭
張原豪
郭大維
Original Assignee
旺宏電子股份有限公司
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 旺宏電子股份有限公司 filed Critical 旺宏電子股份有限公司
Publication of TW201532064A publication Critical patent/TW201532064A/zh
Application granted granted Critical
Publication of TWI534821B publication Critical patent/TWI534821B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear 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)
  • Human Computer Interaction (AREA)

Description

修復均化的方法、系統與其相關的資料結構
本發明是有關於一種具有記憶體管理功能的記憶體裝置與系統。
某些非揮發性記憶體具有存取周期的耐久性限制(access cycle endurance limitations)。例如,基於電荷捕捉(charge trapping)的快閃記憶體、相變化記憶體(phase change memory)等。其中,存取周期的耐久性限制可能是程式化/抹除週期或設定/重設週期期間的限制。
對記憶體的一給定記憶區塊而言,施加於其上的存取週期可能與儲存於該記憶區塊的資料相關。因此,不同部分的記憶體可能會在不同時間達到耐久性限制(endurance limitations)。為解決此種問題,現已發展出耗損均化技術(wear leveling)。基本上,耗損均化技術會根據快閃記憶體之記憶區塊的程式化與抹除週期,在不同的快閃記憶區塊間搬移資料。本案的方法會將位於即將達到耐久性限制之記憶區塊內的常用資料,搬移至較少被使用的記憶區塊。應用程式能藉由邏輯定址架構(logical addressing schemes),掌握此類資料搬移的過程。僅管採用了耗損均化技術,會因為先進記憶體耐久度變低的趨勢下,製造更多主動搬移資料的負擔,使得記憶區塊可使用的週期也隨之降低。
對於存取次數(包含程式化/抹除週期或設定/重置週期)已經達到一定程度的記憶胞而言,亦已發展出修復技術。某些類型的存取週期,例如讀取週期,可能未被計入損耗均化的過程。藉由這些修復過程,可以提升記憶區塊的耐久性。例如,對電荷捕捉快閃記憶體以及其它類型的非揮發性記憶體而言,可透過熱加速恢復(repair),或修復(heal)受損的記憶胞, 進而改善記憶體裝置的耐久性。例如:旺宏電子股份有限公司已獲准之美國專利號US 8,488,387。與熱循環(thermal cycling)類似的作法亦可被應用至其他記憶體技術。
雖然修復操作可以使記憶胞恢復/修復至一定程度,但對某些技術而言,能夠對記憶胞修復的次數仍受到限制。例如,如果對記憶體的同一個記憶區塊重複進行修復,則修復過程的效益將因而降低。
亟需發展出一種能夠利用修復過程的優點而解決記憶體之耐久性的技術。此外,能以最小的負擔(overhead)防止記憶區塊被過度抹除或修復的技術也是迫切需要的。
本案敘述透過修復均化而提升記憶體耐久度的技術。修復均化是一個用於使記憶區塊的修復週期更為分散的邏輯程序。以下敘述的作法可以在不需要產生大量負擔的情況下,達到修復均化的效果。修復均化技術能顯著的改善記憶區塊的存取效能與有效壽命。長期而言,藉由使修復次數的分布更加均勻的作法,可以降低基於每一個記憶區塊的存取次數而直接進行的損耗均化(wear leveling)。修復均化的作法可為:將自產生後鮮少被使用或從未被修改的資料(例如:唯讀性檔案),搬移至經歷過最多次、或經歷過多次修復的記憶區塊。
修復均化技術發出一個修復指令,進而啟動對損壞得記憶區塊進行恢復或修復的一個修復操作。修復均化技術可使記憶區塊間的修復週期次數的差異性縮小。並且,在進行損壞均化時,比較並縮小各記憶區塊間的使用差異性。在實施例中,當記憶區塊達到一個存取週期的限制(例如,一個抹除週期的臨限值、一個重置週期的臨限值、該記憶區塊出現無法存取的資料,或是該記憶區塊的資料目前錯誤率過高)時,藉由發出修復指令而開始對記憶區塊進行一個修復操作。在實施例中,對一個記憶區塊進行位元錯誤率(bit error rate,簡稱為BER)的偵測,並於該記憶區塊的位元錯誤率達到一預設的位元錯誤率的臨限值時,發出 修復指令而開始對記憶區塊進行修復操作。再者,在實施例中,因為使用者的指令,或是一個顯著事件(例如:系統重開機,或記憶區塊最近修復操作的次數達到一個預設時間的臨限值)的經過時間,因而發出一個修復指令。
此處所描述之記憶區塊的修復次數是指:施加於記憶區塊的修復操作/週期次數。一個記憶區塊的存取次數代表自該記憶區塊經過前次修復後,所歷經之與該記憶區塊的耐久性相關的至少一種存取週期的次數。以快閃記憶體為例,一個存取週期可以是一個抹除週期。在實施例中,在修復均化操作所使用之一個記憶區塊的存取次數,代表該記憶區塊自前次修復後所經過的存取週期。在實施例中,利用一個陣列而維持並儲存每一個記憶區塊的修復次數與存取次數。
結合修復均化技術的系統可包含用於修復均化的邏輯。藉由該邏輯而使記憶區塊的修復週期更為分散,最終能改善記憶區塊的持久性。並因此能夠在不產生大量負擔的情況下,延長記憶區塊的壽命。用於修復均化的邏輯可以硬體、軟體或其組合實現。
在實施例中,確認包含鮮少被抹除的資料而未超過臨限修復次數的記憶區塊,並將該些資料移動至最近被抹除超過臨限修復次數的記憶區塊,進而實現修復均化。此程序讓超過臨限修復次數的記憶區塊減少達到臨限存取次數的可能性。其中,臨限存取次數用於指示後續的修復週期。
為了對本發明之上述及其他方面有更佳的瞭解,下文特舉較佳實施例,並配合所附圖式,作詳細說明如下:
100‧‧‧系統架構
140‧‧‧快閃記憶體轉譯層
141‧‧‧位址轉譯器
110‧‧‧修復均化器模組
120‧‧‧快閃記憶體儲存系統
130‧‧‧記憶體技術裝置層
210‧‧‧安全群組
220‧‧‧危險群組
230、303‧‧‧基底指標
211、212、213、214、225‧‧‧修復串列
300‧‧‧陣列結構
301、304、305、306、307‧‧‧條目
302‧‧‧實體記憶區塊位址
502、504、506、508、510、512、514、516、518、520、522、524、526、528、530、532、534、536‧‧‧步驟
第1A、1B圖,其係本案技術的系統架構。
第2圖,其係本案技術所採用之資料結構的示意圖。
第3圖,其係本案技術之資料結構的一種陣列元素的舉例。
第4圖,其係移動危險群組的一個例子。
第5圖,其係實現本案技術邏輯之流程圖的舉例。
第6圖,其係電腦系統以軟體方式實現本發明的簡化方塊圖。
以下為為關於修復均化之實施例的詳細描述,並可參考附圖。
第1A和1B圖舉例說明兩個系統架構100,每一個系統架構各自包含一個用於對快閃記憶體執行修復均化的修復均化器模組110。其他實施方式可適於其他類型的記憶體。以快閃記憶體儲存系統120為例,一個記憶體儲存系統可以包括兩個用於控制記憶體晶片的軟體層。其中一層是記憶體技術裝置層(memory technology device layer,簡稱為MTD layer)130,另外一層是快閃記憶體轉譯層(flash translation layer)140。記憶體技術裝置層130是一個硬體抽象層,用以提供快閃記憶體轉譯層存取底層快閃晶片的基本功能(primitive functions),例如讀取或寫入。快閃記憶體轉譯層可包括一個位址轉譯器(address translator)141、清除器(garbage collector or cleaner),和一個損耗均化器(wear leveler)。位址轉譯器141將被請求之邏輯區塊位址(logical block address,簡稱為LBA)翻譯為相對應的實體(physical)的記憶區塊與分頁。垃圾收集器用於回收有些記憶體(例如:快閃記憶體)因為一次寫入特性(write-once property)以及異區更新(out-of-place update)的特性而產生的無效資料。損耗均化器是透過對記憶區塊分散抹除的方式,延長記憶體晶片的壽命。在實施例中,修復均化技術被整合至各種類型記憶體晶片的現有系統架構中。在第1A圖的實施例中,將修復均化器模組110整合至快閃記憶體轉譯層140。在第1B圖的實施例中,可共同使用修復均化器模組110與損耗均化器,將用於延長快閃記憶體的壽命的修復均化器模組110設置於快閃記憶體轉譯層140與記憶體技術裝置層130間,甚至以修復均化器模組110替換損耗均化器。
修復均化技術的一個重要面向是,搜尋和辨識休眠資料(dormant data)。修復均化技術可以藉由控制邏輯實現的度量方式辨識休眠 資料。若與儲存在其他記憶區塊的資料相較時,記憶區塊所儲存的資料已經較久未被更新時,可將其視為休眠資料。辨識休眠資料的作法可採用不同方式實現。例如,可以利用具有一定觀察期(observation period)的修復串列(healing list)確認休眠資料。在實施例中,修復均化技術包含兩個程序:調整程序(adjustment procedure)和凍結程序(freeze procedure)。這兩個程序使用修復串列作為資料結構。惟,調整程序與凍結程序所使用的資料結構,並不以修復串列為限。實際應用時,只要能用於能管理複數個條目的結構(例如:陣列、群組、樹狀結構等)即可。調整程序利用一個度量(例如:在給定的修復串列中最近最少被抹除的記憶區塊),有效率地搜尋並確認儲存著冬眠資料的記憶區塊。在實施例中,確認在記憶區塊內存有休眠資料的方式是,將最近被清除或抹除的記憶區塊搬移至修復串列的前端(head of healing list)。其中,包含休眠資料的記憶區塊則聚集在修復串列的後端(tail of healing list)。在實施例中,會在每次有記憶區塊被抹除時啟動調整程序。在進行搜尋與選擇的過程中,調整程序可以透過無需複製任何最新資料(live data)的方式,確認包含休眠資料的記憶區塊。調整程序可利用此種資料結構和修復串列的組成,在所包含之記憶區塊的修復次數尚未超過臨限修復次數(non-over-threshold)的串列中,搜尋與選擇最近最少被清除的記憶區塊。其中,一個“被清除的記憶區塊”代表該記憶區塊已經被抹除或重置,或經由其他方式指示為可用。
凍結程序控制而使每個記憶區塊的修復次數更為均勻。當一個修復次數超過臨限修復次數(over-threshold heal count)的記憶區塊被存取(例如被清除或抹除)時,調整程序將啟用(invoke)凍結程序。當一個記憶區塊的修復次數已經達到或超過臨限修復次數(heal count threshold)時,將其稱為一個超過臨限修復次數的記憶區塊。在實施例中,臨限修復次數是根據記憶區塊所具有的最小修復次數(least amount of heal count),以及修復串列的數目決定。
當(多個)修復串列所包含之記憶區塊的修復次數超過臨限修復次數時,該些修復串列被稱為危險群組(danger group);當多個修復串列所包含之記憶區塊的修復次數未超過臨限修復次數時,該些修復串列被 稱為安全群組(safety group)。修復均化技術的實施例將用於維護安全群組與危險群組的內容。與其他的記憶區塊相較,修復次數超過臨限修復次數的記憶區塊更接近耐久性限制或是已經達到耐久性限制。因此,將這些修復次數超過臨限修復次數的記憶區塊歸類為危險群組。另一方面,對修復次數尚未超過臨限修復次數的記憶區塊而言,較不像危險群組內的記憶區塊那麼接近耐久性限制,因而將修復次數尚未超過臨限修復次數的記憶區塊歸類為安全群組。
每一次啟用凍結程序時,會將先前由調整程序確認的休眠資料轉移至位在危險群組中,最近被抹除之超過臨限修復次數的記憶區塊。因為包含休眠資料的記憶區塊再被寫入資料的機會低於其他記憶區塊的緣故,將休眠資料轉移至超過臨限修復次數的記憶區塊的作法,能夠降低該記憶區塊在近期再被抹除與被修復的可能性。
請參見第2圖,其係本案修復均化技術之實施例所使用的資料結構之示意圖。如前所述,這些記憶區塊被劃分成兩個群組,分別被標記為安全群組210和危險群組220。對位在安全群組210內的記憶區塊而言,達到耐久性限制的風險並不像位於危險群組220的記憶區塊那麼高。因此,位於安全群組210內的記憶區塊可以被任意抹除以及儲存任何類型的資料。相對的,由於危險群組220內的記憶區塊皆較安全群組210內的記憶區塊經過更多次的抹除與修復,所以屬於危險群組220的記憶區塊不能再被任意的抹除,也不適合用於儲存任何類型的資料。在實施例中,安全群組210內的記憶區塊被連結至複數個修復串列211、212、213、214中的一個,修復串列211、212、213、214屬於安全群組210的一部分。位在危險群組220中的所有記憶區塊共同連接至一個修復串列225。安全群組210和危險群組220所包含之修復串列的數量不需要被限定。在所述實施例中,總共有五個修復串列211、212、213、214、225,其中四個修復串列屬於安全群組210,一個修復串列屬於危險群組220。每一個修復串列可以是一個按照最近抹除順序而排列的連結串列(linked list)。如第2圖所示,連結串列的左側(前端)是最近最常被抹除的記憶區塊;連結串列的右側(後端)是最近最少被抹除的記憶區塊。在一個記憶區塊被抹除後,調整程序便將這 個最近被抹除的記憶區塊搬移至修復串列的前端,進而維持這個連結串列的先後順序。由於修復串列的後端聚集著最近最少被抹除的記憶區塊,因此,調整程序可以根據記憶區塊在修復串列內的順序而判斷休眠資料的位置。
在實施例中,屬於同一個修復串列中的記憶區塊具有相同或類似的修復次數(heal count)。在實施例中,位於同一個修復串列的所有記憶區塊均具有相同的修復次數。在實施例中,該資料結構包括一個用於指向修復串列的基底指標230。在第2圖中,基底指標230指向下方的修復串列211。在系統的所有記憶區塊中,位在修復串列211之記憶區塊所具有的修復次數最小。基底指標230可以指向任何一個修復串列。據此,任何修復串列均可能與系統中具有最小修復次數的記憶區塊相對應。在實施例中,在任何記憶區塊被修復前,所有記憶區塊的修復次數均為零。此時,所有的記憶區塊均屬於被基底指標所指向的修復串列,其他的修復串列則是空的。
在實施例中,資料結構可包含任意數量的修復串列。系統中的記憶區塊間的耐受性差異(tolerated difference)取決於修復串列的數量。例如,第2圖所示的安全群組211包含四個修復串列211、212、213、214,以及由基底指標230指向的底部修復串列211。底部修復串列211內的記憶區塊是在系統的所有記憶區塊中,具有最小修復次數的記憶區塊。在此實施例中,在底部修復串列211上方的修復串列212所包含之記憶區塊的修復次數,會大於由基底指標230指向的底部修復串列211所包含之記憶區塊的修復次數(前後兩個修復串列211、212所包含之記憶區塊的修復次數間的差值為1)。每一個修復串列所包含之記憶區塊的修復次數,會較前一個修復串列所包含之記憶區塊的修復次數多一次(差值為1)。連帶的,在此實施例中,危險群組內的修復串列所包含的記憶區塊,其修復次數與由基底指標230指向的底部修復串列211之記憶區塊的修復次數相較時,兩者的差值將大於或等於四。
在實施例中,調整程序會確認在修復串列中的休眠資料。在凍結程序中,經確認後的休眠資料被搬移至位在危險群組中的最近被抹除 的記憶區塊中。因此,對位於危險群組中的多個超過臨限修復次數的記憶區塊而言,在近期內再被抹除或修復的可能性,相對較位於安全群組中的記憶區塊更低。因為在抹除記憶區塊時,已經將休眠資料搬移至位於危險群組的記憶區塊內。是故,對危險群組內的記憶區塊而言,再繼續增加其修復次數的機會較小。連帶的,修復串列的數量會影響在系統中的記憶區塊的修復次數間的差異。
在實施例中,可以透過安排修復串列的方式而提升效能。記憶區塊所屬的修復串列可以根據修復次數而分類。維持修復串列,以及在修復串列中搜尋某些特定記憶區塊的過程,可以透過一個組成元素(element)的數量與系統的記憶區塊數量相等的陣列達成。陣列內的每個元素包含一個索引與兩個指標。該索引用於代表與其對應的修復串列,兩個指標則用於形成雙向串列(doubly linked list)。例如,在陣列中維持修復串列中第i個記憶區塊之連結串列的狀態(linked-list status),因此可以不需要透過搜尋即可自陣列中取得第i個記憶區塊之連結串列的狀態(linked-list status)。在隨機存取記憶體(RAM)的空間有限的實施例中,陣列可被劃分為大小相等的塊體(chunk),且每一個塊體被儲存在快閃記憶體內,並根據需要與否而載入至隨機存取記憶體(RAM)。
第3圖說明支援修復均化程式化的一種陣列結構300。該陣列可以被儲存在高速記憶體(例如RAM)中。在電腦執行修復均化程序時,可對高速記憶體進行存取。陣列結構300的條目(例如:條目301)可以包括多個資料欄位,一個資料欄位代表索引(index:)用於判斷該修復串列的用途(基底指標所指向的修復串列、安全群組的修復串列、危險群組的修復串列),與該修復串列對應的實體記憶區塊為其成員(member)。一個資料欄位包括指示先前記憶區塊的指標(前一區塊指標)。若要對一個預定的索引(given index)建立雙向串列(doubly linked list),則另包含一個指示後方記憶區塊的指標(後一區塊指標)。指標可利用位址偏移(address offset)或是完整的實體記憶區塊位址(complete block address)代表在修復串列中的前一個記憶區塊或後一個記憶區塊。對於位在最小修復次數串列前端的條目而言,可在其前一區塊指標的位置儲存一個預設值(例如:-1),用於代表該條目是 被基底指標(BASE PNTR)303所指向。陣列結構300中的條目也可用於維持與實體記憶區塊相對應的抹除次數(或其他存取次數),以及可在其他實施例採用之修復次數。
在陣列結構300中的條目可以在對記憶體中與實體記憶區塊位址(physical block address,簡稱為PBA)(例如:實體記憶區塊位址302)對應的記憶區塊進行修復均化時而存取。因此,當一個給定的實體記憶區塊被偵測到要被抹除或其它相關的存取時,該存取的實體記憶區塊位址被用於取得與該實體記憶區塊對應的條目。儲存在條目中的資訊,可用於支援如上所述的修復均化過程中。
在上述的例子中,修復均化的過程將維護基底指標303,基底指標303被儲存在暫存器或是電腦執行修復均化程式時,所能存取的其它記憶體位址。基底指標303可以儲存相對應修復次數最低的修復串列的前端記憶區塊的實體記憶區塊位址,此串列為安全群組內的一串列。
圖中以箭頭代表由基底指標開始進行搜尋,在條目中由基底指標303所存取的後一區塊指標指向條目304。且,條目304的前一區塊指標與基底指標303相符。條目304的後一區塊指標指向條目305;條目305的後一區塊指標指向條目306;條目306的後一區塊指標指向條目307,依此類推。雙向串列可以利用相反方向進行。舉例說來,可以透過具有最小索引的串列後端(the end of the lower index list)的後一區塊指標(next block point),以及透過在條目內儲存的索引編號(index number)而判斷具有後一索引的串列的前端。
例如:在經過修復程序後,當一個條目被從一個串列搬移到下一個串列時,該條目的索引編號也被改變。此外,該條目的先一區塊指標和後一區塊指標也被更新,進而在新的串列中適當位置插入該條目。此外,原本由該記憶區塊的後一區塊指標所指向的(後方)記憶區塊,其前一區塊指標也將被更新;以及,原本由該記憶區塊的前一指標所指向的(前方)記憶區塊,其後一區塊的指標也會被更新。此外,隨著記憶體的抹除周期與修復週期變化,記憶區塊的抹除次數與修復次數亦適時的更新。在實施例中,當系統中的記憶區塊為抹除週期或存取週期時,將啟動調整程序 維持或調整修復串列,讓休眠資料聚集在由基底指標所指向之具有最小修復次數的修復串列。當記憶區塊被抹除後執行調整程序時,如果被抹除之記憶區塊的抹除次數還未達到臨限抹除次數時,便將該被抹除記憶區塊的位置搬移到所屬之修復串列的前端,如第2圖所示的記憶區塊5(PBA 5)。如果該被抹除記憶區塊的抹除次數已到達其當前的臨限抹除次數(current erase count threshold),則對該被抹除記憶區塊進行修復操作,並將記憶區塊5(PBA 5)提升至與其具有相同修復次數之修復串列212的前端,作為該修復串列中最近被修復的記憶區塊。例如,如第2圖所標式的記憶區塊80(PBA80)。在實施例中,如果該被抹除記憶區塊的位元錯誤率(bit error rate)已經達到位元錯誤率的臨限值(bit error rate threshold)時,利用修復操作修復該被抹除記憶區塊。因此,藉由將被抹除記憶區塊與被修復記憶區塊搬移至具有相同修復次數之修復串列的方式,調整程序得以維護修復串列的內容。透過將被抹除的記憶區塊搬移至修復串列前端的方式,每一個修復串列的後端將各自對應於在串列中最近最少被抹除的記憶區塊。因此,儲存在修復串列後端之記憶區塊內的資料,被抹除的可能性較低。透過搬移此類資料而降低記憶區塊被抹除的可能性的作法,可產生助益。
在實施方式中,如果系統一共有N個修復串列,則前N-1個修復串列所包含的記憶區塊,其修復次數尚未超過臨限修復次數,並將這N-1個修復串列視為安全群組;第N個修復串列(即,修復串列N-1)包含超過臨限修復次數的記憶區塊,並因此將第N個修復串列視為危險群組。當位於不屬於危險群組之修復串列i的記憶區塊,透過修復指令而進行修復時,將此記憶區塊移動至修復串列(i+1)%N之前端的位置。然而,如果危險群組中的記憶區塊被抹除,將啟動凍結程序。凍結程序會將位於安全群組內的休眠資料,搬移至危險群組中將被抹除的記憶區塊,進而降低在近期對位在危險群組中的這個記憶區塊,再度進行抹除與修復的可能性。
根據本發明的實施例,在凍結程序被啟用後,由被基底指標所指向之,與最小修復次數相對應的修復串列的後端,開始進行休眠資料的搜尋程序。由於調整程序會將休眠資料往被基底指標所指向之,與最小 修復次數值相對應的修復串列的後端移動,因此,由此修復串列後端起算的第一個非閒置記憶區塊(non-free block)包含休眠資料。記憶區塊被判斷為包含休眠資料後,先將該記憶區塊中的休眠資料搬移到危險群組中的抹除區塊後,接著抹除原先包含休眠資料的記憶區塊。其後,若此一原本存有休眠資料的記憶區塊的抹除次數尚未達到臨限抹除次數時,再將此記憶區塊搬移至與其相對應之修復串列的前端。
第2圖為凍結程序的一個例子。在危險群組220中的記憶區塊30(標示為PBA 30)被抹除,且凍結程序被啟動以搜尋第一個非閒置的記憶區塊。在此實施例中,由基底指標230指向的修復串列211中的第一個非閒置的記憶區塊為記憶區塊22(標示為PBA 22)。記憶區塊22內的休眠資料被複製到記憶區塊30後,記憶區塊22被抹除。接著,由於記憶區塊22的修復次數尚未超過臨限修復次數的緣故,記憶區塊22將被搬移至與其對應之修復串列211的前端。因為記憶區塊30現在存有休眠資料而在近期不太有機會再被抹除的緣故,記憶區塊30會被搬移到在危險群組的修復串列的後端。
透過凍結程序,對修復次數超過臨限修復次數的記憶區塊進行抹除的可能性將降低。在實施例中,凍結程序進一步縮小所有記憶區塊間的修復次數的差值(heal count difference)。在實施例中,被基底指標所指向之修復串列中的所有的記憶區塊如果都被修復,並且被搬移至與具有另一個修復次數之記憶區塊相對應的下一個修復串列。則基底指標所指向的修復串列變成空的,便移動基底指標的指向至下一個修復串列。原先被基底指標所指向的修復串列則變成危險群組的修復串列,並在一開始的時候清空。原本屬於危險群組的修復串列,則成為在安全群組中與最大修復次數相對應的修復串列。第4圖說明這種以循環方式搬移危險群組的一個例子。在第4圖的這個例子中,位於基底指標230所指示之修復串列211僅剩的記憶區塊12(標示為PBA 12)在經過修復後,遞增其修復次數。且記憶區塊12因而被提升到基底指標230上方的修復串列212。據此,使得被基底指標230所指向的修復串列211變成空的,所以將基底指標230搬移至下一個修復串列212。先前被基底指標230所指向的空的修復串列211現在 作為危險群組220;且,先前屬於危險群組220的修復串列225現在作為安全群組210。在實施例中,修復串列的順序維持固定,而以循環方式移動危險群組。連帶的,本案技術所實現的每一個修復串列均會被基底指標所指向,而且每一個修復串列均會在一段時間內作為危險群組。
在實施例中,如果危險群組產生移動,原本在危險群組內的修復串列,將變成在安全群組中與具有最高修復次數之記憶區塊相對應的修復串列。在安全群組中,與具有最高修復次數之記憶區塊相對應的修復串列所包含的記憶區塊具有休眠資料,並在修復串列屬於危險群組的時候,藉由凍結程序將休眠資料搬移到這些記憶區塊。因此,在安全群組中具有最高的修復次數的記憶區塊在近期較不容易因為被修復的緣故而被搬移至新的危險群組內。因為在記憶區塊透過調整程序而被拉升至新的危險群組時,會導致許多抹除週期,進而引發修復週期。這種搬移危險群組的作法,能進一步減少凍結程序被啟動的可能性。因此,安全群組內的修復串列的數目不僅影響記憶區塊的修復次數的最大耐受差異外,也影響啟動凍結程序的頻率。因此,在安全群組中的修復串列的數量,相當於把記憶區塊搬移到一個空的危險群組前的緩衝空間,因而可減少啟動凍結程序的頻率。
修復均化技術的負擔源自於凍結程序,因為凍結程序會將休眠資料由安全群組複製到危險群組,連帶將引起活動分頁複製(live pages copying)。因此,與損耗均化技術相較時,損耗均化技術所需的活動分頁複製產生的負擔較大,本案可透過減少啟動凍結程序頻率的方式產生較小的負擔。
第一演算法與第二演算法為以擬程式碼(pseudo code)表示調整程序和凍結程序的實施例。這兩個演算法使用下述函數:GET-HEALINGLIST(...)此函數根據所輸入的記憶區塊而 傳回該輸入記憶區塊所在的修復串列之索引。
IS-NEEDHEALING(...)此函數根據所輸入的記憶區塊而傳回該輸入記憶區塊是否滿足需要被修復的條件。這個函數可以透過對一種能代表該記憶區塊之修復狀態的屬性進行監測而完成。在實施例中,該條件可以是當該記憶區塊已到達其當前臨限抹除次數(current erase count limit)。在實施例中,臨限抹除次數可以是預設的臨限值(preset threshold),或者基於其他因子(例如:該輸入之記憶區塊的修復次數,或是該輸入之記憶區塊前次被抹除的時點)而決定。在實施例中,該條件可以是當該記憶區塊中的位元錯誤率已經達到一個位元錯誤率臨限值。對一個記憶區塊偵測其位元錯誤率的時點可早於此函數的執行或與此函數同時執行。一個記憶區塊的位元錯誤率可以是當前的位元錯誤率,或是經過一段期間的平均結果。位元錯誤率臨限值可以是預設的臨限值,或者基於其他因素(包括該輸入記憶區塊的修復次數,或是該輸入記憶區塊先前的位元錯誤率)而決定。
HEAL(...)此函數將修復指令發出至該輸入記憶區塊。
REMOVE(......)此函數將該輸入記憶區塊由其目前所屬的修復串列中移除。在實施例中,可以透過修改雙向串列中與該輸入記憶區塊相連接的記憶區塊而完成。
INSERT-HEAD(...,...)與INSERT-TAIL(...,...)這兩個函數分別將輸入的記憶區塊加入至輸入的修復串列的前端和後端。
IS-EMPTY(...)此函數傳回輸入的修復串列,或者由基底指標所指向的修復串列是否包含任何記憶區塊。
GET-LISTTAILELEMENT(...)此函數傳回位在輸入的修復串列後端的記憶區塊。
IS-NON-FREEBLOCK(...)此函數傳回輸入的記憶區塊是否包含有效的資料,例如有效的分頁。
MOVETO(A,B)此函數將儲存在輸入的記憶區塊A的資料複製到到輸入的記憶區塊B。輸入的記憶區塊B必須是閒置的記憶區塊。在實施例中,儲存在輸入的記憶區塊A的資料將被抹除。
GET_LISTPREVELEMENT(...)此函數傳回在修復串列中 位在所輸入的記憶區塊的前一個記憶區塊。例如,如第2圖所示,若輸入的記憶區塊是記憶區塊PBA21,該函數將傳回記憶區塊PBA22。
第一演算法為因應一個記憶區塊被抹除而進行調整程序的實施例。在此實施例中,pha代表要被抹除的記憶區塊。base代表用於指向具有最小修復次數的修復串列之基底指標。(base+N-1)%N代表與危險群組對應之修復串列的索引。例如,在第2圖中,如果基底指標在五個修復串列中指向索引為0的修復串列,則在危險群組內的修復串列的索引為4。然而,當基底指標產生移位並指向索引為1的修復串列,則危險群組的索引為0。當本實施例的調整程序執行時,記憶區塊pba的常駐修復串列(residing healing list)的索引將被查找並儲存為hl(第1行)。如果記憶區塊pda的狀態顯示記憶區塊pba需要被修復,例如達到其臨限抹除次數或位元錯誤率的臨限值,且記憶區塊pba不屬於危險群組(第2行),該記憶區塊pba將被修復並搬移到修復串列(hl+1)%N中(第3-5行)。位在修復串列(hl+1)%N內的記憶區塊所具有的修復次數,高於記憶區塊pba目前所屬之修復串列內之記憶區塊所具有的修復次數。在所示的實施例中,危險群組內有一個修復串列;安全群組有N-1個修復串列。
如舉例的演算法所式,在調整程序中,如果記憶區塊pba位於危險群組的修復串列中,將啟用第二演算法所示的凍結程序,以減少該記憶區塊在近期內被抹除或修復的可能性(第7-8行)。或者,如果記憶區塊pba位於安全群組中的修復串列,該記憶區塊會被搬移至其常駐的修復串列hl的前端(第9-11行)。
經過調整程序的初始部分後(第1-11行),如果被基底指標所指向的修復串列是空的,基底指標前進至較基底指標原本指向之修復串列具有更高修復次數的修復串列(第12-13行)。對基底指標的移動,即是將危險群組搬移到原本被基底指標所指向的空的修復串列。此外,安全群組現在包含先前屬於危險群組的修復串列。
第二演算法所示的實施例為在危險群組中的記憶區塊pba要被抹除時啟用的凍結程序。當凍結程序透過調整程序而被啟用時,如果判斷該記憶區塊pba需要被修復的條件成立,則對該記憶區塊pba進行修 復,藉以防止該記憶區塊pba在修復指令被施加前被磨損(第1行)。在該記憶區塊pba被修復後,如果需要的話,凍結程序將在安全群組中,自被基底指標base所指向之修復串列的後端開始搜尋(第2-13行)。其中hl是目前搜尋之修復串列的索引,且dormant代表對被用於檢查是否以有效分頁形式存在有效資料的記憶區塊。如果記憶區塊dormant是一個非閒置記憶區塊,代表此記憶區塊包含有效分頁,便結束搜索(第6行)。如果記憶區塊dormant是不包含任何有效分頁的閒置記憶區塊時,則繼續對該修復串列中的下一個成員進行搜尋,直到該修復串列結束為止。如果被基底指標所指向的修復串列只包含不具有效分頁的閒置記憶區塊,則繼續對具有較高修復次數的修復串列的後端開始搜尋。這個過程持續對每個具有更高的修復次數的修復串列進行,直到找到一個非閒置記憶區塊為止。凍結程序接著將記憶區塊dormant內的資料搬移至記憶區塊pba,接著基於系統架構(例如:模組或是分層的實現方式)而更新所對應的映射資訊(mapping information)或是實體記憶區塊映射,因而能減少在近期對記憶區塊pba抹除或是修復的可能性(第7行)。由於在記憶區塊dormant內的休眠資料已經被複製到危險群組中的記憶區塊,記憶區塊dormant被搬移至相對應之修復串列的前端(第8-9行)。此外,將位在危險群組內的修復串列中的記憶區塊pba搬移至危險群組的修復串列的後端(第10-11行)。再者,在將資料由記憶區塊dormant搬移至記憶區塊pba後,因為不需要將相同的資料同時存放在兩個記憶區塊的緣故,可以將記憶區塊dormant抹除。
流程圖
第5圖為本揭露之修復均化技術之實施例的簡化流程圖。此例的修復均化邏輯始於步驟502並開始維持記憶區塊的修復次數與抹除次數(步驟504)。如前所述,與每一個記憶區塊所對應之修復次數,以及清除或存取次數可被儲存在一個陣列中。步驟504後接著執行步驟506,透過修復次數而對記憶區塊維持一組N個串列的條目。如前所述,在其他實施例中,串列的數量不需被限定,且每一個記憶區塊的串列的索引被存放在一個陣列中。如前所述,同一個串列中的記憶區塊並不一定具有相同的修復 次數。例如,第一個串列包含的記憶區塊所具有的修復次數為1或2,且第二個串列所包含的記憶區塊所具有的修復次數為3或4。下一個步驟508用於使基底指標維持指向記憶區塊具有最小修復次數的修復串列。在以陣列內的元素代表記憶區塊的系統中,基底指標可以被儲存為陣列中的一個元素。如前所述,若修復串列中的所有記憶區塊均被修復,並因而晉升至下一個修復串列,導至被基底指標所指向的修復串列為空的。在這種情況下,基底指標將指向下一個修復串列。對於該等串列,下一個步驟510將依照最近最常被抹除的記憶區塊至最近最少被抹除的記憶區塊而排列。如上所述,在實施例中,這個過程可以透過調整程序而完成,調整程序會將最近被抹除的記憶區塊放在修復串列的前端。反面言之,這代表最近最少被抹除的記憶區塊會位在修復串列的後端。
於建立資料結構後,下一個步驟512將判斷第一記憶區塊的抹除週期。在前述實施例中,這種啟發式過程稱為調整程序。如步驟504所建立的,每個記憶區塊對應於一個抹除次數,在第一記憶區塊被確認進行的抹除週期後,下一個步驟514將遞增第一記憶區塊的抹除次數。此步驟後執行步驟516,用於決定第一記憶區塊是否位在系統中與具有最大修復次數之記憶區塊對應的修復串列中。在前述實施例中,具有最大修復次數的該修復串列被啟發式的稱為危險群組。如果在步驟516中,確定第一記憶區塊所在的修復串列具有最大修復次數之記憶區塊,便接續執行步驟518、520、522、524、526、528。如前述實施例所述,這些步驟被啟發式的稱為凍結程序。
在舉例的邏輯中,凍結程序的第一個步驟518決定第一記憶區塊的抹除次數是否已達到抹除週期的臨限值。如前所述,此臨限值可以基於該記憶區塊的修復次數而決定。如果第一記憶區塊已達到一個抹除週期臨限值,便發出一個修復指令以修復第一記憶區塊520,並且將第一記憶區塊的修復次數加上1(步驟522)。在實施例中,如果條件指出第一記憶區塊需要進行修復操作(例如,記憶區塊的位元錯誤率已經達到位元錯誤率臨限值)時,可以對第一記憶區塊發出修復指令。無論第一記憶區塊是否接收到一修復命令,下一步驟524均會將具有最小修復次數並包含有效記憶 區塊修復串中,最近最少被抹除的記憶區塊判斷為第二記憶區塊。請參照第2圖並搭配第5圖所舉例的邏輯。記憶區塊PBA30是第一記憶區塊,且步驟524開始對被基底指標230所指向的串列211進行搜尋,並確認記憶區塊PBA22是包含最小抹除次數之記憶區塊的串列211中,最近最少被抹除的有效記憶區塊。需要注意的是,雖然記憶區塊PBA22被抹除的時點較記憶區塊PBA21和記憶區塊PBA20更近,但記憶區塊PBA21和記憶區塊PBA20並不是有效的記憶區塊。在確認第二記憶區塊後,下一個步驟526是將第二記憶區塊的資料複製到第一記憶區塊。請再次參考第2圖,第二記憶區塊PBA22的資料被複製到位於危險群組的記憶區塊PBA30。在下一個步驟528中,第二記憶區塊可搬移到與第二記憶區塊的修復次數對應之修復串列的最近被抹除端(前端)。再次參照第2圖與第5圖的邏輯,由箭頭指示的步驟528指出將原本位於修復串列中間的記憶區塊PBA搬移至修復串列的前端。
如果步驟516判斷第一記憶區塊不在具有最大修復次數的修復串列中,則接著執行一系列的步驟530、532、534、536。步驟530、532和534與先前提到的步驟518、520和522相似。一旦第一記憶區塊被抹除,並且不需要對第一記憶區塊進行修復,則步驟536會將第一記憶區塊搬移至與第一記憶區塊的修復次數相對應之修復串列的最近被抹除的一端(前端)。再次參考第2圖和本實施例邏輯的第5圖,步驟536的例子顯示當記憶區塊PBA5被抹除時,記憶區塊PBA5並未接收到修復指令,並將記憶區塊PBA5搬移其當前的修復串列212的前端。另一個步驟536的例子顯示,在記憶區塊PBA 80被抹除、修復後,將記憶區塊PBA 80由修復串列212搬移至在修復串列212上方的修復串列213。
電腦系統
第6圖是用於實現本發明之電腦系統710的簡化方塊圖。需留意的是,前述實施例所述的修復均化邏輯,可以使用具有硬體、軟體或其組合的電腦系統實現。
電腦系統710通常包括處理器子系統714,透過匯流排子系 統712而與多個周邊裝置溝通。這些周邊裝置可包括儲存子系統724(包含具有修復均化器的記憶體子系統726與檔案儲存子系統728)、使用者介面輸入裝置722、使用者介面輸出裝置720以及網路介面子系統716。使用者介面輸入裝置722與使用者介面輸出裝置720讓使用者可以與電腦系統710進行互動。網路介面子系統716提供了一個介面到外部網絡,包括一個至通訊網路718的網路介面716,並經過通訊網路718而耦接至其他電腦系統中與其對應的介面裝置。通信網絡718可包含許多互連的電腦系統和通訊連結。這些通訊連接可以是有線連結、光學連結、無線連結,或是其他用於溝通資訊的機制。惟其通常是一個以IP為基礎(IP based)的通訊網絡。在一個實施例中,通訊網絡718是網際網路,但是在其他實施例中,通信網絡718可以是任何合適的電腦網絡。
網路介面的實體硬體組件有時被稱為網路介面卡(network interface card,簡稱為NIC),但其外觀不一定為卡狀,而可能以積體電路(integrated circuit,簡稱為IC)與主板直接連接,或是在單一積體電路晶片上與其他元件共同製造的巨晶元(macrocell)。
使用者介面輸入裝置722可包含鍵盤、指向裝置(如:滑鼠、軌跡球、觸控板或繪圖板)、掃描器,整合至顯示器的觸控螢幕、音訊輸入裝置(例如:音訊識別系統、麥克風),以及其他類型的輸入裝置。一般說來,使用“輸入裝置”一詞意指將資訊輸入至電腦系統710或至通訊網路718的各種可能的裝置和方法。
使用者介面輸出裝置720可包括顯示子系統、印表機、傳真機,或非視訊顯示器(如:音訊輸出裝置)。顯示子系統可包含陰極射線管(cathode ray tube,簡稱為CRT)、平板裝置(例如液晶顯示器)設備、投影裝置或是其他用於創造視覺影像的機制。顯示子系統也可提供非視覺顯示,例如透過音訊輸出裝置。在一般情況下,使用“輸出裝置”一詞意指利用電腦系統710而將資訊輸出至使用者或其他電腦系統的各種可能的裝置和方法。
在儲存子系統724儲存的程式與資料用於提供本發明某些實施例的功能。例如,實施本發明的某些實施例功能的各種模組可以被儲 存在儲存子系統724。這些軟體模組一般由處理器子系統714執行。
記憶體子系統726通常包括多種記憶體,包括:在程序執行期間用於儲存指令和資料的主隨機存取記憶體(RAM)730;以及儲存固定指令的惟讀記憶體(ROM)732。記憶體子系統726可進一步包括如第1A、1B圖所示之修復均化器模組的系統架構。檔案儲存子系統728對程式與資料檔案提供耐久性的儲存功能。檔案儲存子系統728可以包括一個硬碟(hard disk drive)、具有可移除式媒體(removable media)的軟碟(floppy disk drive)、CD-ROM驅動器、光碟機,或是可移動媒體磁帶器(removable media cartridge)。本發明某些實施例的功能模組可在電腦可讀媒體(computer readable medium)上實現,例如一個或多個CD-ROM,並且可以儲存在檔案儲存子系統728。除了其他內容外,主記憶體726還包含由處理器子系統714執行的電腦指令,讓電腦系統執行如本文所述的功能。如本文所描述的,在“主機”或“電腦”上運行的程序與軟體,是由處理器子系統714執行並回應記憶體子系統726(包含任何此類指令與資料的其它本地端或遠端儲存區)所儲存的指令與資料。
匯流排子系統712提供了一種讓各種組件和電腦系統的子系統710彼此溝通的機制。雖然圖中的匯流排子系統712僅以單個匯流排表示,但在其他實施例中,匯流排子系統可使用多個匯流排。
電腦系統710的類型可以是個人電腦、可攜式電腦、工作站、電腦終端、網絡電腦、電視、大型主機(mainframe)、伺服器群(server farm),或其他資料處理系統或用戶裝置。由於電腦和網路技術不斷變化,第6圖所示的電腦系統710僅是一個特定的舉例。電腦系統710的其它配置方式可能比第6圖所描繪的電腦系統具有更多或更少的組件。
本揭露的技術能夠在記憶體必須再被抹除以供寫入時,降低寫入增益(write amplification),並可以增加記憶體裝置的耐久力。與其他用於提升耐久性的技術(例如,損耗均化技術)相較,本揭露的技術進一步減少需要複製新的分頁的情形;提供更好的存取效能,以及提升有效寫入分頁的數量。本案技術的另一個優點是不需修改檔案系統。
本案技術可應用於具有壽命限制的記憶體,包括相變記憶體、快閃記憶體、磁性隨機存取記憶體,和電阻式隨機存取記憶體等。本技術可以利用電腦硬體,軟體,或韌體的形式實現。
綜上所述,雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
502、504、506、508、510、512、514、516、518、520、522、524、526、528、530、532、534、536‧‧‧步驟

Claims (12)

  1. 一種用於操作具有複數個記憶區塊之一記憶體裝置的方法,包含以下步驟:維持與位在該等記憶區塊內之記憶區塊對應的複數個修復次數;以及根據具有一第一修復次數的一第一記憶區塊的存取週期,尋找具有一第二修復次數的一第二記憶區塊,並將該第二區塊的資料複製到第一記憶區塊,其中該第二修復次數小於該第一修復次數。
  2. 如申請專利範圍第1項所述之方法,其中更包含以下步驟:維持與位在該等記憶區塊內之記憶區塊對應的複數個存取週期的次數;以及對於該等存取週期的次數達到一存取週期臨限值的複數個記憶區塊,對應地發出複數個修復指令至該記憶體裝置,進而增加該等修復次數。
  3. 如申請專利範圍第1項所述之方法,其中更包含以下步驟:對位在該等記憶區塊內之記憶區塊監控複數個修復狀態指標的數值;於該等修復狀態指標的數值達到一修復狀態指標的臨限值時,發出複數個修復指令並增加該等修復次數;自複數個具有該第二修復次數的記憶區塊中,選擇一最近最少被清除的記憶區塊作為該第二記憶區塊;以及維持一個資料結構,其中該資料結構係根據該等修復次數而對在該等記憶區塊內之記憶區塊進行分類。
  4. 如申請專利範圍第1項所述之方法,其中更包含以下步驟:對該等記憶區塊內的複數個記憶區塊維持一組複數個條目的複數個串列,其中各該串列係包含N個成員,且N大於2; 將複數個臨限修復次數分配至該組的該等串列;根據該等記憶區塊的該等修復次數與該等臨限修復次數而將該等記憶區塊的條目插入至該組的該等串列;以及維持一基底指標,用於確認在該組指標所指示的串列包含具有一起始臨限修復次數相對最低的記憶區塊的起始串列,其中在該組的其他串列可透過將基底指標偏移N-1後模除(modulo)N後而定址。
  5. 如申請專利範圍第4項所述之方法,其中更包含以下步驟:透過對該組中將基底指標偏移N-1模除N後的串列內的記憶區塊進行偵測,確認該第一記憶區塊具有第一修復次數,其中當該基底指標指向空的串列時,將該基底指標遞增後模除N來指向下一串列。
  6. 如申請專利範圍第4項所述之方法,其中在該組的該等串列係為複數個連結串列,透過對該等連結串列排序而確認在各該連結串列中,具有最近最少的一存取週期的複數個記憶區塊,並使位在各該連結串列後端之一記憶區塊具有最近最少的一存取週期,其中尋找該第二記憶區塊的步驟係包含以下步驟:將具一有效記憶區塊並具有一最小索引的連結串列中,具有最近最少的一存取週期之記憶區塊確認為該第二記憶區塊。
  7. 一種記憶體電路系統,包含:一記憶體,包含複數個記憶區塊,該記憶體係根據複數個修復週期而設定;以及一處理器,耦接於該記憶體,包含一第一邏輯,用於維持與位在該等記憶區塊內之記憶區塊對應的複數個修復次數;該第一邏輯根據具有一第一修復次數的一第一記憶區塊的存取週期,尋找具有一第二修復次數的一第二記憶區塊,並將該第二記憶區塊的資料複製到第一記憶區塊,其中該第二修復次數小於該第一修復次數。
  8. 如申請專利範圍第7項所述之記憶體電路系統,其中該處 理器包含一第二邏輯,用於維持與位在該等記憶區塊內之記憶區塊對應的複數個存取週期的次數;以及對於該等存取週期的次數達到一存取週期臨限值的複數個記憶區塊,對應地發出複數個修復指令至該記憶體,進而增加該等修復次數。
  9. 如申請專利範圍第7項所述之記憶體電路系統,其中該處理器更包含:一第三邏輯,用於對位在該等記憶區塊內之記憶區塊監控複數個修復狀態指標的數值,並於該等修復狀態指標的數值達到一修復狀態指標的臨限值時,發出複數個修復指令並增加該等修復次數;以及一第五邏輯,用於維持一個資料結構,其中該資料結構係根據該等修復次數而對在該等記憶區塊內之記憶區塊進行分類,其中該第一邏輯係包含一第四邏輯,用於自複數個具有該第二修復次數的記憶區塊中,選擇一最近最少被清除的記憶區塊作為該第二記憶區塊。
  10. 如申請專利範圍第7項所述之記憶體電路系統,其中該處理器更包含:一第六邏輯,用於對該等記憶區塊內的複數個記憶區塊維持一組複數個條目的複數個串列;將複數個臨限修復次數分配至該組的該等串列;以及根據該等記憶區塊的該等修復次數與該等臨限修復次數而將該等記憶區塊的條目插入至該組的該等串列,其中各該串列係包含N個成員,且N大於2;以及一第七邏輯,用於維持一基底指標,並確認在該組指標所指示的串列包含了修復次數相對最低的記憶區塊,其中在該組的其他串列可透過將基底指標偏移N-1後模除N後而定址。
  11. 如申請專利範圍第10項所述之記憶體電路系統,其中該處理器更包含:一第八邏輯,用於透過對該組中將基底指標偏移N-1後模除N後的串列內的記憶區塊進行偵測,確認該第一記憶區塊具有該 第一修復次數;以及一第九邏輯,用於當該基底指標指向空的串列時,將該基底指標遞增後模除N來指向下一串列。
  12. 如申請專利範圍第10項所述之記憶體電路系統,其中在該組的該等串列係為複數個連結串列,且該處理器更包含:一第十邏輯,用於透過對該連結等串列排序而確認在各該連結串列中,具有最近最少的一存取週期的複數個記憶區塊,並使位在各該連結串列後端之一記憶區塊具有最近最少的一存取週期,其中用於尋找該第二記憶區塊的該第一邏輯係包含一第十一邏輯,用於將具一有效記憶區塊並具有一最小索引的連結串列中,具有最近最少的一存取週期之記憶區塊確認為該第二記憶區塊。
TW103145178A 2013-12-24 2014-12-24 修復均化的方法、系統與其相關的資料結構 TWI534821B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201361920488P 2013-12-24 2013-12-24

Publications (2)

Publication Number Publication Date
TW201532064A TW201532064A (zh) 2015-08-16
TWI534821B true TWI534821B (zh) 2016-05-21

Family

ID=53400057

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103145178A TWI534821B (zh) 2013-12-24 2014-12-24 修復均化的方法、系統與其相關的資料結構

Country Status (3)

Country Link
US (1) US9348748B2 (zh)
CN (1) CN104881366B (zh)
TW (1) TWI534821B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI716234B (zh) * 2019-12-24 2021-01-11 睿寬智能科技有限公司 靜態耗損平均方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI658471B (zh) * 2017-05-16 2019-05-01 華邦電子股份有限公司 快閃記憶體儲存裝置及其操作方法
CN108877863B (zh) 2017-05-16 2020-08-04 华邦电子股份有限公司 快闪存储器存储装置及其操作方法
US10170195B1 (en) 2017-12-06 2019-01-01 International Business Machines Corporation Threshold voltage shifting at a lower bit error rate by intelligently performing dummy configuration reads
US10891224B2 (en) 2018-09-06 2021-01-12 Micron Technology, Inc. Maintaining data consistency in a memory sub system that uses hybrid wear leveling operations
US10891077B2 (en) * 2018-12-26 2021-01-12 Macronix International Co., Ltd. Flash memory device and controlling method thereof

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6251717B1 (en) 1998-09-30 2001-06-26 Advanced Micro Devices, Inc. Viable memory cell formed using rapid thermal annealing
US6009033A (en) 1998-11-24 1999-12-28 Advanced Micro Devices, Inc. Method of programming and erasing an EEPROM device under an elevated temperature and apparatus thereof
US7260758B1 (en) * 2001-09-07 2007-08-21 Lsi Corporation Method and system for performing built-in self-test routines using an accumulator to store fault information
US7709334B2 (en) 2005-12-09 2010-05-04 Macronix International Co., Ltd. Stacked non-volatile memory device and methods for fabricating the same
US7315474B2 (en) 2005-01-03 2008-01-01 Macronix International Co., Ltd Non-volatile memory cells, memory arrays including the same and methods of operating cells and arrays
US7301818B2 (en) 2005-09-12 2007-11-27 Macronix International Co., Ltd. Hole annealing methods of non-volatile memory cells
KR100673019B1 (ko) 2005-12-12 2007-01-24 삼성전자주식회사 적층 구조를 가지는 낸드형 비휘발성 메모리 장치, 그 형성방법 및 동작 방법
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US20070208904A1 (en) 2006-03-03 2007-09-06 Wu-Han Hsieh Wear leveling method and apparatus for nonvolatile memory
US7382654B2 (en) 2006-03-31 2008-06-03 Macronix International Co., Ltd. Trapping storage flash memory cell structure with inversion source and drain regions
US7704847B2 (en) 2006-05-19 2010-04-27 International Business Machines Corporation On-chip heater and methods for fabrication thereof and use thereof
US8060718B2 (en) 2006-06-20 2011-11-15 International Business Machines Updating a memory to maintain even wear
US20100025811A1 (en) 2006-11-29 2010-02-04 Gary Bronner Integrated circuit with built-in heating circuitry to reverse operational degeneration
US8344475B2 (en) 2006-11-29 2013-01-01 Rambus Inc. Integrated circuit heating to effect in-situ annealing
CN101196839A (zh) * 2006-12-06 2008-06-11 英业达股份有限公司 双快闪只读存储器的数据修复与同步方法
US8085615B2 (en) 2006-12-29 2011-12-27 Spansion Llc Multi-state resistance changing memory with a word line driver for applying a same program voltage to the word line
US7719048B1 (en) 2007-04-26 2010-05-18 National Semiconductor Corporation Heating element for enhanced E2PROM
US20090039414A1 (en) 2007-08-09 2009-02-12 Macronix International Co., Ltd. Charge trapping memory cell with high speed erase
EP2191473A2 (en) 2007-09-05 2010-06-02 Rambus Inc. Method and apparatus to repair defects in nonvolatile semiconductor memory devices
KR20090037690A (ko) 2007-10-12 2009-04-16 삼성전자주식회사 비휘발성 메모리 소자, 그 동작 방법 및 그 제조 방법
US20090254729A1 (en) 2008-04-07 2009-10-08 Skymedi Corporation Method of wear leveling for a non-volatile memory
US20090276470A1 (en) 2008-05-05 2009-11-05 Vijayarajan Rajesh Data Processing System And Method
CN101599305B (zh) * 2008-06-04 2013-03-27 威刚科技股份有限公司 具有数据修复功能的储存系统及其数据修复方法
CN101740123B (zh) * 2008-11-10 2012-04-04 扬智科技股份有限公司 存储器的数据保护方法
US8004918B2 (en) 2009-03-25 2011-08-23 Infineon Technologies Ag Memory cell heating elements
CN102576569A (zh) 2009-08-21 2012-07-11 拉姆伯斯公司 原位内存退火
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
CN102201259A (zh) * 2010-03-24 2011-09-28 建兴电子科技股份有限公司 非易失性存储器的平均抹写方法
US8612669B1 (en) 2010-06-28 2013-12-17 Western Digital Technologies, Inc. System and method for performing data retention in solid-state memory using copy commands and validity and usage data
US8488387B2 (en) 2011-05-02 2013-07-16 Macronix International Co., Ltd. Thermally assisted dielectric charge trapping flash
GB2490991B (en) 2011-05-19 2017-08-30 Ibm Wear leveling
CN103197995B (zh) * 2012-01-04 2016-06-15 百度在线网络技术(北京)有限公司 硬盘故障检测方法及装置
US9251056B2 (en) 2012-06-01 2016-02-02 Macronix International Co., Ltd. Bucket-based wear leveling method and apparatus
US20150255175A1 (en) * 2014-03-10 2015-09-10 Advantest Corporation Memory testing and failure data filtering

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI716234B (zh) * 2019-12-24 2021-01-11 睿寬智能科技有限公司 靜態耗損平均方法

Also Published As

Publication number Publication date
US9348748B2 (en) 2016-05-24
TW201532064A (zh) 2015-08-16
CN104881366B (zh) 2017-12-15
US20150177996A1 (en) 2015-06-25
CN104881366A (zh) 2015-09-02

Similar Documents

Publication Publication Date Title
TWI534821B (zh) 修復均化的方法、系統與其相關的資料結構
US10430084B2 (en) Multi-tiered memory with different metadata levels
US10884914B2 (en) Regrouping data during relocation to facilitate write amplification reduction
TWI436370B (zh) 記憶體儲存裝置、其記憶體控制器與產生對數似然比之方法
US9696935B2 (en) Storage device that secures a block for a stream or namespace and system having the storage device
US11138124B2 (en) Migrating data between block pools in a storage system
TWI409633B (zh) 快閃記憶體儲存裝置、其控制器與資料寫入方法
US9552290B2 (en) Partial R-block recycling
US9042181B2 (en) Periodic erase operation for a non-volatile medium
JP5792841B2 (ja) メモリ内のデータを管理するための方法および装置
US9213633B2 (en) Flash translation layer with lower write amplification
JP5405513B2 (ja) メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム
US11263149B2 (en) Cache management of logical-physical translation metadata
US8966205B1 (en) System data management using garbage collection and hybrid self mapping
TWI584122B (zh) 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
TWI537728B (zh) 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US8516184B2 (en) Data updating using mark count threshold in non-volatile memory
TW201324154A (zh) 記憶體儲存系統及其中控裝置、管理方法與斷電復原方法
US9274943B2 (en) Storage unit management method, memory controller and memory storage device using the same
US20200225882A1 (en) System and method for compaction-less key-value store for improving storage capacity, write amplification, and i/o performance
KR20100039180A (ko) 반도체 디스크 장치 및 그것의 데이터 관리 방법
TWI792892B (zh) 鏡像資料至非揮發性記憶體之控制器之寫入快取中
TW202038098A (zh) 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
CN116134519A (zh) 存储器装置中的平衡的三层级读取干扰管理
US9652172B2 (en) Data storage device performing merging process on groups of memory blocks and operation method thereof