專(zhuān)利名稱(chēng):數(shù)據(jù)寫(xiě)入方法及閃存控制器與閃存存儲(chǔ)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于閃存的數(shù)據(jù)寫(xiě)入方法,尤其涉及一種能夠有效率地將數(shù)據(jù)寫(xiě) 入至閃存的數(shù)據(jù)寫(xiě)入方法以及使用此方法的閃存控制器與閃存存儲(chǔ)系統(tǒng)。
背景技術(shù):
由于閃存(Flash Memory)具有數(shù)據(jù)非揮發(fā)性、省電、體積小與無(wú)機(jī)械結(jié)構(gòu)等特性, 最適合使用于由電池供電的可攜式電子產(chǎn)品上。例如,固態(tài)硬盤(pán)就是一種以NAND閃存作為 存儲(chǔ)媒體的存儲(chǔ)裝置,并且已廣泛配置于筆記型電腦中作為主要的存儲(chǔ)裝置。一般來(lái)說(shuō),閃存存儲(chǔ)裝置的閃存芯片(chip)會(huì)劃分為多個(gè)實(shí)體區(qū)塊,其中實(shí)體區(qū) 塊還劃分為多個(gè)實(shí)體頁(yè)面,而實(shí)體區(qū)塊是閃存的抹除單位并且實(shí)體頁(yè)面是閃存的寫(xiě)入單 位。由于在程式化閃存的記憶胞時(shí),僅能執(zhí)行單向的程式化(即,僅能將記憶胞的值由1程 式化為0),因此無(wú)法對(duì)已程式化的實(shí)體頁(yè)面(即,存有舊數(shù)據(jù)的頁(yè)面)直接進(jìn)行寫(xiě)入,而是 必須先將此實(shí)體頁(yè)面抹除后方可重新程式化。特別是,由于閃存的抹除是以實(shí)體區(qū)塊為單 位,因此當(dāng)欲將存有舊數(shù)據(jù)的實(shí)體頁(yè)面執(zhí)行抹除運(yùn)作時(shí),必須對(duì)此實(shí)體頁(yè)面所屬的整個(gè)實(shí) 體區(qū)塊進(jìn)行抹除。因此,閃存芯片的實(shí)體區(qū)塊會(huì)被區(qū)分為數(shù)據(jù)區(qū)與備用區(qū),其中數(shù)據(jù)區(qū)的 實(shí)體區(qū)塊是已被使用來(lái)存儲(chǔ)數(shù)據(jù)的實(shí)體區(qū)塊,而備用區(qū)中的實(shí)體區(qū)塊是未被使用的實(shí)體區(qū) 塊,其中當(dāng)主機(jī)系統(tǒng)欲寫(xiě)入數(shù)據(jù)至閃存存儲(chǔ)裝置時(shí),閃存存儲(chǔ)裝置的控制電路會(huì)從備用區(qū) 中提取實(shí)體區(qū)塊來(lái)寫(xiě)入數(shù)據(jù),并且將所提取的實(shí)體區(qū)塊會(huì)關(guān)聯(lián)為數(shù)據(jù)區(qū)。并且,當(dāng)數(shù)據(jù)區(qū)的 實(shí)體區(qū)塊被執(zhí)行抹除運(yùn)作(erase operation)后,已抹除的實(shí)體區(qū)塊會(huì)被關(guān)聯(lián)為備用區(qū)。由于主機(jī)系統(tǒng)是以邏輯地址來(lái)進(jìn)行寫(xiě)入,并且主機(jī)系統(tǒng)寫(xiě)入數(shù)據(jù)至邏輯地址時(shí)經(jīng) 常不會(huì)依據(jù)邏輯地址的順序來(lái)寫(xiě)入?;?,當(dāng)閃存存儲(chǔ)裝置需要對(duì)實(shí)體區(qū)塊進(jìn)行抹除運(yùn)作 時(shí),閃存存儲(chǔ)裝置需要花費(fèi)相當(dāng)大的時(shí)間來(lái)整理實(shí)體區(qū)塊中的有效數(shù)據(jù)與無(wú)效數(shù)據(jù)。因此, 如何提升在閃存寫(xiě)入數(shù)據(jù)的速度是此領(lǐng)域技術(shù)人員所致力的目標(biāo)。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種數(shù)據(jù)寫(xiě)入方法,其能夠有效地縮短寫(xiě)入數(shù)據(jù)至閃存的時(shí) 間。本發(fā)明的又一目的是提供一種閃存控制器,其能夠有效地縮短寫(xiě)入數(shù)據(jù)至閃存的 時(shí)間。本發(fā)明的另一目的是提供一種閃存存儲(chǔ)系統(tǒng),其能夠有效地縮短寫(xiě)入數(shù)據(jù)至閃存 的時(shí)間。本發(fā)明實(shí)施例提供一種數(shù)據(jù)寫(xiě)入方法,用于將來(lái)自于主機(jī)系統(tǒng)的數(shù)據(jù)寫(xiě)入至閃存 芯片中,其中此閃存芯片包括多個(gè)實(shí)體區(qū)塊,每一實(shí)體區(qū)塊具有多個(gè)實(shí)體頁(yè)地址。本數(shù)據(jù)寫(xiě) 入方法包括配置多個(gè)邏輯頁(yè)地址;將邏輯頁(yè)地址分組為多個(gè)邏輯區(qū)塊;以及記錄每一邏輯 區(qū)塊的數(shù)據(jù)散亂度,其中每一邏輯區(qū)塊的數(shù)據(jù)散亂度為用于存儲(chǔ)屬于對(duì)應(yīng)的邏輯區(qū)塊的數(shù) 據(jù)的實(shí)體區(qū)塊的數(shù)目。本數(shù)據(jù)寫(xiě)入方法也包括從主機(jī)系統(tǒng)中接收寫(xiě)入數(shù)據(jù),其中此寫(xiě)入數(shù)據(jù)是被寫(xiě)入至邏輯頁(yè)地址之中的一第一邏輯頁(yè)地址,并且此第一邏輯頁(yè)地址屬于邏輯區(qū)塊 之中的一第一邏輯區(qū)塊。本數(shù)據(jù)寫(xiě)入方法還包括取得實(shí)體頁(yè)地址之中的一第一實(shí)體頁(yè)地 址。本數(shù)據(jù)寫(xiě)入方法還包括依據(jù)第一邏輯區(qū)塊的數(shù)據(jù)散亂度以及所取得的第一實(shí)體頁(yè)地址 來(lái)將此寫(xiě)入數(shù)據(jù)寫(xiě)入至閃存芯片中,其中每一邏輯區(qū)塊的數(shù)據(jù)散亂度皆不大于一邏輯區(qū)塊 數(shù)據(jù)散亂度閾值。本發(fā)明實(shí)施例提供一種閃存控制器,用于將來(lái)自于主機(jī)系統(tǒng)的數(shù)據(jù)寫(xiě)入至閃存芯 片中,其中此閃存芯片包括多個(gè)實(shí)體區(qū)塊,且每一實(shí)體區(qū)塊具有多個(gè)實(shí)體頁(yè)地址。本閃存控 制器包括微處理器單元、閃存接口單元、主機(jī)接口單元與存儲(chǔ)器管理單元。閃存接口單元 電性連接至微處理器單元,用以電性連接至上述閃存芯片。主機(jī)接口單元電性連接至微處 理器單元,用以電性連接至主機(jī)系統(tǒng)。存儲(chǔ)器管理單元電性連接至微處理器單元,用以配置 多個(gè)邏輯頁(yè)地址,將邏輯頁(yè)地址分組為多個(gè)邏輯區(qū)塊,并且記錄每一邏輯區(qū)塊的數(shù)據(jù)散亂 度,其中每一邏輯區(qū)塊的數(shù)據(jù)散亂度為用于存儲(chǔ)屬于對(duì)應(yīng)的邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊的 數(shù)目。此外,主機(jī)接口單元從主機(jī)系統(tǒng)中接收一寫(xiě)入數(shù)據(jù),其中此寫(xiě)入數(shù)據(jù)是被寫(xiě)入至邏輯 頁(yè)地址之中的一第一邏輯頁(yè)地址,并且第一邏輯頁(yè)地址屬于邏輯區(qū)塊之中的一第一邏輯區(qū) 塊。另外,存儲(chǔ)器管理單元取得實(shí)體頁(yè)地址之中的一第一實(shí)體頁(yè)地址。再者,存儲(chǔ)器管理單 元依據(jù)第一邏輯區(qū)塊的數(shù)據(jù)散亂度以及所取得的第一實(shí)體頁(yè)地址來(lái)將此寫(xiě)入數(shù)據(jù)寫(xiě)入至 閃存芯片中,其中每一邏輯區(qū)塊的數(shù)據(jù)散亂度皆不大于一邏輯區(qū)塊數(shù)據(jù)散亂度閾值。本發(fā)明實(shí)施例提供一種閃存存儲(chǔ)系統(tǒng),其包括閃存芯片、連接器與閃存控制器。閃 存芯片具有多個(gè)實(shí)體區(qū)塊并且每一實(shí)體區(qū)塊具有多個(gè)實(shí)體頁(yè)地址。連接器用以電性連接至 主機(jī)系統(tǒng)。閃存控制器電性連接至閃存芯片與連接器,用以配置多個(gè)邏輯頁(yè)地址,將邏輯頁(yè) 地址分組為多個(gè)邏輯區(qū)塊,并且記錄每一邏輯區(qū)塊記錄的數(shù)據(jù)散亂度,其中每一邏輯區(qū)塊 的數(shù)據(jù)散亂度為用于存儲(chǔ)屬于對(duì)應(yīng)的邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊的數(shù)目。此外,閃存控制 器從主機(jī)系統(tǒng)中接收一寫(xiě)入數(shù)據(jù),其中此寫(xiě)入數(shù)據(jù)是被寫(xiě)入至邏輯頁(yè)地址之中的一第一邏 輯頁(yè)地址,并且此第一邏輯頁(yè)地址屬于邏輯區(qū)塊之中的一第一邏輯區(qū)塊。另外,閃存控制器 取得實(shí)體頁(yè)地址之中的一第一實(shí)體頁(yè)地址。再者,閃存控制器依據(jù)第一邏輯區(qū)塊的數(shù)據(jù)散 亂度以及所取得的第一實(shí)體頁(yè)地址來(lái)將此寫(xiě)入數(shù)據(jù)寫(xiě)入至閃存芯片中,其中每一邏輯區(qū)塊 的數(shù)據(jù)散亂度皆不大于一邏輯區(qū)塊數(shù)據(jù)散亂度閾值。基于上述,本發(fā)明實(shí)施例能夠避免所存儲(chǔ)的數(shù)據(jù)過(guò)于分散,由此有效地縮短執(zhí)行 主機(jī)寫(xiě)入指令的時(shí)間。為讓本發(fā)明的上述特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉實(shí)施例,并結(jié)合附圖作詳 細(xì)說(shuō)明如下。
圖IA是本發(fā)明第一實(shí)施例使用閃存存儲(chǔ)裝置的主機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。圖IB是本發(fā)明實(shí)施例的電腦、輸入/輸出裝置與閃存存儲(chǔ)裝置的示意圖。圖IC是本發(fā)明另一實(shí)施例的主機(jī)系統(tǒng)與閃存存儲(chǔ)裝置的示意圖。圖ID是圖IA中閃存存儲(chǔ)裝置的結(jié)構(gòu)示意圖。圖2是本發(fā)明另一實(shí)施例的閃存控制器的結(jié)構(gòu)示意圖。圖3A是本發(fā)明第一實(shí)施例的閃存芯片的結(jié)構(gòu)示意圖。
圖;3B是本發(fā)明第一實(shí)施例的邏輯頁(yè)地址與實(shí)體頁(yè)地址的映射示意圖。圖4A與圖4B是本發(fā)明第一實(shí)施例的一邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表及實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè) 映射表的示意圖。圖5A與圖5B是本發(fā)明第一實(shí)施例的另一邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表及實(shí)體頁(yè)轉(zhuǎn)邏輯 頁(yè)映射表的示意圖。圖6A與圖6B是本發(fā)明第一實(shí)施例的又一邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表及實(shí)體頁(yè)轉(zhuǎn)邏輯 頁(yè)映射表的示意圖。
圖7A、圖7B與圖7C是本發(fā)明第一實(shí)施例的一數(shù)據(jù)寫(xiě)入示意圖< 圖8A與圖8B是本發(fā)明第一實(shí)施例的另一數(shù)據(jù)寫(xiě)入示意圖。 圖9A與圖9B是本發(fā)明第一實(shí)施例的又一數(shù)據(jù)寫(xiě)入示意圖。 圖10是本發(fā)明第一實(shí)施例的數(shù)據(jù)寫(xiě)入方法的流程圖。 圖11是圖10中步驟S1007的詳細(xì)步驟的流程圖。 圖12A與圖12B是本發(fā)明第二實(shí)施例的一數(shù)據(jù)寫(xiě)入示意圖。 圖13A與圖1 是本發(fā)明第二實(shí)施例的另一數(shù)據(jù)寫(xiě)入示意圖。 圖14A與圖14B是本發(fā)明第二實(shí)施例的又一數(shù)據(jù)寫(xiě)入示意圖。 圖15是本發(fā)明第二實(shí)施例的數(shù)據(jù)寫(xiě)入方法的流程圖。 圖16A與16B是圖15中步驟S1507的詳細(xì)步驟的流程圖。 主要元件符號(hào)說(shuō)明1000 主機(jī)系統(tǒng); 1102 微處理器; 1106:輸入/輸出裝置; 1110:數(shù)據(jù)傳輸接口 ; 1204 鍵盤(pán); 1208 打印機(jī); 1214 存儲(chǔ)卡; 1310 數(shù)碼相機(jī); 1314 =MMC 卡; 1318 =CF 卡; 100:閃存存儲(chǔ)裝置; 104、104'閃存控制器 122-(0) 122-(N)實(shí)體區(qū)塊;204 存儲(chǔ)器管理單元;208 閃存接口單元;254 電源管理單元;302 系統(tǒng)區(qū);304a:數(shù)據(jù)區(qū);306 取代區(qū);410 邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表;LBA-(O) LBA-(L)邏輯頁(yè)地址;PBA-(O) PBA-(K)實(shí)體頁(yè)地址1100 電腦; 1104 隨機(jī)存取存儲(chǔ)器; 1108 系統(tǒng)匯流排; 1202 鼠標(biāo); 1206 顯示器; 1212 隨身碟; 1216 固態(tài)硬盤(pán); 1312 =SD 卡; 1316 記憶棒; 1320 嵌入式存儲(chǔ)裝置; 102 連接器; 106 閃存芯片; 202 微處理器單元; 206 主機(jī)接口單元; 252 緩沖存儲(chǔ)器; 256 錯(cuò)誤校正單元; 304 存儲(chǔ)區(qū); 304b 備用區(qū);350-(0) ~ 350-(H)邏輯區(qū)塊 420實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表;
S1001、S1003、S1005、S1007、S1101、S1103、S1105、S1107、S1109、SlllUS 1113、S1115、S 1117 數(shù)據(jù)寫(xiě)入步驟;S1501、S1503、S1505、S1507、S1601、S1603、S1605、S1607、S1609、S1611、S1613、S1615、S1617、S1619、S1621、S1623、S1625、S1627、S1629、S1631 數(shù)據(jù)寫(xiě)入步驟。
具體實(shí)施例方式閃存存儲(chǔ)裝置一般而言包括閃存芯片與控制器(亦稱(chēng),控制電路)。通常閃存存儲(chǔ) 裝置會(huì)與主機(jī)系統(tǒng)一起使用,以使主機(jī)系統(tǒng)可將數(shù)據(jù)寫(xiě)入至閃存存儲(chǔ)裝置或從閃存存儲(chǔ)裝 置中讀取數(shù)據(jù)。另外,也有閃存存儲(chǔ)裝置是包括嵌入式閃存與可執(zhí)行于主機(jī)系統(tǒng)上以實(shí)質(zhì) 地作為此嵌入式閃存的控制器的軟件。第一實(shí)施例圖IA是本發(fā)明第一實(shí)施例使用閃存存儲(chǔ)裝置的主機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。圖IB是本發(fā)明實(shí)施例的電腦、輸入/輸出裝置與閃存存儲(chǔ)裝置的示意圖。圖IC 是本發(fā)明另一實(shí)施例的主機(jī)系統(tǒng)與閃存存儲(chǔ)裝置的示意圖。請(qǐng)參照?qǐng)D1A,主機(jī)系統(tǒng)1000包括電腦1100與輸入/輸出(input/output,簡(jiǎn)稱(chēng)為 I/O)裝置1106。電腦1100包括微處理器1102、隨機(jī)存取存儲(chǔ)器(randomaccess memory, 簡(jiǎn)稱(chēng)為RAM)1104、系統(tǒng)匯流排1108以及數(shù)據(jù)傳輸接口 1110。輸入/輸出裝置1106包括 如圖IB所示的鼠標(biāo)1202、鍵盤(pán)1204、顯示器1206與打印機(jī)1208。必須了解的是,圖IB所 示的裝置非限制輸入/輸出裝置1106,輸入/輸出裝置1106還可包括其他裝置。在本發(fā)明實(shí)施例中,閃存存儲(chǔ)裝置100是通過(guò)數(shù)據(jù)傳輸接口 1110與主機(jī)系統(tǒng)1000 的其他元件電性連接。藉由微處理器1102、隨機(jī)存取存儲(chǔ)器1104與輸入/輸出裝置1106, 處理主機(jī)系統(tǒng)1000可將數(shù)據(jù)寫(xiě)入至閃存存儲(chǔ)裝置100或從閃存存儲(chǔ)裝置100中讀取數(shù)據(jù)。 例如,閃存存儲(chǔ)裝置100可以是如圖IB所示的隨身碟1212、存儲(chǔ)卡1214或固態(tài)硬盤(pán)(Solid State Drive,簡(jiǎn)稱(chēng)為:SSD)1216。一般而言,主機(jī)系統(tǒng)1000為可存儲(chǔ)數(shù)據(jù)的任意系統(tǒng)。雖然在本實(shí)施例中,主機(jī) 系統(tǒng)1000是以電腦系統(tǒng)來(lái)作說(shuō)明,然而,在本發(fā)明另一實(shí)施例中,主機(jī)系統(tǒng)1000也可以 是數(shù)碼相機(jī)、攝影機(jī)、通信裝置、音訊播放器或視訊播放器等系統(tǒng)。例如,在主機(jī)系統(tǒng)為數(shù) 碼相機(jī)1310時(shí),閃存存儲(chǔ)裝置則為其所使用的SD卡1312、MMC卡1314、記憶棒(memory stick) 1316、或CF卡1318或嵌入式存儲(chǔ)裝置1320(如圖IC所示)。嵌入式存儲(chǔ)裝置1320 包括嵌入式多媒體卡(Embedded MMC,簡(jiǎn)稱(chēng)為eMMC)。值得一提的是,嵌入式多媒體卡直接 電性連接于主機(jī)系統(tǒng)的基板上。圖ID是圖IA中閃存存儲(chǔ)裝置的結(jié)構(gòu)示意圖。請(qǐng)參照?qǐng)D1D,閃存存儲(chǔ)裝置100包括連接器102、閃存控制器104與閃存芯片106。連接器102是電性連接至閃存控制器104并且用以電性連接至主機(jī)系統(tǒng)1000。 在本實(shí)施例中,連接器102為序列先進(jìn)附件(Serial Advanced TechnologyAttachment, 簡(jiǎn)稱(chēng)為SATA)連接器。然而,必須了解的是本發(fā)明不限于此,連接器102也可以是平行先 進(jìn)附件(Parallel Advanced Technology Attachment,簡(jiǎn)稱(chēng)為PATA)連接器、通用序列匯 流排(Universal Serial Bus,簡(jiǎn)稱(chēng)為:USB)連接器、電氣和電子工程師協(xié)會(huì)(Instituteof Electrical and Electronic Engineers,簡(jiǎn)稱(chēng)為IEEE) 1394 連接器、高速外圍器 件連接接口 (Peripheral ComponentInterconnect Express,簡(jiǎn)禾爾為PCI Express)連 接器、安全數(shù)位(secure digital,簡(jiǎn)稱(chēng)為SD)接口連接器、記憶棒(Memory Sick,簡(jiǎn) 稱(chēng)為MS)接口連接器、多媒體存儲(chǔ)卡(Multi Media Card,簡(jiǎn)稱(chēng)為MMC)接口連接器、 小型快閃(CompactFlash,簡(jiǎn)稱(chēng)為CF)接口連接器、整合式驅(qū)動(dòng)電子接口 Qntegrated DeviceElectronics,簡(jiǎn)稱(chēng)為IDE)連接器或其他適合的連接器。閃存控制器104會(huì)執(zhí)行以硬件型式或韌體型式實(shí)作的多個(gè)邏輯閘或控制指令,并 且根據(jù)主機(jī)系統(tǒng)1000的指令在閃存芯片106中進(jìn)行數(shù)據(jù)的寫(xiě)入、讀取與抹除等運(yùn)作。閃存 控制器104包括微處理器單元202、存儲(chǔ)器管理單元204、主機(jī)接口單元206、閃存接口單元 208。微處理器單元202為閃存控制器104的主控單元,用以與存儲(chǔ)器管理單元204、主 機(jī)接口單元206與閃存接口單元208等協(xié)同合作以進(jìn)行閃存存儲(chǔ)裝置100的各種運(yùn)作。存儲(chǔ)器管理單元204是電性連接至微處理器單元202,用以執(zhí)行根據(jù)本實(shí)施例的 數(shù)據(jù)寫(xiě)入機(jī)制與區(qū)塊管理機(jī)制,存儲(chǔ)器管理單元204的運(yùn)作將在下面結(jié)合附圖作詳細(xì)說(shuō) 明。在本實(shí)施例中,存儲(chǔ)器管理單元204是以一韌體型式實(shí)作在閃存控制器104中。 例如,將包括多個(gè)控制指令的存儲(chǔ)器管理單元204燒錄至一程式存儲(chǔ)器(例如,只讀存儲(chǔ)器 (Read Only Memory,簡(jiǎn)稱(chēng)為R0M))中并且將此程式存儲(chǔ)器嵌入在閃存控制器104中,當(dāng)閃 存存儲(chǔ)裝置100運(yùn)作時(shí),存儲(chǔ)器管理單元204的多個(gè)控制指令會(huì)由微處理器單元202來(lái)執(zhí) 行以完成根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)寫(xiě)入機(jī)制與區(qū)塊管理機(jī)制。在本發(fā)明另一實(shí)施例中,存儲(chǔ)器管理單元204的控制指令也可以程式碼型式存儲(chǔ) 于閃存芯片106的特定區(qū)域(例如,閃存芯片中專(zhuān)用于存放系統(tǒng)數(shù)據(jù)的系統(tǒng)區(qū))中。同樣 的,當(dāng)閃存存儲(chǔ)裝置100運(yùn)作時(shí),存儲(chǔ)器管理單元204的多個(gè)控制指令會(huì)由微處理器單元 202來(lái)執(zhí)行。此外,在本發(fā)明另一實(shí)施例中,存儲(chǔ)器管理單元204也可以一硬件型式實(shí)作在 閃存控制器104中。主機(jī)接口單元206是電性連接至微處理器單元202并且用以接收與識(shí)別主機(jī)系統(tǒng) 1000所傳送的指令與數(shù)據(jù)。也就是說(shuō),主機(jī)系統(tǒng)1000所傳送的指令與數(shù)據(jù)會(huì)通過(guò)主機(jī)接口 單元206來(lái)傳送至微處理器單元202。在本實(shí)施例中,主機(jī)接口單元206是對(duì)應(yīng)連接器102 為SATA接口。然而,必須了解的是本發(fā)明不限于此,主機(jī)接口單元206也可以是PATA接口、 USB 接口、IEEE1394 接口、PCI Express 接口、SD 接口、MS 接口、MMC 接口、CF 接口、IDE 接 口或其他適合的數(shù)據(jù)傳輸接口。閃存接口單元208是電性連接至微處理器單元202并且用以存取閃存芯片106。 也就是說(shuō),欲寫(xiě)入至閃存芯片106的數(shù)據(jù)會(huì)經(jīng)由閃存接口單元208轉(zhuǎn)換為閃存芯片106所 能接受的格式。在本發(fā)明另一實(shí)施例中,閃存控制器還可包括其他功能模組。圖2是本發(fā)明另一 實(shí)施例的閃存控制器的結(jié)構(gòu)示意圖。請(qǐng)參照?qǐng)D2,除了微處理器單元202、存儲(chǔ)器管理單元204、主機(jī)接口單元206與閃 存接口單元208之外,本發(fā)明另一實(shí)施例的閃存控制器104'還包括緩沖存儲(chǔ)器252、電源 管理單元2M與錯(cuò)誤校正單元256。
緩沖存儲(chǔ)器252是電性連接至微處理器單元202并且用以暫存來(lái)自于主機(jī)系統(tǒng) 1000的數(shù)據(jù)與指令或來(lái)自于閃存芯片106的數(shù)據(jù)。電源管理單元2M是電性連接至微處理器單元202并且用以控制閃存存儲(chǔ)裝置 100的電源。錯(cuò)誤校正單元256是電性連接至微處理器單元202并且用以執(zhí)行一錯(cuò)誤校正程序 以確保數(shù)據(jù)的正確性。具體來(lái)說(shuō),當(dāng)存儲(chǔ)器管理單元204從主機(jī)系統(tǒng)1000中接收到主機(jī)寫(xiě) 入指令時(shí),錯(cuò)誤校正單元256會(huì)為對(duì)應(yīng)此主機(jī)寫(xiě)入指令的寫(xiě)入數(shù)據(jù)產(chǎn)生對(duì)應(yīng)的錯(cuò)誤檢查與 校正碼(Error Checking and CorrectingCode,簡(jiǎn)稱(chēng)為ECC Code),并且存儲(chǔ)器管理單元 204會(huì)將此寫(xiě)入數(shù)據(jù)與對(duì)應(yīng)的錯(cuò)誤校正碼寫(xiě)入至閃存芯片106中。之后,當(dāng)存儲(chǔ)器管理單 元204從閃存芯片106中讀取數(shù)據(jù)時(shí)會(huì)同時(shí)讀取此數(shù)據(jù)對(duì)應(yīng)的錯(cuò)誤校正碼,并且錯(cuò)誤校正 單元256會(huì)依據(jù)此錯(cuò)誤校正碼對(duì)所讀取的數(shù)據(jù)執(zhí)行錯(cuò)誤校正程序。請(qǐng)?jiān)賲⒄請(qǐng)D1D,閃存芯片106是電性連接至閃存控制器104并且用以存儲(chǔ)數(shù)據(jù)。 閃存芯片106具有實(shí)體區(qū)塊122-(0) 122-(N)。實(shí)體區(qū)塊為抹除的最小單位。亦即,每 一實(shí)體區(qū)塊含有最小數(shù)目之一并被抹除的記憶胞。每一實(shí)體區(qū)塊具有數(shù)個(gè)實(shí)體頁(yè)面。在本 實(shí)施例中,實(shí)體頁(yè)面為程式化的最小單元。換言之,實(shí)體頁(yè)面為寫(xiě)入數(shù)據(jù)或讀取數(shù)據(jù)的最小 單元。每一實(shí)體頁(yè)面通常包括使用者數(shù)據(jù)區(qū)與冗余區(qū)。使用者數(shù)據(jù)區(qū)用以存儲(chǔ)使用者的數(shù) 據(jù),而冗余區(qū)用以存儲(chǔ)系統(tǒng)的數(shù)據(jù)(例如,錯(cuò)誤檢查與校正碼)。在本實(shí)施例中,閃存芯片 106為多層記憶胞(Multi Level Cell,簡(jiǎn)稱(chēng)為MLC)NAND閃存芯片。然而,本發(fā)明不限于 此,閃存芯片106也可是單層記憶胞(Single Level Cell,簡(jiǎn)稱(chēng)為SLC)NAND閃存芯片。圖3A是本發(fā)明第一實(shí)施例的閃存芯片的結(jié)構(gòu)示意圖。圖:3B是本發(fā)明第一實(shí)施例 的邏輯頁(yè)地址與實(shí)體頁(yè)地址的映射示意圖。必須了解的是,在此描述閃存的實(shí)體區(qū)塊的運(yùn) 作時(shí),以“提取”、“交換”、“分組”、“輪替”等詞來(lái)操作實(shí)體區(qū)塊是邏輯上的概念。也就是說(shuō), 閃存的實(shí)體區(qū)塊的實(shí)際位置并未變動(dòng),而是邏輯上對(duì)閃存的實(shí)體區(qū)塊進(jìn)行操作。請(qǐng)參照?qǐng)D3A,存儲(chǔ)器管理單元204會(huì)將實(shí)體區(qū)塊122- (0) 122- (N)邏 輯地分組為系統(tǒng)區(qū)(system area)302、存儲(chǔ)區(qū)(storage area)304與取代區(qū) (replacementarea)306。邏輯上屬于系統(tǒng)區(qū)302的實(shí)體區(qū)塊122-(0) 122_(S)是用以記錄系統(tǒng)數(shù)據(jù),此 系統(tǒng)數(shù)據(jù)包括關(guān)于閃存芯片的制造商與型號(hào)、每一閃存芯片的區(qū)域數(shù)、每一區(qū)域的實(shí)體區(qū) 塊的數(shù)目、每一實(shí)體區(qū)塊的實(shí)體頁(yè)面數(shù)等。邏輯上屬于存儲(chǔ)區(qū)304的實(shí)體區(qū)塊122-(S+1) 122-(A)是用以主機(jī)系統(tǒng)1000所 寫(xiě)入的數(shù)據(jù)。也就是說(shuō),閃存存儲(chǔ)裝置100會(huì)使用分組為存儲(chǔ)區(qū)304的實(shí)體區(qū)塊來(lái)實(shí)際地存 儲(chǔ)主機(jī)系統(tǒng)1000所寫(xiě)入的數(shù)據(jù)。更詳細(xì)來(lái)說(shuō),存儲(chǔ)區(qū)304的實(shí)體區(qū)塊122-(S+1) 122-(A) 還分組為數(shù)據(jù)區(qū)30 與備用區(qū)304b,其中數(shù)據(jù)區(qū)30 的實(shí)體區(qū)塊122-(S+1) 122-(D) 是已被使用來(lái)存儲(chǔ)數(shù)據(jù)的實(shí)體區(qū)塊,而備用區(qū)304b的實(shí)體區(qū)塊122-Φ+1) 122-(A)是未 被使用來(lái)存儲(chǔ)數(shù)據(jù)的實(shí)體區(qū)塊。具體來(lái)說(shuō),當(dāng)存儲(chǔ)器管理單元204從備用區(qū)304b提取實(shí)體 區(qū)塊來(lái)寫(xiě)入數(shù)據(jù)時(shí),所提取的實(shí)體區(qū)塊會(huì)被關(guān)聯(lián)為數(shù)據(jù)區(qū)304a,并且當(dāng)關(guān)聯(lián)為數(shù)據(jù)區(qū)30 的實(shí)體區(qū)塊被執(zhí)行抹除運(yùn)作后已抹除的實(shí)體區(qū)塊會(huì)被關(guān)聯(lián)為備用區(qū)304b。邏輯上屬于取代區(qū)306中的實(shí)體區(qū)塊122-(A+1) 122-(N)是替代實(shí)體區(qū)塊。例 如,閃存芯片106在出廠時(shí)會(huì)預(yù)留4%的實(shí)體區(qū)塊作為更換使用。也就是說(shuō),當(dāng)系統(tǒng)區(qū)302與存儲(chǔ)區(qū)304中的實(shí)體區(qū)塊損毀時(shí),預(yù)留在取代區(qū)306中的實(shí)體區(qū)塊可用以取代損壞的實(shí) 體區(qū)塊(S卩,壞實(shí)體區(qū)塊(bad block))。因此,倘若取代區(qū)306中仍存有可用的實(shí)體區(qū)塊且 發(fā)生實(shí)體區(qū)塊損毀時(shí),存儲(chǔ)器管理單元204會(huì)從取代區(qū)306中提取可用的實(shí)體區(qū)塊來(lái)更換 損毀的實(shí)體區(qū)塊。倘若取代區(qū)306中無(wú)可用的實(shí)體區(qū)塊且發(fā)生實(shí)體區(qū)塊損毀時(shí),則閃存存 儲(chǔ)裝置100將會(huì)被宣告為寫(xiě)入保護(hù)(write protect),而無(wú)法再寫(xiě)入數(shù)據(jù)。由于閃存存儲(chǔ)裝置100是以輪替地使用存儲(chǔ)區(qū)304的實(shí)體區(qū)塊來(lái)存儲(chǔ)主機(jī)系統(tǒng) 1000欲存儲(chǔ)的數(shù)據(jù),因此存儲(chǔ)器管理單元204會(huì)提供邏輯頁(yè)地址給主機(jī)系統(tǒng)1000以進(jìn) 行數(shù)據(jù)存取,并且存儲(chǔ)器管理單元204會(huì)將這些邏輯頁(yè)地址分組為邏輯區(qū)塊350-(0) 350- (H),其中邏輯區(qū)塊350- (0) 350- (H)會(huì)映射存儲(chǔ)區(qū)304的實(shí)體區(qū)塊(如圖所示)。 例如,存儲(chǔ)器管理單元204會(huì)維護(hù)邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表以及實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表來(lái)記 錄邏輯頁(yè)地址與實(shí)體頁(yè)地址之間的映射關(guān)系。具體來(lái)說(shuō),在本發(fā)明實(shí)施例中,當(dāng)主機(jī)系統(tǒng)1000在邏輯區(qū)塊350-(0) 350-(H) 的邏輯頁(yè)地址中寫(xiě)入數(shù)據(jù)時(shí),存儲(chǔ)器管理單元204將數(shù)據(jù)寫(xiě)入至存儲(chǔ)區(qū)304的實(shí)體區(qū)塊的 實(shí)體頁(yè)地址中。具體來(lái)說(shuō),當(dāng)存儲(chǔ)器管理單元204開(kāi)始使用實(shí)體區(qū)塊122-(D+1)來(lái)存儲(chǔ)主 機(jī)系統(tǒng)1000欲寫(xiě)入的數(shù)據(jù)時(shí),不管主機(jī)系統(tǒng)1000是寫(xiě)入那個(gè)邏輯頁(yè)地址,存儲(chǔ)器管理單元 會(huì)將數(shù)據(jù)依序地寫(xiě)入至實(shí)體區(qū)塊122-(D+1)的實(shí)體頁(yè)地址;而當(dāng)存儲(chǔ)器管理單元204開(kāi)始 使用實(shí)體區(qū)塊122-(D+2)來(lái)存儲(chǔ)主機(jī)系統(tǒng)1000欲寫(xiě)入的數(shù)據(jù)時(shí),不管主機(jī)系統(tǒng)1000是寫(xiě) 入那個(gè)邏輯頁(yè)地址,存儲(chǔ)器管理單元會(huì)將數(shù)據(jù)依序地寫(xiě)入至實(shí)體區(qū)塊122-(D+2)的實(shí)體頁(yè) 地址中。也就是說(shuō),在寫(xiě)入主機(jī)系統(tǒng)1000欲寫(xiě)入的數(shù)據(jù)時(shí),存儲(chǔ)器管理單元204會(huì)依序地 使用一個(gè)實(shí)體區(qū)塊內(nèi)的實(shí)體頁(yè)地址來(lái)寫(xiě)入數(shù)據(jù),并且當(dāng)此實(shí)體區(qū)塊內(nèi)的實(shí)體頁(yè)地址被使用 完后才會(huì)再選擇另一個(gè)無(wú)存儲(chǔ)數(shù)據(jù)的實(shí)體區(qū)塊(即,從備用區(qū)304b中提取一個(gè)實(shí)體區(qū)塊), 并且在新選擇的實(shí)體區(qū)塊的實(shí)體頁(yè)地址中繼續(xù)依序地寫(xiě)入數(shù)據(jù)。在本實(shí)施例中,在存儲(chǔ)器 管理單元204將數(shù)據(jù)寫(xiě)入至實(shí)體頁(yè)地址后,存儲(chǔ)器管理單元204會(huì)更新邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映 射表與實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表以正確地記錄邏輯頁(yè)地址與實(shí)體頁(yè)地址的映射關(guān)系。必須了解的是,在閃存存儲(chǔ)裝置100的運(yùn)作中,實(shí)體區(qū)塊122-(0) 122_(N)被分 組為系統(tǒng)區(qū)302、數(shù)據(jù)區(qū)30 、備用區(qū)304b與取代區(qū)306的映射關(guān)系會(huì)動(dòng)態(tài)地變動(dòng)。也就 是說(shuō),當(dāng)存儲(chǔ)器管理單元204將數(shù)據(jù)寫(xiě)入至原本屬于備用區(qū)304b的實(shí)體區(qū)塊(例如,實(shí)體 區(qū)塊122-Φ+2))后,此實(shí)體區(qū)塊會(huì)被關(guān)聯(lián)為數(shù)據(jù)區(qū)30如?;蛘?,當(dāng)數(shù)據(jù)區(qū)30 (或備用區(qū) 304b)中的實(shí)體區(qū)塊損壞時(shí)而被取代區(qū)306的實(shí)體區(qū)塊取代時(shí),則原本取代區(qū)306的實(shí)體區(qū) 塊會(huì)被關(guān)聯(lián)為數(shù)據(jù)區(qū)30 (或備用區(qū)304b)。值得一提的是,在本發(fā)明一實(shí)施例中,在存儲(chǔ)器管理單元204中還包括一可寫(xiě)入 實(shí)體頁(yè)指針(Available Physical Page Pointer),用以指示目前可寫(xiě)入實(shí)體頁(yè)地址?;?此,當(dāng)閃存控制器104執(zhí)行來(lái)自于主機(jī)系統(tǒng)1000的主機(jī)寫(xiě)入指令來(lái)寫(xiě)入數(shù)據(jù)時(shí),存儲(chǔ)器管 理單元204可依據(jù)可寫(xiě)入實(shí)體頁(yè)指針的標(biāo)記依序地將數(shù)據(jù)寫(xiě)入至閃存芯片106的實(shí)體頁(yè)地 址中。在此,目前可寫(xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊也稱(chēng)為目前可寫(xiě)入實(shí)體區(qū)塊。圖4A與圖4B是本發(fā)明第一實(shí)施例的一邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表及實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè) 映射表的示意圖,其中邏輯區(qū)塊350-(0) 350-(H)包括邏輯頁(yè)地址LBA-(O) LBA(L),并 且存儲(chǔ)區(qū)304的實(shí)體區(qū)塊包括實(shí)體頁(yè)地址PBA-(O) PBA (K)。在本實(shí)施例中,邏輯頁(yè)轉(zhuǎn)實(shí) 體頁(yè)映射表具有邏輯頁(yè)索引欄位與實(shí)體頁(yè)地址欄位來(lái)記錄每一邏輯頁(yè)地址所映射的實(shí)體頁(yè)地址,并且實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表具有實(shí)體頁(yè)索引欄位與邏輯頁(yè)地址欄位來(lái)記錄每一實(shí) 體頁(yè)地址所映射的邏輯頁(yè)地址。請(qǐng)參照?qǐng)D4A與4B,假設(shè)邏輯頁(yè)地址LBA- (0) 邏輯頁(yè)地址LBA- (L)是分別地映 射實(shí)體頁(yè)地址PBA- (0) 實(shí)體頁(yè)地址PBA- (L),也就是說(shuō),實(shí)體頁(yè)地址PBA- (0) 實(shí)體頁(yè)地 址PBA-(L)已分別存儲(chǔ)主機(jī)系統(tǒng)1000在邏輯頁(yè)地址LBA-(O) 邏輯頁(yè)地址LBA-(L)中所 寫(xiě)入的數(shù)據(jù)。因此,邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表410以及實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表420會(huì)記錄這 些映射關(guān)系,并且此時(shí)可寫(xiě)入實(shí)體頁(yè)指針會(huì)指向?qū)嶓w頁(yè)地址PBA-(L+1)。圖5A與圖5B是本發(fā)明第一實(shí)施例的另一邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表及實(shí)體頁(yè)轉(zhuǎn)邏輯 頁(yè)映射表的示意圖。請(qǐng)參照?qǐng)D5A與5B,倘若在圖4A與圖4B的映射關(guān)系下主機(jī)系統(tǒng)1000欲寫(xiě)入數(shù)據(jù) 至邏輯頁(yè)地址LBA-(I)時(shí),存儲(chǔ)器管理單元204會(huì)依據(jù)可寫(xiě)入實(shí)體頁(yè)指針將主機(jī)系統(tǒng)1000 欲寫(xiě)入的數(shù)據(jù)寫(xiě)入至實(shí)體頁(yè)地址PBA-(L+1)中,并且將可寫(xiě)入實(shí)體頁(yè)指針改為指向?qū)嶓w頁(yè) 地址PBA-(L+》。此時(shí),存儲(chǔ)器管理單元204會(huì)在邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表410中將邏輯頁(yè)地 址LBA-(I)的映射更新為實(shí)體頁(yè)地址PBA-(L+1),并且在實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表420中將實(shí) 體頁(yè)地址PBA-(L+1)的映射更新為邏輯頁(yè)地址LBA-(I)。圖6A與圖6B是本發(fā)明第一實(shí)施例的又一邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表及實(shí)體頁(yè)轉(zhuǎn)邏輯 頁(yè)映射表的示意圖。請(qǐng)參照?qǐng)D6A與6B,倘若在圖5A與圖5B的映射關(guān)系下主機(jī)系統(tǒng)1000欲寫(xiě)入數(shù)據(jù)至 邏輯頁(yè)地址LBA-(129)時(shí),存儲(chǔ)器管理單元204會(huì)依據(jù)可寫(xiě)入實(shí)體頁(yè)指針將主機(jī)系統(tǒng)1000 欲寫(xiě)入的數(shù)據(jù)寫(xiě)入至實(shí)體頁(yè)地址PBA-(L+幻中,并且將可寫(xiě)入實(shí)體頁(yè)指針改為指向?qū)嶓w頁(yè) 地址PBA-(L+;3)。此時(shí),存儲(chǔ)器管理單元204會(huì)在邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表410中將邏輯頁(yè)地 址LBA-(129)的映射更新為實(shí)體頁(yè)地址PBA-(L+2),并且在實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表420中將 實(shí)體頁(yè)地址PBA-(L+2)的映射更新為邏輯頁(yè)地址LBA-(129)(如圖6B所示)。此外,在本發(fā)明實(shí)施例中,存儲(chǔ)器管理單元204會(huì)比對(duì)邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表410 以及實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表420中的記錄來(lái)判斷哪些實(shí)體頁(yè)地址為無(wú)效的實(shí)體頁(yè)地址與 有效的實(shí)體頁(yè)地址,其中所謂無(wú)效的實(shí)體頁(yè)地址是指其中所存儲(chǔ)的數(shù)據(jù)為無(wú)效的舊數(shù)據(jù), 而有效的實(shí)體頁(yè)地址是指其中所存儲(chǔ)的數(shù)據(jù)是映射目前邏輯頁(yè)地址的有效數(shù)據(jù)。例如,以圖6A與6B為例,當(dāng)欲判斷實(shí)體頁(yè)地址PBA- (0)是否為有效的實(shí)體頁(yè)地址 時(shí),存儲(chǔ)器管理單元204會(huì)從實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表420中讀出實(shí)體頁(yè)地址PBA-(O)是映 射邏輯頁(yè)地址LBA- (0),并且依據(jù)邏輯頁(yè)地址LBA- (0)從邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表410讀出邏 輯頁(yè)地址LBA-(O)是映射實(shí)體頁(yè)地址PBA-(O),因此實(shí)體頁(yè)地址PBA-(O)為有效的實(shí)體頁(yè)地 址。另外,當(dāng)欲判斷實(shí)體頁(yè)地址PBA-(I)是否為有效的實(shí)體頁(yè)地址時(shí),存儲(chǔ)器管理單元204 會(huì)從實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表420中讀出實(shí)體頁(yè)地址PBA-(I)是映射邏輯頁(yè)地址LBA-(I),并 且依據(jù)邏輯頁(yè)地址LBA-(I)從邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表410讀出邏輯頁(yè)地址LBA-(I)是映射 實(shí)體頁(yè)地址PBA-(L+1),因此實(shí)體頁(yè)地址PBA-(I)為無(wú)效的實(shí)體頁(yè)地址。也就是說(shuō),存儲(chǔ)器 管理單元204會(huì)依據(jù)待判斷的實(shí)體頁(yè)地址通過(guò)實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表420與邏輯頁(yè)轉(zhuǎn)實(shí)體 頁(yè)映射表410查詢(xún)待判斷的實(shí)體頁(yè)地址映射的邏輯頁(yè)地址所映射的實(shí)體頁(yè)地址,倘若待判 斷的實(shí)體頁(yè)地址和所查詢(xún)的實(shí)體頁(yè)地址相符時(shí),則此待判斷的實(shí)體頁(yè)地址為有效的實(shí)體頁(yè) 地址,反之則為無(wú)效的實(shí)體頁(yè)地址。
由于閃存芯片106是以實(shí)體區(qū)塊作為抹除的最小單位,因此存儲(chǔ)器管理單元204 可通過(guò)上述比對(duì)將有效的實(shí)體頁(yè)地址中的數(shù)據(jù)進(jìn)行合并以釋放無(wú)效的實(shí)體頁(yè)地址來(lái)寫(xiě)入 新的數(shù)據(jù)。例如,存儲(chǔ)器管理單元204可將至少一個(gè)實(shí)體區(qū)塊中有效實(shí)體頁(yè)地址中的數(shù)據(jù) 復(fù)制到未寫(xiě)入任何數(shù)據(jù)的實(shí)體區(qū)塊的實(shí)體頁(yè)地址中,并且將此實(shí)體區(qū)塊進(jìn)行抹除運(yùn)作,由 此可將分散的有效數(shù)據(jù)合并并且將無(wú)效的實(shí)體頁(yè)地址釋放出來(lái)(以下稱(chēng)為無(wú)效數(shù)據(jù)抹除 程序)。例如,在進(jìn)行有效數(shù)據(jù)合并以釋放無(wú)效的實(shí)體頁(yè)地址后,存儲(chǔ)器管理單元204會(huì) 更新實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表420,以將所抹除的實(shí)體區(qū)塊的實(shí)體頁(yè)地址的映射關(guān)系更新為 空值(例如,“NULL”)。特別是,如上所述,閃存存儲(chǔ)裝置100是輪替使用實(shí)體區(qū)塊來(lái)存儲(chǔ)數(shù)據(jù),因此,為 了能使閃存存儲(chǔ)裝置100正常運(yùn)作,存儲(chǔ)器管理單元204會(huì)在每次從備用區(qū)304b中提取實(shí) 體區(qū)塊前確認(rèn)備用區(qū)304b中的的數(shù)目是否小于一備用實(shí)體區(qū)塊數(shù)閾值。倘若備用區(qū)304b 中的的數(shù)目小于備用實(shí)體區(qū)塊數(shù)閾值時(shí),存儲(chǔ)器管理單元204會(huì)執(zhí)行上述無(wú)效數(shù)據(jù)抹除程 序以將存儲(chǔ)無(wú)效數(shù)據(jù)的實(shí)體區(qū)塊進(jìn)行抹除,并將所抹除的實(shí)體區(qū)塊關(guān)聯(lián)為備用區(qū)304b,以 釋放存儲(chǔ)無(wú)效數(shù)據(jù)的實(shí)體區(qū)塊。例如,在本實(shí)施例中,備用實(shí)體區(qū)塊數(shù)閾值設(shè)定為5。然而, 必須了解的是,本發(fā)明不限于此,備用實(shí)體區(qū)塊數(shù)閾值可被設(shè)定為其他適當(dāng)?shù)臄?shù)值。值得一提的是,上述依據(jù)圖3所示的映射關(guān)系以及圖4A、圖4B、圖5A、圖5B、圖6A 與圖6B所示的寫(xiě)入運(yùn)作也可稱(chēng)為以頁(yè)面為基礎(chǔ)(page-based)的閃存管理模式。在本實(shí)施例中,當(dāng)存儲(chǔ)器管理單元204使用以頁(yè)面為基礎(chǔ)(page-based)的閃存管 理模式來(lái)寫(xiě)入數(shù)據(jù)時(shí),存儲(chǔ)器管理單元204會(huì)確保每一邏輯區(qū)塊的數(shù)據(jù)散亂度不大于一邏 輯區(qū)塊數(shù)據(jù)散亂度閾值。具體來(lái)說(shuō),由于主機(jī)系統(tǒng)1000在邏輯頁(yè)地址LBA-(O) LBA(L) 中寫(xiě)入數(shù)據(jù),主機(jī)系統(tǒng)1000未必會(huì)依據(jù)邏輯頁(yè)地址LBA-(O) LBA (L)的順序來(lái)寫(xiě)入數(shù)據(jù)。 因此,當(dāng)閃存存儲(chǔ)裝置100經(jīng)過(guò)一段時(shí)間的寫(xiě)入運(yùn)作后,屬于同一個(gè)邏輯區(qū)塊的數(shù)據(jù)可能 會(huì)分散地存儲(chǔ)于多個(gè)實(shí)體區(qū)塊中,其中邏輯區(qū)塊的數(shù)據(jù)散亂度就是指被用來(lái)存儲(chǔ)此邏輯區(qū) 塊的數(shù)據(jù)的實(shí)體區(qū)塊的數(shù)目。在本發(fā)明中,邏輯區(qū)塊數(shù)據(jù)散亂度閾值可以是大于零的任意 正整數(shù),例如,邏輯區(qū)塊數(shù)據(jù)散亂度閾值可以為2、4、8或16。在本實(shí)施例中,當(dāng)主機(jī)接口單元206從該主機(jī)系統(tǒng)1000中接收主機(jī)寫(xiě)入指令以及 欲寫(xiě)入的寫(xiě)入數(shù)據(jù)時(shí),存儲(chǔ)器管理單元204會(huì)確認(rèn)主機(jī)寫(xiě)入指令中所指示的邏輯頁(yè)地址所 屬的邏輯區(qū)塊。在此,目前所接收的主機(jī)寫(xiě)入指令中所指示的邏輯地址稱(chēng)為“被寫(xiě)入邏輯地 址”,并且目前所接收的主機(jī)寫(xiě)入指令中所指示的邏輯地址所屬的邏輯區(qū)塊稱(chēng)為“被寫(xiě)入邏 輯區(qū)塊”。例如,存儲(chǔ)器管理單元204可依據(jù)一數(shù)學(xué)運(yùn)算式來(lái)計(jì)算出主機(jī)寫(xiě)入指令中的邏輯 頁(yè)地址所屬的邏輯區(qū)塊,或者依據(jù)邏輯地址-邏輯區(qū)塊映射表來(lái)查詢(xún)主機(jī)寫(xiě)入指令中的邏 輯頁(yè)地址所屬的邏輯區(qū)塊。并且,存儲(chǔ)器管理單元204會(huì)依據(jù)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂 度、目前可寫(xiě)入實(shí)體頁(yè)地址和邏輯區(qū)塊數(shù)據(jù)散亂度閾值來(lái)決定用于此寫(xiě)入數(shù)據(jù)的實(shí)體頁(yè)地 址。圖7A、圖7B與圖7C是本發(fā)明第一實(shí)施例的一數(shù)據(jù)寫(xiě)入示意圖,其中假設(shè)每個(gè)實(shí)體 區(qū)塊具有4個(gè)實(shí)體頁(yè)地址且邏輯區(qū)塊數(shù)據(jù)散亂度閾值為2。請(qǐng)參照?qǐng)D7A,假設(shè)實(shí)體區(qū)塊122_(S+1)的其中2個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯 區(qū)塊350-(0)的數(shù)據(jù)且另2個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350-(3)的數(shù)據(jù);實(shí)體區(qū)塊17122-(S+2)的實(shí)體頁(yè)地址都存儲(chǔ)有屬于邏輯區(qū)塊350-(1)的數(shù)據(jù);實(shí)體區(qū)塊122_(D)的前2 個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350- )的數(shù)據(jù);并且目前可寫(xiě)入實(shí)體頁(yè)指針?biāo)赶虻?目前可寫(xiě)入實(shí)體頁(yè)地址為實(shí)體區(qū)塊122-(D)的第3個(gè)實(shí)體頁(yè)地址。請(qǐng)參照?qǐng)D7B,當(dāng)主機(jī)接口單元206從主機(jī)系統(tǒng)1000中接收到主機(jī)寫(xiě)入指令,且存 儲(chǔ)器管理單元204判斷主機(jī)系統(tǒng)1000欲寫(xiě)入數(shù)據(jù)的邏輯頁(yè)地址是屬于邏輯區(qū)塊350-(3) 時(shí),存儲(chǔ)器管理單元204會(huì)判斷邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度為1并且目前可寫(xiě)入實(shí) 體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊122-(D)未存儲(chǔ)有邏輯區(qū)塊 350-(3)的數(shù)據(jù)。在本實(shí)施例中,由于邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度為1,其小于邏輯區(qū) 塊數(shù)據(jù)散亂度閾值,因此,當(dāng)屬于邏輯區(qū)塊350-(3)的寫(xiě)入數(shù)據(jù)被寫(xiě)入至實(shí)體區(qū)塊122-(D) 時(shí),邏輯區(qū)塊350-C3)的數(shù)據(jù)散亂度僅會(huì)增加1變?yōu)?,其未超過(guò)邏輯區(qū)塊數(shù)據(jù)散亂度閾值。 基于此,存儲(chǔ)器管理單元204會(huì)將寫(xiě)入數(shù)據(jù)寫(xiě)入至實(shí)體區(qū)塊122- (D)的第3個(gè)實(shí)體頁(yè)地址。請(qǐng)參照?qǐng)D7C,在圖7B所示的狀態(tài)且目前可寫(xiě)入實(shí)體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入 實(shí)體頁(yè)地址為實(shí)體區(qū)塊122-(D)的第4個(gè)實(shí)體頁(yè)地址的例子中,當(dāng)主機(jī)接口單元206從 主機(jī)系統(tǒng)1000中接收到主機(jī)寫(xiě)入指令,且存儲(chǔ)器管理單元204判斷主機(jī)系統(tǒng)1000欲寫(xiě) 入數(shù)據(jù)的邏輯頁(yè)地址也是屬于邏輯區(qū)塊350-(3)時(shí),存儲(chǔ)器管理單元204會(huì)判斷邏輯區(qū) 塊350-(3)的數(shù)據(jù)散亂度為2,其等于邏輯區(qū)塊數(shù)據(jù)散亂度閾值,并且目前可寫(xiě)入實(shí)體頁(yè)指 針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊存儲(chǔ)有邏輯區(qū)塊350-(3)的數(shù)據(jù)。在 本實(shí)施例中,由于目前可寫(xiě)入實(shí)體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊 122-(D)存儲(chǔ)有邏輯區(qū)塊350-(3)的數(shù)據(jù),因此,當(dāng)屬于邏輯區(qū)塊350-(3)的寫(xiě)入數(shù)據(jù)被寫(xiě) 入至實(shí)體區(qū)塊122-Φ)時(shí),邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度仍會(huì)維持為2,其未超過(guò)邏輯區(qū) 塊數(shù)據(jù)散亂度閾值?;诖?,存儲(chǔ)器管理單元204會(huì)將寫(xiě)入數(shù)據(jù)寫(xiě)入至實(shí)體區(qū)塊122-(D) 的第4個(gè)實(shí)體頁(yè)地址。圖8A與圖8B是本發(fā)明第一實(shí)施例的另一數(shù)據(jù)寫(xiě)入示意圖,其中假設(shè)每個(gè)實(shí)體區(qū) 塊具有4個(gè)實(shí)體頁(yè)地址且邏輯區(qū)塊數(shù)據(jù)散亂度閾值為2。請(qǐng)參照?qǐng)D8A,假設(shè)實(shí)體區(qū)塊122-(s+l)的其中2個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯 區(qū)塊350-(0)的數(shù)據(jù)且另2個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350-(3)的數(shù)據(jù);實(shí)體區(qū)塊 122-(S+2)的其中3個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350-(1)的數(shù)據(jù)且另1個(gè)實(shí)體頁(yè)地 址存儲(chǔ)有屬于邏輯區(qū)塊350-(3)的數(shù)據(jù);實(shí)體區(qū)塊122-Φ)的前2個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬 于邏輯區(qū)塊350- )的數(shù)據(jù);并且目前可寫(xiě)入實(shí)體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址 為實(shí)體區(qū)塊122-(D)的第3個(gè)實(shí)體頁(yè)地址。請(qǐng)參照?qǐng)D8B,當(dāng)主機(jī)接口單元206從主機(jī)系統(tǒng)1000中接收到主機(jī)寫(xiě)入指令,且存 儲(chǔ)器管理單元204判斷主機(jī)系統(tǒng)1000欲寫(xiě)入數(shù)據(jù)的邏輯頁(yè)地址是屬于邏輯區(qū)塊350-(3) 時(shí),存儲(chǔ)器管理單元204會(huì)判斷邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度為2并且目前可寫(xiě)入實(shí) 體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊122-(D)未存儲(chǔ)有邏輯區(qū)塊 350-(3)的數(shù)據(jù)。在本實(shí)施例中,存儲(chǔ)器管理單元204還會(huì)判斷實(shí)體區(qū)塊122-(D)的剩余可 存儲(chǔ)空間是否足夠存儲(chǔ)寫(xiě)入數(shù)據(jù)和邏輯區(qū)塊350-(3)的其他數(shù)據(jù)。具體來(lái)說(shuō),由于邏輯區(qū) 塊350-(3)的數(shù)據(jù)散亂度不能大于2,因此,當(dāng)存儲(chǔ)器管理單元204欲在實(shí)體區(qū)塊122-(D) 中寫(xiě)入屬于邏輯區(qū)塊350-(3)的寫(xiě)入數(shù)據(jù)時(shí),存儲(chǔ)器管理單元204必須搬移存儲(chǔ)在其他實(shí) 體區(qū)塊中屬于邏輯區(qū)塊350-C3)的數(shù)據(jù)以使得邏輯區(qū)塊350-C3)的數(shù)據(jù)散亂度仍維持小于或等于2?;诖?,在實(shí)體區(qū)塊122-Φ)的剩余存儲(chǔ)空間足夠存儲(chǔ)寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ) 邏輯區(qū)塊350-(3)的數(shù)據(jù)的實(shí)體區(qū)塊(即,實(shí)體區(qū)塊122-(S+1)與實(shí)體區(qū)塊122-(S+2))之 中的其中一個(gè)實(shí)體區(qū)塊(例如,實(shí)體區(qū)塊122-(S+2))中屬于邏輯區(qū)塊350-(3)的所有數(shù)據(jù) 的情況下,存儲(chǔ)器管理單元204會(huì)將寫(xiě)入數(shù)據(jù)和存儲(chǔ)于實(shí)體區(qū)塊122-(S+2)中的邏輯區(qū)塊 350-(3)的所有數(shù)據(jù)寫(xiě)入至實(shí)體區(qū)塊122-(D)中。也就是說(shuō),由于實(shí)體區(qū)塊122-(S+1)中存 有2個(gè)實(shí)體頁(yè)地址大小的屬于邏輯區(qū)塊350-(3)的數(shù)據(jù)而實(shí)體區(qū)塊122-(S+2)中存有1個(gè) 實(shí)體頁(yè)地址大小的屬于邏輯區(qū)塊350-(3)的數(shù)據(jù),因此,在實(shí)體區(qū)塊122-(D)僅剩1個(gè)實(shí)體 頁(yè)地址可容納所搬移的數(shù)據(jù)的情況下,存儲(chǔ)器管理單元204會(huì)選擇將實(shí)體區(qū)塊122-(S+2) 的第4個(gè)實(shí)體頁(yè)地址的數(shù)據(jù)搬移至實(shí)體區(qū)塊122-(D),并且將實(shí)體區(qū)塊122-(S+2)的第4個(gè) 實(shí)體頁(yè)地址標(biāo)示為無(wú)效,由此邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度仍為2。圖9A與圖9B是本發(fā)明第一實(shí)施例的又一數(shù)據(jù)寫(xiě)入示意圖,其中假設(shè)每個(gè)實(shí)體區(qū) 塊具有4個(gè)實(shí)體頁(yè)地址且邏輯區(qū)塊數(shù)據(jù)散亂度閾值為2。請(qǐng)參照?qǐng)D9A,假設(shè)實(shí)體區(qū)塊122_(S+1)的其中2個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯 區(qū)塊350-(0)的數(shù)據(jù)且另2個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350-(3)的數(shù)據(jù);實(shí)體區(qū)塊 122-(S+2)的其中3個(gè)實(shí)體頁(yè)地址存儲(chǔ)屬于邏輯區(qū)塊350-(1)的數(shù)據(jù)且另1個(gè)實(shí)體頁(yè)地址 存儲(chǔ)有屬于邏輯區(qū)塊350-(3)的數(shù)據(jù);實(shí)體區(qū)塊122-(D)的前3個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于 邏輯區(qū)塊350- )的數(shù)據(jù);并且目前可寫(xiě)入實(shí)體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址為 實(shí)體區(qū)塊122-(D)的第4個(gè)實(shí)體頁(yè)地址。請(qǐng)參照?qǐng)D9B,當(dāng)主機(jī)接口單元206從主機(jī)系統(tǒng)1000中接收到主機(jī)寫(xiě)入指令,且存 儲(chǔ)器管理單元204判斷主機(jī)系統(tǒng)1000欲寫(xiě)入數(shù)據(jù)的邏輯頁(yè)地址是屬于邏輯區(qū)塊350-(3) 時(shí),存儲(chǔ)器管理單元204會(huì)判斷邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度為2并且目前可寫(xiě)入實(shí) 體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊122-(D)未存儲(chǔ)有邏輯區(qū)塊 350-(3)的數(shù)據(jù)。類(lèi)似上述,存儲(chǔ)器管理單元204還會(huì)判斷實(shí)體區(qū)塊122-(D)的剩余可存 儲(chǔ)空間是否足夠存儲(chǔ)寫(xiě)入數(shù)據(jù)和已寫(xiě)入于其他實(shí)體區(qū)塊(例如,實(shí)體區(qū)塊122-(S+1)或?qū)?體區(qū)塊122-(S+2))中屬于邏輯區(qū)塊350-(3)的所有數(shù)據(jù)。在本實(shí)施例中,由于實(shí)體區(qū)塊 122-(D)的剩余可存儲(chǔ)空間不足夠存儲(chǔ)寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)邏輯區(qū)塊350-(3)的數(shù)據(jù)的 實(shí)體區(qū)塊(即,實(shí)體區(qū)塊122-(S+1)與實(shí)體區(qū)塊122-(S+2))之中的任一個(gè)實(shí)體區(qū)塊中屬于 邏輯區(qū)塊350-C3)的所有數(shù)據(jù),所以存儲(chǔ)器管理單元204會(huì)從備用區(qū)304b中提取一個(gè)實(shí)體 區(qū)塊(例如,實(shí)體區(qū)塊122-Φ+1)),并且將寫(xiě)入數(shù)據(jù)和存儲(chǔ)在用于存儲(chǔ)邏輯區(qū)塊350-(3)的 數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于邏輯區(qū)塊350-(3)的所有數(shù)據(jù)寫(xiě)入至實(shí) 體區(qū)塊122-Φ+1)中。在本實(shí)施例中,存儲(chǔ)器管理單元204會(huì)先選擇需搬移的數(shù)據(jù)較少的 實(shí)體區(qū)塊來(lái)進(jìn)行搬移,避免因搬移數(shù)據(jù)而大幅增加執(zhí)行主機(jī)寫(xiě)入指令所需的時(shí)間。也就是 說(shuō),在本實(shí)施例中,存儲(chǔ)器管理單元204會(huì)選擇將實(shí)體區(qū)塊122- (S+2)的第4個(gè)實(shí)體頁(yè)地址 的數(shù)據(jù)搬移至實(shí)體區(qū)塊122- (D+1),并且將實(shí)體區(qū)塊122- (S+2)的第4個(gè)實(shí)體頁(yè)地址標(biāo)示為 無(wú)效,由此邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度仍為2。圖10是本發(fā)明第一實(shí)施例的數(shù)據(jù)寫(xiě)入方法的流程圖。請(qǐng)參照?qǐng)D10,在步驟S1001中閃存控制器104的主機(jī)接口單元206經(jīng)由連接器102 從主機(jī)系統(tǒng)1000中接收主機(jī)寫(xiě)入指令與寫(xiě)入數(shù)據(jù)。在步驟S1003中存儲(chǔ)器管理單元204依據(jù)主機(jī)寫(xiě)入指令的被寫(xiě)入邏輯頁(yè)地址判斷被寫(xiě)入邏輯區(qū)塊,并且在步驟S1005存儲(chǔ)器管理單元204判斷目前可寫(xiě)入實(shí)體頁(yè)地址。例 如,在步驟S1005中存儲(chǔ)器管理單元204是根據(jù)可寫(xiě)入實(shí)體頁(yè)指針來(lái)判斷目前可寫(xiě)入實(shí)體 頁(yè)地址。接著,在步驟S1007中存儲(chǔ)器管理單元204會(huì)依據(jù)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度 以及目前可寫(xiě)入實(shí)體頁(yè)地址來(lái)將寫(xiě)入數(shù)據(jù)寫(xiě)入至閃存芯片106的實(shí)體頁(yè)地址中。圖11是圖10中步驟S1007的詳細(xì)步驟的流程圖。請(qǐng)參照?qǐng)D11,在步驟SllOl中存儲(chǔ)器管理單元204會(huì)判斷被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù) 散亂度是否等于邏輯區(qū)塊數(shù)據(jù)散亂度閾值。值得一提的是,存儲(chǔ)器管理單元204會(huì)使每一 邏輯區(qū)塊的數(shù)據(jù)散亂度不超過(guò)邏輯區(qū)塊數(shù)據(jù)散亂度閾值,因此,在步驟SllOl的判斷中僅 會(huì)出現(xiàn)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度等于邏輯區(qū)塊數(shù)據(jù)散亂度閾值或者被寫(xiě)入邏輯區(qū)塊 的數(shù)據(jù)散亂度小于邏輯區(qū)塊數(shù)據(jù)散亂度閾值的情況,而不會(huì)出現(xiàn)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散 亂度大于邏輯區(qū)塊數(shù)據(jù)散亂度閾值的情況。倘若在步驟SllOl中判斷被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度不等于邏輯區(qū)塊數(shù)據(jù)散 亂度閾值(即,被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度小于邏輯區(qū)塊數(shù)據(jù)散亂度)時(shí),則在步驟 Sl 103中存儲(chǔ)器管理單元204會(huì)將寫(xiě)入數(shù)據(jù)寫(xiě)入至目前可寫(xiě)入實(shí)體頁(yè)地址中。之后,在步驟 S1105中存儲(chǔ)器管理單元204會(huì)更新邏輯頁(yè)地址與實(shí)體頁(yè)地址之間的映射關(guān)系,并且圖11 所示的流程會(huì)被結(jié)束。例如,在步驟S1105中存儲(chǔ)器管理單元204會(huì)更新邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè) 映射表410與實(shí)體頁(yè)轉(zhuǎn)邏輯頁(yè)映射表420來(lái)記錄邏輯頁(yè)地址與實(shí)體頁(yè)地址之間的新映射關(guān) 系。倘若在步驟SllOl中判斷被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度等于邏輯區(qū)塊數(shù)據(jù)散亂 度閾值時(shí),則在步驟S1107中存儲(chǔ)器管理單元204會(huì)判斷在目前可寫(xiě)入實(shí)體區(qū)塊(S卩,目前 可寫(xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊)中是否存儲(chǔ)有屬于被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)。倘若在目 前可寫(xiě)入實(shí)體區(qū)塊中存儲(chǔ)有屬于被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù),則執(zhí)行步驟S1103。倘若在步驟S1107中判斷在目前可寫(xiě)入實(shí)體區(qū)塊中未存儲(chǔ)有屬于被寫(xiě)入邏輯區(qū) 塊的數(shù)據(jù),則在步驟S1109中存儲(chǔ)器管理單元204會(huì)判斷在目前可寫(xiě)入實(shí)體區(qū)塊中是否有 足夠的存儲(chǔ)空間來(lái)存儲(chǔ)寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的 其中一個(gè)實(shí)體區(qū)塊中屬于被寫(xiě)入邏輯區(qū)塊的所有數(shù)據(jù)。倘若在步驟S1109中判斷在目前可寫(xiě)入實(shí)體區(qū)塊中有足夠的存儲(chǔ)空間來(lái)存儲(chǔ)寫(xiě) 入數(shù)據(jù)和在用于存儲(chǔ)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于 被寫(xiě)入邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則在步驟Sllll中存儲(chǔ)器管理單元204會(huì)將寫(xiě)入數(shù)據(jù)寫(xiě)入 至目前可寫(xiě)入實(shí)體頁(yè)地址中并且將在用于存儲(chǔ)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的 其中一個(gè)實(shí)體區(qū)塊中屬于被寫(xiě)入邏輯區(qū)塊的所有數(shù)據(jù)搬移至目前可寫(xiě)入實(shí)體區(qū)塊中。之 后,步驟Sl 105會(huì)被執(zhí)行。倘若在步驟S1109中判斷在目前可寫(xiě)入實(shí)體區(qū)塊中無(wú)足夠的存儲(chǔ)空間來(lái)存儲(chǔ)寫(xiě) 入數(shù)據(jù)和在用于存儲(chǔ)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于 被寫(xiě)入邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則在步驟S1113中存儲(chǔ)器管理單元204會(huì)判斷備用區(qū)304b 中的實(shí)體區(qū)塊的數(shù)目是否小于備用實(shí)體區(qū)塊數(shù)閾值。倘若備用區(qū)304b中的實(shí)體區(qū)塊的數(shù) 目小于備用實(shí)體區(qū)塊數(shù)閾值,則在步驟Sl 115中存儲(chǔ)器管理單元204會(huì)執(zhí)行無(wú)效數(shù)據(jù)抹除 程序以釋放存儲(chǔ)無(wú)效數(shù)據(jù)的實(shí)體區(qū)塊,并且執(zhí)行步驟Sl 113。
倘若在步驟S1113中判斷備用區(qū)304b中的實(shí)體區(qū)塊的數(shù)目非小于備用實(shí)體區(qū)塊 數(shù)閾值,則在步驟Sl 117中存儲(chǔ)器管理單元204會(huì)從備用區(qū)304b中提取一個(gè)實(shí)體區(qū)塊并且 將寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中 屬于被寫(xiě)入邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所提取的實(shí)體區(qū)塊中。第二實(shí)施例本發(fā)明第二實(shí)施例的閃存存儲(chǔ)裝置與主機(jī)系統(tǒng)本質(zhì)上是與第一實(shí)施例的閃存存 儲(chǔ)裝置與主機(jī)系統(tǒng)相同,其中差異在于第一實(shí)施例的存儲(chǔ)器管理單元依據(jù)每一邏輯區(qū)塊的 數(shù)據(jù)散亂度來(lái)將數(shù)據(jù)寫(xiě)入至閃存芯片,而在第二實(shí)施例中存儲(chǔ)器管理單元依據(jù)每一邏輯區(qū) 塊的數(shù)據(jù)散亂度和每一實(shí)體區(qū)塊的數(shù)據(jù)散亂度來(lái)將數(shù)據(jù)寫(xiě)入至閃存芯片。以下將結(jié)合第一 實(shí)施例的圖1A、圖1D、圖3A與圖;3B來(lái)描述第二實(shí)施例。在第二實(shí)施例中,存儲(chǔ)器管理單元 204也是類(lèi)似于圖4A、圖4B、圖5A、圖5B、圖6A與圖6B所示的方式以頁(yè)面為基礎(chǔ)來(lái)管理閃 存芯片106。在本實(shí)施例中,當(dāng)存儲(chǔ)器管理單元204使用以頁(yè)面為基礎(chǔ)的閃存管理模式來(lái)寫(xiě)入 數(shù)據(jù)時(shí),存儲(chǔ)器管理單元204會(huì)確保每一邏輯區(qū)塊的數(shù)據(jù)散亂度不大于邏輯區(qū)塊數(shù)據(jù)散亂 度閾值并且每一實(shí)體區(qū)塊的數(shù)據(jù)散亂度不大于實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值。在此,實(shí)體區(qū)塊 的數(shù)據(jù)散亂度就是指此實(shí)體區(qū)塊所存儲(chǔ)的數(shù)據(jù)所屬的邏輯區(qū)塊的數(shù)目。如上所述,由于主 機(jī)系統(tǒng)1000未必會(huì)依據(jù)邏輯頁(yè)地址的順序來(lái)寫(xiě)入數(shù)據(jù),因此當(dāng)閃存存儲(chǔ)裝置100經(jīng)過(guò)一段 時(shí)間的寫(xiě)入運(yùn)作后,在同一個(gè)實(shí)體區(qū)塊中有可能會(huì)存儲(chǔ)屬于多個(gè)邏輯區(qū)塊的數(shù)據(jù)。在本發(fā) 明中,實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值可以是大于零的任意正整數(shù),例如,實(shí)體區(qū)塊數(shù)據(jù)散亂度閾 值可以為2、4、8或16。圖12A與圖12B是本發(fā)明第二實(shí)施例的一數(shù)據(jù)寫(xiě)入示意圖,其中假設(shè)每個(gè)實(shí)體區(qū) 塊具有4個(gè)實(shí)體頁(yè)地址且邏輯區(qū)塊數(shù)據(jù)散亂度閾值與實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值都為2。請(qǐng)參照?qǐng)D12A,假設(shè)實(shí)體區(qū)塊122_(S+1)的其中3個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯 區(qū)塊350-(0)的數(shù)據(jù)且另1個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350-(3)的數(shù)據(jù);實(shí)體區(qū)塊 122-(S+2)的其中3個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350-(1)的數(shù)據(jù)且另1個(gè)實(shí)體頁(yè)地 址存儲(chǔ)有屬于邏輯區(qū)塊350- )的數(shù)據(jù);實(shí)體區(qū)塊122-Φ)的其中1個(gè)實(shí)體頁(yè)地址存儲(chǔ)有 屬于邏輯區(qū)塊350- )的數(shù)據(jù)且另1個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350-(3)的數(shù)據(jù); 并且目前可寫(xiě)入實(shí)體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址為實(shí)體區(qū)塊122- (D)的第3個(gè) 實(shí)體頁(yè)地址。請(qǐng)參照?qǐng)D12B,當(dāng)主機(jī)接口單元206從主機(jī)系統(tǒng)1000中接收到主機(jī)寫(xiě)入指令,且存 儲(chǔ)器管理單元204判斷主機(jī)系統(tǒng)1000欲寫(xiě)入數(shù)據(jù)的邏輯頁(yè)地址是屬于邏輯區(qū)塊350-(3) 時(shí),存儲(chǔ)器管理單元204會(huì)判斷邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度為2,目前可寫(xiě)入實(shí)體頁(yè)指 針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊122-(D)的數(shù)據(jù)散亂度為2,并且目前 可寫(xiě)入實(shí)體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊122-(D)存儲(chǔ)有邏輯 區(qū)塊350- (3)的數(shù)據(jù)。在本實(shí)施例中,由于目前可寫(xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊122- (D) 存儲(chǔ)有邏輯區(qū)塊350-(3)的數(shù)據(jù),因此當(dāng)寫(xiě)入數(shù)據(jù)被寫(xiě)入至實(shí)體區(qū)塊122-(D)時(shí),實(shí)體區(qū)塊 122-(D)的數(shù)據(jù)散亂度仍會(huì)維持為2且邏輯區(qū)塊350-C3)的數(shù)據(jù)散亂度也會(huì)維持為2。也就 是說(shuō),每一邏輯區(qū)塊的數(shù)據(jù)散亂度皆不大于邏輯區(qū)塊數(shù)據(jù)散亂度閾值并且每一實(shí)體區(qū)塊的 數(shù)據(jù)散亂度不大于實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值?;诖?,在本實(shí)施例中,存儲(chǔ)器管理單元204會(huì)將寫(xiě)入數(shù)據(jù)寫(xiě)入至目前可寫(xiě)入實(shí)體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址中。圖13A與圖1 是本發(fā)明第二實(shí)施例的另一數(shù)據(jù)寫(xiě)入示意圖,其中假設(shè)每個(gè)實(shí)體 區(qū)塊具有4個(gè)實(shí)體頁(yè)地址且邏輯區(qū)塊數(shù)據(jù)散亂度閾值與實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值都為2。請(qǐng)參照?qǐng)D13A,假設(shè)實(shí)體區(qū)塊122_(S+1)的其中2個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯 區(qū)塊350-(0)的數(shù)據(jù)且另2個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350-(3)的數(shù)據(jù);實(shí)體區(qū)塊 122-(S+2)的實(shí)體頁(yè)地址都存儲(chǔ)屬于邏輯區(qū)塊350-(1)的數(shù)據(jù);實(shí)體區(qū)塊122_(D)的其中 1個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350- )的數(shù)據(jù)且另1個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯 區(qū)塊350- )的數(shù)據(jù);并且目前可寫(xiě)入實(shí)體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址為實(shí)體 區(qū)塊122-(D)的第3個(gè)實(shí)體頁(yè)地址。請(qǐng)參照?qǐng)D13B,當(dāng)主機(jī)接口單元206從主機(jī)系統(tǒng)1000中接收到主機(jī)寫(xiě)入指令,且存 儲(chǔ)器管理單元204判斷主機(jī)系統(tǒng)1000欲寫(xiě)入數(shù)據(jù)的邏輯頁(yè)地址是屬于邏輯區(qū)塊350-(3) 時(shí),存儲(chǔ)器管理單元204會(huì)判斷邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度為1,目前可寫(xiě)入實(shí)體頁(yè)指 針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊122-(D)的數(shù)據(jù)散亂度為2,并且目前 可寫(xiě)入實(shí)體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊122-(D)未存儲(chǔ)有邏 輯區(qū)塊350-(3)的數(shù)據(jù)。在本實(shí)施例中,若僅考量邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度下,屬于 邏輯區(qū)塊350-(3)的寫(xiě)入數(shù)據(jù)是可被寫(xiě)入至實(shí)體區(qū)塊122-Φ),但由于目前可寫(xiě)入實(shí)體區(qū) 塊122-(D)的數(shù)據(jù)散亂度為2,因此將屬于邏輯區(qū)塊350-(3)的寫(xiě)入數(shù)據(jù)寫(xiě)入至實(shí)體區(qū)塊 122-(D)后實(shí)體區(qū)塊122-Φ)的數(shù)據(jù)散亂度會(huì)變成3,其會(huì)超過(guò)實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值。 因此,在本實(shí)施例中,存儲(chǔ)器管理單元204從備用區(qū)304b中提取一個(gè)實(shí)體區(qū)塊(例如,實(shí)體 區(qū)塊122-(D+1)),并且將寫(xiě)入數(shù)據(jù)寫(xiě)入至實(shí)體區(qū)塊122-(D+1)中。由此,存儲(chǔ)器管理單元 204能使實(shí)體區(qū)塊122-(D)的數(shù)據(jù)散亂度為2,邏輯區(qū)塊350-C3)的數(shù)據(jù)散亂度為2,且實(shí)體 區(qū)塊122-Φ+1)的數(shù)據(jù)散亂度為1,以致于每一邏輯區(qū)塊的數(shù)據(jù)散亂度皆不大于邏輯區(qū)塊 數(shù)據(jù)散亂度閾值并且每一實(shí)體區(qū)塊的數(shù)據(jù)散亂度不大于實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值。圖14A與圖14B是本發(fā)明第二實(shí)施例的又一數(shù)據(jù)寫(xiě)入示意圖,其中假設(shè)每個(gè)實(shí)體 區(qū)塊具有4個(gè)實(shí)體頁(yè)地址,且邏輯區(qū)塊數(shù)據(jù)散亂度閾值與實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值都為2。請(qǐng)參照?qǐng)D14A,假設(shè)實(shí)體區(qū)塊122_(S+1)的其中2個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯 區(qū)塊350-(0)的數(shù)據(jù)且另2個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350-(3)的數(shù)據(jù);實(shí)體區(qū)塊 122-(S+2)的其中3個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350-(1)的數(shù)據(jù)且另1個(gè)實(shí)體頁(yè)地 址存儲(chǔ)屬于邏輯區(qū)塊350-(3)的數(shù)據(jù);實(shí)體區(qū)塊122-Φ)的其中1個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬 于邏輯區(qū)塊350- )的數(shù)據(jù)且另1個(gè)實(shí)體頁(yè)地址存儲(chǔ)有屬于邏輯區(qū)塊350- )的數(shù)據(jù),并 且目前可寫(xiě)入實(shí)體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址為實(shí)體區(qū)塊122- (D)的第3個(gè)實(shí) 體頁(yè)地址。請(qǐng)參照?qǐng)D14B,當(dāng)主機(jī)接口單元206從主機(jī)系統(tǒng)1000中接收到主機(jī)寫(xiě)入指令,且存 儲(chǔ)器管理單元204判斷主機(jī)系統(tǒng)1000欲寫(xiě)入數(shù)據(jù)的邏輯頁(yè)地址是屬于邏輯區(qū)塊350-(3) 時(shí),存儲(chǔ)器管理單元204會(huì)判斷邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度為2,目前可寫(xiě)入實(shí)體頁(yè)指 針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊122-(D)的數(shù)據(jù)散亂度為2,并且目前 可寫(xiě)入實(shí)體頁(yè)指針?biāo)赶虻哪壳翱蓪?xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊122-(D)未存儲(chǔ)有邏 輯區(qū)塊350-(3)的數(shù)據(jù)。類(lèi)似于圖13A與1 所示,由于目前可寫(xiě)入實(shí)體區(qū)塊122-Φ)的 數(shù)據(jù)散亂度為2,因此將屬于邏輯區(qū)塊350-(3)的寫(xiě)入數(shù)據(jù)寫(xiě)入至實(shí)體區(qū)塊122-(D)后會(huì)使得實(shí)體區(qū)塊122_(D)的數(shù)據(jù)散亂度變成3,其會(huì)超過(guò)實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值。因此, 在本實(shí)施例中,存儲(chǔ)器管理單元204從備用區(qū)304b中提取一個(gè)實(shí)體區(qū)塊(例如,實(shí)體區(qū)塊 122-(D+1)),并且將寫(xiě)入數(shù)據(jù)寫(xiě)入至實(shí)體區(qū)塊122-(D+1)中,以使得每一實(shí)體區(qū)塊的數(shù)據(jù) 散亂度皆不大于實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值。此外,在將寫(xiě)入數(shù)據(jù)寫(xiě)入至實(shí)體區(qū)塊122-Φ+1) 后,邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度會(huì)變?yōu)?,因此存儲(chǔ)器管理單元204會(huì)將在用于存儲(chǔ)邏 輯區(qū)塊350-(3)的數(shù)據(jù)的實(shí)體區(qū)塊(即,實(shí)體區(qū)塊122-(S+1)與實(shí)體區(qū)塊122-(S+2))之中 的任一個(gè)實(shí)體區(qū)塊中屬于邏輯區(qū)塊350-(3)的所有數(shù)據(jù)搬移至實(shí)體區(qū)塊122-(D+1),以使 得邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度仍維持小于或等于2。在本實(shí)施例中,存儲(chǔ)器管理單元 204會(huì)優(yōu)先選擇需搬移的數(shù)據(jù)較少的實(shí)體區(qū)塊來(lái)進(jìn)行搬移,避免因搬移數(shù)據(jù)而大幅增加執(zhí) 行主機(jī)寫(xiě)入指令所需的時(shí)間。也就是說(shuō),存儲(chǔ)器管理單元204會(huì)選擇將實(shí)體區(qū)塊122-(S+2) 的第4個(gè)實(shí)體頁(yè)地址的數(shù)據(jù)搬移至實(shí)體區(qū)塊122- (D+1),并且將實(shí)體區(qū)塊122- (S+2)的第4 個(gè)實(shí)體頁(yè)地址標(biāo)示為無(wú)效,由此邏輯區(qū)塊350-(3)的數(shù)據(jù)散亂度仍為2。圖15是本發(fā)明第二實(shí)施例的數(shù)據(jù)寫(xiě)入方法的流程圖。請(qǐng)參照?qǐng)D15,在步驟S1501中閃存控制器104的主機(jī)接口單元206經(jīng)由連接器102 從主機(jī)系統(tǒng)1000中接收主機(jī)寫(xiě)入指令與寫(xiě)入數(shù)據(jù)。在步驟S1503中存儲(chǔ)器管理單元204依據(jù)主機(jī)寫(xiě)入指令的被寫(xiě)入邏輯頁(yè)地址判斷 被寫(xiě)入邏輯區(qū)塊,并且在步驟S1505存儲(chǔ)器管理單元204判斷目前可寫(xiě)入實(shí)體頁(yè)地址。接 著,在步驟S1507中存儲(chǔ)器管理單元204會(huì)依據(jù)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度、目前可寫(xiě)入 實(shí)體頁(yè)地址以及目前可寫(xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度來(lái)將寫(xiě)入數(shù)據(jù)寫(xiě)入 至閃存芯片106的實(shí)體頁(yè)地址中。圖16A與16B是圖15中步驟S1507的詳細(xì)步驟的流程圖,其中圖16A的部分步驟 示于圖16B中(S卩,節(jié)點(diǎn)A與節(jié)點(diǎn)B之間的步驟)。請(qǐng)參照?qǐng)D16A,在步驟S1601中存儲(chǔ)器管理單元204會(huì)判斷目前可寫(xiě)入實(shí)體區(qū)塊 (即,目前可寫(xiě)入實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊)的數(shù)據(jù)散亂度是否等于實(shí)體區(qū)塊數(shù)據(jù)散亂 度閾值。值得一提的是,類(lèi)似于邏輯區(qū)塊的數(shù)據(jù)散亂度的判斷,存儲(chǔ)器管理單元204會(huì)使每 一實(shí)體區(qū)塊的數(shù)據(jù)散亂度不超過(guò)實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值,因此,在步驟S1601的判斷中 僅會(huì)出現(xiàn)實(shí)體區(qū)塊的數(shù)據(jù)散亂度等于實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值或者實(shí)體區(qū)塊的數(shù)據(jù)散亂 度小于實(shí)體區(qū)塊數(shù)據(jù)散亂度的情況,而不會(huì)出現(xiàn)實(shí)體區(qū)塊的數(shù)據(jù)散亂度大于實(shí)體區(qū)塊數(shù)據(jù) 散亂度的情況。倘若在步驟S1601中判斷目前可寫(xiě)入實(shí)體區(qū)塊的數(shù)據(jù)散亂度不等于實(shí)體區(qū)塊數(shù) 據(jù)散亂度閾值(即,目前可寫(xiě)入實(shí)體區(qū)塊的數(shù)據(jù)散亂度小于實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值)時(shí), 則執(zhí)行圖16B中的步驟S1603。請(qǐng)參照?qǐng)D16B,在步驟S1603中存儲(chǔ)器管理單元204會(huì)判斷被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù) 散亂度是否等于邏輯區(qū)塊數(shù)據(jù)散亂度閾值。倘若在步驟S1603中判斷被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度不等于邏輯區(qū)塊數(shù)據(jù)散 亂度閾值(即,被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度小于邏輯區(qū)塊數(shù)據(jù)散亂度)時(shí),則在步驟 S1605中存儲(chǔ)器管理單元204會(huì)將寫(xiě)入數(shù)據(jù)寫(xiě)入至目前可寫(xiě)入實(shí)體頁(yè)地址中。之后,圖16A 中的步驟S1607會(huì)被執(zhí)行(即,節(jié)點(diǎn)B之后的步驟),其中在步驟S1607中存儲(chǔ)器管理單元 204會(huì)更新邏輯頁(yè)地址與實(shí)體頁(yè)地址之間的映射關(guān)系,并且圖16所示的流程會(huì)被結(jié)束。例如,在步驟S1607中存儲(chǔ)器管理單元204會(huì)更新邏輯頁(yè)轉(zhuǎn)實(shí)體頁(yè)映射表410與實(shí)體頁(yè)轉(zhuǎn)邏 輯頁(yè)映射表420來(lái)記錄邏輯頁(yè)地址與實(shí)體頁(yè)地址之間的新映射關(guān)系。倘若在步驟S1603中判斷被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度等于邏輯區(qū)塊數(shù)據(jù)散亂 度閾值時(shí),則在步驟S1609中存儲(chǔ)器管理單元204會(huì)判斷在目前可寫(xiě)入實(shí)體區(qū)塊中是否存 儲(chǔ)有屬于被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)。倘若在目前可寫(xiě)入實(shí)體區(qū)塊中存儲(chǔ)有屬于被寫(xiě)入邏輯區(qū) 塊的數(shù)據(jù),則執(zhí)行步驟S1605。倘若在步驟S1609中判斷在目前可寫(xiě)入實(shí)體區(qū)塊中未存儲(chǔ)有屬于被寫(xiě)入邏輯區(qū) 塊的數(shù)據(jù),則在步驟S1611中存儲(chǔ)器管理單元204會(huì)判斷在目前可寫(xiě)入實(shí)體區(qū)塊中是否有 足夠的存儲(chǔ)空間來(lái)存儲(chǔ)寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的 其中一個(gè)實(shí)體區(qū)塊中屬于被寫(xiě)入邏輯區(qū)塊的所有數(shù)據(jù)。倘若在步驟S1611中判斷在目前可寫(xiě)入實(shí)體區(qū)塊中有足夠的存儲(chǔ)空間來(lái)存儲(chǔ)寫(xiě) 入數(shù)據(jù)和在用于存儲(chǔ)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于 被寫(xiě)入邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則在步驟S1613中存儲(chǔ)器管理單元204會(huì)將寫(xiě)入數(shù)據(jù)寫(xiě)入 至目前可寫(xiě)入實(shí)體頁(yè)地址中并且將在用于存儲(chǔ)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的 其中一個(gè)實(shí)體區(qū)塊中屬于被寫(xiě)入邏輯區(qū)塊的所有數(shù)據(jù)搬移至目前可寫(xiě)入實(shí)體區(qū)塊中。之 后,圖16A中的步驟S1607會(huì)被執(zhí)行。倘若在步驟S1611中判斷在目前可寫(xiě)入實(shí)體區(qū)塊中無(wú)足夠的存儲(chǔ)空間來(lái)存儲(chǔ)寫(xiě) 入數(shù)據(jù)和在用于存儲(chǔ)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于 被寫(xiě)入邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則在步驟S1615中存儲(chǔ)器管理單元204會(huì)判斷備用區(qū)304b 中的實(shí)體區(qū)塊的數(shù)目是否小于備用實(shí)體區(qū)塊數(shù)閾值。倘若備用區(qū)304b中的實(shí)體區(qū)塊的數(shù) 目非小于備用實(shí)體區(qū)塊數(shù)閾值,則在步驟S1617中存儲(chǔ)器管理單元204會(huì)從備用區(qū)304b中 提取一個(gè)實(shí)體區(qū)塊并且將寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中 的其中一個(gè)實(shí)體區(qū)塊中屬于被寫(xiě)入邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所提取的實(shí)體區(qū)塊中。之 后,圖16A中的步驟S1607會(huì)被執(zhí)行。倘若在步驟S1615中判斷備用區(qū)304b中的實(shí)體區(qū)塊的數(shù)目小于備用實(shí)體區(qū)塊數(shù) 閾值,則在步驟S1619中存儲(chǔ)器管理單元204會(huì)執(zhí)行無(wú)效數(shù)據(jù)抹除程序以釋放存儲(chǔ)無(wú)效數(shù) 據(jù)的實(shí)體區(qū)塊,并且執(zhí)行步驟S1615。倘若在步驟S1601中判斷目前可寫(xiě)入實(shí)體區(qū)塊的數(shù)據(jù)散亂度等于實(shí)體區(qū)塊數(shù)據(jù) 散亂度閾值時(shí),則在步驟S1621中存儲(chǔ)器管理單元204會(huì)判斷在目前可寫(xiě)入實(shí)體區(qū)塊中是 否存儲(chǔ)有屬于被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)。倘若在目前可寫(xiě)入實(shí)體區(qū)塊中存儲(chǔ)有屬于被寫(xiě)入邏 輯區(qū)塊的數(shù)據(jù),則執(zhí)行圖16B中的步驟S1603。倘若在步驟S1621中判斷在目前可寫(xiě)入實(shí)體區(qū)塊中未存儲(chǔ)有屬于被寫(xiě)入邏輯區(qū) 塊的數(shù)據(jù),則在步驟S1623中存儲(chǔ)器管理單元204會(huì)判斷備用區(qū)304b中的實(shí)體區(qū)塊的數(shù)目 是否小于備用實(shí)體區(qū)塊數(shù)閾值。倘若備用區(qū)304b中的實(shí)體區(qū)塊的數(shù)目小于備用實(shí)體區(qū)塊 數(shù)閾值,則在步驟S1625中存儲(chǔ)器管理單元204會(huì)執(zhí)行無(wú)效數(shù)據(jù)抹除程序,以釋放存儲(chǔ)無(wú)效 數(shù)據(jù)的實(shí)體區(qū)塊,并且執(zhí)行步驟S1623。倘若在步驟S1623中判斷備用區(qū)304b中的實(shí)體區(qū)塊的數(shù)目非小于備用實(shí)體區(qū)塊 數(shù)閾值,則在步驟S1627中存儲(chǔ)器管理單元204會(huì)判斷被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度是否 等于邏輯區(qū)塊數(shù)據(jù)散亂度閾值。倘若判斷被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度不等于邏輯區(qū)塊數(shù)據(jù)散亂度閾值時(shí),則在步驟S1629中存儲(chǔ)器管理單元204會(huì)從備用區(qū)304b中提取一個(gè)實(shí)體 區(qū)塊并且將寫(xiě)入數(shù)據(jù)寫(xiě)入至所提取的實(shí)體區(qū)塊中。之后,步驟S1607會(huì)被執(zhí)行。倘若在步驟S1627中判斷被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度等于邏輯區(qū)塊數(shù)據(jù)散亂 度閾值時(shí),則在步驟S1631中存儲(chǔ)器管理單元204會(huì)從備用區(qū)304b中提取一個(gè)實(shí)體區(qū)塊并 且將寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊 中屬于被寫(xiě)入邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所提取的實(shí)體區(qū)塊中。之后,步驟S1607會(huì)被執(zhí) 行。值得一提的是,在上述實(shí)施中,存儲(chǔ)器管理單元204會(huì)搬移用于存儲(chǔ)被寫(xiě)入邏輯 區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于被寫(xiě)入邏輯區(qū)塊的所有數(shù)據(jù)來(lái)使 被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)散亂度仍維持不大于邏輯區(qū)塊數(shù)據(jù)散亂度閾值。然而,本發(fā)明不限 于此,在本發(fā)明另一實(shí)施例中,當(dāng)存儲(chǔ)空間足夠時(shí),存儲(chǔ)器管理單元204也可搬移用于存儲(chǔ) 被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的多個(gè)實(shí)體區(qū)塊中屬于被寫(xiě)入邏輯區(qū)塊的所有數(shù) 據(jù),以使被寫(xiě)入邏輯區(qū)塊的數(shù)據(jù)更為集中。必須了解的是,圖7A、圖7B、圖7C、圖8A、圖8B、圖9A、圖9B、圖12A、圖12B、圖13A、 圖13B、圖14A與圖14B所示的簡(jiǎn)單實(shí)施例僅是用于說(shuō)明本發(fā)明,并非限制本發(fā)明。在本發(fā) 明實(shí)施例中,閃存芯片106的每一實(shí)體區(qū)塊是具有64個(gè)、1 個(gè)、256個(gè)或更多實(shí)體頁(yè)地址。綜上所述,根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)寫(xiě)入方法會(huì)依據(jù)每一邏輯區(qū)塊的數(shù)據(jù)散亂度 來(lái)決定用于寫(xiě)入數(shù)據(jù)的實(shí)體頁(yè)地址,由此可有效地避免屬于同一個(gè)邏輯區(qū)塊的數(shù)據(jù)被分散 地存儲(chǔ)于過(guò)多個(gè)實(shí)體區(qū)塊中?;?,可減少整理有效數(shù)據(jù)的時(shí)間,由此提升執(zhí)行主機(jī)寫(xiě)入指 令的速度。此外,根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)寫(xiě)入方法會(huì)依據(jù)每一邏輯區(qū)塊的數(shù)據(jù)散亂度以 及每一實(shí)體區(qū)塊的數(shù)據(jù)散亂度來(lái)決定用于寫(xiě)入數(shù)據(jù)的實(shí)體頁(yè)地址,由此可有效地避免屬于 同一個(gè)邏輯區(qū)塊的數(shù)據(jù)被分散地存儲(chǔ)于過(guò)多個(gè)實(shí)體區(qū)塊中以及同一個(gè)實(shí)體區(qū)塊中存儲(chǔ)有 過(guò)多屬于不同邏輯區(qū)塊的數(shù)據(jù)?;诖耍蛇M(jìn)一步減少整理有效數(shù)據(jù)的時(shí)間,由此提升執(zhí)行 主機(jī)寫(xiě)入指令的速度。最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制, 盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依 然可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而這些修改或者等同替換亦不能使修 改后的技術(shù)方案脫離本發(fā)明技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種數(shù)據(jù)寫(xiě)入方法,用于將來(lái)自于一主機(jī)系統(tǒng)的數(shù)據(jù)寫(xiě)入至一閃存芯片中,其中所 述閃存芯片包括多個(gè)實(shí)體區(qū)塊,每一所述實(shí)體區(qū)塊具有多個(gè)實(shí)體頁(yè)地址,所述數(shù)據(jù)寫(xiě)入方 法包括配置多個(gè)邏輯頁(yè)地址;將所述多個(gè)邏輯頁(yè)地址分組為多個(gè)邏輯區(qū)塊;記錄每一所述邏輯區(qū)塊的一數(shù)據(jù)散亂度,其中每一所述邏輯區(qū)塊的數(shù)據(jù)散亂度為用于 存儲(chǔ)屬于對(duì)應(yīng)的邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊的數(shù)目;從所述主機(jī)系統(tǒng)中接收一寫(xiě)入數(shù)據(jù),其中所述寫(xiě)入數(shù)據(jù)是欲被寫(xiě)入至一第一邏輯頁(yè)地 址,所述第一邏輯頁(yè)地址屬于一第一邏輯區(qū)塊,所述第一邏輯頁(yè)地址為所述多個(gè)邏輯頁(yè)地 址的其中之一,且所述第一邏輯區(qū)塊為所述多個(gè)邏輯區(qū)塊的其中之一;取得一第一實(shí)體頁(yè)地址,其中所取得的第一實(shí)體頁(yè)地址為所述多個(gè)實(shí)體頁(yè)地址的其中 之一;以及依據(jù)所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度以及所取得的第一實(shí)體頁(yè)地址來(lái)將所述寫(xiě)入數(shù) 據(jù)寫(xiě)入至所述閃存芯片中,其中每一所述邏輯區(qū)塊的數(shù)據(jù)散亂度皆不大于一邏輯區(qū)塊數(shù)據(jù)散亂度閾值。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)寫(xiě)入方法,還包括將所述多個(gè)實(shí)體區(qū)塊至少分組為一數(shù) 據(jù)區(qū)與一備用區(qū)。
3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)寫(xiě)入方法,其中依據(jù)所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度以 及所取得的第一實(shí)體頁(yè)地址來(lái)將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所述閃存芯片中的步驟包括當(dāng)Dl < THl時(shí),則將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值。
4.根據(jù)權(quán)利要求2所述的數(shù)據(jù)寫(xiě)入方法,其中依據(jù)所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度以 及所取得的第一實(shí)體頁(yè)地址來(lái)將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所述閃存芯片中的步驟還包括當(dāng)Dl = THl時(shí),則判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊是否存儲(chǔ)有所述第一 邏輯區(qū)塊的數(shù)據(jù),其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊存儲(chǔ)有所述第一邏輯區(qū) 塊的數(shù)據(jù),則將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊無(wú)存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù), 則判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間是否足夠?qū)懭胨鰧?xiě)入 數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于 所述第一邏輯區(qū)塊的所有數(shù)據(jù),其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間足夠?qū)懭胨鰧?xiě)入 數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于 所述第一邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中并 且將在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于所 述第一邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊中,其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間不足夠?qū)懭胨鰧?xiě) 入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬 于所述第一邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則從所述備用區(qū)的實(shí)體區(qū)塊之中選擇其中一個(gè)實(shí)體區(qū) 塊并且將所述寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所選擇的實(shí)體區(qū)塊中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值。
5.根據(jù)權(quán)利要求2所述的數(shù)據(jù)寫(xiě)入方法,還包括記錄每一所述實(shí)體區(qū)塊的一數(shù)據(jù)散亂度,其中每一所述實(shí)體區(qū)塊的數(shù)據(jù)散亂度為存儲(chǔ) 于對(duì)應(yīng)的實(shí)體區(qū)塊中的數(shù)據(jù)所屬的邏輯區(qū)塊的數(shù)目。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)寫(xiě)入方法,其中依據(jù)所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度以 及所取得的第一實(shí)體頁(yè)地址來(lái)將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所述閃存芯片中的步驟包括依據(jù)所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度、所取得的第一實(shí)體頁(yè)地址以及所取得的第一實(shí) 體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度來(lái)將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所述閃存芯片中,其中每一所述實(shí)體區(qū)塊的數(shù)據(jù)散亂度皆不大于一實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)寫(xiě)入方法,其中依據(jù)所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度、 所取得的第一實(shí)體頁(yè)地址以及所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度來(lái) 將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所述閃存芯片中的步驟包括當(dāng)Dl < THl并且D2 < TH2時(shí),則將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值,D2 為所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度,并且TH2為所述實(shí)體區(qū)塊數(shù)據(jù) 散亂度閾值。
8.根據(jù)權(quán)利要求6所述的數(shù)據(jù)寫(xiě)入方法,其中依據(jù)所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度、 所取得的第一實(shí)體頁(yè)地址以及所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度來(lái) 將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所述閃存芯片中的步驟包括當(dāng)Dl < THl并且D2 = TH2時(shí),則判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊是否 存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊無(wú)存儲(chǔ) 有所述第一邏輯區(qū)塊的數(shù)據(jù),則從所述備用區(qū)的實(shí)體區(qū)塊之中選擇其中一個(gè)實(shí)體區(qū)塊并且 將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所選擇的實(shí)體區(qū)塊中,并且當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體 區(qū)塊存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),則將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址 中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值,D2為 所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度,并且TH2為所述實(shí)體區(qū)塊數(shù)據(jù)散 亂度閾值。
9.根據(jù)權(quán)利要求6所述的數(shù)據(jù)寫(xiě)入方法,其中依據(jù)所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度、 所取得的第一實(shí)體頁(yè)地址以及所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度來(lái) 將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所述閃存芯片中的步驟包括當(dāng)D1 = THl并且D2 = TH2時(shí),則判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊是否 存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊無(wú)存儲(chǔ) 有所述第一邏輯區(qū)塊的數(shù)據(jù),則從所述備用區(qū)的實(shí)體區(qū)塊之中選擇其中一個(gè)實(shí)體區(qū)塊并且 將所述寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體 區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所選擇的實(shí)體區(qū)塊中,并且當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),則將所 述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂 度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值,D2為所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度,并且TH2為所述實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值。
10.根據(jù)權(quán)利要求6所述的數(shù)據(jù)寫(xiě)入方法,其中依據(jù)所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度、 所取得的第一實(shí)體頁(yè)地址以及所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度來(lái) 將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所述閃存芯片中的步驟包括當(dāng)D1 = THl并且D2 < TH2時(shí),則判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊是否 存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),則 將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊無(wú)存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù), 則判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間是否足夠?qū)懭胨鰧?xiě)入 數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于 所述第一邏輯區(qū)塊的所有數(shù)據(jù),其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間足夠?qū)懭胨鰧?xiě)入 數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于 所述第一邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中并 且將在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于所 述第一邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊中,其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間不足夠?qū)懭胨鰧?xiě) 入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬 于所述第一邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則從所述備用區(qū)的實(shí)體區(qū)塊之中選擇其中一個(gè)實(shí)體區(qū) 塊并且將所述寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一 個(gè)實(shí)體區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所選擇的實(shí)體區(qū)塊,其中Dl為所 述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值,D2為所取得的第一 實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度,并且TH2為所述實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值。
11.一種閃存控制器,用于將來(lái)自于一主機(jī)系統(tǒng)的數(shù)據(jù)寫(xiě)入至一閃存芯片中,其中所述 閃存芯片包括多個(gè)實(shí)體區(qū)塊,每一所述實(shí)體區(qū)塊具有多個(gè)實(shí)體頁(yè)地址,所述閃存控制器包 括一微處理器單元;一閃存接口單元,電性連接至所述微處理器單元,用以電性連接至所述閃存芯片;一主機(jī)接口單元,電性連接至所述微處理器單元,用以電性連接至所述主機(jī)系統(tǒng);以及一存儲(chǔ)器管理單元,電性連接至所述微處理器單元,用以配置多個(gè)邏輯頁(yè)地址,將所述 多個(gè)邏輯頁(yè)地址分組為多個(gè)邏輯區(qū)塊,并且記錄每一所述邏輯區(qū)塊的一數(shù)據(jù)散亂度,其中每一所述邏輯區(qū)塊的數(shù)據(jù)散亂度為用于存儲(chǔ)屬于對(duì)應(yīng)的邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊的數(shù) 目,其中所述主機(jī)接口單元從所述主機(jī)系統(tǒng)中接收一寫(xiě)入數(shù)據(jù),其中所述寫(xiě)入數(shù)據(jù)是欲被 寫(xiě)入至一第一邏輯頁(yè)地址,所述第一邏輯頁(yè)地址屬于一第一邏輯區(qū)塊,所述第一邏輯頁(yè)地 址為所述多個(gè)邏輯頁(yè)地址的其中之一,且所述第一邏輯區(qū)塊為所述多個(gè)邏輯區(qū)塊的其中之其中所述存儲(chǔ)器管理單元取得一第一實(shí)體頁(yè)地址,其中所取得的第一實(shí)體頁(yè)地址為所述多個(gè)實(shí)體頁(yè)地址的其中之一,其中所述存儲(chǔ)器管理單元依據(jù)所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度以及所取得的第一實(shí) 體頁(yè)地址來(lái)將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所述閃存芯片中,其中每一所述邏輯區(qū)塊的數(shù)據(jù)散亂度皆不大于一邏輯區(qū)塊數(shù)據(jù)散亂度閾值。
12.根據(jù)權(quán)利要求11所述的閃存控制器,其中所述存儲(chǔ)器管理單元將所述多個(gè)實(shí)體區(qū) 塊至少分組為一數(shù)據(jù)區(qū)與一備用區(qū)。
13.根據(jù)權(quán)利要求11所述的閃存控制器,其中當(dāng)Dl< THl時(shí),則所述存儲(chǔ)器管理單元 將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值。
14.根據(jù)權(quán)利要求12所述的閃存控制器,其中當(dāng)Dl= THl時(shí),則所述存儲(chǔ)器管理單元 判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊是否存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),其中 當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),則所述存儲(chǔ) 器管理單元將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊無(wú)存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù), 則所述存儲(chǔ)器管理單元判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間是 否足夠?qū)懭胨鰧?xiě)入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中 一個(gè)實(shí)體區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù),其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間足夠?qū)懭胨鰧?xiě)入 數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于 所述第一邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則所述存儲(chǔ)器管理單元將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的 第一實(shí)體頁(yè)地址中并且將在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一 個(gè)實(shí)體區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址所屬的 實(shí)體區(qū)塊中,其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間不足夠?qū)懭胨鰧?xiě) 入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬 于所述第一邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則所述存儲(chǔ)器管理單元從所述備用區(qū)的實(shí)體區(qū)塊之中 選擇其中一個(gè)實(shí)體區(qū)塊并且將所述寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí) 體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所選擇的實(shí) 體區(qū)塊中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值。
15.根據(jù)權(quán)利要求12所述的閃存控制器,其中所述存儲(chǔ)器管理單元記錄每一所述實(shí)體 區(qū)塊的一數(shù)據(jù)散亂度,其中每一所述實(shí)體區(qū)塊的數(shù)據(jù)散亂度為存儲(chǔ)于對(duì)應(yīng)的實(shí)體區(qū)塊中的 數(shù)據(jù)所屬的邏輯區(qū)塊的數(shù)目。
16.根據(jù)權(quán)利要求15所述的閃存控制器,其中所述存儲(chǔ)器管理單元還依據(jù)所取得的第 一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度來(lái)將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所述閃存芯片中,其中每一所述實(shí)體區(qū)塊的數(shù)據(jù)散亂度皆不大于一實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值。
17.根據(jù)權(quán)利要求16所述的閃存控制器,其中當(dāng)Dl< THl并且D2 < TH2時(shí),則所述存 儲(chǔ)器管理單元將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值,D2為所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度,并且TH2為所述實(shí)體區(qū)塊數(shù)據(jù) 散亂度閾值。
18.根據(jù)權(quán)利要求16所述的閃存控制器,其中當(dāng)Dl< THl并且D2 = TH2時(shí),則所述存 儲(chǔ)器管理單元判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊是否存儲(chǔ)有所述第一邏輯區(qū) 塊的數(shù)據(jù),其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊無(wú)存儲(chǔ)有所述第一邏輯區(qū)塊的 數(shù)據(jù),則所述存儲(chǔ)器管理單元從所述備用區(qū)的實(shí)體區(qū)塊之中選擇其中一個(gè)實(shí)體區(qū)塊并且將 所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所選擇的實(shí)體區(qū)塊中,并且當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),則所述 存儲(chǔ)器管理單元將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值,D2 為所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度,并且TH2為所述實(shí)體區(qū)塊數(shù)據(jù) 散亂度閾值。
19.根據(jù)權(quán)利要求16所述的閃存控制器,其中當(dāng)Dl= THl并且D2 = TH2時(shí),則所述存 儲(chǔ)器管理單元判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊是否存儲(chǔ)有所述第一邏輯區(qū) 塊的數(shù)據(jù),其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊無(wú)存儲(chǔ)有所述第一邏輯區(qū)塊的 數(shù)據(jù),則所述存儲(chǔ)器管理單元從所述備用區(qū)的實(shí)體區(qū)塊之中選擇其中一個(gè)實(shí)體區(qū)塊并且將 所述寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū) 塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所選擇的實(shí)體區(qū)塊中,并且當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),則所述 存儲(chǔ)器管理單元將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值,D2 為所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度,并且TH2為所述實(shí)體區(qū)塊數(shù)據(jù) 散亂度閾值。
20.根據(jù)權(quán)利要求16所述的閃存控制器,其中當(dāng)Dl= THl并且D2 < TH2時(shí),則所述存 儲(chǔ)器管理單元判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊是否存儲(chǔ)有所述第一邏輯區(qū) 塊的數(shù)據(jù),其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),則 所述存儲(chǔ)器管理單元將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊無(wú)存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù), 則所述存儲(chǔ)器管理單元判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間是 否足夠?qū)懭胨鰧?xiě)入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中 一個(gè)實(shí)體區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù),其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間足夠?qū)懭胨鰧?xiě)入 數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于 所述第一邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則所述存儲(chǔ)器管理單元將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的 第一實(shí)體頁(yè)地址中并且將在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一 個(gè)實(shí)體區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址所屬的 實(shí)體區(qū)塊中,其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間不足夠?qū)懭胨鰧?xiě)入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬 于所述第一邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則所述存儲(chǔ)器管理單元從所述備用區(qū)的實(shí)體區(qū)塊之中 選擇其中一個(gè)實(shí)體區(qū)塊并且將所述寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí) 體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所選擇的實(shí) 體區(qū)塊中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值,D2 為所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度,并且TH2為所述實(shí)體區(qū)塊數(shù)據(jù) 散亂度閾值。
21.—種閃存存儲(chǔ)系統(tǒng),包括一閃存芯片,具有多個(gè)實(shí)體區(qū)塊并且每一所述實(shí)體區(qū)塊具有多個(gè)實(shí)體頁(yè)地址;一連接器,用以電性連接至一主機(jī)系統(tǒng);以及一閃存控制器,電性連接至所述閃存芯片與所述連接器,用以配置多個(gè)邏輯頁(yè)地址,將 所述多個(gè)邏輯頁(yè)地址分組為多個(gè)邏輯區(qū)塊,并且記錄每一所述邏輯區(qū)塊的一數(shù)據(jù)散亂度, 其中每一所述邏輯區(qū)塊的數(shù)據(jù)散亂度為用于存儲(chǔ)屬于對(duì)應(yīng)的邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊 的數(shù)目,其中所述閃存控制器從所述主機(jī)系統(tǒng)中接收一寫(xiě)入數(shù)據(jù),其中所述寫(xiě)入數(shù)據(jù)是欲被 寫(xiě)入至一第一邏輯頁(yè)地址,所述第一邏輯頁(yè)地址屬于一第一邏輯區(qū)塊,所述第一邏輯頁(yè)地 址為所述多個(gè)邏輯頁(yè)地址的其中之一,且所述第一邏輯區(qū)塊為所述多個(gè)邏輯區(qū)塊的其中之其中所述閃存控制器取得一第一實(shí)體頁(yè)地址,其中所取得的第一實(shí)體頁(yè)地址為所述多 個(gè)實(shí)體頁(yè)地址的其中之一,其中所述閃存控制器依據(jù)所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度以及所取得的第一實(shí)體頁(yè) 地址來(lái)將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所述閃存芯片中,其中每一所述邏輯區(qū)塊的數(shù)據(jù)散亂度皆不大于一邏輯區(qū)塊數(shù)據(jù)散亂度閾值。
22.根據(jù)權(quán)利要求21所述的閃存存儲(chǔ)系統(tǒng),其中所述閃存控制器將所述多個(gè)實(shí)體區(qū)塊 至少分組為一數(shù)據(jù)區(qū)與一備用區(qū)。
23.根據(jù)權(quán)利要求21所述的閃存存儲(chǔ)系統(tǒng),其中當(dāng)Dl< THl時(shí),則所述閃存控制器將 所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值。
24.根據(jù)權(quán)利要求22所述的閃存存儲(chǔ)系統(tǒng),其中當(dāng)Dl= THl時(shí),則所述閃存控制器判 斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊是否存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),其中當(dāng) 所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù),則所述閃存控 制器將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址中,其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊無(wú)存儲(chǔ)有所述第一邏輯區(qū)塊的數(shù)據(jù), 則所述閃存控制器判斷所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間是否足 夠?qū)懭胨鰧?xiě)入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè) 實(shí)體區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù),其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間足夠?qū)懭胨鰧?xiě)入 數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則所述閃存控制器將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所取得的第一 實(shí)體頁(yè)地址中并且將在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí) 體區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體 區(qū)塊中,其中當(dāng)所取得的第一實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的剩余存儲(chǔ)空間不足夠?qū)懭胨鰧?xiě) 入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊中屬 于所述第一邏輯區(qū)塊的所有數(shù)據(jù)時(shí),則所述閃存控制器從所述備用區(qū)的實(shí)體區(qū)塊之中選擇 其中一個(gè)實(shí)體區(qū)塊并且將所述寫(xiě)入數(shù)據(jù)和在用于存儲(chǔ)所述第一邏輯區(qū)塊的數(shù)據(jù)的實(shí)體區(qū) 塊之中的其中一個(gè)實(shí)體區(qū)塊中屬于所述第一邏輯區(qū)塊的所有數(shù)據(jù)寫(xiě)入至所選擇的實(shí)體區(qū) 塊中,其中Dl為所述第一邏輯區(qū)塊的數(shù)據(jù)散亂度,THl為所述邏輯區(qū)塊數(shù)據(jù)散亂度閾值。
25.根據(jù)權(quán)利要求22所述的閃存存儲(chǔ)系統(tǒng),其中所述閃存控制器記錄每一所述實(shí)體區(qū) 塊的一數(shù)據(jù)散亂度,其中每一所述實(shí)體區(qū)塊的數(shù)據(jù)散亂度為存儲(chǔ)于對(duì)應(yīng)的實(shí)體區(qū)塊中的數(shù) 據(jù)所屬的邏輯區(qū)塊的數(shù)目。
26.根據(jù)權(quán)利要求25所述的閃存存儲(chǔ)系統(tǒng),其中所述閃存控制器還依據(jù)所取得的第一 實(shí)體頁(yè)地址所屬的實(shí)體區(qū)塊的數(shù)據(jù)散亂度來(lái)將所述寫(xiě)入數(shù)據(jù)寫(xiě)入至所述閃存芯片中,其中每一所述實(shí)體區(qū)塊的數(shù)據(jù)散亂度不大于一實(shí)體區(qū)塊數(shù)據(jù)散亂度閾值。
全文摘要
本發(fā)明涉及一種數(shù)據(jù)寫(xiě)入方法及閃存控制器與閃存存儲(chǔ)系統(tǒng),其中數(shù)據(jù)寫(xiě)入方法,用于將來(lái)自于主機(jī)系統(tǒng)的數(shù)據(jù)寫(xiě)入至閃存芯片中,包括配置多個(gè)邏輯頁(yè)地址;將邏輯頁(yè)地址分組為多個(gè)邏輯區(qū)塊;以及記錄每一邏輯區(qū)塊的數(shù)據(jù)散亂度。也包括從主機(jī)系統(tǒng)中接收寫(xiě)入數(shù)據(jù);判斷主機(jī)系統(tǒng)欲寫(xiě)入的邏輯地址所屬的邏輯區(qū)塊;以及依據(jù)欲寫(xiě)入的邏輯區(qū)塊的數(shù)據(jù)散亂度來(lái)將此寫(xiě)入數(shù)據(jù)寫(xiě)入至閃存芯片中,其中每一邏輯區(qū)塊的數(shù)據(jù)散亂度皆不大于邏輯區(qū)塊數(shù)據(jù)散亂度閾值。本發(fā)明提供的數(shù)據(jù)寫(xiě)入方法及閃存控制器與閃存存儲(chǔ)系統(tǒng),可有效地縮短執(zhí)行主機(jī)寫(xiě)入指令所需的時(shí)間。
文檔編號(hào)G06F12/06GK102053920SQ200910207788
公開(kāi)日2011年5月11日 申請(qǐng)日期2009年10月30日 優(yōu)先權(quán)日2009年10月30日
發(fā)明者葉志剛 申請(qǐng)人:群聯(lián)電子股份有限公司