專利名稱:存儲器系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
概括地說,這里描述的實施例涉及包括非易失性半導(dǎo)體存儲器的存儲器系統(tǒng)。
背景技術(shù):
作為在計算機中使用的外部存儲設(shè)備,使用非易失性半導(dǎo)體存儲器的固態(tài)驅(qū)動器 (SSD)、例如NAND閃存,這樣的存儲介質(zhì)受到關(guān)注。由于SSD不包括機械操作,所以在抗阻、 隨機讀取操作、和功耗方面,SSD優(yōu)于傳統(tǒng)使用的磁盤設(shè)備。同時,NAND閃存的寫入速度慢于磁盤設(shè)備的寫入速度。因此,連接SSD中的NAND 閃存的多個芯片以能夠并行訪問,并且NAND閃存自身被配置為能夠在芯片的多個區(qū)域中同時進行寫入操作,從而提高傳輸性能。為了提高SSD的實際數(shù)據(jù)傳輸速率,需要完全使用如上配置的硬件的并行性。為此,配備臨時性聚集從主機接收的寫入數(shù)據(jù)的緩沖存儲器,在緩沖存儲器中聚集足夠量的數(shù)據(jù)之后將數(shù)據(jù)分割,并且將數(shù)據(jù)并行地寫入NAND閃存的多個芯片中。將NAND閃存的存儲區(qū)域分割成單元,稱為塊,并且在塊單元中執(zhí)行對于NAND閃存的數(shù)據(jù)擦除操作。即,通過在塊中共同擦除數(shù)據(jù)并且以預(yù)定順序在相應(yīng)塊中寫入新數(shù)據(jù)來執(zhí)行對于NAND閃存的數(shù)據(jù)寫入操作。同時,NAND閃存具有限制最大擦除計數(shù)的特征。例如,如果任意塊的擦除計數(shù)等于或大于預(yù)定值,則塊被用盡,并且數(shù)據(jù)存儲失敗的可能性增加。如果由于用盡而不能夠存儲數(shù)據(jù)的塊的數(shù)目增加,則SSD的整個數(shù)據(jù)存儲空間減少,并且當(dāng)不能夠提供預(yù)定的聲明空間時SSD出現(xiàn)故障。為了增加SSD整體的壽命,需要均衡地使用所有塊并且平衡每個塊的擦除計數(shù)的機制。如上所述,為了實際使用SSD,需要在訪問時,特別在寫入操作時利用并行性,以保持傳輸性能和平衡塊之間的擦除計數(shù)。對于在寫入數(shù)據(jù)時保證并行性和平衡塊之間的擦除計數(shù)來說,選擇寫入數(shù)據(jù)的塊的塊分配方法是重要的。例如,在硬盤中,如果對于SSD應(yīng)用向每個地址固定地分配物理存儲區(qū)域的方法, 則將塊固定地分配給SSD中的每個地址。然而,在這種情況下,引起以下兩個問題。當(dāng)反復(fù)地覆寫在與特定地址相應(yīng)的塊中寫入的數(shù)據(jù)時,引起第一個問題。因為在與地址相應(yīng)的塊中重復(fù)共同的數(shù)據(jù)擦除和寫入,僅相應(yīng)塊的擦除計數(shù)增加,并且相應(yīng)塊的壽命短于其他塊的壽命。當(dāng)接收到針對向并行寫入均被禁用的一個或多個塊分配的地址的多個寫入數(shù)據(jù)時,引起第二個問題。在這種情況下,在各個塊中順序?qū)懭霐?shù)據(jù),并且傳輸性能降低。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一方面,提供一種存儲器系統(tǒng),包括非易失性存儲器,其包括多個存儲區(qū)域,每個存儲區(qū)域包括多個塊,每個塊是數(shù)據(jù)擦除的單位,所述非易失性存儲器被配置為能夠?qū)τ诓煌鎯^(qū)域中包括的塊進行并行寫入;管理單元,其保持對于每個存儲區(qū)域的空閑塊列表,所述空閑塊列表指示作為沒有存儲有效數(shù)據(jù)的塊的空閑塊;排序規(guī)則保持單元,其保持排序規(guī)則,所述排序規(guī)則是用于確定所述空閑塊列表的排序的信息;位置信息存儲單元,其存儲位置信息,所述位置信息指示在所述排序規(guī)則中空閑塊列表的位置;列表選擇單元,其選擇與所述位置信息指示的位置相應(yīng)的空閑塊列表;塊選擇單元,其從所述列表選擇單元選擇的空閑塊列表選擇空閑塊;寫入單元,其在所述塊選擇單元選擇的空閑塊中寫入數(shù)據(jù);以及更新單元,其在所述列表選擇單元選擇空閑塊列表之后,用指示隨后選擇的空閑塊列表的位置的位置信息來更新在所述位置信息存儲單元中存儲的位置信息。根據(jù)本發(fā)明的另一方面,提供一種存儲器系統(tǒng),包括非易失性存儲器,其包括多個存儲區(qū)域,每個存儲區(qū)域包括多個塊,每個塊是數(shù)據(jù)擦除的單位,所述非易失性存儲器被配置為能夠?qū)τ诓煌鎯^(qū)域中包括的塊進行并行寫入;管理單元,其保持對于每個存儲區(qū)域的空閑塊列表,所述空閑塊列表指示作為沒有存儲有效數(shù)據(jù)的塊的空閑塊;排序規(guī)則保持單元,其保持排序規(guī)則,所述排序規(guī)則是用于確定所述空閑塊列表的排序的信息;位置信息存儲單元,其存儲位置信息,所述位置信息指示在所述排序規(guī)則中空閑塊列表的位置; 列表選擇單元,其選擇與所述位置信息指示的位置相應(yīng)的空閑塊列表;塊選擇單元,其從所述列表選擇單元選擇的空閑塊列表選擇空閑塊;寫入單元,其在所述塊選擇單元選擇的空閑塊中寫入數(shù)據(jù);以及更新單元,其在所述列表選擇單元選擇空閑塊列表之后,用指示隨后選擇的空閑塊列表的位置的位置信息來更新在所述位置信息存儲單元中存儲的位置信息, 其中所述位置信息存儲單元存儲位置信息,其指示基于使用多個不同排序規(guī)則生成的長期排序規(guī)則所確定的每個空閑塊列表的排序。通過本發(fā)明的存儲器系統(tǒng),能夠在訪問時,特別在寫入操作時利用并行性,以保持傳輸性能和平衡塊之間的擦除計數(shù)。
圖1示出可應(yīng)用根據(jù)每個實施例的存儲器系統(tǒng)的計算機的實例的示意圖;圖2示出可應(yīng)用于每個實施例的SSD的配置的實例的框圖;圖3A和;3B是具體地示出芯片的實例的配置的視圖;圖4A和4B是示出地址和塊之間的關(guān)聯(lián)的示意圖;圖5是示出根據(jù)每個實施例的數(shù)據(jù)寫入處理的實例的流程圖;圖6是示出排序規(guī)則的示意圖;圖7是示出存儲體-芯片-面配置的示意圖;圖8是示出能夠進行并行寫入的空閑塊的選擇處理的實例的流程圖;圖9是示出始終共同使用多個物理塊的實例的示意圖;圖IOA和IOB是示出以預(yù)定周期執(zhí)行地址的寫入的實例的示意圖;圖11是示出根據(jù)第二實施例的排序規(guī)則生成方法的示意性流程圖;圖12A至12C是示出排列小周期并生成新排列規(guī)則的實例的示意圖13A和1 是示出根據(jù)第二實施例以預(yù)定周期的地址的寫入的實例的示意圖;圖14是示出當(dāng)面的數(shù)目較大時根據(jù)第二實施例的排序規(guī)則的實例的示意圖;圖15是示出存儲體-芯片-面配置的排序規(guī)則的實例的示意圖;圖16A至16C是示出使用二進制隨機數(shù)序列計算排序規(guī)則的實例的示意圖;圖17是示出第三實施例的第一方法的跳過排序規(guī)則的處理的實例的流程圖;圖18是示出跳過第三實施例的第一方法的排序規(guī)則的實例的示意圖;圖19是示出第三實施例的第二方法的跳過排序規(guī)則的處理的實例的流程圖;圖20A和20B是示出跳過第三實施例的第二方法的排序規(guī)則的實例的示意圖;圖21A和21B是示出跳過第三實施例的第二方法的排序規(guī)則的另一實例的示意圖;以及圖22是示出根據(jù)第三實施例的修改的排序規(guī)則的實例的示意圖。
具體實施例方式一般地,根據(jù)一個實施例,一種存儲器系統(tǒng),包括非易失性存儲器、管理單元、排序規(guī)則保持單元、位置信息存儲單元、列表選擇單元、塊選擇單元、寫入單元、和更新單元。 所述非易失性存儲器包括多個存儲區(qū)域,每個存儲區(qū)域包括多個塊,每個塊是數(shù)據(jù)擦除的單位。所述非易失性存儲器被配置為能夠?qū)τ诓煌鎯^(qū)域中包括的塊進行并行寫入。所述管理單元保持對于每個存儲區(qū)域的空閑塊列表,所述空閑塊列表指示作為沒有存儲有效數(shù)據(jù)的塊的空閑塊。所述排序規(guī)則保持單元保持排序規(guī)則,所述排序規(guī)則是用于確定所述空閑塊列表的排序的信息。所述位置信息存儲單元存儲位置信息,所述位置信息指示在所述排序規(guī)則中空閑塊列表的位置。所述列表選擇單元選擇與所述位置信息指示的位置相應(yīng)的空閑塊列表。所述塊選擇單元從所述列表選擇單元選擇的空閑塊列表選擇空閑塊。所述寫入單元在所述塊選擇單元選擇的空閑塊中寫入數(shù)據(jù)。所述更新單元在所述列表選擇單元選擇空閑塊列表之后,用指示隨后選擇的空閑塊列表的位置的位置信息來更新在所述位置信息存儲單元中存儲的位置信息。〈每個實施例共同的配置〉以下,將參照附圖詳細描述存儲器系統(tǒng)的實施例。然而,本發(fā)明不限于所述實施例。圖1示出可應(yīng)用根據(jù)每個實施例的存儲器系統(tǒng)的計算機200的實例的外觀。圖1中示例出的計算機200是所謂的便攜式計算機,其被配置為便攜式的小尺寸和輕重量。計算機 200包括主體201和顯示單元202。顯示單元202包括顯示外殼203和存儲在顯示外殼203 中的顯示設(shè)備204。主體201包括機殼205、鍵盤206、和觸摸板207,其對應(yīng)于定點設(shè)備。在機殼205 中,存儲主電路板、光盤驅(qū)動器(ODD)單元、卡槽、和固態(tài)驅(qū)動器(SSD) 100。主電路板安裝有計算機200的主要組件,例如中央處理單元(CPU)、只讀存儲器(ROM)、和隨機存取存儲器 (RAM)。OOD單元執(zhí)行光盤(例如壓縮盤(⑶)或數(shù)字通用盤(DVD))上的數(shù)據(jù)讀取/寫入操作??ú郾辉O(shè)置為與機殼205的外圍壁臨近。在外圍壁上,設(shè)置有面向卡槽的開口 208。用戶可通過開口 208將增加的設(shè)備從機殼205插入至卡槽中。SSD 100是使用可寫非易失性半導(dǎo)體存儲器的存儲設(shè)備。SSD 100可以在計算機200中安裝SDD以存儲操作系統(tǒng)(OS)或各種程序的狀態(tài)下使用,而并非安裝在傳統(tǒng)硬盤驅(qū)動器(HDD)。然而,不限于此,SSD 100可在SSD插入至計算機200中包括的卡槽中的狀態(tài)下用作增加的設(shè)備。圖2示出可應(yīng)用于每個實施例的SSD 100的實例的配置。圖示地,SSD100具有控制單元130、接口單元120、緩沖存儲器121、和非易失性存儲器單元122。控制單元130、接口單元120、緩沖存儲器121、和非易失性存儲器單元122被配置為連接至信號線,例如總線 110,并且彼此交換數(shù)據(jù)。接口單元120與主機裝置通信。在上述圖1和2的實例中,連接計算機200作為主機裝置。以下,將計算機200描述為主機裝置。接口單元120從主機裝置200接收讀取、 寫入或閃存命令,并向控制單元130通知命令的接收。接口單元120根據(jù)來自控制單元130 的指令與主機裝置200交換數(shù)據(jù)。緩沖存儲器121包括易失性存儲器,例如動態(tài)RAM(DRAM)。緩沖存儲器121臨時存儲在接口單元120和主機裝置200之間交換的數(shù)據(jù)或從非易失性存儲器單元122中讀取或在其中寫入的數(shù)據(jù)。然而,不限于此,SSD 100中的各種管理信息可以存儲在緩沖存儲器 121 中。非易失性存儲器單元122是其中數(shù)據(jù)為可重寫并且存儲的內(nèi)容沒有擦除(即使停止供電)的存儲器。例如,在非易失性存儲器單元122中存儲從主機裝置200發(fā)送的用戶數(shù)據(jù)。然而,不限于此,除了用戶數(shù)據(jù)之外,非易失性存儲器單元122可在SSD 100中存儲各種管理信息。非易失性存儲器單元122具有作為非易失性存儲器存儲介質(zhì)的NAND閃存以及控制NAND閃存的NAND控制器(附圖中未示出)的芯片123。每個芯片123可具有多個面 (plane),他們是能夠獨立訪問控制的存儲區(qū)域。圖3A和具體地示出非易失性存儲器單元122的芯片123的實例的配置。在這個實例中,芯片123具有面#0和面#1的兩個面,并且每個面具有多個塊#0、#1.....和如,他們具有預(yù)定存儲容量。在芯片123中用作物理存儲區(qū)的物理塊的塊是芯片123的數(shù)據(jù)擦除單位??蓪⒍鄠€物理塊作為一個邏輯塊來收集和處理。在這種情況下,邏輯塊變?yōu)閿?shù)據(jù)擦除單位。以下, 將物理塊和邏輯塊簡單地稱為塊,而不將物理塊和邏輯塊彼此區(qū)分。當(dāng)在芯片123的任意塊中寫入數(shù)據(jù)時,從塊單位的相應(yīng)塊擦除數(shù)據(jù),并且在相應(yīng)塊中寫入新數(shù)據(jù)。由此,實質(zhì)上在塊單位中執(zhí)行對于芯片123的數(shù)據(jù)寫入操作。 在NAND閃存的芯片123中,所述面被配置,使得能夠并行地在芯片中進行訪問。例如,如圖3A所示,在給出標(biāo)號#0的芯片123中,能夠?qū)τ趯儆诿?0的塊#0以及屬于面#1 的塊#2進行并行訪問。同時,如圖:3B所示,在相同標(biāo)號#0的芯片123中,禁止對于塊#0 以及屬于面#0的塊#2進行并行訪問。在NAND閃存中,作為總存儲容量,配備比向主機裝置200提供的存儲容量更大的存儲容量。因此,在任意時間點,存在存儲有效數(shù)據(jù)的塊以及沒有存儲有效數(shù)據(jù)的塊。沒有存儲有效數(shù)據(jù)的塊稱為空閑塊。存儲有效數(shù)據(jù)的塊稱為活動塊。再參照圖2,控制單元130具有塊管理單元131、數(shù)據(jù)讀取單元132、數(shù)據(jù)寫入單元 133、數(shù)據(jù)管理單元134、和NAND驅(qū)動器135的各個功能??刂茊卧?30通過接口單元120 控制與主機裝置200的通信,或者控制在緩沖存儲器121和非易失性存儲器單元122中存儲的數(shù)據(jù)的管理或讀取/寫入??刂茊卧?30的各個功能可被配置為作為電路嵌入的SoC (片上系統(tǒng))。然而,不限于此,通用處理器可用作控制單元130的硬件,并且這些功能可實現(xiàn)為在通用處理器上操作的軟件。在控制單元130中,數(shù)據(jù)管理單元134管理在表示數(shù)據(jù)的存儲位置的地址(用于主機裝置200和數(shù)據(jù)管理單元之間)和作為非易失性存儲器單元122中的實際存儲區(qū)域的塊位置之間的相應(yīng)關(guān)系。所述地址是用于主機裝置200和SSD 100之間的地址。當(dāng)寫入數(shù)據(jù)時,動態(tài)關(guān)聯(lián)所述地址和所述塊。將使用圖4A和4B來描述在數(shù)據(jù)管理單元134中地址和塊之間的關(guān)聯(lián)。例如,如圖4A所示,假設(shè)由主機裝置200指定的數(shù)據(jù)的地址為地址AO、Al、...,并且在非易失性存儲器單元122中某個面的塊地址為塊B0、Bi、...。此外,假設(shè)由一個地址指定的數(shù)據(jù)的大小等于一個塊的存儲容量。這里,考慮如下情況在與地址Al相應(yīng)的塊中存儲有效數(shù)據(jù),并且實際用作非易失性存儲器單元122中的地址Al的存儲區(qū)域為塊Bi。在這種情況下,塊Bl為活動塊,例如與塊Bl臨近的塊B2為空閑塊。在圖4A的狀態(tài)下,假設(shè)從主機裝置200接收用于指示覆寫地址Al的數(shù)據(jù)的命令。 當(dāng)相同地址的數(shù)據(jù)被覆寫時,在塊單位中執(zhí)行數(shù)據(jù)覆寫處理。數(shù)據(jù)管理單元134分配一個空閑塊(例如塊B2),并且在分配的空閑塊中寫入從主機裝置200接收的數(shù)據(jù)。在對于空閑塊寫入數(shù)據(jù)之后,數(shù)據(jù)管理單元134將主機裝置200指定的地址Al與實際寫入數(shù)據(jù)的塊 B2關(guān)聯(lián)。結(jié)果,如圖4B所示,塊B2變?yōu)榛顒訅K。在覆寫之前存儲地址A的數(shù)據(jù)的塊Bl中, 由于存儲的數(shù)據(jù)變?yōu)闊o效,則塊Bl變?yōu)榭臻e塊。如上所述,在SSD中,即使數(shù)據(jù)為指定為相同地址Al的數(shù)據(jù),但是在每當(dāng)寫入數(shù)據(jù)時,用作實際存儲區(qū)域的塊改變。再參照圖2,數(shù)據(jù)讀取單元132控制數(shù)據(jù)從非易失性存儲器單元122的讀取。數(shù)據(jù)寫入單元133控制數(shù)據(jù)對于非易失性存儲器單元122的寫入。NAND驅(qū)動器135控制非易失性存儲器單元122的NAND控制器(圖中未示出),以根據(jù)數(shù)據(jù)讀取單元132或數(shù)據(jù)寫入單元133的請求從非易失性存儲器單元122讀取數(shù)據(jù)或在其中寫入數(shù)據(jù)。塊管理單元131具有空閑塊管理單元140和空閑塊選擇單元150,并且管理非易失性存儲器單元122中的空閑塊和選擇在寫入數(shù)據(jù)時使用的空閑塊??臻e塊管理單元140保持和管理空閑塊列表,這是指示與沒有存儲有效數(shù)據(jù)的塊相應(yīng)的空閑塊的信息。例如,空閑
塊管理單元140保持對于各個面的空閑塊列表HlpHl1.....141m、和141n,他們是用于管
理非易失性存儲器單元122的空閑塊的結(jié)構(gòu)?;谂c相應(yīng)空閑塊所屬的面相應(yīng)的空閑塊列表141m,由空閑塊管理單元140來管理非易失性存儲器單元122的空閑塊。假設(shè)空閑塊列表141m指示由空閑塊管理單元140管理的空閑塊列表Hltl至141n 之間的任意空閑塊列表??臻e塊列表^、可采取如下形式包括與作為節(jié)點的每個空閑塊相應(yīng)的塊標(biāo)識符的塊信息聯(lián)接于每個空閑塊列表。對于聯(lián)接空閑塊與空閑塊列表的順序,可使用簡單的 FIFO (先入先出),或者可按照根據(jù)空閑塊的擦除計數(shù)對空閑塊分類的順序來聯(lián)接空閑塊。 對于禁止并行寫入的多個面,可將空閑塊收集在一個空閑塊列表中,并且可管理空閑塊。
當(dāng)在非易失性存儲器單元122中寫入數(shù)據(jù)時,空閑塊選擇單元150根據(jù)排序規(guī)則選擇非易失性存儲器單元122的空閑塊??臻e塊選擇單元150具有排序規(guī)則操作單元151、 位置信息更新單元152、排序規(guī)則保持單元153、和位置信息存儲單元154。排序規(guī)則保持單元153保持排序規(guī)則。排序規(guī)則是用于確定空閑塊列表的排序的信息,并且由表格式或操作格式來定義。或者,排序規(guī)則可由除了表格式和操作格式之外的格式來定義。排序規(guī)則保持單元153可由存儲設(shè)備的一部分或存儲區(qū)域(圖中未示出)來配置。排序規(guī)則操作單元151基于排序規(guī)則操作排序序列。排序序列是指示基于排序規(guī)則生成的空閑塊列表的排序的信息。例如,排序序列是按順序排列空閑塊列表的標(biāo)識符的信息。基于以下所述的排序序列和位置信息來選擇空閑塊列表。位置信息存儲單元154存儲位置信息。位置信息是指示當(dāng)根據(jù)排序規(guī)則生成空閑塊列表的排序序列時在排序序列上的位置的信息。即,位置信息是指示基于排序規(guī)則確定的空閑塊列表的排序的信息。位置信息更新單元152更新在位置信息存儲單元154中存儲的位置信息。例如,在排序規(guī)則操作單元151選擇空閑塊列表之后,位置信息更新單元152 用指示隨后選擇的空閑塊列表的位置信息來更新位置信息。接下來,將使用圖5的流程圖示意性描述根據(jù)每個實施例的數(shù)據(jù)寫入處理。在每個實施例中,當(dāng)寫入數(shù)據(jù)時,在緩沖存儲器121中臨時存儲從主機裝置200接收的寫入數(shù)據(jù)。在緩沖存儲器121中存儲了足夠量的數(shù)據(jù)之后,從緩沖存儲器121讀取所述寫入數(shù)據(jù), 并將其并行地寫入多個空閑塊中。在圖5中,如果接口單元120等待來自主機裝置200的寫入命令并且接收到寫入命令(步驟S10),則接口單元120向控制單元130通知寫入命令的接收(步驟Sll)。寫入命令包括指示寫入數(shù)據(jù)的寫入地址的信息。在接收到寫入命令的接收的通知之后,在下一步驟S12,控制單元130的數(shù)據(jù)寫入單元133在緩沖存儲器121上分配一區(qū)域以接收從主機裝置200發(fā)送的寫入數(shù)據(jù)。數(shù)據(jù)寫入單元133指示接口單元120在緩沖存儲器121上分配的區(qū)域中接收從主機裝置200發(fā)送的寫入數(shù)據(jù)。在下一步驟S13,接口單元120接收從主機裝置200發(fā)送的寫入數(shù)據(jù),以及在步驟S12中的緩沖存儲器121上分配的區(qū)域中存儲接收的寫入數(shù)據(jù)。在下一步驟S14,數(shù)據(jù)寫入單元133確認在緩沖存儲器121中存儲的寫入數(shù)據(jù)的量,并確定是否在緩沖存儲器121中存儲了預(yù)定量的寫入數(shù)據(jù)。當(dāng)確定了在緩沖存儲器121 中存儲的寫入數(shù)據(jù)的量小于預(yù)定量時,處理返回至步驟S10,并且數(shù)據(jù)寫入單元133等待來自主機裝置200的命令。同時,當(dāng)在步驟S14確定在緩沖存儲器121中存儲了預(yù)定量的寫入數(shù)據(jù)時,處理進行至步驟S15。在步驟S15,數(shù)據(jù)寫入單元133計算需要寫入在緩沖存儲器121中存儲的寫入數(shù)據(jù)的空閑塊的數(shù)目。在下一步驟S16,數(shù)據(jù)寫入單元133請求空閑塊管理單元140提供在步驟S15中計算的所需數(shù)目的空閑塊。當(dāng)數(shù)據(jù)寫入單元133請求空閑塊管理單元140提供空閑塊時,處理進行至步驟S17,這是每個實施例的特征。在步驟S17,空閑塊管理單元140接收來自數(shù)
據(jù)寫入單元133的請求,并從空閑塊列表HlpHl1.....141m、和141n提取能夠并行寫入的
所需數(shù)目的空閑塊的組??臻e塊管理單元140向數(shù)據(jù)寫入單元133返回用于指示提取的空閑塊的信息。
在下一步驟S18,數(shù)據(jù)寫入單元133請求NAND驅(qū)動器135并行地在從空閑塊管理單元140獲得的信息所指示的空閑塊中寫入在緩沖存儲器121上的寫入數(shù)據(jù)。在下一步驟 S19,NAND驅(qū)動器135控制非易失性存儲器單元122的NAND控制器(圖中未示出),并執(zhí)行從數(shù)據(jù)寫入單元133請求的寫入數(shù)據(jù)的并行寫入。如果在步驟S19,在空閑塊中寫入了所述寫入數(shù)據(jù),則在下一步驟S20,數(shù)據(jù)寫入單元133在數(shù)據(jù)管理單元134中登記寫入數(shù)據(jù)的地址和塊之間的相應(yīng)關(guān)系。在下一步驟 S21,數(shù)據(jù)管理單元134向空閑塊管理單元140通知在登記之前(即在步驟S19中寫入之前)作為空閑塊的與指示寫入數(shù)據(jù)的寫入的地址關(guān)聯(lián)的活動塊。在下一步驟S22,空閑塊管理單元140識別與在步驟S21從數(shù)據(jù)管理單元134通知的空閑塊所屬的面相應(yīng)的空閑塊列表141m,并且將從數(shù)據(jù)管理單元134通知的空閑塊與識別的空閑塊列表141m聯(lián)接。<第一實施例>接下來,將描述第一實施例。以下,將詳細描述作為第一實施例的特征的空閑塊選擇處理(圖5的步驟S17)。當(dāng)空閑塊管理單元140選擇能夠并行寫入的空閑塊的組時,空閑塊管理單元140
根據(jù)預(yù)定排序規(guī)則從空閑塊管理單元140管理的空閑塊列表HlpHl1.....141m.....和
141 選擇空閑塊列表141m,并從選擇的空閑塊列表141m獲取空閑塊。優(yōu)選地,排序規(guī)則是這樣的規(guī)則如果從空閑塊列表HlpHl1.....141m.....和
141 選擇空閑塊列表141m,則可按基于排序規(guī)則操作的排序順序所示的排序獲得能夠并行寫入的空閑塊的組的規(guī)則。例如,如圖6所示,考慮如下情況非易失性存儲器單元122的芯片的數(shù)目為4,并且在每個芯片#0至#3中的面的數(shù)目為2。在這種情況下,存在總共8個面PO至P7,并且在8個面中能夠并行寫入。如果從每個面選擇一個空閑塊,則能夠?qū)崿F(xiàn)8個并行寫入的最大值。在圖6中,每個矩形示出一個塊,并且在每個矩形中的數(shù)字指示與塊動態(tài)關(guān)聯(lián)的地址。在圖6中,箭頭示出對于塊的數(shù)據(jù)的寫入方向或空閑塊獲取方向。這適用于以下所述的附圖,只要沒有給出特定論述。例如,標(biāo)識符“0”至“7”關(guān)聯(lián)于與面PO至P7相應(yīng)的空閑塊列表141m、141m+1.....
和141m+7,按預(yù)定排序來排列標(biāo)識符,并且如表達式1所示生成由標(biāo)識符的序列表示的并且具有長度8的排序規(guī)則。先前生成排序規(guī)則,并且保持在排序規(guī)則表153中。{0,1,2,3,4,5,6,7}(1)如果表達式1中所示的排序規(guī)則被循環(huán)重復(fù),則可選擇能夠8個并行寫入的最大值的空閑塊,即使空閑塊開始從任意位置選擇。例如,當(dāng)開始從排序規(guī)則上的標(biāo)識符“4”指示的位置選擇空閑塊時,由表達式2所示,空閑塊列表可開始從標(biāo)識符“4”的位置選擇,選擇位置可從標(biāo)識符“7”的位置循環(huán)返回至標(biāo)識符“0”的位置,并且可依次選擇空閑塊列表, 直到標(biāo)識符“3”的位置。{4,5,6,7,0,1,2,3}(2)接下來,考慮在能夠并行寫入的面的組上施加限制的情況。在這種情況下,可生成排序規(guī)則,使得在該排序規(guī)則下不能夠并行寫入的面之間的排序序列上的距離盡可能遠。
10
例如,如圖7所示,考慮非易失性存儲器單元122的芯片的數(shù)目為4,每個芯片123 中的面的數(shù)目為2,以及將芯片123分成兩組,每組兩個,以配置兩個存儲體SOO1 (存儲體 B0)和3002(存儲體Bi)。以下,這個配置稱為存儲體-芯片-面配置。在存儲體-芯片-面配置中,因為不能夠并行寫入,所以在屬于相同存儲體的芯片上施加限制。由此,在這種情況下,最大并行性(即能夠并行寫入的塊的最大數(shù)目)變?yōu)?。在圖7中,在每個存儲體中,將芯片123區(qū)分為芯片CO和Cl,并且將每個芯片123 中的面區(qū)分為面PO和P1。在圖7中,將每個面表示為“B (存儲體號)C (存儲體中的芯片號)P (芯片中的面號)”。例如,屬于存儲體BO的芯片CO中的面PO表示為“B0C0P0”??紤]生成由以下表達式3所示的排序規(guī)則。在表達式3所示的排序規(guī)則中,通過在每個存儲體中選擇一個芯片來實現(xiàn)4個并行寫入的最大值。{B0C0P0, B0C0P1, B1C0P0, B1C0P1, B0C1P0, B0C1P1, B1C1P0, B1C1P1} (3)在表達式3所示的排序規(guī)則中,當(dāng)空閑塊開始從面PO獲取時,可獲取空閑塊以能夠4個并行寫入的最大值。例如,當(dāng)空閑塊開始從面B1C0P0獲取時,可按面B1C0P0、面 B1C0P1、面B0C1P0、和面BOClPl的順序獲取空閑塊。同時,當(dāng)空閑塊開始從面Pl獲取時,可獲取僅能夠3個并行寫入的空閑塊。例如, 當(dāng)空閑塊開始從面B0C0P1獲取時,在按照B0C0P1、面B1C0P0、和面BlCOPl的順序獲取的空閑塊中能夠并行寫入。由于下一面B0C1P0是與空閑塊從中開始選擇的面B0C0P1相同的存儲體中的不同芯片的面,所以在屬于面B0C1P0的空閑塊與從面B0C0P1獲取的空閑塊中不能夠并行寫入。作為在能夠并行寫入的面的組上施加限制的情況,排序規(guī)則并非可一直獲取具有最大并行性的空閑塊的排序規(guī)則。接下來,將詳細描述根據(jù)第一實施例的空閑塊獲取處理。圖8是示出通過塊管理單元131對于能夠并行寫入的空閑塊的選擇處理的第一實施例。根據(jù)圖8的流程圖的處理相應(yīng)于以上所述的圖5的流程圖中的步驟S17的處理。在以下說明書中,假設(shè)在圖5的步驟S16中從數(shù)據(jù)寫入單元133需要所需數(shù)目r個空閑塊。此外,假設(shè)將排序規(guī)則先前確定為預(yù)定排序規(guī)則。首先,塊管理單元131從位置信息存儲單元巧4獲取位置信息Pos (步驟S30),并且計算在空閑塊開始從獲取的位置信息Pos指示的位置的空閑塊列表141m選擇時的最大并行性q (步驟S31)。最大并行性q取決于在能夠進行上述并行寫入的面的組上的限制以及空閑塊選擇處理的開始位置。即,最大并行性q取決于在非易失性存儲器單元122中芯片123的配置或基于存儲體的芯片123的操作。關(guān)于操作的限制的信息可先前存儲在塊管理單元131或非易失性存儲器單元122 的ROM(只讀存儲器)(圖中未示出)中。然而,不限于此,當(dāng)可根據(jù)主機裝置200的一端動態(tài)設(shè)置限制或操作時,可通過接口單元120從主機裝置200提供限制或操作。塊管理單元 131基于位置信息Pos和指示限制或操作的信息計算最大并行性q。在下一步驟S32,將塊獲取數(shù)目rb和列表選擇計數(shù)i分別初始化為0,并且處理進行至步驟S33。在步驟S33,塊管理單元131將位置信息Pos傳送至排序規(guī)則操作單元151。排序規(guī)則操作單元151根據(jù)位置信息Pos和排序規(guī)則表153中保持的預(yù)定排序規(guī)則從空閑塊管
理單元140管理的空閑塊列表HlpHl1.....141m.....和141n選擇與列表選擇計數(shù)i相
應(yīng)的一個空閑塊列表141m。以下,將與列表選擇計數(shù)i相應(yīng)的空閑塊列表141m描述為空閑塊列表L(i),只要沒有給出特定論述。將選擇的空閑塊列表L(i)返回至塊管理單元131。塊管理單元131檢查空閑塊是否保持在從排序規(guī)則操作單元151返回的空閑塊列表L(i)中。當(dāng)確定空閑塊沒有保持在空閑塊列表L(i)中時,處理進行至步驟S37。在這種情況下,不能夠從空閑塊列表L (i)獲得空閑塊。同時,在步驟S34,當(dāng)確定空閑塊保持在空閑塊列表L(i)中時,處理進行至步驟 S35。在步驟S35,空閑塊選擇單元150從空閑塊列表L(i)選擇空閑塊B(i)。塊管理單元 131獲取選擇的空閑塊B (i)。在下一步驟S36,塊管理單元131將塊獲取數(shù)目rb增加1。在下一步驟S37,空閑塊選擇單元150將列表選擇計數(shù)增加1,并計算列表選擇計數(shù)。在下一步驟S38,位置信息更新單元152用指示基于排序規(guī)則的排序序列上的下一位置的位置信息Pos來更新在位置信息存儲單元1 中保持的位置信息Pos。此時,當(dāng)下一位置超出基于排序規(guī)則的排序順序上的最后位置時,位置信息更新單元152將下一位置設(shè)置在基于排序規(guī)則的排序序列的頭部。處理進行至步驟S39,并且塊管理單元131確定塊獲取數(shù)目rb是否達到空閑塊獲取數(shù)目r。當(dāng)確定塊獲取數(shù)目rb達到空閑塊獲取數(shù)目r時,基于圖8的流程圖的處理系列結(jié)束,并且處理進行至圖5的步驟S18。同時,當(dāng)在步驟S39確定塊獲取數(shù)目rb沒有達到空閑塊獲取數(shù)目r時,處理進行至步驟S40。在步驟S40,塊管理單元131確定列表選擇計數(shù)i是否達到最大并行性q。當(dāng)確定列表選擇計數(shù)沒有達到最大并行性q時,處理返回至步驟S33,并且執(zhí)行與下一空閑塊列表L(i)相關(guān)的處理。同時,當(dāng)確定列表選擇計數(shù)達到最大并行性q時,基于圖8的流程圖的處理系列結(jié)束,并且處理進行至圖5的步驟S18。即,在這種情況下,獲取的空閑塊數(shù)目沒有達到所需數(shù)
目,并且不能夠從空閑塊管理單元140管理的空閑塊列表HlpHl1.....141m.....和141n
獲取能夠并行寫入的空閑塊的組。因此,空閑塊選擇處理結(jié)束。根據(jù)第一實施例,生成排序規(guī)則,使得如果按所示排序選擇空閑塊列表,則可獲取能夠并行寫入的空閑塊的組。即使當(dāng)從主機裝置重復(fù)對于特定地址的寫入時,可通過根據(jù)排序規(guī)則獲取空閑塊來抑制面之間的塊獲取計數(shù)的差,并且可避免擦除操作集中于特定塊。當(dāng)在緩沖存儲器中累計對于多個不同地址的寫入數(shù)據(jù)時,可避免寫入操作集中于特定塊,并且可在盡可能多的面上執(zhí)行并行寫入。因此,可保持較高傳輸性能。在以上說明書中,管理單元是芯片的唯一物理塊,例如空閑塊或活動塊,但是本發(fā)明不限于這個實例。例如,如圖9所示,當(dāng)始終收集和使用多個物理塊時,可將收集多個塊的邏輯塊用作管理單元。在圖9中,存儲體-芯片-面配置與上述圖7的配置相同。在圖9中,在存儲體BO 和Bl的每個中,收集和管理芯片CO和Cl的編號相應(yīng)的面。在存儲體BO的實例中,收集芯
12片CO的面PO和芯片Cl的面P0,并作為面P0’來管理。同樣,收集芯片CO的面Pl和芯片 Cl的面P1,并作為面ΡΓ來管理。在這種情況下,通過存儲體BO的面Po,和面ΡΓ以及存儲體Bl的面P0,和面Pl, 能夠進行4個并行寫入。排序順序可應(yīng)用于存儲體BO的面P0’和面ΡΓ以及存儲體Bl的面Po’和面P1’?!吹诙嵤├到酉聛?,將描述第二實施例。在第二實施例中,將按照可獲得能夠最大并行寫入的空閑塊的組的順序來一次性排列所有空閑塊列表的排序規(guī)則定義為排序規(guī)則的小周期。通過按預(yù)定順序排列小周期,生成新的長周期排序規(guī)則。在第一實施例中描述的空閑塊選擇方法中,根據(jù)寫入數(shù)據(jù)的地址模式,空閑塊數(shù)目和活動塊數(shù)目可能在空閑塊列表之間不同。這是因為,當(dāng)某個地址A被覆寫時,與寫入之前的地址A關(guān)聯(lián)的活動塊Bl和在被獲取用于寫入的空閑塊B2不必屬于相同面。具體地,當(dāng)活動塊Bl和空閑塊B2屬于不同面時,在與活動塊Bl所屬的面相應(yīng)的空閑塊列表中,空閑塊列表中的空閑塊的數(shù)目增加1 ;以及在與活動塊B2所屬的面相應(yīng)的空閑塊列表中,空閑塊列表中的空閑塊的數(shù)目減少1。在通用的方法中,由于寫入地址隨機分布,所以假設(shè)在空閑塊列表之間的空閑塊數(shù)目的差不是很大。然而,在第一實施例中描述的排序規(guī)則下,當(dāng)在寫入請求的地址中存在特定模式時,空閑塊可能集中于特定空閑塊列表,并且在其他空閑塊列表中空閑塊可能被用盡。在這種情況下,降低在通過塊管理單元131選擇空閑塊時的并行性,并且降低傳輸性能。例如,當(dāng)從頭地址對于從SSD 100向主機裝置200提供完整容量執(zhí)行寫入時(稱為全尺寸順序?qū)懭?,與特定周期的地址相應(yīng)的活動塊集中于特定面。這將使用圖IOA來特別描述。當(dāng)面的數(shù)目為8時,與“塊地址X8”相應(yīng)的活動塊集中于面0上。在圖IOA的實例中,與地址々038、416、...相應(yīng)的活動塊集中于面0上。這適用于其他面。這里,考慮重復(fù)地址為“塊地址X8”的寫入。在這種情況下,從所有面PO至P7選擇用于寫入的空閑塊(圖IOA中的陰影部分)。同時,在寫入之后釋放的活動塊集中于面 PO上。由此,如圖IOB所示,在釋放活動塊之后,空閑塊也集中于面PO上。如果在與屬于特定面的活動塊關(guān)聯(lián)的地址中存在周期性,則難以保持在寫入時的并行性,或者對于在周期內(nèi)覆寫地址的寫入模式平衡塊之間的擦除計數(shù)。在第二實施例中,根據(jù)上述第一實施例的排序規(guī)則改變,從而最小化周期性或者周期變長。圖11是示意性示出根據(jù)第二實施例的順序排序生成方法的實例的流程圖。首先,以與第一實施例相同的方式生成排序規(guī)則,并將其定義為小周期(步驟 S50)。接下來,在步驟S50中生成的小周期內(nèi)部分地改變基于排序規(guī)則的排序,并且生成另一小周期(步驟S51)。最后,以預(yù)定順序排列多個在步驟S50中生成的小周期以及在步驟 S51中生成的另一小周期,并且生成新排序規(guī)則(步驟S52)。新排序規(guī)則是具有比原始排序規(guī)則的周期更長的周期的長周期排序規(guī)則。即,基于多個不同的小周期排序規(guī)則生成長周期排序規(guī)則。在步驟S52,可多次使用每個小周期和另一小周期,并且可連續(xù)多次使用相同小周期。在步驟S51,存在可通過改變小周期中的空閑塊列表生成的大量其他小周期。然而,當(dāng)在步驟S52生成新排序規(guī)則時,不需要使用可被考慮的所有小周期。接下來,將使用特定實例來描述第二實施例。首先,作為第一實例,將描述能夠并行寫入的面的數(shù)目為2的情況。以下,將面描述為面(χ是等于或大于0的整數(shù)),或簡單地描述為Px,并且將地址描述為地址Ax,或簡單地描述為Αχ。參照圖12Α,當(dāng)能夠并行寫入的面的數(shù)目為2時,顯示為小周期A和下方的小周期 B的兩種小周期作為排序規(guī)則的小周期存在。可先前生成每個小周期的排序規(guī)則,并且可保持在排序規(guī)則表153中。小周期Α:{Ρ0,Ρ1}小周期Β:{Ρ1,Ρ0}排列小周期A和B,并且生成新排序規(guī)則。圖12Β示出小周期A和小周期B的每個使用4次并且使用8個小周期生成具有16長度的排序規(guī)則的實例。參照圖12C,以上情況的排序規(guī)則如表達式4所示。位置信息更新單元152根據(jù)排列小周期A和小周期B的新排序規(guī)則更新位置信息。{Ρ0, Pl , Pl , Ρ0, Pl , Ρ0, Ρ0, Pl , Pl, Ρ0, Ρ0, Pl , Ρ0, Pl , Pl , Ρ0}
(4)當(dāng)根據(jù)基于表達式4的排序規(guī)則執(zhí)行上述全尺寸順序?qū)懭霑r,如圖13Α所示,向塊分配地址。即,根據(jù)排序規(guī)則,以面PO和面Pl的順序向面PO和Pl的頭塊分配地址AO和 Al。以面Pl和面PO的順序向隨后塊分配地址Α2和A3。以下,根據(jù)排序規(guī)則順序分配地址 A4、A5>... ο然后,圖1 中示出執(zhí)行地址變?yōu)椤皦K大小Xk”的周期性寫入的實例,其中示出k =2的情況的實例,k = 4的情況的實例,以及k = 8的情況的實例。在k = 2的情況下,釋放在全尺寸順序?qū)懭霑r分配的地址中與地址AO、A2、 A4、...相應(yīng)的塊。在k = 4的情況下,釋放在全尺寸順序?qū)懭霑r分配的地址中與地址AO、 A4、A8、...相應(yīng)的塊。在k = 8的情況下,釋放在全尺寸順序?qū)懭霑r分配的地址中與地址 A0、A8、A16、. . ·相應(yīng)的塊。如果通過釋放的塊所屬的平面示出k = 2、k = 4*k = 8中的每個,則建立以下表達式5至7。k = 2 {P0, PI, PI, P0, PI, P0, P0, Pl, ... }(5)k = 4 {P0,P1,P1,P0,· · · }(6)k = 8 {P0, Pl, ... }(7)如表達式5至7所示,即使通過能夠并行寫入的面的數(shù)目的倍數(shù)周期執(zhí)行寫入,抑制在寫入之前的活動塊集中于特定面上。然而,當(dāng)?shù)刂分芷谧優(yōu)榕判蛞?guī)則的長度的倍數(shù)時 (在這個實例的情況下k = 16),在寫入之前的活動塊集中于特定面上。接下來,將描述在排序規(guī)則操作單元151中的排序規(guī)則操作方法。作為排序規(guī)則操作單元151的形式,考慮兩種類型使用在其中保持先前生成的排序規(guī)則的表的表方法和通過運算來計算排序規(guī)則的操作方法。在表方法中,在排序規(guī)則表中先前保持通過排列具有排序規(guī)則的小周期生成的新排序規(guī)則。當(dāng)選擇空閑塊列表時,排序規(guī)則操作單元151參考由排序規(guī)則表153上的位置信息Pos指示的排序規(guī)則下排序序列上的位置,并搜索空閑塊列表的標(biāo)識符。
運算方法是排序規(guī)則操作單元151通過運算從位置信息Pos生成空閑塊標(biāo)識符并生成排序規(guī)則的方法。例如,在面的數(shù)目為2并且長度為16的排序規(guī)則的實例中,可通過以下表達式8示例的運算來確定面。表達式8基于通常用作程序語言的C語言描述操作序列。在C語言中,不允許二進制記法。然而,在表達式8中,在“Ob”之后的“O”和“1”表示通過增加“Ob”作為前綴的二進制數(shù)。例如,“OblOOlOllO”等于十六進制記法的“0x96”。在表達式8中,在通過冒號 ()劃分的每行的頭部描述的每個數(shù)字指示行號。集中通過行號“1”至“5”指示的5行以配置表達式8。在雙斜線(//)之后的內(nèi)容描述各個行。1 :pattern = OblOOlOllO ;//binary number representing the orders of short periods2 :y = pos/2 ;//order of a short period3 :x = pos% 2 ;//order of a short period among short periods4 :period_id = (pattern >> y)&0bl ;//short period to be used5 :plane_id = period_id"x ;//Exclusive-OR of short period identifiersand orders in short periods(8)在表達式8中,值pos是指示位置信息的值,并且采用0至15的范圍內(nèi)的值。值 period_id是指示小周期的值,并且假設(shè)值O指示小周期A,值1指示小周期B。值plane_ id指示按這個順序選擇的面的數(shù)目。在表達式8的示例中,通過第5行的表達式表示小周期A和小周期B的排序規(guī)則。接下來,將描述能夠并行寫入的面的數(shù)目較多的情況。當(dāng)能夠并行寫入的面的數(shù)目較多時,排序被改變的小周期的數(shù)目增加。此時,當(dāng)組合小周期并且生成排序規(guī)則時,不需要使用被考慮的所有小周期。當(dāng)空閑塊列表的選擇開始位置在小周期的中間時,可在不同小周期上執(zhí)行空閑塊列表的選擇。即使在這種情況下,優(yōu)選地,選擇小周期,從而最大地保持并行性并排列小周期。例如,考慮在面的數(shù)目為8并且在面之間的并行寫入上沒有施加限制的情況。在這種情況下,被考慮的小周期的數(shù)目為8。如果按表達式9和表達式10的順序排列由以下表達式9和10所示的小周期(通過與面相應(yīng)的空閑塊列表的標(biāo)識符所示),當(dāng)在表達式9所示的小周期以及表達式10所示的小周期上執(zhí)行空閑塊列表的選擇時,連續(xù)選擇面P7的空閑塊列表。為此,不能夠選擇在兩個小周期上能夠并行寫入的塊的組。{0,1,2,3,4,5,6,7}(9){7,0,1,2,3,4,5,6}(10)因此,選擇和排列小周期,從而在連續(xù)選擇的位置處的空閑塊列表的標(biāo)識符并不相同。因此,即使在小周期上執(zhí)行空閑塊列表的選擇,也可選擇能夠并行寫入的空閑塊的組。例如,考慮通過以下表達式11和12所示的小周期??蓪⒈磉_式12所示的排序規(guī)則看作通過對于表達式11所示的排序規(guī)則用7來擴展順序所獲得的排序規(guī)則。如果以表達式11和表達式12的順序排列由表達式11和12所示的小周期,則連續(xù)執(zhí)行選擇的表達式11的尾部的標(biāo)識符和表達式12的頭部的標(biāo)識符彼此不同。為此,即使在表達式11所示的小周期和表達式12所示的小周期上執(zhí)行選擇時,可選擇能夠并行寫入的空閑塊的組。即使當(dāng)在小周期上執(zhí)行選擇時,可選擇能夠進行具有并行性7的并行寫入的空閑塊的組。{0,1,2,3,4,5,6,7}(11){1,2,3,4,5,6,7,0}(12)圖14示出當(dāng)面的數(shù)目為8 (面PO至P7)并且在面之間的并行寫入上沒有施加限制時的排序規(guī)則的實例。面PO至P7與不同空閑塊列表的標(biāo)識符PO至P7關(guān)聯(lián)。在圖14的實例中,排列基于排序規(guī)則{P0, PI, P2,P3,P4,P5,P6,P7}的小周期(其中使用標(biāo)識符PO 作為頭部,使用標(biāo)識符P7作為尾部)以及對于小周期A通過在排序規(guī)則上的排序用7來擴展而獲得的小周期B,C,...H,并且生成新排序規(guī)則。通過排列排序規(guī)則的不同小周期,抑制空閑塊集中于特定面。在圖14的實例中,在新排序規(guī)則下,重復(fù)4次排列小周期A至H中的每個,并且小周期的總數(shù)變?yōu)?2,長度變?yōu)?56??啥啻沃貜?fù)排列相同的小周期。在重復(fù)排列相同小周期的范圍內(nèi),能夠進行8個并行寫入。優(yōu)選地,排列各個小周期A至H,從而最大化當(dāng)在不同小周期上執(zhí)行空閑塊列表的選擇時的并行性。在圖14的實例中,當(dāng)不同小周期彼此臨近時,生成小周期的排序規(guī)則,從而在空閑塊列表的選擇排序中,小周期的排序規(guī)則中的順序用7來擴展。在這種情況下, 當(dāng)在小周期上執(zhí)行空閑塊列表的選擇時,可選擇用并行性7能夠進行并行寫入的空閑塊的組。接下來,將描述對于在第一實施例中使用圖7描述的存儲體-芯片-面配置中在并行寫入上施加的限制的情況應(yīng)用第二實施例的實例。在這種情況下,如上所述,根據(jù)空閑塊開始從中獲取的面改變最大并行性。圖15示出存儲體-芯片-面配置中的排序規(guī)則的實例。在圖15的實例中,存儲體的數(shù)目為4 (B0至B3),在每個存儲體中芯片的數(shù)目為2 (CO和Cl),在每個芯片中面的數(shù)目為2(P0和P1),面的總數(shù)為16。在這種情況下,由于施加用于指示對于相同存儲體中的不同芯片禁止并行寫入的限制,所以最大并行性為8。在圖15中,通過組合存儲體號、芯片號、和面號將與每個面相應(yīng)的空閑塊列表的標(biāo)識符表示為“B0C0P0”。在圖15的實例中,在小周期中以面號、存儲體號、和芯片號的順序作出改變,并且生成每個小周期的排序規(guī)則,從而最大化并行性。例如,小周期A的排序規(guī)則為{B0C0P0, B0C0P1, B1C0P0, B1C0P1, B2C0P0, B2C0PI1, B3C0P0, B3C0P1, B0C1P0, B0C1P1, B1C1P0, B1C1P1, B2C1P0, B2C1P1, B3C1P0, B3C1P1}。在圖15中所示的排序規(guī)則中,類似于使用圖7所述的實例,當(dāng)空閑塊開始從面PO 獲取時,能夠進行8個并行寫入。同時,當(dāng)空閑塊開始從面Pl獲取時,由于施加用于指示對于相同存儲體中的不同芯片的面PO和Pl禁止并行寫入的限制,所以將并行寫入限制為7 個并行寫入。配備小周期B,其中在不改變小周期A的存儲體號和芯片號的情況下僅改變面號。 為了防止由于對于周期性地址的寫入而使得空閑塊集中于特定存儲體上,配備對于各個小周期A和B改變存儲體的順序的小周期C至H。由于當(dāng)在存儲體順序不同的小周期上執(zhí)行選擇時并行性被限制為5或6,連續(xù)排列具有相同存儲體號順序的小周期,并且生成新排序規(guī)則。具體地,連續(xù)排列小周期A以及具有與小周期A相同的存儲體號順序的小周期B。同樣,分別連續(xù)排列小周期C和D、小周期E和F、和小周期G和H。在以上說明書中,通過表方法或運算方法先前生成按照預(yù)定次數(shù)排列小周期的排序規(guī)則,但是本發(fā)明不限于此。例如,可使用隨機數(shù)來動態(tài)計算排序規(guī)則。圖16A至16C示出使用二進制隨機數(shù)序列計算排序規(guī)則的實例。在圖16A至16C 的實例中,如果在每個小周期中隨機值的值為0,則使用二進制隨機數(shù)序列計算序列排序作為小周期A,以及如果隨機值的值為1,則使用二進制隨機數(shù)序列計算序列排序作為小周期 B。當(dāng)根據(jù)二進制隨機數(shù)順序計算排序規(guī)則時,如果二進制隨機數(shù)序列為偽隨機數(shù),則排序規(guī)則的長度為“偽隨機數(shù)的周期X面的數(shù)目”。由此,即使當(dāng)在屬于特定面的活動塊關(guān)聯(lián)的地址中存在周期性,相應(yīng)地址的活動塊集中于特定面上的周期變得非常長,并且這并不引起問題。即使當(dāng)使用隨機數(shù)計算排序規(guī)則時,類似于以上情況,將表方法和運算方法看作排序規(guī)則操作單元151的形式。在表方法中,可保持隨機數(shù)表作為排序規(guī)則表153中的排序規(guī)則。在運算方法的情況下,在排序規(guī)則操作單元151中,可配備隨機數(shù)操作符,并且可使用隨機數(shù)運算要使用的小周期。例如,可通過以下表達式13所示的操作來確定基于隨機數(shù)的面。由于方法的含義與表達式13的每個值通用于上述表達式8的值,這里將不再重復(fù)描述。1 :y = pos/2 ;//order of a short period2 :x = pos% 2 ;//order of a short period among short periods3 :period_id = rand()&0bl !//determine a short period to be used, on thebasis of random numbers4 :plane_id = period_id"x ;//exclusive logical sum of short periodidentifiers and orders in short periods(13)根據(jù)第二實施例,以預(yù)定順序排列具有排序規(guī)則的小周期,并且生成具有更長周期的新排序規(guī)則。為此,即使當(dāng)在來自主機裝置的寫入地址中存在周期性時,可抑制在空閑塊列表之間的空閑塊數(shù)目和活動塊數(shù)目之間的差。在第二實施例中,由于最大并行性被配置為當(dāng)排列小周期時被最大化,所以可保持傳輸性能?!吹谌龑嵤├到酉聛恚瑢⒚枋龅谌龑嵤├?。在上述第二實施例中,延長在排序規(guī)則保持單元中保持的排序規(guī)則,以隱藏在空閑塊列表的選擇中的周期性。第三實施例通過修改位置信息更新方法來實現(xiàn)相同效果。在當(dāng)前情況匹配于預(yù)定條件時,第三實施例跳過排序規(guī)則中的某個順序。作為排序規(guī)則的跳過條件,可應(yīng)用各種條件。接下來,將描述對于每個面的、當(dāng)位置信息更新數(shù)目達到預(yù)定數(shù)目時跳過排序規(guī)則的第一方法以及當(dāng)空閑塊獲取數(shù)目達到預(yù)定數(shù)目時跳過排序規(guī)則的第二方法。假設(shè),對于例如空閑塊選擇單元150先前確定排序規(guī)則的跳過條件。首先,將使用圖17的流程圖描述當(dāng)位置信息更新數(shù)目達到預(yù)定數(shù)目時跳過排序規(guī)則的第一方法。圖17的流程圖相應(yīng)于在上述圖5的流程圖中的步驟S17的處理。圖17 的流程圖與在第一實施例中描述的圖8的流程圖的不同在于增加了跳過處理。在圖17的流程圖中,將在某個時間點的位置信息更新數(shù)目設(shè)置為位置信息更新數(shù)目tPos,以及將其初始值設(shè)置為0。將用于確定是否跳過排序規(guī)則的位置信息更新數(shù)目 tPos的閾值設(shè)置為作為預(yù)定值的跳過閾值sPos。此外,假設(shè)在圖5的步驟S16中從數(shù)據(jù)寫入單元133需要所需數(shù)目r個空閑塊,并且排序規(guī)則被先前確定為預(yù)定排序規(guī)則。首先,塊管理單元131從位置信息存儲單元巧4獲取位置信息Pos (步驟S60),并且計算在空閑塊開始從獲取的位置信息Pos指示的位置的空閑塊列表141m選擇時的最大并行性q(步驟S61)。由于計算最大并行性q的方法通用于在圖8的步驟S31中所示的方法,這里將不再重復(fù)描述。在下一步驟S62,塊管理單元131將塊獲取數(shù)目rb和列表選擇計數(shù)i中的每個初始化為0,并且使得處理進行至步驟S63。在步驟S63,排序規(guī)則操作單元151根據(jù)從塊管理單元131傳送的位置信息Pos和預(yù)定排序規(guī)則從空閑塊管理單元140管理的空閑塊列表
Hl0^Hl1.....141m.....和141n選擇一個空閑塊列表L(i),并且將選擇的空閑塊列表L(i)
返回至塊管理單元131。塊管理單元131檢查空閑塊是否保持在從排序規(guī)則操作單元151返回的空閑塊列表L(i)中。當(dāng)確定空閑塊沒有保持在空閑塊列表L(i)中時,處理進行至步驟S67。同時,在步驟S64,當(dāng)確定空閑塊保持在空閑塊列表L(i)中時,處理進行至步驟 S65。在步驟S65,空閑塊選擇單元150從空閑塊列表L(i)選擇空閑塊B(i)。塊管理單元 131獲取選擇的空閑塊B (i)。在下一步驟S66,塊管理單元131將塊獲取數(shù)目rb增加1。在下一步驟S67,空閑塊選擇單元150將列表選擇計數(shù)增加1,并計算列表選擇計數(shù)i。在下一步驟S68,位置信息存儲單元1 用指示基于排序規(guī)則的排序序列上的下一位置的位置信息Pos來更新在位置信息存儲單元1 中保持的位置信息Pos。此時,當(dāng)下一位置超出基于排序規(guī)則的排序順序上的最后位置時,位置信息更新單元152將下一位置設(shè)置在基于排序規(guī)則的排序序列的頭部。如果更新位置信息Pos,則處理進行至步驟S69,并且空閑塊選擇單元150將位置信息更新數(shù)目增加1。在下一步驟S70,空閑塊選擇單元150確定位置信息更新數(shù)目tPos 是否等于或大于跳過閾值sPos。當(dāng)確定位置信息更新數(shù)目tPos等于或大于跳過閾值sPos時,處理進行至步驟 S71,通過位置信息更新單元152將位置信息更新數(shù)目tPos初始化為0,并且處理返回至步驟S67。通過步驟S70的確定,處理返回至步驟S67,并且執(zhí)行基于位置信息更新數(shù)目tPos 的排序規(guī)則的跳過。同時,當(dāng)在步驟S79確定位置信息更新數(shù)目tPos小于跳過閾值sPos時,處理進行至步驟S72。在步驟S72,塊管理單元131確定塊獲取數(shù)目rb是否達到空閑塊所需數(shù)目r。 當(dāng)確定塊獲取數(shù)目rb達到空閑塊所需數(shù)目r時,基于圖17的流程圖的處理系列結(jié)束,并且處理進行至圖5的步驟S18。同時,當(dāng)確定塊獲取數(shù)目rb沒有達到空閑塊所需數(shù)目r時,處理進行至步驟S73。 在步驟S73,塊管理單元131確定列表選擇計數(shù)i是否達到最大并行性q。當(dāng)確定列表選擇計數(shù)i沒有達到最大并行性q時,處理返回至步驟S63,并且執(zhí)行與下一空閑塊列表L (i)相關(guān)的處理。同時,當(dāng)確定列表選擇計數(shù)i達到最大并行性q時,基于圖17的流程圖的處理系列結(jié)束,并且處理進行至圖5的步驟S18。圖18示出根據(jù)基于上述圖17的流程圖的處理執(zhí)行排序規(guī)則的跳過的實例。在圖 18中,面的數(shù)目為8,并且能夠進行8個并行寫入。原始排序規(guī)則是重復(fù)僅小周期{0,1,2, 3,4,5,6,7}的排序序列。圖18示出在將跳過閾值sPos設(shè)置為32塊以及位置信息更新數(shù)目tPos為32的情況下用下一位置更新位置信息Pos并且跳過排序規(guī)則的實例。在圖18的實例中,如果在原始排序規(guī)則的排序順序下從第32個面P7獲取空閑塊,則跳過從接下來第33個面PO的空閑塊的獲取。此外,如果將位置信息更新數(shù)目tPos 初始化為0,則重新開始累計位置信息更新數(shù)目tPos,并且位置信息更新數(shù)目tPos變?yōu)?2, 用下一位置來更新位置信息Pos,并且跳過排序規(guī)則。在這種情況下,跳過在原始排序規(guī)則的順序序列中從第66個面Pl的空閑塊的獲取。具體地,首先,當(dāng)在原始排序規(guī)則的順序序列中從第32個面P7獲取空閑塊時,位置信息更新數(shù)目tPos變?yōu)?2,并且處理從步驟S70返回至在圖17的流程圖中的步驟S67 至步驟S71。在步驟S68,更新位置信息Pos,并且處理通過步驟S69至S73的處理返回至步驟S63。按照步驟S70的確定,在不獲取空閑塊的情況下更新位置信息Pos,并且跳過排序規(guī)則。優(yōu)選地,將跳過閾值sPos設(shè)置為排序規(guī)則的長度的倍數(shù),以平衡空閑塊列表之間的跳過頻率。即,當(dāng)將跳過閾值sPos設(shè)置為排序規(guī)則的長度的倍數(shù)時,如果獲取與排序規(guī)則的長度相應(yīng)的數(shù)目的空閑塊,則跳過下一面并且從跳過的面的下一面獲取與排序規(guī)則的長度相應(yīng)的數(shù)目的空閑塊。從而,排序規(guī)則在跳過位置處移動一個面,并且平衡在塊之間的擦除計數(shù)。同時,如果將跳過閾值sPos設(shè)置為(排序規(guī)則的長度的倍數(shù))_1,僅在特定空閑塊列表中生成跳過,并且這不是優(yōu)選的。接下來,使用圖19的流程圖來描述在第三實施例中的第二方法。當(dāng)對于每個面, 空閑塊獲取數(shù)目達到預(yù)定數(shù)目時,該方法跳過排序規(guī)則。基于圖19的流程圖的處理基本上與根據(jù)上述第一方法的基于圖17的流程圖的處理相同,除了執(zhí)行跳過處理的時間不同。 即,在第二方法中,對于每個面執(zhí)行排序規(guī)則的跳過條件的確定,以控制每個面的跳過頻率。在這個方法中,對于每個空閑塊列表L引入塊獲取分數(shù)t[L]。當(dāng)從每個塊列表獲取塊時,t[L]以分數(shù)增加值w[L]為單位增加。如果t[L]達到跳過閾值s [L],則跳過空閑塊列表L的順序。在塊管理單元131中保持對于每個面的分數(shù)增加值w[L]、塊獲取分數(shù)t[L]、 和跳過閾值s [L]。首先,塊管理單元131從位置信息存儲單元巧4獲取位置信息Pos (步驟S80),并且計算在空閑塊開始從獲取的位置信息Pos指示的位置的空閑塊列表141m選擇時的最大并行性q(步驟S81)。由于計算最大并行性q的方法通用于在圖8的步驟S31中所示的方法,這里將不再重復(fù)描述。在下一步驟S82,將塊獲取數(shù)目rb和列表選擇計數(shù)i中的每個初始化為0,并且處理進行至步驟S83。在步驟S83,排序規(guī)則操作單元151根據(jù)從塊管理單元131傳送的
19位置信息Pos和預(yù)定排序規(guī)則從空閑塊管理單元140管理的空閑塊列表HlpHl1.....
141m.....和141n選擇一個空閑塊列表L (i),并且將選擇的空閑塊列表L (i)返回至塊管理
單元131。在下一步驟S84,空閑塊選擇單元150將塊獲取分數(shù)t [L (i)]與跳過閾值s [L (i)] 相比較,并確定塊獲取分數(shù)t[L(i)]是否等于或大于跳過閾值s [L(i)]。當(dāng)確定塊獲取分數(shù) t[L(i)]等于或大于跳過閾值s [L(i)]時,在步驟S93,將從塊獲取分數(shù)t[L(i)]減去跳過閾值s[L(i)]獲得的值設(shè)置為新塊獲取分數(shù)t[L(i)],并且處理進行至步驟S89。由于當(dāng)確定塊獲取分數(shù)t[L(i)]等于或大于跳過閾值s[L(i)]時處理進行至步驟S89,所以在與空閑塊列表L(i)相應(yīng)的面中跳過排序規(guī)則。同時,在步驟S84,當(dāng)確定塊獲取分數(shù)t[L(i)]小于跳過閾值s[L(i)]時,處理進行至步驟S85。在步驟S85,塊管理單元131檢查空閑塊是否保持在從排序規(guī)則操作單元151 返回的空閑塊列表L(i)中。當(dāng)確定空閑塊沒有保持在空閑塊列表L(i)中時,處理進行至步驟S89。同時,在步驟S85,當(dāng)確定空閑塊保持在空閑塊列表L(i)中時,處理進行至步驟 S86。在步驟S86,空閑塊選擇單元150從空閑塊列表L(i)選擇空閑塊B(i)。塊管理單元 131獲取選擇的空閑塊B (i)。在下一步驟S87,將塊獲取數(shù)目rb增加1。在下一步驟S88,空閑塊選擇單元150 將分數(shù)增加值w[L(i)]與塊獲取分數(shù)t[L(i)]相加獲得的值設(shè)置為新塊獲取分數(shù)t[L(i)]。 處理進行至步驟S89,并且空閑塊選擇單元150將列表選擇計數(shù)i增加1,并計算列表選擇計數(shù)i。在下一步驟S90,位置信息更新單元152用指示基于排序規(guī)則的排序序列上的下一位置的位置信息Pos來更新在位置信息存儲單元1 中保持的位置信息Pos。此時,當(dāng)下一位置超出基于排序規(guī)則的排序順序上的最后位置時,位置信息更新單元152將下一位置設(shè)置在基于排序規(guī)則的排序序列的頭部。如果更新位置信息Pos,則處理進行至步驟S91,并且塊管理單元131確定塊獲取數(shù)目rb是否達到空閑塊所需數(shù)目r。當(dāng)確定塊獲取數(shù)目rb達到空閑塊所需數(shù)目r時,基于圖19的處理系列結(jié)束,并且處理進行至圖5的步驟S18。同時,當(dāng)在步驟S91中確定塊獲取數(shù)目rb沒有達到空閑塊所需數(shù)目r時,處理進行至步驟S92。在步驟S92,塊管理單元131確定列表選擇計數(shù)i是否達到最大并行性q。 當(dāng)確定列表選擇計數(shù)i沒有達到最大并行性q時,處理返回至步驟S83,并且執(zhí)行與下一空閑塊列表L (i)相關(guān)的處理。同時,當(dāng)確定列表選擇計數(shù)i達到最大并行性q時,基于圖19的處理系列結(jié)束,并且處理進行至圖5的步驟S18。當(dāng)多個空閑塊列表具有相同值的分數(shù)增加值w[L]和跳過閾值s[L]時,如果塊獲取分數(shù)s[L]的初始值也設(shè)置為相同值(例如0),由于在相同時間執(zhí)行多個空閑塊列表的跳過,這不是優(yōu)選的。為此,可對于每個空閑塊列表,將塊獲取分數(shù)s[L]的初始值設(shè)置為不同值。圖20A和20B示出根據(jù)基于上述圖19的流程圖的處理執(zhí)行排序規(guī)則上的跳過的實例。圖20A示出分別設(shè)置為面PO至P7的每個的塊獲取分數(shù)t[L]的初始值、分數(shù)增加值w[L]、和跳過閾值s[L]。圖20B示出這里的實例,其中面的數(shù)目為8,能夠進行8個并行寫入,并且原始排序規(guī)則變?yōu)橹貜?fù)僅小周期{0,1,2,3,4,5,6,7}的排序序列,這類似于上述圖18。在圖20A的實例中,將分數(shù)增加值w[L]固定為1,并且跳過閾值s[L]可對于每個面改變。塊獲取分數(shù)t[L]顯示在每個面中的空閑塊獲取數(shù)目,并且跳過閾值s[L]顯示在生成排序規(guī)則的跳過的面中的空閑塊獲取數(shù)目。在圖20A的實例中,僅在面P6中將跳過閾值s [L]設(shè)置為8,以及在其他面中設(shè)置為32。為此,如圖20B所示,面P6可相對于其他面增加跳過的頻率。在圖20B的實例中,在面P6中,當(dāng)重復(fù)16次小周期時,生成兩次跳過。同時,在其他面中,跳過的頻率等于或小于 1。作為塊獲取分數(shù)t[L]的初始值,可對于每個面設(shè)置不同值。在圖20A的實例中, 在各個面PO至P7中,塊獲取分數(shù)t[L]的初始值偏移將跳過閾值S[L] ( = 32)除以面的數(shù)目(=8)獲得的值(=4)。由此,在除了面P6之外的7個面中,跳過的相位偏移4個小周期。例如,在圖20B的實例中,對于塊獲取分數(shù)t[P0]的初始值觀,在第5個小周期發(fā)生面 PO的跳過,以及對于塊獲取分數(shù)t[Pl]的初始值對,在第9個小周期發(fā)生面Pl的跳過。同樣,對于塊獲取分數(shù)t[P2]的初始值20,在第13個小周期發(fā)生面P2的跳過。圖2IA和2IB示出與上述圖20A和20B的實例相比固定跳過閾值s [L]并且分數(shù)增加值w[L]可對于每個面改變的實例。如圖21A所示,將跳過閾值s[L]固定值100,并且僅面P6的分數(shù)增加值w[L]為25,其他面的分數(shù)增加值為3。塊獲取分數(shù)t[L]的初始值基于將跳過閾值s[L] ( = 100)除以面的數(shù)目(=8)獲得的值(=12. 5)偏移。在這種情況下,可以看出當(dāng)分數(shù)增加值w[L]增加時,跳過的頻率增加。根據(jù)第三實施例,即使排序規(guī)則不復(fù)雜,也不具有長周期,但是排序規(guī)則的周期看起來較長和不規(guī)則,并且可隱藏空閑塊列表的選擇中的周期性。例如,當(dāng)僅特定面的總塊數(shù)目或空閑塊數(shù)目較小時,如果將跳過閾值s[L]設(shè)置為較小值,或者將分數(shù)增加值w[L]設(shè)置為較大值,可抑制空閑塊的獲取頻率。從而,可預(yù)期平衡每個塊的擦除計數(shù),或平衡每個面的剩余空閑塊數(shù)目。〈第三實施例的修改〉接下來,將描述第三實施例的修改。第三實施例的修改是第二實施例和第三實施例的組合實例。圖22示出應(yīng)用于第三實施例的修改的存儲體-芯片-面配置的實例,其用在上述圖15的實例中,并且在其中存儲體的數(shù)目為4,每個面中的芯片的數(shù)目為2,每個芯片中的面的數(shù)目為2,并且總面數(shù)目為16。在第二實施例中描述的圖15的實例中,由于改變存儲體排序的小周期也包括在排序規(guī)則中,所以排序規(guī)則很長并且復(fù)雜。同時,在根據(jù)圖22中示出的第三實施例的修改的排序規(guī)則中,由于通過跳過來實現(xiàn)改變存儲體排序的效果,所以排序規(guī)則具有組合小周期A和B的兩個小周期的簡單配置。具體地,如使用第二實施例中的圖15所述,排序規(guī)則操作單元151以面號、存儲體號、和芯片號的順序改變小周期,并且生成每個小周期的排序規(guī)則。例如,小周期A的排序規(guī)則為{B0C0P0,B0C0P1,B1C0P0, BlCOPl,B2C0P0, B2C0PI1, B3C0P0, B3C0P1, B0C1P0, B0C1P1,B1C1P0,B1C1P1, B2C1P0, B2C1P1, B3C1P0, B3C1P1}。在不改變小周期 A 的存儲體號和芯片號的情況下,通過僅改變小周期A的面號來生成小周期B。如上所述,排序規(guī)則操作單元151以表方法、運算方法或使用隨機數(shù)的方法獲得的順序排列小周期A和小周期B,并生成新排序規(guī)則。從而,生成小周期的數(shù)目為8并且長度為128的排序規(guī)則。同時,通過上述第三實施例的第一和第二方法,將排序規(guī)則設(shè)置為每當(dāng)獲取空閑塊(例如1 個塊)時跳過。這樣,每當(dāng)跳過排序規(guī)則時可實現(xiàn)改變存儲體順序的效果。如上所述,當(dāng)從主機裝置重復(fù)對于特定地址的寫入時,可抑制在面之間的空閑塊獲取計數(shù)的差,以及可避免擦除計數(shù)集中在特定塊中。由于對于盡可能多的面執(zhí)行并行寫入,所以當(dāng)在緩沖存儲器中累計了對于多個不同地址的寫入數(shù)據(jù)時,可抑制寫入集中于特定面上,并且可保持優(yōu)良的傳輸性能。排列小周期并且延長排序規(guī)則的周期。為此,即使當(dāng)在來自主機裝置的寫入地址中存在周期性時,可抑制在空閑塊列表之間的空閑塊數(shù)目和活動塊數(shù)目之間的差。當(dāng)排列小周期時,由于最大化地實施了并行性,所以可保持傳輸性能。盡管描述了某些實施例,但是這些實施例僅通過實例來提出,并非限制本發(fā)明的范圍。當(dāng)然,這里描述的新穎性實施例可以通過多種其他形式實現(xiàn);此外,可以作出這里描述的實施例的形式的各種省略、替換和改變,而不脫離本發(fā)明的精神。所附權(quán)利要求及其等同物旨在覆蓋落入本發(fā)明的范圍和精神內(nèi)的這種形式或修改。
權(quán)利要求
1.一種存儲器系統(tǒng),包括非易失性存儲器,其包括多個存儲區(qū)域,每個存儲區(qū)域包括多個塊,每個塊是數(shù)據(jù)擦除的單位,所述非易失性存儲器被配置為能夠?qū)τ诓煌鎯^(qū)域中包括的塊進行并行寫入;管理單元,其保持對于每個存儲區(qū)域的空閑塊列表,所述空閑塊列表指示作為沒有存儲有效數(shù)據(jù)的塊的空閑塊;排序規(guī)則保持單元,其保持排序規(guī)則,所述排序規(guī)則是用于確定所述空閑塊列表的排序的信息;位置信息存儲單元,其存儲位置信息,所述位置信息指示在所述排序規(guī)則中空閑塊列表的位置;列表選擇單元,其選擇與所述位置信息指示的位置相應(yīng)的空閑塊列表; 塊選擇單元,其從所述列表選擇單元選擇的空閑塊列表選擇空閑塊; 寫入單元,其在所述塊選擇單元選擇的空閑塊中寫入數(shù)據(jù);以及更新單元,其在所述列表選擇單元選擇空閑塊列表之后,用指示隨后選擇的空閑塊列表的位置的位置信息來更新在所述位置信息存儲單元中存儲的位置信息。
2.如權(quán)利要求1所述的系統(tǒng),其中當(dāng)在選擇空閑塊中滿足所述塊選擇單元中確定的預(yù)定條件時,所述塊選擇單元跳過空閑塊的選擇;以及當(dāng)所述塊選擇單元跳過空閑塊的選擇時,所述更新單元進一步更新所述位置信息。
3.如權(quán)利要求2所述的系統(tǒng),其中,所述塊選擇單元對于每個空閑塊列表計算所述列表選擇單元選擇空閑塊列表的次數(shù),以及當(dāng)所述列表選擇單元選擇空閑塊列表并且計算選擇的列表的次數(shù)等于或大于閾值時跳過在所述空閑塊列表中空閑塊的選擇。
4.如權(quán)利要求2所述的系統(tǒng),其中,所述塊選擇單元計算所述更新單元更新位置信息的次數(shù),以及當(dāng)計算的次數(shù)等于或大于閾值時跳過空閑塊的選擇。
5.如權(quán)利要求2所述的系統(tǒng),其中,所述位置信息存儲單元存儲位置信息,其指示基于使用多個不同排序規(guī)則生成的長期排序規(guī)則所確定的空閑塊列表的排序。
6.如權(quán)利要求5所述的系統(tǒng),其中,所述列表選擇單元通過使用多個排序規(guī)則和位置信息的運算來選擇空閑塊列表。
7.如權(quán)利要求5所述的系統(tǒng),其中,所述排序規(guī)則保持單元保持預(yù)先生成的長期排序規(guī)則;以及所述列表選擇單元參照在所述排序規(guī)則保持單元中保持的長期排序規(guī)則,并選擇所述空閑塊列表。
8.如權(quán)利要求5所述的系統(tǒng),其中,所述列表選擇單元使用隨機數(shù)動態(tài)生成所述長期排序規(guī)則,并使用生成的長期排序規(guī)則來選擇所述空閑塊列表。
9.一種存儲器系統(tǒng),包括非易失性存儲器,其包括多個存儲區(qū)域,每個存儲區(qū)域包括多個塊,每個塊是數(shù)據(jù)擦除的單位,所述非易失性存儲器被配置為能夠?qū)τ诓煌鎯^(qū)域中包括的塊進行并行寫入;管理單元,其保持對于每個存儲區(qū)域的空閑塊列表,所述空閑塊列表指示作為沒有存儲有效數(shù)據(jù)的塊的空閑塊;排序規(guī)則保持單元,其保持排序規(guī)則,所述排序規(guī)則是用于確定所述空閑塊列表的排序的信息;位置信息存儲單元,其存儲位置信息,所述位置信息指示在所述排序規(guī)則中空閑塊列表的位置;列表選擇單元,其選擇與所述位置信息指示的位置相應(yīng)的空閑塊列表; 塊選擇單元,其從所述列表選擇單元選擇的空閑塊列表選擇空閑塊; 寫入單元,其在所述塊選擇單元選擇的空閑塊中寫入數(shù)據(jù);以及更新單元,其在所述列表選擇單元選擇空閑塊列表之后,用指示隨后選擇的空閑塊列表的位置的位置信息來更新在所述位置信息存儲單元中存儲的位置信息,其中所述位置信息存儲單元存儲位置信息,其指示基于使用多個不同排序規(guī)則生成的長期排序規(guī)則所確定的每個空閑塊列表的排序。
全文摘要
根據(jù)一個實施例,一種存儲器系統(tǒng)包括非易失性存儲器、管理單元、排序規(guī)則保持單元、位置信息存儲單元、列表選擇單元、塊選擇單元、寫入單元、和更新單元。管理單元保持對于每個存儲區(qū)域的空閑塊列表,其指示空閑塊。排序規(guī)則保持單元保持排序規(guī)則,其用于確定空閑塊列表的排序。位置信息存儲單元存儲位置信息,其指示在排序規(guī)則中空閑塊列表的位置。列表選擇單元選擇與位置信息指示的位置相應(yīng)的空閑塊列表,以及塊選擇單元從中選擇空閑塊。更新單元在列表選擇之后,用指示隨后選擇的空閑塊列表的位置的位置信息來更新在位置信息存儲單元中的位置信息。
文檔編號G06F12/06GK102169461SQ20111004596
公開日2011年8月31日 申請日期2011年2月25日 優(yōu)先權(quán)日2010年2月26日
發(fā)明者矢尾浩 申請人:株式會社東芝