專利名稱:非易失性存儲(chǔ)器裝置及其損耗平均方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種非易失性存儲(chǔ)器,且特別涉及一種非易失性存儲(chǔ)器裝置及其損耗 平均(wear leveling)方法。
背景技術(shù):
快閃存儲(chǔ)器(flash memory)是一種可編程(programmable)的只讀存儲(chǔ)器(read only memory, ROM),其允許被多次的抹除并更新所存儲(chǔ)的數(shù)據(jù)。這種快閃存儲(chǔ)器在現(xiàn)今的 電子產(chǎn)品中的應(yīng)用非常廣泛,常見(jiàn)在存儲(chǔ)卡及隨身盤等作為數(shù)字電子產(chǎn)品間交換數(shù)據(jù)的媒 介。通常,快閃存儲(chǔ)器被劃分成多個(gè)數(shù)據(jù)塊(block),而每一個(gè)數(shù)據(jù)塊中又被細(xì)分為許 多容量相同的數(shù)據(jù)頁(yè)(page)。在此,快閃存儲(chǔ)器存在著一個(gè)限制,就是在當(dāng)對(duì)快閃存儲(chǔ)器進(jìn) 行數(shù)據(jù)的更新時(shí),必須需針對(duì)要被更新的地址所在的數(shù)據(jù)塊進(jìn)行抹除的動(dòng)作后,再把新的 數(shù)據(jù)寫入。然而,快閃存儲(chǔ)器中的每一個(gè)數(shù)據(jù)塊進(jìn)行數(shù)據(jù)抹除是有一定的壽命(抹除次數(shù)) 的限制。為了有效提升快閃存儲(chǔ)器的使用壽命,現(xiàn)有技術(shù)提出一種所謂的損耗平均(wear leveling)的技術(shù)來(lái)使每個(gè)數(shù)據(jù)塊的抹除次數(shù)能夠較為平均。請(qǐng)參照?qǐng)D1 圖3,圖1 圖3現(xiàn)有的快閃存儲(chǔ)器的損耗平均存取方法的示意圖。 在圖1中,快閃存儲(chǔ)器110依據(jù)其實(shí)體塊地址(physical block address) PBAO PBA767分 成3個(gè)分區(qū),實(shí)體塊地址亦稱為實(shí)體地址或者物理地址。其中,實(shí)體塊地址PBAO PBA255 為第一分區(qū)DIV0,實(shí)體塊地址PBA256 PBA511為第二分區(qū)DIVl,而實(shí)體塊地址PBA512 PBA767為第三分區(qū)DIV2。然后,針對(duì)第一分區(qū)DIVO依據(jù)邏輯塊地址LBAO LBA255建立 對(duì)應(yīng)查找表120。由于第一分區(qū)DIVO包括256個(gè)數(shù)據(jù)塊(每一個(gè)實(shí)體塊地址表示對(duì)應(yīng)一 個(gè)數(shù)據(jù)塊)。其中,對(duì)應(yīng)查找表120存儲(chǔ)的數(shù)據(jù)代表邏輯塊地址(logical block address) 及實(shí)體塊地址的對(duì)應(yīng)關(guān)系。在圖1中,邏輯塊地址LBAO與實(shí)體塊地址PBAO相對(duì)應(yīng)。接著請(qǐng)參照?qǐng)D2,現(xiàn)有的損耗平均技術(shù)還包括建立空白陣列區(qū)130,空白陣列區(qū) 130記錄未被寫入數(shù)據(jù)的數(shù)據(jù)塊的實(shí)體塊地址。在圖2中,圖中左側(cè)的對(duì)應(yīng)查找表120皆為 空白(未被寫入),而圖中左側(cè)的空白陣列區(qū)130則記錄出所有的實(shí)體塊地址PBAO PBAN 皆為空白。然而在執(zhí)行存取命令210后,由于邏輯塊地址LBAO LBA2要被寫入,因此,快閃 存儲(chǔ)器依據(jù)空白陣列區(qū)130的記錄提供實(shí)體塊地址PBA0、PBA1、PBA2分別對(duì)應(yīng)邏輯塊地址 LBAO, LBAU LBA2以存儲(chǔ)數(shù)據(jù)。也因此,圖2右側(cè)的對(duì)應(yīng)查找表120對(duì)應(yīng)邏輯塊地址LBA0、 LBAU LBA2的存儲(chǔ)欄位分別存入實(shí)體塊地址ΡΒΑ0、PBAU PBA2。而圖2右側(cè)的空白陣列區(qū) 130也移除了原先實(shí)體塊地址PBAO、PBA 1、PBA2的記錄。接著繼續(xù)參照?qǐng)D3,此時(shí)執(zhí)行存取命令310以針對(duì)邏輯塊地址LBAl、LBA2進(jìn)行數(shù) 據(jù)的更新。依據(jù)空白陣列區(qū)130(如圖3左側(cè))來(lái)提供實(shí)體塊地址PBA3、PBA4來(lái)存入要更 新至邏輯塊地址LBA1、LBA2的數(shù)據(jù)。并且將實(shí)體塊地址ΡΒΑ0、PBAl清除,并加入空白陣列 區(qū)130(如圖3右側(cè)所示)。此種現(xiàn)有的損耗平均技術(shù)因?yàn)閷?duì)應(yīng)查找表120與快閃存儲(chǔ)器的實(shí)體塊地址必須一對(duì)一存在,而需要相當(dāng)大的存儲(chǔ)空間,而空白陣列區(qū)130也需要多的存儲(chǔ)空間。換言之, 此種現(xiàn)有的損耗平均技術(shù)是需要較高的成本的。
發(fā)明內(nèi)容
本發(fā)明提供一種非易失性存儲(chǔ)器裝置及其損耗平均方法,可有效平均非易失性存 儲(chǔ)器中的各塊的歷史程序化次數(shù),以延長(zhǎng)非易失性存儲(chǔ)器的使用壽命。本發(fā)明提出一種非易失性存儲(chǔ)器的損耗平均方法,首先,將非易失性存儲(chǔ)器的多 個(gè)實(shí)體塊地址分割出一數(shù)據(jù)存儲(chǔ)區(qū)及一空白陣列區(qū)。接著,比較空白陣列區(qū)中多個(gè)數(shù)據(jù)塊 的歷史程序化次數(shù)。之后,將空白陣列區(qū)中歷史程序化次數(shù)最大的數(shù)據(jù)塊改配置在該數(shù)據(jù) 存儲(chǔ)區(qū),以及將數(shù)據(jù)存儲(chǔ)區(qū)中多個(gè)數(shù)據(jù)塊之的一改配置在該空白陣列區(qū)。在本發(fā)明的一實(shí)施例中,當(dāng)數(shù)據(jù)存儲(chǔ)區(qū)需要被寫入一更新數(shù)據(jù)時(shí),空白陣列區(qū)被 用來(lái)存放更新數(shù)據(jù)。本發(fā)明提出一種存儲(chǔ)器裝置,包括一非易失性存儲(chǔ)器以及一控制器。控制器耦接 非易失性存儲(chǔ)器??刂破鲗⒎且资源鎯?chǔ)器分割出一數(shù)據(jù)存儲(chǔ)區(qū)及一空白陣列區(qū)。當(dāng)控制 器進(jìn)行一損耗平均方法時(shí),所述損耗平均方法包括比較空白陣列區(qū)中多個(gè)數(shù)據(jù)塊的歷史 程序化次數(shù),以將空白陣列區(qū)中歷史程序化次數(shù)最大的數(shù)據(jù)塊改配置在該數(shù)據(jù)存儲(chǔ)區(qū),以 及將數(shù)據(jù)存儲(chǔ)區(qū)中多個(gè)數(shù)據(jù)塊的一者改配置在該空白陣列區(qū)?;谏鲜?,本發(fā)明利用在數(shù)據(jù)存儲(chǔ)區(qū)中一個(gè)數(shù)據(jù)塊來(lái)與空白陣列區(qū)中歷史程序化 次數(shù)最多的數(shù)據(jù)塊進(jìn)行交換,以延長(zhǎng)非易失性存儲(chǔ)器的使用壽命。為讓本發(fā)明的上述特征和優(yōu)點(diǎn)能還明顯易懂,下面特舉實(shí)施例,并配合附圖作詳 細(xì)說(shuō)明如下。
圖1 圖3現(xiàn)有的快閃存儲(chǔ)器的損耗平均存取方法的示意圖。圖4為本發(fā)明的非易失性存儲(chǔ)器的損耗平均方法的一實(shí)施例的操作流程圖。圖5A 圖5B以及圖6為本發(fā)明的非易失性存儲(chǔ)器的損耗平均方法的實(shí)施例的操 作示意圖。圖7為本發(fā)明的一實(shí)施例的非易失性存儲(chǔ)器控制裝置的方塊圖。主要元件符號(hào)說(shuō)明110:快閃存儲(chǔ)器;120、520 對(duì)應(yīng)查找表;130、512 空白陣列區(qū); 210、310 存取命令;510,740 非易失性存儲(chǔ)器;511 數(shù)據(jù)存儲(chǔ)區(qū);610 損耗平均方法;700 存儲(chǔ)器控制裝置;710 控制器;720 存儲(chǔ)裝置;730:傳輸接口;STO ST3999 存儲(chǔ)欄位;EC 歷史程序化次數(shù); DIVO 第一分區(qū);DIVl 第二分區(qū);DIV2 第三分區(qū);PAG000 PAG255 頁(yè)面;PBAO PBA4095、PBAN 實(shí)體塊地址;
S410 S430 存儲(chǔ)器損耗平均方法的步驟;LBAO LBA245、LBAN、LBAM、LDIVO, LDIV15 邏輯塊地址。
具體實(shí)施例方式以下請(qǐng)參照?qǐng)D4,圖4為本發(fā)明的非易失性存儲(chǔ)器的損耗平均方法的一實(shí)施例的 操作流程圖。并請(qǐng)同時(shí)參照?qǐng)D5A 圖5B以及圖6所的本發(fā)明的非易失性存儲(chǔ)器的損耗平 均方法的實(shí)施例的操作示意圖。其中,非易失性存儲(chǔ)器(Non-volatile memory, NVM)例如 是掩模只讀存儲(chǔ)器(Mask Read-OnlyMemory,Mask ROM)、可編程只讀存儲(chǔ)器(Programmable Read-Only Memory,PROM)、可擦除可編程只讀存儲(chǔ)器(Erasable Programmable Read-Only Memory, EPR0M)、電子式可擦除可編程只讀存儲(chǔ)器(Electrically ErasableProgrammable Read-Only Memory, EEPR0M)或快閃存儲(chǔ)器。在本實(shí)施例中,存取非易失性存儲(chǔ)器的步驟包括首先,步驟S410依據(jù)非易失性 存儲(chǔ)器的多個(gè)物理地址即實(shí)體塊地址分割出數(shù)據(jù)存儲(chǔ)區(qū)以及空白陣列區(qū),實(shí)體塊地址亦可 稱之為實(shí)體地址。如圖5A所示,非易失性存儲(chǔ)器510具有實(shí)體塊地址PBAO PBA4095,非 易失性存儲(chǔ)器510被分割為數(shù)據(jù)存儲(chǔ)區(qū)511以及空白陣列區(qū)512。其中,在本實(shí)施例中的數(shù) 據(jù)存儲(chǔ)區(qū)511包括實(shí)體塊地址PBAO PBA3999,而空白陣列區(qū)512則如同圖5B所示的包括 實(shí)體塊地址PBA4000 PBA4095。在此請(qǐng)注意,圖5A、圖5B所示的數(shù)據(jù)存儲(chǔ)區(qū)511以及空 白陣列區(qū)512的劃分僅只是一個(gè)范例,并不限制數(shù)據(jù)存儲(chǔ)區(qū)511以及空白陣列區(qū)512所包 括的實(shí)體塊地址的范圍。事實(shí)上,數(shù)據(jù)存儲(chǔ)區(qū)511以及空白陣列區(qū)512的分割方式是可以 動(dòng)態(tài)調(diào)整的。另外,可依據(jù)非易失性存儲(chǔ)器510的多個(gè)邏輯塊地址建立對(duì)應(yīng)查找表,其中對(duì)應(yīng) 查找表中包括多個(gè)存儲(chǔ)欄位,用以存儲(chǔ)數(shù)據(jù)存儲(chǔ)區(qū)511的實(shí)體塊地址。如圖5A所示,對(duì)應(yīng)查 找表520是依據(jù)非易失性存儲(chǔ)器510的邏輯塊地址LDIVO的LBAO LBA249至LDIV 15的 LBAO LBA249來(lái)建立的。對(duì)應(yīng)查找表520包括存儲(chǔ)欄位STO ST3999,其中的每一個(gè)存 儲(chǔ)欄位都存儲(chǔ)數(shù)據(jù)存儲(chǔ)區(qū)511中的各個(gè)實(shí)體塊地址PBAO PBA3999。舉例來(lái)說(shuō),對(duì)應(yīng)查找 表520中對(duì)應(yīng)邏輯塊地址LDIVO的LBAO的存儲(chǔ)欄位STO所存儲(chǔ)的數(shù)據(jù)為實(shí)體塊地址ΡΒΑ0, 表示邏輯塊地址LDIVO的LBAO與實(shí)體塊地址PBAO相對(duì)應(yīng)。還表示當(dāng)要對(duì)非易失性存儲(chǔ)器 510的邏輯塊地址LDIVO的LBAO進(jìn)行存取時(shí),實(shí)際上是對(duì)非易失性存儲(chǔ)器510的實(shí)體塊地 址PBAO進(jìn)行存取。在此,對(duì)應(yīng)查找表520是被建立在一個(gè)存儲(chǔ)裝置中,而這個(gè)存儲(chǔ)裝置可 以是動(dòng)態(tài)存儲(chǔ)器或是靜態(tài)存儲(chǔ)器。接著,請(qǐng)繼續(xù)參照?qǐng)D4,每當(dāng)接收到一個(gè)針對(duì)非易失性存儲(chǔ)器510的目標(biāo)邏輯塊地 址寫入一更新數(shù)據(jù)的存取命令時(shí),除了執(zhí)行該存取命令外,還判斷同一目標(biāo)邏輯塊地址是 否被重復(fù)多次地存取數(shù)據(jù)。舉例來(lái)說(shuō),可判斷同一目標(biāo)邏輯塊地址被連續(xù)存取數(shù)據(jù)的次數(shù) 是否達(dá)到預(yù)設(shè)值(例如50次)。當(dāng)同一目標(biāo)邏輯塊地址被重復(fù)多次地存取數(shù)據(jù)時(shí)(亦即目 標(biāo)邏輯塊地址被連續(xù)存取數(shù)據(jù)的次數(shù),或連續(xù)進(jìn)行地址/數(shù)據(jù)重新排序的次數(shù)達(dá)到預(yù)設(shè)值 時(shí)),則進(jìn)行一次圖4所示的損耗平均方法的步驟S420與步驟S430。步驟S420比較空白陣列區(qū)512中多個(gè)數(shù)據(jù)塊的歷史程序化次數(shù)EC。非易失性存 儲(chǔ)器510中各個(gè)數(shù)據(jù)塊的歷史程序化次數(shù)EC可分別記錄在所屬數(shù)據(jù)塊的備用區(qū)(spare area)中。舉例來(lái)說(shuō),假設(shè)某一個(gè)數(shù)據(jù)塊分為256個(gè)頁(yè)面PAG000 PAG255,其中每個(gè)頁(yè)面皆有8K字節(jié)的存儲(chǔ)空間與一個(gè)400字節(jié)備用區(qū)。此數(shù)據(jù)塊的歷史程序化次數(shù)EC可以被存 儲(chǔ)在第一個(gè)頁(yè)面PAG000的備用區(qū)中,以記錄此數(shù)據(jù)塊被程序化的歷史次數(shù)。本實(shí)施例雖以 頁(yè)面PAG000的備用區(qū)為例進(jìn)行記錄歷史程序化次數(shù)EC的說(shuō)明,但不以此為限。歷史程序化次數(shù)EC表示了所屬數(shù)據(jù)塊曾經(jīng)被程序化的次數(shù)。例如,當(dāng)抹除 (erasing)某一個(gè)實(shí)體塊地址所對(duì)應(yīng)的數(shù)據(jù)塊時(shí),將記錄在該實(shí)體塊地址對(duì)應(yīng)的數(shù)據(jù)塊的 備用區(qū)中的歷史程序化次數(shù)EC加1。因此,歷史程序化次數(shù)EC可以表示所屬數(shù)據(jù)塊曾經(jīng)被 抹除過(guò)的次數(shù)值(即抹除計(jì)數(shù)值)。在另一實(shí)施例中,當(dāng)將數(shù)據(jù)寫入某一個(gè)實(shí)體塊地址所對(duì)應(yīng)的數(shù)據(jù)塊時(shí),將記錄在 該實(shí)體塊地址對(duì)應(yīng)的數(shù)據(jù)塊的備用區(qū)中的歷史程序化次數(shù)EC加1。因此,歷史程序化次數(shù) EC也可以表示所屬數(shù)據(jù)塊曾經(jīng)被寫入數(shù)據(jù)的次數(shù)值(即寫入計(jì)數(shù)值)。完成步驟S420之后,便可獲知空白陣列區(qū)512的所有數(shù)據(jù)塊中,歷史程序化次數(shù) EC最大的數(shù)據(jù)塊是哪一個(gè)。當(dāng)數(shù)據(jù)存儲(chǔ)區(qū)511的某一個(gè)數(shù)據(jù)塊需要被寫入更新數(shù)據(jù)時(shí),會(huì) 從空白陣列區(qū)512中選擇一個(gè)數(shù)據(jù)塊來(lái)存放更新數(shù)據(jù),而不會(huì)直接對(duì)數(shù)據(jù)存儲(chǔ)區(qū)511的數(shù) 據(jù)塊進(jìn)行數(shù)據(jù)更新(包含讀取舊數(shù)據(jù)、抹除以及寫回更新后的數(shù)據(jù))。待數(shù)據(jù)存儲(chǔ)區(qū)511需 要做重新排序(resorting)的操作,或是數(shù)據(jù)存儲(chǔ)區(qū)511對(duì)應(yīng)的實(shí)體塊地址已無(wú)法再寫入 數(shù)據(jù)時(shí),則從空白陣列區(qū)512中選擇出來(lái)用以存放更新數(shù)據(jù)的數(shù)據(jù)塊會(huì)被抹除以備下次存 放更新數(shù)據(jù)。所以,空白陣列區(qū)512的數(shù)據(jù)塊會(huì)是非易失性存儲(chǔ)器510所有數(shù)據(jù)塊中,進(jìn)行 程序化(programming)最頻繁的數(shù)據(jù)塊。因此,步驟S430便可以將空白陣列區(qū)512中歷史程序化次數(shù)EC最大的數(shù)據(jù)塊所 對(duì)應(yīng)的實(shí)體塊地址與數(shù)據(jù)存儲(chǔ)區(qū)511中多個(gè)數(shù)據(jù)塊所對(duì)應(yīng)的多個(gè)實(shí)體塊地址之一者進(jìn)行 交換。也就是說(shuō),將空白陣列區(qū)512中歷史程序化次數(shù)EC最大的數(shù)據(jù)塊改配置在數(shù)據(jù)存 儲(chǔ)區(qū)511,以及將數(shù)據(jù)存儲(chǔ)區(qū)511的多個(gè)數(shù)據(jù)塊選擇其中一個(gè)數(shù)據(jù)塊改配置在空白陣列區(qū) 512。當(dāng)然,數(shù)據(jù)存儲(chǔ)區(qū)511的數(shù)據(jù)塊與空白陣列區(qū)512的數(shù)據(jù)塊進(jìn)行交換時(shí),此二個(gè)數(shù)據(jù) 塊所存放的內(nèi)容也要對(duì)應(yīng)地進(jìn)行交換。另外,在某些應(yīng)用例中,當(dāng)數(shù)據(jù)塊因要存儲(chǔ)新的數(shù)據(jù)而需抹除先前存儲(chǔ)的數(shù)據(jù)時(shí), 此數(shù)據(jù)塊的歷史程序化次數(shù)EC也將會(huì)被抹除,因此須先將此數(shù)據(jù)塊的歷史程序化次數(shù)EC 先讀出后,再進(jìn)行數(shù)據(jù)塊的抹除,之后便可將讀出的歷史程序化次數(shù)EC加1后再寫回此數(shù) 據(jù)塊。由于數(shù)據(jù)存儲(chǔ)區(qū)511中數(shù)據(jù)塊被存取的頻率較小,而空白陣列區(qū)512中數(shù)據(jù)塊被存取 的頻率較大,將兩區(qū)的數(shù)據(jù)塊進(jìn)行交換可使非易失性存儲(chǔ)器510的數(shù)據(jù)塊平均地被存取, 避免少數(shù)數(shù)據(jù)塊被集中地反復(fù)存取而減短非易失性存儲(chǔ)器510的使用壽命。舉例來(lái)說(shuō),請(qǐng)參照?qǐng)D6,在接收存取命令前,數(shù)據(jù)存儲(chǔ)區(qū)511中各數(shù)據(jù)塊的實(shí)體 塊地址為PBAO PBA3999,而空白陣列區(qū)512中各數(shù)據(jù)塊的實(shí)體塊地址為PBA4000 PBA4095。當(dāng)接收到存取命令后,便先判斷該存取命令所存取的邏輯塊地址是否被連續(xù)存取 數(shù)據(jù)達(dá)到50次。若發(fā)現(xiàn)同一邏輯塊地址確已連續(xù)被存取達(dá)50次,則進(jìn)行一次損耗平均方 法610(參照?qǐng)D4與相關(guān)說(shuō)明)。在進(jìn)行損耗平均方法610的過(guò)程中,自空白陣列區(qū)512的所有數(shù)據(jù)塊中選出歷史 程序化次數(shù)EC最大的一個(gè)數(shù)據(jù)塊。圖6所示實(shí)施例中,實(shí)體塊地址PBA4000的數(shù)據(jù)塊,其 歷史程序化次數(shù)EC最大(為100次),因此選擇將實(shí)體塊地址PBA4000的數(shù)據(jù)塊改配置在 數(shù)據(jù)存儲(chǔ)區(qū)511。另外,將數(shù)據(jù)存儲(chǔ)區(qū)511多個(gè)數(shù)據(jù)塊中選擇一個(gè)數(shù)據(jù)塊(例如實(shí)體塊地址PBAO的數(shù)據(jù)塊)改配置在空白陣列區(qū)512。圖6所示范例中,實(shí)體塊地址PBAO的數(shù)據(jù)塊, 其歷史程序化次數(shù)EC為10次。上述從數(shù)據(jù)存儲(chǔ)區(qū)511中選擇數(shù)據(jù)塊的方法,可以視系統(tǒng)設(shè)計(jì)需求而采取不同的 選擇手段。例如,可以在數(shù)據(jù)存儲(chǔ)區(qū)511中選擇具有最小歷史程序化次數(shù)EC的數(shù)據(jù)塊。然 而,要在數(shù)據(jù)存儲(chǔ)區(qū)511為數(shù)量大的數(shù)據(jù)塊中搜尋出最小歷史程序化次數(shù)EC的數(shù)據(jù)塊,其 搜尋過(guò)程可能會(huì)耗占太多時(shí)間。在一些實(shí)施例中,上述從數(shù)據(jù)存儲(chǔ)區(qū)511改配置在空白陣 列區(qū)512的數(shù)據(jù)塊,是從數(shù)據(jù)存儲(chǔ)區(qū)511的多個(gè)數(shù)據(jù)塊中隨機(jī)選出的。在另一些實(shí)施例中,上述從數(shù)據(jù)存儲(chǔ)區(qū)511改配置在空白陣列區(qū)512的數(shù)據(jù)塊,是 依據(jù)數(shù)據(jù)存儲(chǔ)區(qū)511中多個(gè)數(shù)據(jù)塊的實(shí)體塊地址的次序所選出的。例如以圖6為例,在這 次進(jìn)行損耗平均方法610的過(guò)程,從數(shù)據(jù)存儲(chǔ)區(qū)511的多個(gè)數(shù)據(jù)塊中選擇實(shí)體塊地址最小 者(例如ΡΒΑ0),而在下一次進(jìn)行損耗平均方法的過(guò)程,從數(shù)據(jù)存儲(chǔ)區(qū)511中選擇實(shí)體塊地 址次小者(例如PBA1),以此類推。完成損耗平均方法610后,對(duì)應(yīng)邏輯塊地址LDIVO的LBAO的實(shí)體塊地址會(huì)從PBAO 改為PBA4000。依此類推,當(dāng)下一次又有邏輯塊地址被連續(xù)存取超過(guò)50次時(shí)(例如邏輯塊 地址LBA3),可以照上述說(shuō)明再一次進(jìn)行損耗平均方法,而將空白陣列區(qū)512中歷史程序化 次數(shù)EC最高的數(shù)據(jù)塊(即實(shí)體塊地址PBA4001的數(shù)據(jù)塊,其為90次)與數(shù)據(jù)存儲(chǔ)區(qū)511 的一個(gè)數(shù)據(jù)塊(例如實(shí)體塊地址PBAl的數(shù)據(jù)塊)進(jìn)行交換。由上述說(shuō)明不難發(fā)現(xiàn),本實(shí)施例有效的平均分散各實(shí)體塊地址的塊的存取動(dòng)作, 達(dá)成損耗平均的需求。以下則針對(duì)本發(fā)明的用以存取非易失性存儲(chǔ)器的存儲(chǔ)器控制裝置提出一實(shí)施例 來(lái)加以說(shuō)明,期使本領(lǐng)域具通常知識(shí)者都可以輕易了解本發(fā)明并具以實(shí)施。請(qǐng)參照?qǐng)D7,圖7為本發(fā)明的一實(shí)施例的非易失性存儲(chǔ)器裝置的方塊圖。存儲(chǔ)器控 制裝置700耦接非易失性存儲(chǔ)器740,并對(duì)非易失性存儲(chǔ)器740進(jìn)行存取控制。存儲(chǔ)器控制 裝置700包括控制器710、存儲(chǔ)裝置720以及傳輸接口 730。其中,控制器710耦接至非易 失性存儲(chǔ)器740??刂破?10將非易失性存儲(chǔ)器740分割出數(shù)據(jù)存儲(chǔ)區(qū)511及空白陣列區(qū) 512。存儲(chǔ)裝置720則耦接控制器710。存儲(chǔ)裝置720用以依據(jù)非易失性存儲(chǔ)器740的 多個(gè)邏輯塊地址建立對(duì)應(yīng)查找表,其中的對(duì)應(yīng)查找表中包括多個(gè)存儲(chǔ)欄位。這些存儲(chǔ)欄位 則用來(lái)存儲(chǔ)數(shù)據(jù)存儲(chǔ)區(qū)的實(shí)體塊地址。此外,當(dāng)控制器710接收到針對(duì)目標(biāo)邏輯塊地址寫入更新數(shù)據(jù)的存取命令時(shí),控 制器710判斷目標(biāo)邏輯塊地址是否被重復(fù)多次地存取數(shù)據(jù)。當(dāng)控制器710判斷出目標(biāo)邏輯 塊地址被重復(fù)多次地存取數(shù)據(jù)時(shí),控制器710進(jìn)行一次上述損耗平均方法。當(dāng)控制器710 進(jìn)行損耗平均方法時(shí),所述損耗平均方法包括比較空白陣列區(qū)512中多個(gè)數(shù)據(jù)塊的歷史 程序化次數(shù)EC,以將空白陣列區(qū)512中歷史程序化次數(shù)EC最大的數(shù)據(jù)塊改配置在數(shù)據(jù)存儲(chǔ) 區(qū)511,以及將數(shù)據(jù)存儲(chǔ)區(qū)511中多個(gè)數(shù)據(jù)塊的一者改配置在空白陣列區(qū)512。。上述相關(guān) 在存儲(chǔ)器控制裝置700的動(dòng)作細(xì)節(jié)相信在本發(fā)明的非易失性存儲(chǔ)器存取方法的實(shí)施例的 說(shuō)明中已經(jīng)有詳細(xì)的介紹。因此,此處不再對(duì)存儲(chǔ)器控制裝置700的動(dòng)作細(xì)節(jié)進(jìn)行重復(fù)說(shuō) 明。值得注意的是,存儲(chǔ)器控制裝置700還包括有傳輸接口 730。傳輸接口 730耦接控制器710,用以接收使用者對(duì)非易失性存儲(chǔ)器740所傳送的存取命令。當(dāng)然,傳輸接口 730 也可以用來(lái)傳輸存入非易失性存儲(chǔ)器740或由非易失性存儲(chǔ)器740讀出的數(shù)據(jù)。這種傳輸 接口的功能及建構(gòu)方式,為本領(lǐng)域技術(shù)人員所熟知的技術(shù),在此不多詳述。綜上所述,本發(fā)明利用記錄每一塊的歷史程序化次數(shù),并將數(shù)據(jù)存儲(chǔ)區(qū)中數(shù)據(jù)塊 的實(shí)體塊地址與空白陣列區(qū)中被歷史程序化次數(shù)最多的數(shù)據(jù)塊的實(shí)體塊地址交換,以有效 的平均分配非易失性存儲(chǔ)器的各塊的歷史程序化次數(shù),延長(zhǎng)非易失性存儲(chǔ)器的使用壽命。 并且,不需要與非易失性存儲(chǔ)器的總?cè)萘肯嗟鹊膶?duì)應(yīng)查找表,也不需要額外的存儲(chǔ)器來(lái)建 立空白陣列區(qū)。有效的在最小的電路面積下,達(dá)成非易失性存儲(chǔ)器的損耗平均的存取動(dòng)作。最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡 管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然 可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替 換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精 神和范圍。
權(quán)利要求
1.一種非易失性存儲(chǔ)器的損耗平均方法,包括將該非易失性存儲(chǔ)器分割出一數(shù)據(jù)存儲(chǔ)區(qū)及一空白陣列區(qū);以及比較該空白陣列區(qū)中多個(gè)數(shù)據(jù)塊的歷史程序化次數(shù);以及將該空白陣列區(qū)中歷史程序化次數(shù)最大的數(shù)據(jù)塊改配置在該數(shù)據(jù)存儲(chǔ)區(qū),以及將該數(shù) 據(jù)存儲(chǔ)區(qū)中多個(gè)數(shù)據(jù)塊之一改配置在該空白陣列區(qū)。
2.根據(jù)權(quán)利要求1所述的非易失性存儲(chǔ)器的損耗平均方法,其中當(dāng)該數(shù)據(jù)存儲(chǔ)區(qū)需要 被寫入一更新數(shù)據(jù)時(shí),該空白陣列區(qū)被用來(lái)存放該更新數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的非易失性存儲(chǔ)器的損耗平均方法,其中寫入該更新數(shù)據(jù)前的 步驟包括接收一存取命令,其中該存取命令針對(duì)一目標(biāo)邏輯塊地址寫入該更新數(shù)據(jù)。
4.根據(jù)權(quán)利要求2所述的非易失性存儲(chǔ)器的損耗平均方法,所述寫入該更新數(shù)據(jù)的步 驟包括在寫入該更新數(shù)據(jù)至一實(shí)體塊地址對(duì)應(yīng)的數(shù)據(jù)塊時(shí),將記錄在該實(shí)體塊地址對(duì)應(yīng)的數(shù) 據(jù)塊的備用區(qū)中的歷史程序化次數(shù)加1。
5.根據(jù)權(quán)利要求1所述的非易失性存儲(chǔ)器的損耗平均方法,其中當(dāng)抹除一實(shí)體塊地址 對(duì)應(yīng)的數(shù)據(jù)塊時(shí),將記錄在該實(shí)體塊地址對(duì)應(yīng)的數(shù)據(jù)塊的備用區(qū)中的歷史程序化次數(shù)加1。
6.根據(jù)權(quán)利要求1所述的非易失性存儲(chǔ)器的損耗平均方法,還包括當(dāng)同一邏輯塊地址被連續(xù)存取的次數(shù)達(dá)一預(yù)設(shè)值時(shí),進(jìn)行一次所述比較該空白陣列區(qū) 中多個(gè)數(shù)據(jù)塊的歷史程序化次數(shù),以將該空白陣列區(qū)中歷史程序化次數(shù)最大的數(shù)據(jù)塊改配 置在該數(shù)據(jù)存儲(chǔ)區(qū),以及將該數(shù)據(jù)存儲(chǔ)區(qū)中多個(gè)數(shù)據(jù)塊之一改配置在該空白陣列區(qū)。
7.根據(jù)權(quán)利要求1所述的非易失性存儲(chǔ)器的損耗平均方法,還包括當(dāng)一邏輯塊地址連續(xù)進(jìn)行數(shù)據(jù)重新排序的次數(shù)達(dá)一預(yù)設(shè)值時(shí),進(jìn)行一次所述比較該空 白陣列區(qū)中多個(gè)數(shù)據(jù)塊的歷史程序化次數(shù),以將該空白陣列區(qū)中歷史程序化次數(shù)最大的數(shù) 據(jù)塊改配置在該數(shù)據(jù)存儲(chǔ)區(qū),以及將該數(shù)據(jù)存儲(chǔ)區(qū)中多個(gè)數(shù)據(jù)塊之一改配置在該空白陣列 區(qū)。
8.根據(jù)權(quán)利要求1所述的非易失性存儲(chǔ)器的損耗平均方法,其中從該數(shù)據(jù)存儲(chǔ)區(qū)改配 置在該空白陣列區(qū)的數(shù)據(jù)塊,是從該數(shù)據(jù)存儲(chǔ)區(qū)的所述多個(gè)數(shù)據(jù)塊中隨機(jī)選出的。
9.根據(jù)權(quán)利要求1所述的非易失性存儲(chǔ)器的損耗平均方法,其中從該數(shù)據(jù)存儲(chǔ)區(qū)改配 置在該空白陣列區(qū)的數(shù)據(jù)塊,是依據(jù)該數(shù)據(jù)存儲(chǔ)區(qū)中所述多個(gè)數(shù)據(jù)塊的實(shí)體塊地址的次序 所選出的。
10.根據(jù)權(quán)利要求1所述的非易失性存儲(chǔ)器的損耗平均方法,還包括依據(jù)該非易失性存儲(chǔ)器的多個(gè)邏輯塊地址建立一對(duì)應(yīng)查找表,其中該對(duì)應(yīng)查找表中包 括多個(gè)存儲(chǔ)欄位,用以存儲(chǔ)該數(shù)據(jù)存儲(chǔ)區(qū)的多個(gè)實(shí)體塊地址。
11.根據(jù)權(quán)利要求10所述的非易失性存儲(chǔ)器的損耗平均方法,其中該對(duì)應(yīng)查找表建立 在靜態(tài)存儲(chǔ)器或動(dòng)態(tài)存儲(chǔ)器。
12.根據(jù)權(quán)利要求1所述的非易失性存儲(chǔ)器的損耗平均方法,還包括動(dòng)態(tài)調(diào)整該數(shù)據(jù)存儲(chǔ)區(qū)及該空白陣列區(qū)的存儲(chǔ)容量。
13.一種存儲(chǔ)器裝置,包括一非易失性存儲(chǔ)器;以及一控制器,耦接該非易失性存儲(chǔ)器,將該非易失性存儲(chǔ)器分割出一數(shù)據(jù)存儲(chǔ)區(qū)及一空白陣列區(qū),其中當(dāng)該控制器進(jìn)行一損耗平均方法時(shí),所述損耗平均方法包括比較該空白陣 列區(qū)中多個(gè)數(shù)據(jù)塊的歷史程序化次數(shù),以將該空白陣列區(qū)中歷史程序化次數(shù)最大的數(shù)據(jù)塊 改配置在該數(shù)據(jù)存儲(chǔ)區(qū),以及將該數(shù)據(jù)存儲(chǔ)區(qū)中多個(gè)數(shù)據(jù)塊之一改配置在該空白陣列區(qū)。
14.根據(jù)權(quán)利要求13所述的存儲(chǔ)器裝置,其中當(dāng)該數(shù)據(jù)存儲(chǔ)區(qū)需要被寫入一更新數(shù)據(jù) 時(shí),該空白陣列區(qū)被用來(lái)存放該更新數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的存儲(chǔ)器裝置,其中該控制器還接收一存取命令,其中該存 取命令針對(duì)一目標(biāo)邏輯塊地址寫入該更新數(shù)據(jù)。
16.根據(jù)權(quán)利要求15所述的存儲(chǔ)器裝置,其中還包括一傳輸接口,耦接該控制器,用以接收該存取命令。
17.根據(jù)權(quán)利要求14所述的存儲(chǔ)器裝置,其中該控制器還在寫入該更新數(shù)據(jù)至一實(shí)體 塊地址對(duì)應(yīng)的數(shù)據(jù)塊時(shí),將記錄在該實(shí)體塊地址對(duì)應(yīng)的數(shù)據(jù)塊的備用區(qū)中的歷史程序化次 數(shù)加1。
18.根據(jù)權(quán)利要求13所述的存儲(chǔ)器裝置,其中當(dāng)一實(shí)體塊地址對(duì)應(yīng)的數(shù)據(jù)塊被抹除 時(shí),該控制器將記錄在該實(shí)體塊地址對(duì)應(yīng)的數(shù)據(jù)塊的備用區(qū)中的歷史程序化次數(shù)加1。
19.根據(jù)權(quán)利要求13所述的存儲(chǔ)器裝置,其中當(dāng)同一邏輯塊地址被連續(xù)存取的次數(shù)達(dá) 一預(yù)設(shè)值時(shí),該控制器進(jìn)行一次所述損耗平均方法。
20.根據(jù)權(quán)利要求13所述的存儲(chǔ)器裝置,其中當(dāng)一邏輯塊地址連續(xù)進(jìn)行數(shù)據(jù)重新排序 的次數(shù)達(dá)一預(yù)設(shè)值時(shí),該控制器進(jìn)行一次所述損耗平均方法。
21.根據(jù)權(quán)利要求13所述的存儲(chǔ)器裝置,其中該控制器在進(jìn)行所述損耗平均方法時(shí), 是從該數(shù)據(jù)存儲(chǔ)區(qū)的所述多個(gè)數(shù)據(jù)塊中隨機(jī)選出一數(shù)據(jù)塊以改配置在該空白陣列區(qū)。
22.根據(jù)權(quán)利要求13所述的存儲(chǔ)器裝置,其中該控制器在進(jìn)行所述損耗平均方法時(shí), 是依據(jù)實(shí)體塊地址的次序而在該數(shù)據(jù)存儲(chǔ)區(qū)中所述多個(gè)數(shù)據(jù)塊中選出一數(shù)據(jù)塊以改配置 在該空白陣列區(qū)。
23.根據(jù)權(quán)利要求13所述的存儲(chǔ)器裝置,還包括一存儲(chǔ)裝置,耦接該控制器,用以依據(jù)該非易失性存儲(chǔ)器的多個(gè)邏輯塊地址建立一對(duì) 應(yīng)查找表,其中該對(duì)應(yīng)查找表中包括多個(gè)存儲(chǔ)欄位,用以存儲(chǔ)該數(shù)據(jù)存儲(chǔ)區(qū)的多個(gè)實(shí)體塊 地址。
24.根據(jù)權(quán)利要求23所述的存儲(chǔ)器控制裝置,其中該存儲(chǔ)裝置為靜態(tài)存儲(chǔ)器或動(dòng)態(tài)存 儲(chǔ)器。
25.根據(jù)權(quán)利要求13所述的存儲(chǔ)器裝置,其中該控制器還動(dòng)態(tài)調(diào)整該數(shù)據(jù)存儲(chǔ)區(qū)及該 空白陣列區(qū)的存儲(chǔ)容量。
全文摘要
本發(fā)明提供一種非易失性存儲(chǔ)器裝置及其損耗平均方法。其中損耗平均方法包括首先,依據(jù)非易失性存儲(chǔ)器的多個(gè)實(shí)體塊地址分割出一數(shù)據(jù)存儲(chǔ)區(qū)及一空白陣列區(qū)。接著,比較空白陣列區(qū)中多個(gè)數(shù)據(jù)塊的歷史程序化次數(shù)。最后,將空白陣列區(qū)中歷史程序化次數(shù)最大的數(shù)據(jù)塊對(duì)應(yīng)的實(shí)體塊地址與數(shù)據(jù)存儲(chǔ)區(qū)中多個(gè)數(shù)據(jù)塊所對(duì)應(yīng)的多個(gè)實(shí)體塊地址之一進(jìn)行交換。
文檔編號(hào)G06F12/02GK102096637SQ200910254040
公開日2011年6月15日 申請(qǐng)日期2009年12月15日 優(yōu)先權(quán)日2009年12月15日
發(fā)明者周曉薇, 歐富國(guó) 申請(qǐng)人:點(diǎn)序科技股份有限公司