TWI518503B - 用於記憶體陣列中之平均抹寫之方法及設備 - Google Patents
用於記憶體陣列中之平均抹寫之方法及設備 Download PDFInfo
- Publication number
- TWI518503B TWI518503B TW101130835A TW101130835A TWI518503B TW I518503 B TWI518503 B TW I518503B TW 101130835 A TW101130835 A TW 101130835A TW 101130835 A TW101130835 A TW 101130835A TW I518503 B TWI518503 B TW I518503B
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- blocks
- available
- average
- write
- Prior art date
Links
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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits 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
-
- 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)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Description
本發明之揭示係有關記憶體陣列的平均抹寫(wear leveling)之領域,且尤係有關利用區塊清單(block list)及移動操作而使用記憶體單元(memory cell)區塊之平均抹寫。
各種不同的新記憶體單元技術已被開發或正在被開發,作為諸如各種硬碟機及隨機存取記憶體等的磁性及切換式電晶體記憶體之替代物。這些新記憶體類型中之某些記憶體類型有任何特定記憶體單元容許的寫入週期次數之限制。為了將這些記憶體裝置之使用壽命最大化,一種平均抹寫系統被用來平均各記憶體單元上的抹寫,而將寫入分散到整個裝置。該平均抹寫可能存在於作業系統、應用軟體、記憶體控制器、或記憶體模組。
相變化記憶體(Phase Change Memory;簡稱PCM)以及相變化記憶體及開關(Phase Change Memory and Switch;簡稱PCMS)是具有適於被用來作為各種不同的運算系統中之記憶體之效能特性的非揮發性記憶體(Non-Volatile Memory;簡稱NVM)技術。PCMS提供了快速的讀取及寫入,且可容許一次寫入單一記憶體單元或一小組的記憶體單元。因而使PCMS不只是適於取代傳統的大量儲存記憶體,而且也適於取代短期及緩衝記憶體。目前,
動態隨機存取記憶體(Dynamic Random Access Memory;簡稱DRAM)及靜態機存取記憶體(Static Random Access Memory;簡稱SRAM)被用於這些高速應用。然而,如同"反及"(NAND)及其他類型的快閃記憶體,PCMS也有對任一儲存單元可被執行的寫入週期的總次數的限制。
NAND所應用的傳統平均抹寫機制在被應用於一般主記憶體應用時,將造成問題。係利用小粒度(small granularity)的讀取及寫入而頻繁地存取主記憶體,且甚至小的延遲時間增加也會對整體系統造成顯著的效能影響。用於NAND之傳統平均抹寫機制將大區塊的記憶體單元用於平均抹寫,且於處理平均抹寫操作時需要相當大的負擔(overhead)。此種機制也需要大量的中介資料(metadata),以便追蹤每一單元區塊的被使用狀態。此種機制對於主記憶體應用因而將是相當耗用資源的。
在基於NAND的儲存子系統中,使用非常大的平均抹寫區塊以及明確的平均抹寫。明確的平均抹寫需要持續追蹤每一NAND區塊的總寫入計數。如果基於NAND的儲存系統被用來作為諸如硬碟機替代品等的大量儲存系統,則效能要求將顯著地低於用於主記憶體時的效能要求。然而,此種大平均抹寫區塊不適用於對延遲時間特別敏感的記憶體子系統。此種記憶體子系統可包括圖形及處理緩衝器及短期快取記憶體子系統。此外,因為主記憶體或類似應用中之寫入流量通常包含隨機散佈的許多小粒度寫入,所以很難使用大記憶體單元區塊來追蹤這些寫入。最後,
明確的平均抹寫需要針對每一寫入而維護且更新總抹寫次數。因而對記憶體應用中之較小的區塊而言變得非常複雜。為了明確地追蹤每一單元的寫入,大多數現有的NAND記憶體系統使用一種用於平均抹寫之智慧型微控制器及韌體。
根據一實施例,本發明使用一種快速且具有極低負擔之統計平均抹寫機制。該機制在存在有小粒度寫入操作時運作,且仍然將被連接的記憶體陣列之使用壽命最大化。
所述之該平均抹寫機制特別適用於具有小寫入粒度之高效能應用,但是不受此限制。該機制能夠針對最高效能及頻寬效率而對PCMS陣列直接執行小粒度寫入。容許具有諸如4千位元組(4KB)區塊等的較小區塊粒度之平均抹寫。可使用在平均抹寫的均勻性與頻寬成本之間折衷的一固定寫入週期計數觸發器調控平均抹寫頻度。可將整個PCMS位址空間用於均勻的平均抹寫移動,而避免一些熱點(hot spot)。可使工作負載行為與選擇用於平均抹寫移動的區塊之間去耦合。可保護不受惡意軟體(malicious software)或濫用軟體(abusive software)之威脅。可維護每一區塊的總寫入計數,而協助"耗損帶"(wear band)分類要求。最後,錯誤更正碼(Error Correction Code;簡稱ECC)或錯誤偵測碼可被用來識別快要到達耗損期限終點的區塊。這些區塊可被視為損壞區塊,且被移除而不
供使用。
可使用將於下文中更詳細說明的特徵中之一或多個特徵而得到上述這些及其他優點中之一或多項優點。這些特徵包括高速位址間接機制、以及基於寫入頻度用來執行平均抹寫移動的週期性觸發器。此外,該機制具有可對PCMS系統執行小粒度寫入之能力,且能夠在較大區塊粒度下執行平均抹寫。可包含損壞區塊的自動排除,且可將週期性觸發器與對可用平均抹寫區塊的隨機選擇結合,以便保證平均抹寫的某一統計均勻性(statistical uniformity)。
本發明的一實施例所述之該平均抹寫機制將軟體用來定址記憶體的系統實體位址空間(System Physical Address space;簡稱SPA)分成一些4KB大小的區塊。PCMS裝置位址空間(PCMS Device Address space;簡稱PDA)也被分成一些相同大小的區塊。每一SPA區塊被映射到特定的PDA區塊。對該區塊之寫入被計數且被追蹤。到達一預定計數時,該SPA區塊被移到使用各種不同的演算法選擇的而保證軟體寫入型樣隨機化之一不同的PDA區塊。根據寫入的頻度而將各SPA區塊持續地重新映射到不同的PDA區塊。該重新映射機制保證涵蓋了整個PDA空間,而不會造成任何被軟體產生的熱點。
由於該重新映射的統計本質,不需要追蹤對任何區塊的寫入總次數。該演算法保證在以寫入次數規定的一窄範圍之均勻耗損,且在超過該寫入次數之後,將移動一區塊。
因為使用比單一區塊小的粒度(子區塊)執行對任何平均抹寫區塊之寫入,所以寫入計數並不區分對不同的子區塊之寫入。如果軟體選擇重複地寫到單一區塊的相同之子區塊,則有可能產生一區塊內之熱點。一額外的機制保證一區塊內不會產生熱點。在每一次以平均抹寫之方式將一SPA區塊移到一不同的PDA區塊時,可將該4KB區塊內之所有64位元組(64B)的子區塊隨機地混洗(shuffle),以便保證該4KB區塊之任一部分不會耗損完畢。
在一實施例中,使用一預定的種子(seed)及一金鑰(key)而開始該混洗。可追蹤間接位址表(AIT)中之每一區塊的該金鑰。下一次存取該SPA子區塊時,將相同的種子及金鑰用來再生該PDA區塊內之64B位址。在另一實施例中,可使用對實體位址的有型樣的漫步或隨機漫步(random walk)之漫步方式而選擇目標區塊。亦可根據啟動期間產生的一清單而產生該等目標區塊。額外的替代方式包括使用靜態種子之隨機混洗、循序循環(sequential rotation)、以一隨機數對位址位元執行一互斥或(XOR)運算、以及以SPA位址位元對PDA位址位元執行一XOR運算等的替代方式。
第1圖示出可包括將於下文中更詳細說明的一平均抹寫系統的一記憶體間接位址(address indirection)系統之一方塊圖。間接位址單元100經由根據特定實施例而被耦合到一記憶體控制器、一個一般用途控制器、或一處理器
之一記憶體通道112而傳送及接收記憶體位址、命令、及資料。讀取命令及資料被接收到一讀取佇列114,且寫入命令及資料被接收到一寫入佇列116。讀取及寫入都被傳送到一位址控制單元110,該位址控制單元110解譯該等記憶體通道位址,且將該等位址應用於一實體記憶體單元陣列122之實體位址。
該位址控制單元被進一步耦合到一寫入緩衝器118及一讀取緩衝器120,以便在讀取及寫入在該位址控制單元中被轉換以供應用於記憶體122之後,將該等讀取及寫入緩衝。
第1圖示出本發明的一實施例中之位址控制單元可使用的兩個資料結構。一間接位址表(Address Indirection Table;簡稱AIT)101儲存自記憶體通道112使用的系統實體位址(SPA)空間至記憶體122使用的PCMS裝置位址(PDA)空間之位址轉換之現有映射。AIT 101也保存自最***均抹寫移動算起的對位址空間的每一區塊的寫入之次數。該AIT被放在諸如DRAM等的某一類型之快速記憶體,以供迅速的存取。可以每一讀取及寫入交易存取該AIT。
將於下文中述及之平均抹寫程序頻繁地修改該AIT。可於初始配置該AIT時,將該AIT之映射隨機化,而進一步增強系統的安全及抹寫的平均。如果該PCMS記憶體被抹除或被實質上抹除,亦可針對該等被抹除的區塊而將該AIT再次隨機化。此種方式不只是使抹寫平均,而且也使
外人無法預測哪一PDA對應於任何特定的SPA。此外,雖然該AIT針對記憶體單元之區塊而將該區塊之一SPA映射到該區塊之一PDA,但是可將每一區塊內之PDA的子區塊的順序隨機化,而進一步將抹寫平均。
在一實施例中,該AIT被組織為轉換條目的一簡單線性表(simple linear table)。每一條目映射到諸如一個4KB的PCMS分頁。該AIT中之每一條目可以只是幾個位元組。因此,將該AIT的大小保持得較小。雖然可在PCMS中維護該AIT,但是此種方式此時也需要平均抹寫,因而使該系統更為複雜。在一實施例中,係將該AIT設置在該記憶體控制器晶片易於存取且與該記憶體控制器晶片分離的一獨立DRAM晶片。
可以被設置在該記憶體控制器本地的一AIT快取記憶體(請參閱第2圖)增強該晶粒外部的AIT。該快取記憶體可被用於最近被存取的AIT條目,因而未來對這些條目涵蓋的區塊之存取將不需要晶粒外部的AIT存取。因為軟體經常在短時間內接連地存取相同的位置數次,所以該快取記憶體可提供較快速的記憶體存取時間。另一方面,該快取記憶體也增加了複雜性,這是因為該快取記憶體的內容必須保持為最新的內容,而且將使不在該快取記憶體中之任何位址的存取更為緩慢。
第1圖也示出在該讀取及寫入緩衝器與該實體記憶體之間的一PCMS描述符表(PCMS Descriptor Table;簡稱PDT)102。該PDT是一反向的AIT。該PDT儲存將每一
PDA區塊的位址反向地轉換為對應的SPA區塊的位址之相同映射。此外,該PDT亦可被用來保存每一區塊之類型。其可包括與哪些區塊是損壞區塊有關的記錄。該PDT可被用來將PDA空間中之一些區塊選擇作為平均抹寫移動之目標。這些區塊被稱為"可用區塊",且被保存在該記憶體控制器中之一可用區塊清單中。因為被選擇為可用區塊之區塊可能包含有效資料,所以必須先將該有效資料移到某一未被使用區塊,然後才將該區塊移到該可用區塊清單。該AIT被適當地修改,以便改變被移動的該原始區塊之SPA至PDA映射。係在持久性的記憶體中維護該PDT,且該PDT通常將常駐於該PCMS記憶體本身。
第2圖更詳細地示出第1圖之間接位址單元100。第2圖尤其示出間接位址單元100內之平均抹寫邏輯200。係將該平均抹寫邏輯示為與一些狀態機互動的一組佇列或清單。可將該平均抹寫邏輯實施為所示之硬體組件、軟體模組、韌體、或不同的這些項目之組合。
方塊103是平均抹寫邏輯200內之一待處理平均抹寫佇列(Pending Wear Level Queue;簡稱PWLQ)。該佇列存放每一SPA區塊的用來指示該區塊之耗損率之一描述符。該描述符可被用來決定何時應為了平均抹寫之目的而移動一區塊。如同將於下文中述及的大部分之其他資料結構及狀態機,可在該記憶體控制器內或在其他可迅速存取的位置中維護該佇列。在一實施例中,當一寫入要求經由該AIT而發現一AIT條目中之該區塊的寫入計數值大於或
等於一寫入計數低臨界值且小於或等於一寫入計數高臨界值時,將該條目放在該佇列的底部。
如前文所述,該AIT維護每一區塊的一寫入計數暫存器。該值可以是寫入操作的實際計數、或與寫入次數有關的其他值。在一實施例中,該寫入計數是實際寫入計數之諸如十六分之一或其他便利值等的一因數。為了在時間上更均勻地分佈各平均抹寫操作,可將寫入計數的初始值設定為隨機值。此種方式也將更快地開始該平均抹寫程序,因而使該待處理佇列不會在某一段時間中一直是空的,而且不會因為數個區塊在大約相同的時間到達寫入計數臨界值而又非常迅速地被填滿。此外,不需要追蹤記憶體的每一實體區塊之總寫入計數。如將於下文中說明的,各區塊清單能夠在不知道總寫入計數之情形下在統計上分散對各區塊之使用。因此,當某一區塊被移回使用時,可將新的寫入計數之初始值設定為零、或其他隨機值、或預定值。
方塊104是該平均抹寫邏輯中之一可用平均抹寫區塊清單(Free Wear Level Block List;簡稱FWLBL)。該清單含有可被用於平均抹寫移動的PDA區塊之描述符。該清單中之區塊目前不被映射到SPA區塊,且因而可被用來接收來自目前被映射到一SPA區塊的一區塊之移動。選擇將接收一移動的一區塊有一些不同的方式。在某些實施例中,可能需要選擇使該區塊不與使用該記憶體的軟體、或工作負載記憶體分配、或讀取/寫入型樣耦合且係為隨機之演算法。也可能需要選擇一種均勻地涵蓋整個PCMS位
址空間因而避免任何潛在熱點產生的型樣且偏向選擇低寫入計數的區塊之技術。
一種此類方法是以基本輸入/輸出系統(Basic Input/Output System;簡稱BIOS)或類似的啟動資源將SPA至PDA之映射隨機化,且將該隨機化的SPA至PDA之映射用來將該AIT及該PDT初始化。在該初始的隨機化之後,可以循序漫步於整個PDA位址空間但是只排除可用區塊及損壞區塊方式選擇該可用平均抹寫區塊清單之條目。
方塊105是該平均抹寫邏輯中之一目標平均抹寫區塊清單(Target Wear Level Block List;簡稱TWLBL)。該清單含有當可用區塊清單104中之區塊數目開始變少時將被用來產生新的可用區塊之PDA區塊之描述符。該清單中之各區塊仍然被指定給SPA區塊。當該清單中之一區塊於一平均抹寫移動中被複製到另一區塊之後,該區塊然後被移到該未被使用區塊清單。
方塊106是該平均抹寫邏輯中之一未被使用區塊清單(Unused Block List;簡稱UBL)。該清單含有目前未被使用的PDA區塊之描述符。該等區塊可以是因為系統還不需要而未曾被使用之區塊。該等區塊中之大部分或全部的區塊通常將是最近存放了SPA區塊且該等SPA區塊之後被平均抹寫移動到另一區塊之區塊。換言之,該佇列含有先前被映射到系統記憶體空間但是該系統記憶體空間之後被移到另一實體區塊而使該實體區塊成為未被使用區塊
之一清單之區塊。這些區塊現在準備要變成新的可用區塊,或準備要自根據可用區塊選擇程序而將要變成可用區塊之其他區塊接收資料。
除了該等各種佇列之外,第2圖也示出以使用狀態機的方式操作之該平均抹寫邏輯。在該所述之例子中,平均抹寫有三個部分。可根據特定實施例而使用較多或較少的部分。該例子所述之這三個部分是平均抹寫移動、可用區塊清單擴充、以及目標可用區塊選擇。
在一實施例中,係於系統組態設定(system configuration)期間啟動平均抹寫。在記憶體設定期間,BIOS或另一記憶體組態代理留出一組PDA區塊,以供被用來作為平均抹寫用途之可用區塊。這是構成該可用區塊清單之初始組的區塊。當繼續進行平均抹寫時,區塊被持續地使用且被加入到該可用區塊清單,以便維持某一平均固定數目的可用區塊。自系統軟體可用的總區塊計數相應地減掉該等可用區塊之數目。將未被留用之區塊指定給記憶體通道位址(Memory Channel Address;簡稱MCA)區塊。自每一PCMS控制器之SPA衍生出MCA。該初始的MCA至PDA指定可使用各種不同的映射機制。在一例子中,該指定使用一隨機映射機制。
第2圖示出為平均抹寫邏輯200的一部分之一平均抹寫移動狀態機201。該狀態機自待處理佇列103取得一條目,且將該條目移到自可用區塊清單104取得的一PDA區塊。當完成上述步驟時,該狀態機將更新AIT 101,以
便顯示SPA與PDA間之新映射。該狀態機將先前被使用的PDA區塊放入未被使用區塊清單106。也以正確的反向映射更新PDT 102。
如第2圖所示,該平均抹寫移動狀態機被耦合到每一該等佇列及清單,且也被耦合到位址控制邏輯110。該平均抹寫狀態機可經由該位址控制邏輯而到達該AIT及該PDT。在該所示之例子中,經由包括用於最近被使用的AIT值的一AIT快取記憶體214之一動態隨機存取記憶體(DRAM)控制器212而到達該AIT。該DRAM控制器經由一DRAM記憶體通道而被耦合到常駐在晶粒外部的一外部位置(圖中未示出)之該AIT。
因為每一平均抹寫移動自該可用區塊清單取出一條目,所以週期性地進行可用區塊清單擴充,以便使該可用平均抹寫區塊清單保持被填滿。可選擇用來觸發該擴充之臨界值以適應特定的應用。可用區塊清單擴充狀態機202自目標區塊清單105取得一條目,且將該條目之內容移到未被使用區塊清單106中之一條目。該狀態機然後將該目標區塊清單條目移到可用區塊清單104。該狀態機之後經由其被連接之該位址控制邏輯而適當地更新AIT 101及PDT 102。
目標可用區塊產生狀態機203選擇該可用區塊清單擴充狀態機將要使用的次一區塊。在該記憶體控制器中(例如,在該平均抹寫邏輯或該間接位址單元中)維護此類區塊之一清單。該目標可用區塊產生狀態機將一特定技術用
來選擇預定進入目標可用區塊清單104之次一PDA區塊。可根據各種不同的準則而選擇該技術。兩種準則將涵蓋其選擇程序中之所有PDA空間,且將使系統軟體與其對特定SPA位址空間的使用間之任何關聯性去耦合。換言之,對於該第一準則而言,該技術將抹寫散佈到整個記憶體陣列,而不只是散佈到某些部分。此種方式有助於保證整個陣列在大約相同的時間上耗損完畢。該第二準則制止在該運算系統上運行的轉體決定將要使用的PDA位址。某些軟體程式將被撰寫成使用特定位址。此種方式將造成對應於那些特定位址的記憶體單元更迅速地耗損完畢。藉由改變位址空間,該軟體指定的實體位址將隨著時間的經過而改變到不同的實際實體記憶體單元,而將抹寫平均。
可根據特定應用的特定設計之需求,而選擇用來選擇次一PDA區塊之不同的技術。如同一區塊內的各子區塊之隨機混洗,可平衡該技術的準確度及精確度與該技術可能導入的複雜性及延遲性。可將一些類似的技術用來混洗子區塊,這些技術包括有型樣的漫步、隨機漫步、啟動清單、隨機混洗、及循序循環等的技術。
AIT快取記憶體214有助於AIT 101之操作。因為該AIT是一非常大的表,且是每一交易的關鍵時序路徑,所以可將AIT快取記憶體放在SRAM、DRAM、或PCMS控制器內之其他類型的記憶體中,以便提供對該AIT中儲存之SPA至PDA映射表的極快速存取。在一例子中,當該PCMS控制器接收到一寫入交易時,該寫入交易將包括該
SPA中之一位址。該控制器將該SPA位址用來查詢該AIT中之一條目,以便決定對應的PDA區塊位址。該寫入控制器也將遞增該被存取的AIT條目中儲存之寫入計數。如果該寫入計數命中某一預定值,則將該條目加入待處理佇列103。如果並非如此,則只須以該新的寫入計數更新該AIT條目,且繼續執行諸如PCMS等的記憶體陣列122之正常寫入。
請注意,對該PCMS寫入之粒度遠小於平均抹寫區塊。在該實施例中,子區塊是64位元組,且平均抹寫區塊是4千位元組。此種折衷將有效率的寫入頻寬使用提供給該PCMS,且同時保持該AIT有合理的大小(每4KB區塊之條目)。然而,亦可選擇寫入及平均抹寫粒度之其他大小,以便適應不同的實施例。
第3A圖以一流程圖示出前文所述之操作。該程序開始於方塊301。平均抹寫移動狀態機201自待處理佇列103取得一條目,且將該條目移到自可用區塊清單104取得的一PDA區塊。
在進行移動之前,根據實施方式而可能有使該操作可被執行或更有效地執行之某些準備。在早期,一寫入要求指令將被執行,且將調用該記憶體控制器、該間接位址邏輯、或該平均抹寫系統讀取該AIT,以便尋找對應於該寫入要求的邏輯位址之適當的實體位址。例如,將資料寫到一PCMS寫入緩衝器118,然後按照一般操作過程將該資料自該寫入緩衝器寫到PCMS 122,而執行該寫入要求。
在讀取了該AIT之後,該系統將立即檢查AIT寫入計數值。該值可被儲存在該AIT或另一位置中。如果該值大於一低臨界值,則該系統可在待處理佇列103中張貼一移動要求。與此同時,可根據特定實施例而更新寫入計數值。此外,可在該AIT中設定一平均抹寫待處理位元。該位元將指示實體記憶體之對應的區塊有一待處理的平均抹寫移動。
在開始一實際的移動之前,該平均抹寫移動狀態機自該待處理佇列選擇一平均抹寫要求,且將該平均抹寫要求輸入到一現用平均抹寫移動條目(Active Wear Level Move Entry;簡稱AWLM)。該AWLM條目是與一現用平均抹寫移動操作相關聯的情境。該AWLM條目保持有效到對應的平均抹寫移動及相關聯的狀態更新完成為止。
在一實施例中,該AWLM可包含:一有效/無效條目,用以指示一平均抹寫移動是否正在進行;一來源位址,用以指示將要被移動的資料所來自之區塊;以及一目標位址,用以指示來自該來源區塊的資料將被移到之目標區塊。在完成了對應的平均抹寫移動之後,該AWLM條目可被清除或被設定為無效。
在一實施例中,在該AWLM條目被設定為有效之後,可將對該記憶體的該區塊之任何未來寫入操作保留在一緩衝器中,直到完成了該平均抹寫移動之後為止。可保留該指令,或可將該寫入執行到一寫入緩衝器,且在該移動之後,自該寫入緩衝器寫到該PCMS。在該平均抹寫移
動結束之後,將待處理的寫入操作傳送到新的目標區塊。藉由使該AWLM與該AIT相關聯,檢查該AIT以便將寫入要求映射到實體記憶體之任何寫入操作可同時發現正在對特定區塊進行一平均抹寫移動。
為了開始該平均抹寫移動,該平均抹寫移動狀態機自該可用區塊清單選擇一可用區塊,讀取將被移動的PCMS區塊,且將來自該來源區塊的實體記憶體之資料移到一緩衝器。等候進入該實體記憶體的任何條目亦可被收集到該寫入緩衝器。或者,這些條目可被留在該寫入緩衝器中,以供完成了移動才執行。該平均抹寫移動狀態機之後可將先前在該來源區塊的資料自該移動緩衝器寫到該目標區塊。在完成了該平均抹寫移動之後,該AWLM條目可被清除或被設定為無效。
在方塊302中,該平均抹寫移動狀態機更新該AIT,以便顯示SPA與PDA間之新映射。該新映射反映了映射到該來源區塊至映射到該目標區塊的映射改變。該AIT也被更新而使寫入計數被更新,且清除待處理的寫入操作(在有待處理的寫入操作之情況下)之清單。在方塊303中,該平均抹寫移動狀態機將先前被使用的PDA區塊放到未被使用區塊清單,且在方塊304中,該平均抹寫移動狀態機更新該PDT,以便也反映該移動。在該移動之後,可刪除該先前被使用的PDA區塊之寫入計數,或以一內定值或隨機值覆寫該寫入計數。不需要追蹤未被使用區塊之寫入計數。因而提高了系統在電力循環(power
cycling)及災難性事件中之穩健性。
為了支援該平均抹寫移動,該可用區塊清單被擴充,以便持續地加入新的區塊。這些區塊是當一區塊被移到該可用平均抹寫區塊清單中之一區塊時被一平均抹寫移動耗用的區塊。該可用區塊清單擴充狀態機自該未被使用區塊清單取得一些區塊,且將該等區塊移到該可用平均抹寫區塊清單,因而使該等區塊可變成平均抹寫移動中之目標區塊。
請參閱第3B圖之流程,在方塊305中,可用區塊清單擴充狀態機202自目標區塊清單105取得一條目,且將該條目之內容移到未被使用區塊清單106中之一條目。該移動可涉及該平均抹寫移動狀態機的前文所述之操作中之許多操作,其中包括:設定該平均抹寫待處理位元;將資料移到一寫入緩衝器;收集任何待處理的寫入操作;以及在完成該移動時隨即清除該待處理位元。在該例子中,來自該未被使用區塊清單之區塊是目標區塊,且在該移動之前或之後自該未被使用區塊清單取出該區塊。來自該目標區塊清單之區塊是來源區塊,且該區塊被移到該可用區塊清單。
在方塊306中,該可用區塊清單擴充狀態機將目標區塊清單105條目移到可用區塊清單104。換言之,來自該目標區塊清單之該區塊現在是空的,且可被移到該可用區塊清單。在方塊307中,該狀態機之後將適當地更新該AIT及PDT。
該可用區塊清單擴充耗用來自該目標區塊清單之區塊,因而該目標可用區塊產生狀態機補充該目標區塊清單。
請參閱第3C圖,在方塊308中,目標可用區塊產生狀態機203選擇將進入該可用區塊清單之次一PDA區塊。可根據特定實施例而以各種不同的方式執行該選擇。該方式可包括隨機漫步、以及對平均抹寫計數值的檢查等的方式。在一實施例中,該狀態機選擇並未被識別為損壞區塊之次一區塊。
在方塊310中,當該PCMS控制器接收到一寫入交易時,該PCMS控制器查詢該AIT中之系統位址(SPA),以便決定PDA區塊位址。在方塊311中,該PCMS控制器將遞增被儲存在AIT條目中之寫入計數。在方塊312中,如果該寫入計數命中某一預定值,則在方塊313中將該條目放置在該待處理佇列中。如果並非如此,則只須在方塊314中以新的寫入計數更新該AIT,且繼續進行PCMS的正常寫入。
第4A至4B圖示出資料自諸如一PCMS陣列等的一記憶體陣列中記憶體單元的區塊中之一區塊移到另一區塊。在第4A至4D圖中,可用區塊F代表可用PDA區塊。SPA區塊1-16代表目前被指定給SPA區塊之PDA區塊。換言之,該等被指定之PDA區塊目前被用來儲存資料。第4A圖示出一穩定狀態,其中被標示為F之第一組區塊是可用的或自由的,且被標示為1-16之第二組區塊
是在使用中。該等F區塊被列在可用區塊清單104中,且AIT 101及PDT 102中指示了區塊1-16。
在第4B圖中,諸如SPA區塊8由於其大的總寫入次數而變成"熱點"。該SPA區塊8然後被放置在該待處理佇列中,且將因此而被排程到一平均抹寫移動。在第4C圖中,該平均抹寫移動狀態機將熱區塊8複製到第一可用之自由區塊,亦即,複製到該圖頂部之F區塊。先前的區塊8變成以U指示之一未被使用區塊。該區塊將被加入未被使用區塊清單106。
在該移動之後,目標可用區塊產生狀態機203將次一可用PDA區塊選擇為次一可用區塊。如第4C圖所示,該次一可用區塊被識別為區塊1。可用區塊清單104中指示該等可用區塊。在識別了該次一可用區塊之後,可用區塊清單擴充狀態機202將第4C圖中被示為區塊1之目標可用區塊之現有內容移到第4C圖中被示為U之該未被使用區塊。該狀態機之後在目標區塊清單105中加入該目標可用區塊之一識別碼。第4D圖中示出有四個可用區塊F之該狀況,然而,先前的第一被使用區塊1不是一可用區塊,且先前在區塊1中之內容已被移到先前的區塊8。
前文所述之技術有助於提供下列操作:可用區塊緩慢地移動通過整個PDA空間,且使該等可用區塊的身分與軟體產生的SPA位址之間去耦合。
前文所述之流程使用待處理佇列103,而平均抹寫移動狀態機201自待處理佇列103選擇用於平均抹寫移動之
區塊。可使用先進先出法,或使用某一類的型樣,或使用隨機選擇法,而選擇該等區塊。在一實施例中,該待處理佇列中之所有區塊都已準備好可供移動,且只要該佇列中之區塊數目並未過大,則哪些區塊要先移動是不重要的。
前文所述之流程也使用一未被使用區塊清單106、一目標區塊清單105、以及一可用區塊清單104。該未被使用區塊清單被用來讓區塊自該目標區塊清單移到該可用區塊清單。該可用區塊清單被用來讓(該待處理佇列中)具有高寫入計數的使用中之區塊移到該未被使用區塊清單。換言之,該平均抹寫移動狀態機將資料移到該可用區塊清單中之區塊,而該可用區塊清單擴充狀態機將資料自該目標區塊清單中之區塊移到該未被使用區塊清單之區塊。
因此,有兩個同時進行的同時移動程序。該平均抹寫程序自該待處理佇列取得區塊,且將該等區塊移到該未被使用區塊清單。為了執行該步驟,該平均抹寫移動程序也自該可用區塊清單取得區塊,且將該等區塊交付使用,且該等區塊最終也可能回到該待處理佇列。該可用區塊清單擴充程序自該目標區塊清單取得區塊,且將該等區塊移到該可用區塊清單。為了執行該步驟,該可用區塊清單擴充程序也自未被使用區塊清單取得區塊,且將該等區塊交付使用,且該等區塊最終也可能回到該待處理佇列。由該平均抹寫程序取出區塊之該待處理佇列將這兩個程序及該等三個區塊清單聯繫在一起,因而可使區塊自一程序移到另一程序。
該等兩個同時的移動程序之操作依賴不同的選擇準則。該平均抹寫程序依賴寫入計數。根據寫入計數而將各區塊放置在該待處理佇列中。然而,該可用區塊清單擴充程序不使用寫入計數。因而無須追蹤未被使用區塊及可用區塊之寫入計數。如前文所述,該可用區塊清單擴充程序可使用寬廣範圍之不同的技術而填滿該目標可用區塊清單。該第二程序將一些混合的種類加入到對實體位址區塊之使用,因而改善了平均抹寫系統之完整性。該第二程序也減少了該系統的可預測性。因而使該系統更難被外人攻擊。該第二程序藉由將另一因素加入對記憶體區塊之整體使用,而有助於確保:不論系統位址是否可能被特定軟體或BIOS程式調用,都能使所有的區塊被使用,且使平均抹寫被應用於整個實體記憶體。
如前文所述,可使用對實體位址之漫步、有型樣的漫步、或隨機漫步而選擇目標區塊。亦可根據啟動期間產生的一清單而選擇目標區塊。額外的替代方式包括使用靜態種子之隨機混洗、循序循環、以一隨機數對位址位元執行一互斥或運算、以及以SPA位址位元對PDA位址位元執行一互斥或運算等的替代方式。
在一實施例中,不使用該第二程序之該可用區塊清單擴充程序、該目標區塊清單、及該可用區塊清單。替代地,該平均抹寫狀態機自該待處理佇列取得區塊,將那些區塊之內容移到自該未被使用區塊清單選擇的一區塊,且在該移動之後,將第一區塊指定給該未被使用區塊清單。
在該實施例中,可使用前文所述之選擇目標區塊的程序執行自該未被使用區塊清單選擇區塊。
在另一實施例中,不使用該第一程序之該平均抹寫程序、該未被使用區塊清單、及該待處理佇列。該可用區塊擴充程序自該目標可用區塊清單取得區塊,將內容移到自該可用區塊清單選擇的一區塊,且在該移動之後,將第一區塊指定給該可用區塊清單。可以前文所述的選擇目標區塊之方式執行自該可用區塊清單選擇區塊。雖然在該實施例中,平均抹寫不是被直接定址,但是藉由每一移動之後的位址轉換之重新映射,而將使平均抹寫被間接定址。
可藉由移除或增添本發明所述實施例之資料結構、狀態機、及操作,而對本發明所述之例子作出許多其他的變化。亦可將該等操作移到不同的硬體組件及不同的位置,而適用特定的應用。可藉由使該系統的額外的要素隨機化,而增強前文所述之兩個簡化的單一程序實施例。例如,可針對可用區塊或未被使用區塊而於開始時或週期性地將該AIT隨機化。可於開始時以及每次在一移動之後更新該AIT時,將該AIT內之子區塊的映射隨機化。同樣地,可將寫入計數隨機化。除了隨機的初始化之外,可在一些時間間隔上使用增加、取代、或其他操作將現有值隨機化。亦可類似地操縱該系統的許多其他參數,而將各操作散佈到整個記憶體陣列,且改變各操作之時序。
第5圖示出可應用本發明實施例的一系統之一例子。一中央處理單元(Central Processing Unit;簡稱CPU)
501被耦合到一控制中心502或南橋502。該CPU包含一記憶體控制器,且被直接耦合到一系統記憶體505,該系統記憶體505之形式通常是DRAM,但是在前文所述之該等例子中,該記憶體可以是諸如PCMS等的非揮發性記憶體。該CPU也被耦合到被一或多個視訊卡使用之一周邊圖形匯流排503,且亦可將視訊自一視訊埠504直接提供給一顯示器。
控制中心502也具有諸如磁碟、快閃記憶體、或其中包括PCMS的其他記憶體類型等的大量儲存記憶體506之一記憶體控制器介面。在一實施例中,該大量儲存記憶體被直接耦合到該系統記憶體(如虛線所示),或被直接耦合到該CPU且並未連接到該控制中心。在另一實施例中,該系統記憶體及該大量儲存記憶體都經由不同匯流排或相同匯流排上的控制中心而被耦合到該CPU。一間接位址單元可被包含到該CPU、該控制中心、或該記憶體陣列。
該控制中心也根據該電腦系統之預期用途而被連接到一些其他裝置。在該所示系統中,該控制中心也被耦合到諸如通用序列匯流排(Universal Serial Bus;簡稱USB)、Firewire、Thunderbolt、或DisplayPort中之一或多個等的外部序列匯流排507。該控制中心也被耦合到一韌體集線器508,以便可連接到一些系統裝置(圖中未示出)。使用者I/O裝置509及音訊I/O 510也被耦合到該控制中心。亦可支援視訊以及周邊組件匯流排511。亦可
由至該控制中心之獨立連接支援或經由至該圖所示的一或多個其他匯流排之連接而支援諸如乙太網路512、無線保真(WiFi)513、或細胞式資料等的網路介面。
本發明之實施例可被用來作為微電腦架構中之PCMS控制器的一整體部分,或將該等實施例用於將PCMS用來作為大容量記憶體(bulk memory)之階層式伺服器記憶體子系統,或將該等實施例用於其他用途。在該所示之例子中,該技術將效能及PCMS耗損最佳化,且因而將一種唯一有價值的解決方案提供給伺服器平台。在其他的應用中,可將該技術用於使用基於DRAM的間接位址表的任何基於PCMS之記憶體子系統。例如,所述之該技術可對PCMS執行直接64B寫入。
我們應可了解:比前文所述之例子配備較差或配備較優之系統對某些實施例可能是較佳的。因此,可根據諸如價格限制、效能需求、技術改良、或其他情況等的許多因素而將隨著不同的實施例改變該等例示系統之組態。
可將各實施例實施為下列方式中之任何方式或一組合:使用主機板而互連之一或多個微晶片或積體電路、固線式(hardwired)邏輯、被可決定儲存且被微處理器執行之軟體、韌體、特定應用積體電路(Application Specific Integrated Circuit;簡稱ASIC)、及/或現場可程式閘陣列(Field Programmable Gate Array;簡稱FPGA)。術語"邏輯"可包括諸如軟體或硬體、及/或軟體及硬體之組合。
提及"一個實施例"、"一實施"、"例示實施例"、"各實施例"等的辭語時,意指所示之本發明的一或多個實施例可包括特定特徵、結構、或特性,但是並非每一實施例都必然包括該等定特徵、結構、或特性。此外,某些實施例可具有參照其他實施例所述的特徵中之某些特徵或所有特徵,或可不具有任何該等特徵。
在前文之說明及申請專利範圍中,可使用術語"被耦合"及其派生詞。"被耦合"被用來指示兩個或更多個元件相互配合或作用,但是該等元件可能具有或可能不具有介於其間之中間實體或電氣組件。
在申請專利範圍中使用時,除非另有指定,否則使用描述一般元件之"第一"、"第二"、或"第三"等的序數形容詞時,只是指示正在提及相像的元件之不同的實例,且其用意並非在意味著所述之該等元件必須按照時間的、空間的、等級的、或任何其他方式的特定順序。
各圖式及前文之說明提供了一些實施例之例子。熟悉此項技術者當可了解:可將該等所述元件中之一或多個元件適當地結合成單一功能元件。或者,可將某些元件分割成多個功能元件。可將來自某一實施例之元件加入另一實施例。例如,本說明書所述各程序之順序可被改變,且不限於本說明書所述之方式。此外,不需要按照所示之順序執行任何流程圖之行動;也不必然需要執行該等行動中之所有行動。此外,不與其他行動相依的那些行動可以與該等其他行動並行之方式被執行。各實施例之範圍不受這些
特定例子的限制。諸如結構、尺寸、及材料使用等的許多變化都是可能的,且不論該等變化是否在本說明書中明確地述及都是如此。各實施例之範圍至少如同最後的申請專利範圍所述的那樣寬廣。
100‧‧‧間接位址單元
112‧‧‧記憶體通道
114‧‧‧讀取佇列
116‧‧‧寫入佇列
110‧‧‧位址控制單元
122‧‧‧記憶體
118‧‧‧寫入緩衝器
120‧‧‧讀取緩衝器
101‧‧‧間接位址表
102‧‧‧相變化記憶體及開關描述符表
200‧‧‧平均抹寫邏輯
103‧‧‧待處理平均抹寫佇列
104‧‧‧可用平均抹寫區塊清單
105‧‧‧目標平均抹寫區塊清單
106‧‧‧未被使用區塊清單
201‧‧‧平均抹寫移動狀態機
212‧‧‧動態隨機存取記憶體控制器
214‧‧‧間接位址表快取記憶體
202‧‧‧可用區塊清單擴充狀態機
203‧‧‧目標可用區塊產生狀態機
501‧‧‧中央處理單元
502‧‧‧控制中心
505‧‧‧系統記憶體
503‧‧‧圖形匯流排
504‧‧‧視訊埠
506‧‧‧大量儲存記憶體
507‧‧‧外部序列匯流排
508‧‧‧韌體集線器
509‧‧‧使用者輸入/輸出裝置
510‧‧‧音訊輸入/輸出
511‧‧‧周邊組件匯流排
512‧‧‧乙太網路
513‧‧‧無線保真
各附圖以舉例且非限制之方式示出了本發明之實施例,而在該等附圖中,相像的元件符號指示類似的元件。
第1圖是根據本發明的一實施例的一記憶體間接位址系統之一方塊圖。
第2圖是根據本發明的第1圖所示間接位址單元之一方塊圖。
第3A圖是根據本發明的一實施例的具有一間接位址單元的平均抹寫之一流程圖。
第3B圖是根據本發明的一實施例的具有一可用區塊清單的平均抹寫之一流程圖。
第3C圖是根據本發明的一實施例而將寫入計數用於間接位址表的平均抹寫之一流程圖。
第4A-4D圖是一陣列的一些記憶體區塊之方塊圖,圖中示出針對根據本發明的一實施例的平均抹寫而在該等區塊之間移動資料及位址。
第5圖是根據本發明的一實施例而具有被應用於一電腦系統的記憶體系統的平均抹寫之該電腦系統之方塊圖。
100‧‧‧間接位址單元
103‧‧‧待處理平均抹寫佇列
104‧‧‧可用平均抹寫區塊清單
105‧‧‧目標平均抹寫區塊清單
106‧‧‧未被使用區塊清單
110‧‧‧位址控制單元
200‧‧‧平均抹寫邏輯
201‧‧‧平均抹寫移動狀態機
202‧‧‧可用區塊清單擴充狀態機
203‧‧‧目標可用區塊產生狀態機
212‧‧‧動態隨機存取記憶體控制器
214‧‧‧間接位址表快取記憶體
Claims (20)
- 一種用於記憶體陣列中之平均抹寫之方法,包含下列步驟:將一系統記憶體位址指定給實體記憶體的一第一區塊之實體記憶體位址;計數實體記憶體的該第一區塊的寫入操作的次數之指示,其中該第一區塊儲存來自該等寫入操作之資料;將該被計數之指示與一臨界值比較;如果寫入操作的該被計數之次數超過該臨界值,則選擇實體記憶體的一第二區塊;執行將該第一區塊中儲存之資料移到該被選擇之第二區塊之一平均抹寫移動;將該系統記憶體位址指定給該第二區塊;以及將該第一區塊指定給實體記憶體之未被使用區塊的一集用區,其中選擇一第二區塊之該步驟包含下列步驟:自可用區塊的一集用區選擇該第二區塊;自被指定給一系統記憶體位址的區塊中選擇一些區塊作為可用區塊的該集用區之區塊;以及將內容移到未被使用區塊的該集用區中之一區塊。
- 如申請專利範圍第1項之方法,其中選擇一第二區塊之該步驟包含下列步驟:自未被使用區塊的該集用區選擇該第二區塊。
- 如申請專利範圍第1項之方法,其中自被指定給一 系統記憶體位址的區塊中選擇該等區塊之該步驟包含下列步驟:使用隨機漫步而選擇區塊。
- 如申請專利範圍第1項之方法,進一步包含下列步驟:將該第一區塊指定給等候平均抹寫移動的各區塊之一待處理佇列;以及自該待處理佇列選擇該第一區塊。
- 如申請專利範圍第1項之方法,其中該將該第一區塊指定給可用區塊的該集用區之該步驟包含下列步驟:將該第一區塊指定給未被使用區塊之一集用區。
- 如申請專利範圍第1項之方法,其中執行一平均抹寫移動之該步驟進一步包含下列步驟:將該第一區塊之內容寫到一寫入緩衝器;將該第一區塊之待處理的寫入操作收集到該寫入緩衝器;以及將該寫入緩衝器之內容寫到該第二區塊。
- 如申請專利範圍第6項之方法,其中執行一平均抹寫移動之該步驟進一步包含下列步驟:設定與一間接位址表相關聯的一位元,用以指示系統記憶體位址不可被用於寫入操作。
- 如申請專利範圍第7項之方法,進一步包含下列步驟:在執行該平均抹寫移動之前先設定該位元;以及在執行該平均抹寫移動之後清除該位元。
- 如申請專利範圍第8項之方法,其中設定該位元之該步驟使對該系統記憶體位址的讀取或寫入之進入指令被緩衝直到該位元被清除為止。
- 如申請專利範圍第1項之方法,進一步包含下列 步驟:根據期望之平均抹寫量而選擇該寫入計數臨界值。
- 如申請專利範圍第1項之方法,進一步包含下列步驟:在將該第一區塊指定給未被使用區塊的該集用區之後,重設實體記憶體的該第一區塊的寫入操作之該被計數之次數。
- 一種用於記憶體陣列中之平均抹寫之方法,包含下列步驟:將一組的系統記憶體位址映射到實體記憶體的一第一區塊之實體記憶體位址,該映射步驟混洗系統記憶體位址的子區塊至該第一區塊的子區塊之映射;設定該第一區塊的寫入計數值之初始值;在寫到該第一區塊的實體記憶體位址之後立即遞增該寫入計數值;如果該寫入計數值超過一臨界值,則選擇實體記憶體的一第二區塊;執行將該第一區塊中儲存之資料移到該被選擇之第二區塊之一平均抹寫移動;將該系統記憶體位址指定給該第二區塊的實體記憶體位址;以及將該第一區塊指定給實體記憶體之未被使用區塊的一集用區,其中選擇一第二區塊之該步驟包含下列步驟:自可用區塊的一集用區選擇該第二區塊;自被指定給一系統記憶體位址的區塊中選擇一些區塊 作為可用區塊的該集用區之區塊;以及將內容移到未被使用區塊的該集用區中之一區塊。
- 如申請專利範圍第12項之方法,其中該混洗包含隨機混洗。
- 如申請專利範圍第12項之方法,其中設定一寫入計數之初始值之該步驟包含下列步驟:指定一隨機值作為該寫入計數。
- 如申請專利範圍第12項之方法,其中設定一寫入計數之初始值之該步驟包含下列步驟:將該寫入計數設定為零。
- 一種用於記憶體陣列中之平均抹寫之設備,包含:一間接位址表,用以將來自一軟體系統之系統實體位址轉換為該記憶體陣列之實體裝置位址;一寫入計數暫存器,用以儲存該記憶體陣列的記憶體的每一區塊的寫入操作的次數之指示,該記憶體陣列的該等單元被分成複數個區塊;位址控制邏輯,用以將一被儲存之寫入計數與一臨界值比較;以及一平均抹寫邏輯,用以將該被儲存之寫入計數超過該臨界值的一第一區塊之資料移到自可用區塊的一集用區中選擇之一第二區塊,而執行該第一區塊中儲存之資料之一平均抹寫移動,且更新該間接位址表,以便反映該平均抹寫移動, 其中該平均抹寫邏輯自可用區塊的一集用區選擇該第二區塊,且自被指定給一系統記憶體位址的各區塊中選擇一些區塊作為可用區塊的該集用區之區塊,且將該第一區塊之內容移到未被使用區塊的該集用區中之一區塊。
- 如申請專利範圍第16項之設備,其中該平均抹寫邏輯在執行了該平均抹寫移動之後,將該寫入計數暫存器之初始值設定為一隨機值。
- 一種用於記憶體陣列中之平均抹寫之設備,包含:一平均抹寫移動狀態機,用以根據一抹寫準則而選擇一現用區塊,將該被選擇的現用區塊之內容移到一可用區塊清單中之一區塊,且將該被選擇的現用區塊移到一未被使用區塊清單;一可用區塊清單擴充狀態機,用以自一目標可用區塊清單取得一區塊,將該區塊之內容移到該未被使用區塊清單中之一區塊,且將自該目標區塊清單取得之該區塊移到一可用區塊清單;以及一目標可用區塊產生狀態機,用以自該未被使用區塊清單選擇一些區塊,且將該等被選擇之區塊移到該目標可用區塊清單,其中該平均抹寫移動狀態機自可用區塊的一集用區選擇該第二區塊,且自被指定給一系統記憶體位址的各區塊中選擇一些區塊作為可用區塊的該集用區之區塊。
- 如申請專利範圍第18項之設備,其中該平均抹寫 移動狀態機進一步更新一間接位址表,以便反映來自該被選擇的現用區塊的內容之移動,且其中該可用區塊清單擴充狀態機進一步更新該間接位址表,以便反映自該目標可用區塊清單取得的該區塊的內容之移動。
- 如申請專利範圍第19項之設備,其中該目標可用區塊產生狀態機使用一抹寫平衡技術以選擇區塊。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/054384 WO2013048470A1 (en) | 2011-09-30 | 2011-09-30 | Statistical wear leveling for non-volatile system memory |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201324147A TW201324147A (zh) | 2013-06-16 |
TWI518503B true TWI518503B (zh) | 2016-01-21 |
Family
ID=47996201
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101130835A TWI518503B (zh) | 2011-09-30 | 2012-08-24 | 用於記憶體陣列中之平均抹寫之方法及設備 |
TW104140306A TWI578157B (zh) | 2011-09-30 | 2012-08-24 | 用於記憶體陣列中之平均抹寫之方法及設備 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104140306A TWI578157B (zh) | 2011-09-30 | 2012-08-24 | 用於記憶體陣列中之平均抹寫之方法及設備 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9298606B2 (zh) |
EP (1) | EP2761471B1 (zh) |
CN (1) | CN103946819B (zh) |
TW (2) | TWI518503B (zh) |
WO (1) | WO2013048470A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI571882B (zh) * | 2016-02-19 | 2017-02-21 | 群聯電子股份有限公司 | 平均磨損方法、記憶體控制電路單元及記憶體儲存裝置 |
Families Citing this family (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9294224B2 (en) | 2011-09-28 | 2016-03-22 | Intel Corporation | Maximum-likelihood decoder in a memory controller for synchronization |
US9430372B2 (en) | 2011-09-30 | 2016-08-30 | Intel Corporation | Apparatus, method and system that stores bios in non-volatile random access memory |
EP3346386B1 (en) | 2011-09-30 | 2020-01-22 | Intel Corporation | Non-volatile random access memory (nvram) as a replacement for traditional mass storage |
EP2761467B1 (en) | 2011-09-30 | 2019-10-23 | Intel Corporation | Generation of far memory access signals based on usage statistic tracking |
WO2013048485A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Autonomous initialization of non-volatile random access memory in a computer system |
CN103946826B (zh) | 2011-09-30 | 2019-05-31 | 英特尔公司 | 用于在公共存储器通道上实现多级存储器层级的设备和方法 |
WO2013048493A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
CN107608910B (zh) | 2011-09-30 | 2021-07-02 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
WO2013077867A1 (en) | 2011-11-22 | 2013-05-30 | Intel Corporation | Access control for non-volatile random access memory across platform agents |
CN103975287B (zh) | 2011-12-13 | 2017-04-12 | 英特尔公司 | 使用非易失性随机存取存储器的服务器中的增强***睡眠状态支持 |
US9958926B2 (en) | 2011-12-13 | 2018-05-01 | Intel Corporation | Method and system for providing instant responses to sleep state transitions with non-volatile random access memory |
CN103999161B (zh) | 2011-12-20 | 2016-09-28 | 英特尔公司 | 用于相变存储器漂移管理的设备和方法 |
CN103999067A (zh) | 2011-12-21 | 2014-08-20 | 英特尔公司 | 以多个非易失性存储器为特征的高性能存储结构和*** |
KR101572403B1 (ko) | 2011-12-22 | 2015-11-26 | 인텔 코포레이션 | 메모리 채널 셧다운에 의한 전력 절약 |
US9262336B2 (en) | 2011-12-23 | 2016-02-16 | Intel Corporation | Page miss handler including wear leveling logic |
WO2013095641A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Sub-block based wear leveling |
US9396118B2 (en) | 2011-12-28 | 2016-07-19 | Intel Corporation | Efficient dynamic randomizing address remapping for PCM caching to improve endurance and anti-attack |
US9418700B2 (en) | 2012-06-29 | 2016-08-16 | Intel Corporation | Bad block management mechanism |
US9754648B2 (en) | 2012-10-26 | 2017-09-05 | Micron Technology, Inc. | Apparatuses and methods for memory operations having variable latencies |
US20150143021A1 (en) * | 2012-12-26 | 2015-05-21 | Unisys Corporation | Equalizing wear on storage devices through file system controls |
US9734097B2 (en) | 2013-03-15 | 2017-08-15 | Micron Technology, Inc. | Apparatuses and methods for variable latency memory operations |
US9727493B2 (en) | 2013-08-14 | 2017-08-08 | Micron Technology, Inc. | Apparatuses and methods for providing data to a configurable storage area |
US9513815B2 (en) * | 2013-12-19 | 2016-12-06 | Macronix International Co., Ltd. | Memory management based on usage specifications |
CN104932833B (zh) * | 2014-03-21 | 2018-07-31 | 华为技术有限公司 | 磨损均衡方法、装置及存储设备 |
US10365835B2 (en) | 2014-05-28 | 2019-07-30 | Micron Technology, Inc. | Apparatuses and methods for performing write count threshold wear leveling operations |
US10437500B2 (en) | 2014-10-29 | 2019-10-08 | Hewlett Packard Enterprise Development Lp | Committing altered metadata to a non-volatile storage device |
US10055267B2 (en) * | 2015-03-04 | 2018-08-21 | Sandisk Technologies Llc | Block management scheme to handle cluster failures in non-volatile memory |
US10204047B2 (en) | 2015-03-27 | 2019-02-12 | Intel Corporation | Memory controller for multi-level system memory with coherency unit |
US10387259B2 (en) | 2015-06-26 | 2019-08-20 | Intel Corporation | Instant restart in non volatile system memory computing systems with embedded programmable data checking |
US9952801B2 (en) | 2015-06-26 | 2018-04-24 | Intel Corporation | Accelerated address indirection table lookup for wear-leveled non-volatile memory |
US10073659B2 (en) | 2015-06-26 | 2018-09-11 | Intel Corporation | Power management circuit with per activity weighting and multiple throttle down thresholds |
US10108549B2 (en) | 2015-09-23 | 2018-10-23 | Intel Corporation | Method and apparatus for pre-fetching data in a system having a multi-level system memory |
US10185501B2 (en) | 2015-09-25 | 2019-01-22 | Intel Corporation | Method and apparatus for pinning memory pages in a multi-level system memory |
US10261901B2 (en) | 2015-09-25 | 2019-04-16 | Intel Corporation | Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory |
US9792224B2 (en) | 2015-10-23 | 2017-10-17 | Intel Corporation | Reducing latency by persisting data relationships in relation to corresponding data in persistent memory |
US10033411B2 (en) | 2015-11-20 | 2018-07-24 | Intel Corporation | Adjustable error protection for stored data |
US10095618B2 (en) | 2015-11-25 | 2018-10-09 | Intel Corporation | Memory card with volatile and non volatile memory space having multiple usage model configurations |
GB2545409B (en) * | 2015-12-10 | 2020-01-08 | Advanced Risc Mach Ltd | Wear levelling in non-volatile memories |
US9747041B2 (en) | 2015-12-23 | 2017-08-29 | Intel Corporation | Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device |
US10007606B2 (en) | 2016-03-30 | 2018-06-26 | Intel Corporation | Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory |
US10007462B1 (en) * | 2016-03-31 | 2018-06-26 | EMC IP Holding Company LLC | Method and system for adaptive data migration in solid state memory |
US10185619B2 (en) | 2016-03-31 | 2019-01-22 | Intel Corporation | Handling of error prone cache line slots of memory side cache of multi-level system memory |
US10031845B2 (en) | 2016-04-01 | 2018-07-24 | Intel Corporation | Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device |
US10019198B2 (en) | 2016-04-01 | 2018-07-10 | Intel Corporation | Method and apparatus for processing sequential writes to portions of an addressable unit |
US10120806B2 (en) | 2016-06-27 | 2018-11-06 | Intel Corporation | Multi-level system memory with near memory scrubbing based on predicted far memory idle time |
US10528462B2 (en) * | 2016-09-26 | 2020-01-07 | Intel Corporation | Storage device having improved write uniformity stability |
CN106547629B (zh) * | 2016-11-03 | 2020-05-26 | 中山大学 | 一种状态机副本管理模型的优化方法 |
US10430085B2 (en) | 2016-11-08 | 2019-10-01 | Micron Technology, Inc. | Memory operations on data |
US10261876B2 (en) | 2016-11-08 | 2019-04-16 | Micron Technology, Inc. | Memory management |
EP3553665B1 (en) * | 2016-12-28 | 2024-05-15 | Huawei Technologies Co., Ltd. | Non-volatile memory access method, device, and system |
US10915453B2 (en) | 2016-12-29 | 2021-02-09 | Intel Corporation | Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures |
US10445261B2 (en) | 2016-12-30 | 2019-10-15 | Intel Corporation | System memory having point-to-point link that transports compressed traffic |
KR20180094391A (ko) * | 2017-02-15 | 2018-08-23 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US11074018B2 (en) * | 2017-04-06 | 2021-07-27 | International Business Machines Corporation | Network asset management |
KR20180125694A (ko) | 2017-05-16 | 2018-11-26 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
CN106990926A (zh) * | 2017-06-14 | 2017-07-28 | 郑州云海信息技术有限公司 | 一种固态硬盘磨损均衡的处理方法 |
US10304814B2 (en) | 2017-06-30 | 2019-05-28 | Intel Corporation | I/O layout footprint for multiple 1LM/2LM configurations |
US10642727B1 (en) * | 2017-09-27 | 2020-05-05 | Amazon Technologies, Inc. | Managing migration events performed by a memory controller |
US11188467B2 (en) | 2017-09-28 | 2021-11-30 | Intel Corporation | Multi-level system memory with near memory capable of storing compressed cache lines |
US10698819B2 (en) * | 2017-12-14 | 2020-06-30 | SK Hynix Inc. | Memory system and operating method thereof |
KR102655350B1 (ko) * | 2017-12-14 | 2024-04-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US10860244B2 (en) | 2017-12-26 | 2020-12-08 | Intel Corporation | Method and apparatus for multi-level memory early page demotion |
KR102398540B1 (ko) | 2018-02-19 | 2022-05-17 | 에스케이하이닉스 주식회사 | 메모리 장치, 반도체 장치 및 반도체 시스템 |
US11099995B2 (en) | 2018-03-28 | 2021-08-24 | Intel Corporation | Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory |
US10636459B2 (en) * | 2018-05-30 | 2020-04-28 | Micron Technology, Inc. | Wear leveling |
US10983715B2 (en) * | 2018-09-19 | 2021-04-20 | Western Digital Technologies, Inc. | Expandable memory for use with solid state systems and devices |
US10860219B2 (en) * | 2018-10-05 | 2020-12-08 | Micron Technology, Inc. | Performing hybrid wear leveling operations based on a sub-total write counter |
CN111258491B (zh) * | 2018-11-30 | 2021-10-15 | 北京忆芯科技有限公司 | 降低读命令处理延迟的方法与装置 |
US11055228B2 (en) | 2019-01-31 | 2021-07-06 | Intel Corporation | Caching bypass mechanism for a multi-level memory |
US11144230B2 (en) * | 2019-02-18 | 2021-10-12 | International Business Machines Corporation | Data copy amount reduction in data replication |
WO2021041054A1 (en) * | 2019-08-31 | 2021-03-04 | Cryptography Research, Inc. | Random accessing |
CN112817736B (zh) * | 2019-11-15 | 2022-10-21 | 荣耀终端有限公司 | 一种内存的管理方法及电子设备 |
US11244717B2 (en) | 2019-12-02 | 2022-02-08 | Micron Technology, Inc. | Write operation techniques for memory systems |
US11836351B2 (en) * | 2022-03-31 | 2023-12-05 | Lenovo Global Technology (United States) Inc. | Causing a storage device to switch storage tiers based on a wear level |
US20230342060A1 (en) * | 2022-04-26 | 2023-10-26 | Micron Technology, Inc. | Techniques for data transfer operations |
CN116027988B (zh) * | 2023-03-22 | 2023-06-23 | 电子科技大学 | 用于存储器的损耗均衡方法及其芯片控制器的控制方法 |
CN117632038B (zh) * | 2024-01-25 | 2024-04-02 | 合肥兆芯电子有限公司 | 损耗平衡方法、存储器存储装置及存储器控制电路单元 |
CN117742619B (zh) * | 2024-02-21 | 2024-04-19 | 合肥康芯威存储技术有限公司 | 一种存储器及其数据处理方法 |
Family Cites Families (12)
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 |
JP2004310650A (ja) * | 2003-04-10 | 2004-11-04 | Renesas Technology Corp | メモリ装置 |
US7441067B2 (en) | 2004-11-15 | 2008-10-21 | Sandisk Corporation | Cyclic flash memory wear leveling |
JP4751163B2 (ja) | 2005-09-29 | 2011-08-17 | 株式会社東芝 | メモリシステム |
TWI303828B (en) | 2006-03-03 | 2008-12-01 | Winbond Electronics Corp | A method and a system for erasing a nonvolatile memory |
US20070208904A1 (en) * | 2006-03-03 | 2007-09-06 | Wu-Han Hsieh | Wear leveling method and apparatus for nonvolatile memory |
JP4863749B2 (ja) | 2006-03-29 | 2012-01-25 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム |
TWI366828B (en) * | 2007-09-27 | 2012-06-21 | Phison Electronics Corp | Wear leveling method and controller using the same |
CN101645309B (zh) * | 2008-08-05 | 2013-05-22 | 威刚科技(苏州)有限公司 | 非挥发性存储装置及其控制方法 |
KR101662273B1 (ko) | 2009-11-27 | 2016-10-05 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및 그것의 마모도 관리 방법 |
US8949506B2 (en) * | 2010-07-30 | 2015-02-03 | Apple Inc. | Initiating wear leveling for a non-volatile memory |
US8612804B1 (en) * | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
-
2011
- 2011-09-30 US US13/977,652 patent/US9298606B2/en active Active
- 2011-09-30 WO PCT/US2011/054384 patent/WO2013048470A1/en active Application Filing
- 2011-09-30 EP EP11873322.9A patent/EP2761471B1/en active Active
- 2011-09-30 CN CN201180075090.5A patent/CN103946819B/zh active Active
-
2012
- 2012-08-24 TW TW101130835A patent/TWI518503B/zh not_active IP Right Cessation
- 2012-08-24 TW TW104140306A patent/TWI578157B/zh active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI571882B (zh) * | 2016-02-19 | 2017-02-21 | 群聯電子股份有限公司 | 平均磨損方法、記憶體控制電路單元及記憶體儲存裝置 |
Also Published As
Publication number | Publication date |
---|---|
WO2013048470A1 (en) | 2013-04-04 |
EP2761471B1 (en) | 2017-10-25 |
EP2761471A4 (en) | 2015-05-27 |
EP2761471A1 (en) | 2014-08-06 |
TW201324147A (zh) | 2013-06-16 |
US20130282967A1 (en) | 2013-10-24 |
CN103946819B (zh) | 2017-05-17 |
TWI578157B (zh) | 2017-04-11 |
US9298606B2 (en) | 2016-03-29 |
CN103946819A (zh) | 2014-07-23 |
TW201627865A (zh) | 2016-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI518503B (zh) | 用於記憶體陣列中之平均抹寫之方法及設備 | |
US10817201B2 (en) | Multi-level memory with direct access | |
KR101572403B1 (ko) | 메모리 채널 셧다운에 의한 전력 절약 | |
KR101105955B1 (ko) | 듀얼 매체 저장 장치 | |
TWI489276B (zh) | 於第二階記憶體階層中記憶體側快取的動態部份斷電之系統與方法 | |
TWI578156B (zh) | 非依電性隨機存取記憶磁碟 | |
WO2013095385A1 (en) | Apparatus and method for phase change memory drift management | |
JP7353934B2 (ja) | メモリシステムおよび制御方法 | |
US10606484B2 (en) | NAND flash storage device with NAND buffer | |
Chang et al. | A PCM translation layer for integrated memory and storage management | |
CN108877862B (zh) | 页条带的数据组织以及向页条带写入数据的方法与装置 | |
TWI814590B (zh) | 資料處理方法及對應之資料儲存裝置 | |
Nam et al. | Fast bootstrapping method for the memory-disk integrated memory system | |
Xie et al. | hubi: An optimized hybrid mapping scheme for nand flash-based ssds |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |