專利名稱:用于閃存的數(shù)據(jù)寫入方法及其控制器與儲(chǔ)存系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于閃存的數(shù)據(jù)寫入方法,且特別涉及一種能夠有效地確保已正 確將數(shù)據(jù)寫入至閃存的用于閃存的數(shù)據(jù)寫入方法以及使用此方法的閃存控制器與閃存儲(chǔ) 存系統(tǒng)。
背景技術(shù):
由于閃存(Flash Memory)具有數(shù)據(jù)非揮發(fā)性、省電、體積小與無(wú)機(jī)械結(jié)構(gòu)等的特 性,最適合使用于由電池供電的可攜式電子產(chǎn)品上。例如,固態(tài)硬盤就是一種以NAND閃存 作為儲(chǔ)存媒體的儲(chǔ)存裝置,并且已廣泛配置于筆記型計(jì)算機(jī)中作為主要的儲(chǔ)存裝置。閃存儲(chǔ)存裝置中的閃存具有多個(gè)實(shí)體區(qū)塊(physical block),且每一實(shí)體區(qū)塊具 有多個(gè)實(shí)體頁(yè)面(page),其中在實(shí)體區(qū)塊中寫入數(shù)據(jù)時(shí)必須依據(jù)實(shí)體頁(yè)面的順序依序地寫 入數(shù)據(jù)。此外,閃存依據(jù)每一存儲(chǔ)單元可儲(chǔ)存的位數(shù)可區(qū)分為單層存儲(chǔ)單元(Single Level Cell,SLC)NAND閃存與多層存儲(chǔ)單元(Multi Level Cell,MLC)NAND閃存。由于,在單層存 儲(chǔ)單元NAND閃存中,1個(gè)存儲(chǔ)單元中所儲(chǔ)存電荷是以一個(gè)位準(zhǔn)來(lái)區(qū)分識(shí)別此存儲(chǔ)單元所儲(chǔ) 存的位是“1”或“0”,因此,在SLC NAND閃存中每一個(gè)存儲(chǔ)單元僅能儲(chǔ)存1個(gè)位的數(shù)據(jù)。隨著閃存制程的進(jìn)步,目前MLC NAND閃存已被發(fā)展出來(lái)。具體來(lái)說(shuō),在多層存儲(chǔ) 單元NAND閃存中,1個(gè)存儲(chǔ)單元中所儲(chǔ)存的電荷可被區(qū)分為多個(gè)位準(zhǔn)。因此,在MLC NAND 閃存中,1個(gè)存儲(chǔ)單元可儲(chǔ)存多個(gè)位的數(shù)據(jù)。因此,在相同存儲(chǔ)單元數(shù)目下,MLC NAND閃存 的頁(yè)面數(shù)會(huì)是SLC NAND閃存的頁(yè)面數(shù)的數(shù)倍。由于在MLC NAND閃存中,1個(gè)存儲(chǔ)單元可儲(chǔ)存多個(gè)位的數(shù)據(jù),因此,MLCNAND閃存 的實(shí)體區(qū)塊的程序化可分為多階段。例如,以2層存儲(chǔ)單元為例,實(shí)體區(qū)塊的程序化可分為 2階段。第一階段是下頁(yè)(lower page)的程序化部分,其物理特性類似于SLC NAND閃存, 在完成第一階段之后才程序化上頁(yè)(upper page),其中下頁(yè)的程序化速度會(huì)快于上頁(yè)。類 似地,在8層存儲(chǔ)單元或16層存儲(chǔ)單元的案例中,存儲(chǔ)單元包括更多個(gè)實(shí)體頁(yè)面并且會(huì)以 更多階段來(lái)寫入。在MLC NAND閃存中每一階段的程序化彼此會(huì)有耦合關(guān)系,因此,一般來(lái)說(shuō),MLC NAND閃存的可靠性是較SLC NAND閃存低。也就是說(shuō),在MLC NAND閃存中寫入數(shù)據(jù)時(shí)發(fā)生 錯(cuò)誤的機(jī)率較高。特別是,隨著多層存儲(chǔ)單元閃存每一存儲(chǔ)單元可儲(chǔ)存的位數(shù)越多,發(fā)生錯(cuò) 誤的機(jī)率也越高。因此,如何確保在閃存所寫入數(shù)據(jù)的正確性是此領(lǐng)域技術(shù)人員所致力的 目標(biāo)。
發(fā)明內(nèi)容
本發(fā)明提供一種用于閃存的數(shù)據(jù)寫入方法,其能夠有效地確保寫入至閃存的數(shù)據(jù) 的正確性。本發(fā)明提供一種閃存控制器,其能夠有效地確保寫入至閃存的數(shù)據(jù)的正確性。本發(fā)明范例實(shí)施例提供一種閃存儲(chǔ)存系統(tǒng),其能夠有效地確保寫入至閃存的數(shù)據(jù)的正確性。本發(fā)明提出一種用于閃存的數(shù)據(jù)寫入方法,用于將來(lái)自于主機(jī)系統(tǒng)的數(shù)據(jù)寫入至 閃存芯片中,其中此閃存芯片包括多個(gè)實(shí)體區(qū)塊。本數(shù)據(jù)寫入方法包括配置一閃存控制器, 從主機(jī)系統(tǒng)中接收主機(jī)寫入指令以及對(duì)應(yīng)此主機(jī)寫入指令的寫入數(shù)據(jù),并且通過(guò)閃存控制 器執(zhí)行此主機(jī)寫入指令。本數(shù)據(jù)寫入方法也包括在執(zhí)行此主機(jī)寫入指令期間向閃存芯片傳 送一數(shù)據(jù)程序化指令來(lái)將此寫入數(shù)據(jù)寫入至其中一個(gè)實(shí)體區(qū)塊中,以及在執(zhí)行此主機(jī)寫入 指令期間向閃存芯片傳送一指令來(lái)判斷儲(chǔ)存于此實(shí)體區(qū)塊中的至少部分?jǐn)?shù)據(jù)是否存有錯(cuò) 誤位。本發(fā)明范例實(shí)施例提出一種閃存控制器,用于將來(lái)自于主機(jī)系統(tǒng)的數(shù)據(jù)寫入至閃 存芯片中,其中此閃存芯片包括多個(gè)實(shí)體區(qū)塊。本閃存控制器包括微處理器單元、閃存接口 單元、主機(jī)接口單元與內(nèi)存管理單元。閃存接口單元電性連接至微處理器單元,并且用以電 性連接至上述閃存芯片。主機(jī)接口單元電性連接至微處理器單元,用以電性連接至主機(jī)系 統(tǒng)并且從主機(jī)系統(tǒng)中接收主機(jī)寫入指令以及對(duì)應(yīng)此主機(jī)寫入指令的寫入數(shù)據(jù)。內(nèi)存管理單 元電性連接至微處理器單元,用以在執(zhí)行此主機(jī)寫入指令期間向閃存芯片傳送一數(shù)據(jù)程序 化指令來(lái)將寫入數(shù)據(jù)寫入至其中一個(gè)實(shí)體區(qū)塊中。此外,內(nèi)存管理單元在執(zhí)行此主機(jī)寫入 指令期間向閃存芯片傳送一指令來(lái)判斷儲(chǔ)存于此實(shí)體區(qū)塊中的至少部分?jǐn)?shù)據(jù)是否存有錯(cuò) 誤位。本范例實(shí)施例提出一種閃存儲(chǔ)存系統(tǒng),其包括閃存芯片、連接器與閃存控制器。閃 存芯片具有多個(gè)實(shí)體區(qū)塊。連接器用以至主機(jī)系統(tǒng)并且從主機(jī)系統(tǒng)中接收主機(jī)寫入指令以 及對(duì)應(yīng)此主機(jī)寫入指令的寫入數(shù)據(jù)。閃存控制器電性連接至閃存芯片與連接器,用以在執(zhí) 行此主機(jī)寫入指令期間向閃存芯片傳送一數(shù)據(jù)程序化指令來(lái)將寫入數(shù)據(jù)寫入至其中一個(gè) 實(shí)體區(qū)塊中。此外,閃存控制器在執(zhí)行此主機(jī)寫入指令期間向閃存芯片傳送一指令來(lái)判斷 儲(chǔ)存于此實(shí)體區(qū)塊中的至少部分?jǐn)?shù)據(jù)是否存有錯(cuò)誤位。基于上述,本發(fā)明范例實(shí)施例的數(shù)據(jù)寫入方法在執(zhí)行主機(jī)寫入指令時(shí)會(huì)判斷寫入 至閃存中的數(shù)據(jù)是否存有錯(cuò)誤位,由此確保數(shù)據(jù)的正確性。下面通過(guò)具體實(shí)施例并結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步的詳細(xì)描述。
圖IA是根據(jù)本發(fā)明第一范例實(shí)施例繪示使用閃存儲(chǔ)存裝置的主機(jī)系統(tǒng);圖IB是根據(jù)本發(fā)明范例實(shí)施例所繪示的計(jì)算機(jī)、輸入/輸出裝置與閃存儲(chǔ)存裝置 的示意圖;圖IC是根據(jù)本發(fā)明另一范例實(shí)施例所繪示的主機(jī)系統(tǒng)與閃存儲(chǔ)存裝置的示意 圖;圖ID是繪示圖IA所示閃存儲(chǔ)存裝置的概要方塊圖;圖2是根據(jù)本發(fā)明另一范例實(shí)施例所繪示的閃存控制器的概要方塊圖;圖3是根據(jù)本發(fā)明第一范例實(shí)施例所繪示的閃存芯片的方塊圖;圖4A 4C是根據(jù)本發(fā)明第一范例實(shí)施例所繪示的實(shí)體區(qū)塊的運(yùn)作示意圖;圖5是根據(jù)本發(fā)明第一范例實(shí)施例所繪示用于閃存的數(shù)據(jù)寫入方法的流程圖;圖6是根據(jù)本發(fā)明第二范例實(shí)施例所繪示的閃存儲(chǔ)存裝置的概要方塊圖7是根據(jù)本發(fā)明第二.范例實(shí)施例所繪示用于閃存的數(shù)據(jù)寫入方法的流程圖附圖標(biāo)記說(shuō)明1000 主機(jī)系統(tǒng);1100計(jì)算機(jī);1102 微處理器;1104隨機(jī)存取內(nèi)存;1106:輸入/輸出裝置; IlOi系統(tǒng)總線;1110:數(shù)據(jù)傳輸接口 ;1202鼠標(biāo);1204 鍵盤;1206顯不器;1208 打印機(jī);1212隨身碟;1214 記憶卡;1216固態(tài)硬盤;1310 數(shù)位相機(jī);1312:SD 卡;1314 =MMC 卡;1316記憶棒;1318 =CF 卡;1320嵌入式儲(chǔ)存裝置;100:閃存儲(chǔ)存裝置;102連接器;104:閃存控制器;106閃存芯片;122-(0) 122 (N)實(shí)體區(qū)塊;202 微處理器單元;204 內(nèi)存管理單元;206主機(jī)接口單元;208 閃存接口單元;210錯(cuò)誤校正單元;292 緩沖存儲(chǔ)器;294電源管理單元;350-(0) 350-(H)邏輯區(qū)塊;S501、S503、S505、S507、S509、S511、S513、S515、S517、S519、S521、S523 數(shù)據(jù)寫入步驟;600 閃存儲(chǔ)存裝置;602連接器;604 閃存控制器;606閃存芯片;612 微處理器單元;614內(nèi)存管理單元;616 主機(jī)接口單元;618閃存接口單元;620 錯(cuò)誤校正單元;S701、S703、S705、S707、S709、S711、S713、S715、S717、S719、S721、S723 數(shù)據(jù)寫入步驟。
具體實(shí)施例方式閃存儲(chǔ)存裝置一般而言包括閃存芯片與控制器(也稱,控制電路)。通常閃存儲(chǔ)存 裝置會(huì)與主機(jī)系統(tǒng)一起使用,以使主機(jī)系統(tǒng)可將數(shù)據(jù)寫入至閃存儲(chǔ)存裝置或從閃存儲(chǔ)存裝 置中讀取數(shù)據(jù)。另外,也有閃存儲(chǔ)存裝置是包括嵌入式閃存與可執(zhí)行于主機(jī)系統(tǒng)上以實(shí)質(zhì) 地作為此嵌入式閃存的控制器的軟件。[第一范例實(shí)施例]圖IA是根據(jù)本發(fā)明第一范例實(shí)施例繪示使用閃存儲(chǔ)存裝置的主機(jī)系統(tǒng)。請(qǐng)參照?qǐng)D1A,主機(jī)系統(tǒng)1000包括計(jì)算機(jī)1100與輸入/輸出(input/output,I/ 0)裝置1106。計(jì)算機(jī)1100包括微處理器1102、隨機(jī)存取內(nèi)存(random access memory, RAM) 1104、系統(tǒng)總線1108以及數(shù)據(jù)傳輸接口 1110。輸入/輸出裝置1106包括如圖IB所示的鼠標(biāo)1202、鍵盤1204、顯示器1206與打印機(jī)1208。必須了解的是,圖IB所示的裝置不是 限制輸入/輸出裝置1106,輸入/輸出裝置1106可還包括其它裝置。在本發(fā)明實(shí)施例中,閃存儲(chǔ)存裝置100是通過(guò)數(shù)據(jù)傳輸接口 1110與主機(jī)系統(tǒng)1000 的其它組件電性連接。通過(guò)微處理器1102、隨機(jī)存取內(nèi)存1104與輸入/輸出裝置1106的 處理主機(jī)系統(tǒng)1000可將數(shù)據(jù)寫入至閃存儲(chǔ)存裝置100或從閃存儲(chǔ)存裝置100中讀取數(shù)據(jù)。 例如,閃存儲(chǔ)存裝置100可以是如圖IB所示的隨身碟1212、記憶卡1214或固態(tài)硬盤(Solid State Drive, SSD)1216?!愣裕鳈C(jī)系統(tǒng)1000為可儲(chǔ)存數(shù)據(jù)的任意系統(tǒng)。雖然在本范例實(shí)施例中,主 機(jī)系統(tǒng)1000是以計(jì)算機(jī)系統(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, eMMC)。值得一提的是,嵌入式多媒體卡是直接電性連 接于主機(jī)系統(tǒng)1000的基板上。圖ID是繪示圖IA所示閃存儲(chǔ)存裝置的概要方塊圖。請(qǐng)參照?qǐng)D1D,閃存儲(chǔ)存裝置100包括連接器102、閃存控制器104與閃存芯片106。連接器102是電性連接至閃存控制器104并且用以電性連接至主機(jī)系統(tǒng)1000。在 本范例實(shí)施例中,連接器102為串行式進(jìn)階技術(shù)附加裝置(Serial Advanced Technology Attachment, SATA)連接器。然而,必須了解的是本發(fā)明不限于此,連接器102也可以是并 列式進(jìn)階技術(shù)附加裝置(Parallel Advanced Technology Attachment, PATA)連接器、通 用序列總線(Universal Serial Bus, USB)連接器、電氣和電子工程師協(xié)會(huì)(Institute of Electrical and Electronic Engineers, IEEE) 1394 連接器、高速周邊零件連接接口 (Peripheral Component Interconnect Express,PCI Express)連接器、安全數(shù)字(secure digital, SD)接口連接器、記憶棒(Memory Sick, MS)接口連接器、多媒體儲(chǔ)存卡(Multi Media Card, MMC)接口連接器、小型快閃(Compact Flash, CF)接口連接器、整合式驅(qū)動(dòng)電 子接口 antegrated Device Electronics, IDE)連接器或其它適合的連接器。閃存控制器104會(huì)執(zhí)行以硬件型式或韌體型式實(shí)作的多個(gè)邏輯閘或控制指令,并 且根據(jù)主機(jī)系統(tǒng)1000的指令在閃存芯片106中進(jìn)行數(shù)據(jù)的寫入、讀取與抹除等運(yùn)作。閃 存控制器104包括微處理器單元202、內(nèi)存管理單元204、主機(jī)接口單元206、閃存接口單元 208與錯(cuò)誤校正單元210。微處理器單元202為閃存控制器104的主控單元,用以與內(nèi)存管理單元204、主機(jī) 接口單元206、閃存接口單元208與錯(cuò)誤校正單元210等協(xié)同合作以進(jìn)行閃存儲(chǔ)存裝置100 的各種運(yùn)作。內(nèi)存管理單元204是電性連接至微處理器單元202,用以執(zhí)行根據(jù)本范例實(shí)施例 的數(shù)據(jù)寫入機(jī)制與區(qū)塊管理機(jī)制,內(nèi)存管理單元204的運(yùn)作將于以下配合圖式作詳細(xì)說(shuō) 明。在本范例實(shí)施例中,內(nèi)存管理單元204是以一韌體型式實(shí)作在閃存控制器104 中。例如,將包括多個(gè)控制指令的內(nèi)存管理單元204燒錄至一程序內(nèi)存(例如,只讀存儲(chǔ)器 (Read Only Memory, ROM))中并且將此程序內(nèi)存嵌入在閃存控制器104中,當(dāng)閃存儲(chǔ)存裝置100運(yùn)作時(shí),內(nèi)存管理單元204的多個(gè)控制指令會(huì)由微處理器單元202來(lái)執(zhí)行以完成根 據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)寫入機(jī)制與區(qū)塊管理機(jī)制。在本發(fā)明另一范例實(shí)施例中,內(nèi)存管理單元204的控制指令也可以程序代碼型式 儲(chǔ)存于閃存芯片106的特定區(qū)域(例如,閃存芯片中專用于存放系統(tǒng)數(shù)據(jù)的系統(tǒng)區(qū))中。 同樣的,當(dāng)閃存儲(chǔ)存裝置100運(yùn)作時(shí),內(nèi)存管理單元204的多個(gè)控制指令會(huì)由微處理器單元 202來(lái)執(zhí)行。此外,在本發(fā)明另一范例實(shí)施例中,內(nèi)存管理單元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ō),欲寫入至閃存芯片106的數(shù)據(jù)會(huì)通過(guò)閃存接口單元208轉(zhuǎn)換為閃存芯片106所 能接受的格式。錯(cuò)誤校正單元210是電性連接至微處理器單元202并且用以執(zhí)行一錯(cuò)誤校正程序 以確保數(shù)據(jù)的正確性。具體來(lái)說(shuō),當(dāng)內(nèi)存管理單元204從主機(jī)系統(tǒng)1000中接收到主機(jī)寫入 指令時(shí),錯(cuò)誤校正單元210會(huì)為對(duì)應(yīng)此主機(jī)寫入指令的寫入數(shù)據(jù)產(chǎn)生對(duì)應(yīng)的錯(cuò)誤檢查與校 正碼(Error Checking and Correcting Code, ECC Code),并且內(nèi)存管理單元 204 會(huì)將此 寫入數(shù)據(jù)與對(duì)應(yīng)的錯(cuò)誤校正碼寫入至閃存芯片106中。之后,當(dāng)內(nèi)存管理單元204從閃存 芯片106中讀取數(shù)據(jù)時(shí)會(huì)同時(shí)讀取此數(shù)據(jù)對(duì)應(yīng)的錯(cuò)誤校正碼,并且錯(cuò)誤校正單元210會(huì)依 據(jù)此錯(cuò)誤校正碼對(duì)所讀取的數(shù)據(jù)執(zhí)行錯(cuò)誤校正程序。在本范例實(shí)施例中,錯(cuò)誤校正單元210 的最大錯(cuò)誤校正位數(shù)為26。也就是說(shuō),在數(shù)據(jù)的錯(cuò)誤位數(shù)不超過(guò)沈的情況下,錯(cuò)誤校正單 元210能夠偵測(cè)此些錯(cuò)誤位并且將數(shù)據(jù)進(jìn)行校正。必須了解的是,本發(fā)明不限于此,錯(cuò)誤校 正單元的最大錯(cuò)誤校正位數(shù)可以是任何適當(dāng)?shù)臄?shù)值,例如4個(gè)位、16個(gè)位或64個(gè)位。在本發(fā)明另一范例實(shí)施例中,閃存控制器也可還包括其它功能模塊。圖2是根據(jù) 本發(fā)明另一范例實(shí)施例所繪示的閃存控制器的概要方塊圖。請(qǐng)參照?qǐng)D2,除了微處理器單元202、內(nèi)存管理單元204、主機(jī)接口單元206與閃存 接口單元208之外,閃存控制器104還包括緩沖存儲(chǔ)器292與電源管理單元四4。緩沖存儲(chǔ)器292是電性連接至微處理器單元202并且用以暫存來(lái)自于主機(jī)系統(tǒng) 1000的數(shù)據(jù)與指令或來(lái)自于閃存芯片106的數(shù)據(jù)。電源管理單元294是電性連接至微處理器單元202并且用以控制閃存儲(chǔ)存裝置 100的電源。閃存芯片106是電性連接至閃存控制器104并且用以儲(chǔ)存數(shù)據(jù)。閃存芯片106具 有實(shí)體區(qū)塊122-(0) 122-(N)。實(shí)體區(qū)塊為抹除的最小單位。亦即,每一實(shí)體區(qū)塊含有 最小數(shù)目之一并被抹除的存儲(chǔ)單元。每一實(shí)體區(qū)塊具有數(shù)個(gè)實(shí)體頁(yè)面(page)。在本范例 實(shí)施例中,實(shí)體頁(yè)面為程序化的最小單元。換言之,實(shí)體頁(yè)面為寫入數(shù)據(jù)或讀取數(shù)據(jù)的最小 單元。每一實(shí)體頁(yè)面通常包括使用者數(shù)據(jù)區(qū)與冗余區(qū)。使用者數(shù)據(jù)區(qū)用以儲(chǔ)存使用者的數(shù)6/12 頁(yè)據(jù),而冗余區(qū)用以儲(chǔ)存系統(tǒng)的數(shù)據(jù)(例如,錯(cuò)誤檢查與校正碼)。在本范例實(shí)施例中,閃存芯 片106為多層存儲(chǔ)單元(Multi Level Cell, MLC)NAND閃存芯片。然而,本發(fā)明不限于此, 閃存芯片106也可是單層存儲(chǔ)單元(Single Level Cell, SLC)NAND閃存芯片。圖3是根據(jù)本發(fā)明第一范例實(shí)施例所繪示的閃存芯片的方塊圖,并且圖4A 4C 是根據(jù)本發(fā)明第一范例實(shí)施例所繪示的實(shí)體區(qū)塊的運(yùn)作示意圖。請(qǐng)參照?qǐng)D4A 4C,閃存芯片106的存儲(chǔ)單元僅能從“ 1 ”程序化為“0”,因此要更 新實(shí)體區(qū)塊內(nèi)的數(shù)據(jù)時(shí)必須先抹除實(shí)體區(qū)塊內(nèi)的數(shù)據(jù)。然而,閃存的寫入是以頁(yè)面為單位, 而抹除是以實(shí)體區(qū)塊為單位,所以在本范例實(shí)施例中,實(shí)體區(qū)塊會(huì)以輪替方式來(lái)儲(chǔ)存數(shù)據(jù)。具體來(lái)說(shuō),內(nèi)存管理單元204會(huì)將實(shí)體區(qū)塊122-(0) 122-(N)邏輯地分組為 系統(tǒng)區(qū)(system area)302、數(shù)據(jù)區(qū)(data area)304、備用區(qū)(spare area)306 與取代區(qū) (replacement area)308。邏輯上屬于系統(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ū)塊的頁(yè)面數(shù)等。邏輯上屬于數(shù)據(jù)區(qū)304的實(shí)體區(qū)塊122_(S+1) 122_(D)用以儲(chǔ)存使用者的數(shù) 據(jù),一般來(lái)說(shuō)就是主機(jī)系統(tǒng)1000所存取的邏輯區(qū)塊所映像的實(shí)體區(qū)塊。也就是說(shuō),數(shù)據(jù)區(qū) 304的實(shí)體區(qū)塊為儲(chǔ)存有效數(shù)據(jù)的單元。邏輯上屬于備用區(qū)306的實(shí)體區(qū)塊122-Φ+1) 122_(A)是用以輪替數(shù)據(jù)區(qū)304 中的實(shí)體區(qū)塊,因此在備用區(qū)306中的實(shí)體區(qū)塊為空或可使用的單元,即無(wú)記錄數(shù)據(jù)或標(biāo) 記為已沒(méi)用的無(wú)效數(shù)據(jù)。也就是說(shuō),數(shù)據(jù)區(qū)304與備用區(qū)306的實(shí)體區(qū)塊會(huì)以輪替方式來(lái) 儲(chǔ)存主機(jī)系統(tǒng)1000對(duì)閃存儲(chǔ)存裝置100寫入的數(shù)據(jù)。邏輯上屬于取代區(qū)308中的實(shí)體區(qū)塊122-(A+1) 122-(N)是替代實(shí)體區(qū)塊。例 如,閃存芯片106于出廠時(shí)會(huì)預(yù)留4%的實(shí)體區(qū)塊作為更換使用。也就是說(shuō),當(dāng)系統(tǒng)區(qū)302、 數(shù)據(jù)區(qū)304與備用區(qū)306中的實(shí)體區(qū)塊損毀時(shí),預(yù)留于取代區(qū)308中的實(shí)體區(qū)塊可用以取 代損壞的實(shí)體區(qū)塊(即,壞實(shí)體區(qū)塊(bad block))。因此,倘若取代區(qū)308中仍存有可用的 實(shí)體區(qū)塊且發(fā)生實(shí)體區(qū)塊損毀時(shí),內(nèi)存管理單元204會(huì)從取代區(qū)308中提取可用的實(shí)體區(qū) 塊來(lái)更換損毀的實(shí)體區(qū)塊。倘若取代區(qū)308中無(wú)可用的實(shí)體區(qū)塊且發(fā)生實(shí)體區(qū)塊損毀時(shí), 則閃存儲(chǔ)存裝置100將會(huì)被宣告為寫入保護(hù)(write protect),而無(wú)法再寫入數(shù)據(jù)。由于閃存儲(chǔ)存裝置100是以輪替方式儲(chǔ)存主機(jī)系統(tǒng)1000欲儲(chǔ)存的數(shù)據(jù),因此閃存 控制器104會(huì)提供邏輯區(qū)塊350-(0) 350-(H)給主機(jī)系統(tǒng)1000以進(jìn)行數(shù)據(jù)存取,并且維 護(hù)邏輯地址-實(shí)體地址映像表來(lái)記錄邏輯區(qū)塊350-(0) 350-H與實(shí)體區(qū)塊122-(0) 122-(N)之間的映射關(guān)系。例如,當(dāng)主機(jī)系統(tǒng)欲寫入數(shù)據(jù)至邏輯區(qū)塊350-(0)時(shí),閃存控制器104通過(guò)邏輯 地址-實(shí)體地址映像表得知邏輯區(qū)塊350-(0)目前是映像邏輯上屬于數(shù)據(jù)區(qū)304的實(shí)體 區(qū)塊122-(S+1)。因此,內(nèi)存管理單元204會(huì)對(duì)實(shí)體區(qū)塊122-(S+1)中的數(shù)據(jù)進(jìn)行更新, 期間,閃存控制器104會(huì)從備用區(qū)306中提取實(shí)體區(qū)塊122-Φ+1)來(lái)輪替數(shù)據(jù)區(qū)304的 實(shí)體區(qū)塊122-(S+1)。然而,當(dāng)內(nèi)存管理單元204將新數(shù)據(jù)寫入至實(shí)體區(qū)塊122-Φ+1)的 同時(shí),內(nèi)存管理單元204不會(huì)立刻將實(shí)體區(qū)塊122-(S+1)中的所有有效舊數(shù)據(jù)搬移至實(shí) 體區(qū)塊122-Φ+1)而抹除實(shí)體區(qū)塊122-(S+1)。具體來(lái)說(shuō),內(nèi)存管理單元204會(huì)將實(shí)體區(qū)塊122-(S+1)中欲寫入頁(yè)面之前的有效舊數(shù)據(jù)(即,實(shí)體頁(yè)面PO與Pl)復(fù)制至實(shí)體區(qū)塊 122-Φ+1)(如圖4A所示),并且將新數(shù)據(jù)(即,實(shí)體區(qū)塊122-Φ+1)的實(shí)體頁(yè)面P2)寫入 至實(shí)體區(qū)塊122-(D+1)(如圖4B所示)。此時(shí),閃存控制器104即完成寫入的動(dòng)作,并響應(yīng) 主機(jī)系統(tǒng)1000已完成寫入指令。因?yàn)?,?shí)體區(qū)塊122-(S+1)中的有效數(shù)據(jù)有可能在下個(gè)操 作(例如,寫入指令)中變成無(wú)效,因此立刻將實(shí)體區(qū)塊122-(S+1)中的所有有效舊數(shù)據(jù)搬 移至實(shí)體區(qū)塊122-Φ+1)可能會(huì)造成無(wú)謂的搬移。在此案例中,實(shí)體區(qū)塊122-(S+1)與實(shí) 體區(qū)塊122-(D+1)的內(nèi)容整合起來(lái)才是所映像邏輯區(qū)塊350-0的完整內(nèi)容。在此,此時(shí)實(shí) 體區(qū)塊122-(S+1)與實(shí)體區(qū)塊122-Φ+1)稱為母子區(qū)塊,而母子區(qū)塊的組數(shù)是依據(jù)閃存控 制器104中緩沖存儲(chǔ)器的大小而定,而暫時(shí)地維持此種母子區(qū)塊瞬時(shí)關(guān)系的動(dòng)作稱為開(kāi)啟 (open)母子區(qū)塊。之后,當(dāng)需要將實(shí)體區(qū)塊122-(S+1)與實(shí)體區(qū)塊122-(D+1)的內(nèi)容真正合并時(shí),閃 存控制器104才會(huì)將實(shí)體區(qū)塊122-(S+1)與實(shí)體區(qū)塊122-(D+1)整并為一個(gè)實(shí)體區(qū)塊,由 此提升區(qū)塊的使用效率,此合并的動(dòng)作稱為關(guān)閉(close)母子區(qū)塊。例如,如圖4C所示,當(dāng)主機(jī)系統(tǒng)1000傳送一寫入指令至閃存控制器104以在另一 邏輯區(qū)塊儲(chǔ)存數(shù)據(jù),并且內(nèi)存管理單元204判斷開(kāi)啟母子區(qū)塊的組數(shù)已達(dá)系統(tǒng)設(shè)計(jì)的上限 而需合并實(shí)體區(qū)塊122-(S+1)與實(shí)體區(qū)塊122-(D+1)時(shí),內(nèi)存管理單元204會(huì)將實(shí)體區(qū)塊 122-(S+1)中剩余的有效舊數(shù)據(jù)(即,實(shí)體頁(yè)面P3 PN)復(fù)制至實(shí)體區(qū)塊122-Φ+1),然 后將實(shí)體區(qū)塊122-(S+1)抹除并關(guān)聯(lián)為備用區(qū)306,同時(shí),將實(shí)體區(qū)塊122-Φ+1)關(guān)聯(lián)為數(shù) 據(jù)區(qū)304,并且在邏輯地址-實(shí)體地址映像表中將邏輯區(qū)塊350-0的映像更改為實(shí)體區(qū)塊 122-(D+1),由此完成關(guān)閉母子區(qū)塊的動(dòng)作。在本范例實(shí)施例中,當(dāng)主機(jī)接口單元206接收到來(lái)自于主機(jī)系統(tǒng)1000的主機(jī)寫入 指令以及對(duì)應(yīng)此主機(jī)寫入指令的寫入數(shù)據(jù)時(shí),內(nèi)存管理單元204會(huì)向閃存芯片106發(fā)送數(shù) 據(jù)程序化指令以將來(lái)自于主機(jī)系統(tǒng)1000的寫入數(shù)據(jù)寫入至實(shí)體區(qū)塊。具體來(lái)說(shuō),每一邏輯 區(qū)塊350-(0) 350-(H)會(huì)包括多個(gè)邏輯頁(yè)面,且每一邏輯頁(yè)面是由數(shù)個(gè)邏輯地址所組成, 因此當(dāng)主機(jī)系統(tǒng)1000在邏輯地址中存取數(shù)據(jù)時(shí),內(nèi)存管理單元204就可依據(jù)所存取的邏輯 地址所屬的邏輯區(qū)塊來(lái)在實(shí)體區(qū)塊的實(shí)體頁(yè)面中實(shí)際地讀取或?qū)懭霐?shù)據(jù)。在本范例實(shí)施例 中,內(nèi)存管理單元204是使用邏輯表達(dá)式將此主機(jī)寫入指令中所指示的邏輯地址轉(zhuǎn)換至映 像的邏輯區(qū)塊,并且依據(jù)邏輯地址-實(shí)體地址映像表來(lái)將所映像的邏輯區(qū)塊映像至實(shí)體區(qū) 塊。特別是,內(nèi)存管理單元204在將寫入數(shù)據(jù)寫入至實(shí)體區(qū)塊的實(shí)體頁(yè)面后,內(nèi)存管 理單元204會(huì)向閃存芯片106發(fā)送讀取指令以將剛剛所寫入的數(shù)據(jù)讀取出來(lái),并且錯(cuò)誤校 正單元210會(huì)對(duì)所讀取的數(shù)據(jù)執(zhí)行錯(cuò)誤校正程序來(lái)判斷寫入運(yùn)作是否有發(fā)生錯(cuò)誤。例如, 當(dāng)內(nèi)存管理單元204使用數(shù)據(jù)程序化指令將寫入數(shù)據(jù)寫入至實(shí)體區(qū)塊122- (D+1)的實(shí)體頁(yè) 面P2之后,內(nèi)存管理單元204會(huì)立即下達(dá)讀取指令來(lái)讀取儲(chǔ)存于實(shí)體區(qū)塊122- (D+1)的實(shí) 體頁(yè)面P2中的數(shù)據(jù),并且錯(cuò)誤校正單元210會(huì)對(duì)所讀取的數(shù)據(jù)執(zhí)行錯(cuò)誤校正程序,其中當(dāng) 錯(cuò)誤校正單元210判斷所讀取的數(shù)據(jù)存有錯(cuò)誤位時(shí),則內(nèi)存管理單元204會(huì)判定寫入運(yùn)作 有發(fā)生錯(cuò)誤且儲(chǔ)存在實(shí)體區(qū)塊122-(D+1)的實(shí)體頁(yè)面P2中的數(shù)據(jù)存有錯(cuò)誤位。也就是說(shuō), 在本范例實(shí)施例中,在閃存控制器104執(zhí)行主機(jī)寫入指令期間,內(nèi)存管理單元204除了將寫 入數(shù)據(jù)寫入至閃存芯片106之外,內(nèi)存管理單元204還會(huì)將所寫入的數(shù)據(jù)讀取出來(lái)以驗(yàn)證數(shù)據(jù)的正確性。在此,所謂“執(zhí)行主機(jī)寫入指令期間”是指從主機(jī)系統(tǒng)1000向閃存儲(chǔ)存裝 置100下達(dá)主機(jī)寫入指令到閃存控制器104響應(yīng)主機(jī)系統(tǒng)1000確認(rèn)信息(即,告知主機(jī)系 統(tǒng)已完成寫入的信息)的一段期間。例如,在執(zhí)行主機(jī)寫入指令期間,當(dāng)錯(cuò)誤校正單元210判斷從實(shí)體區(qū)塊122_(D+1) 的實(shí)體頁(yè)面P2中所讀取的數(shù)據(jù)存有錯(cuò)誤位且此錯(cuò)誤位的數(shù)目超過(guò)錯(cuò)誤校正單元210的最 大錯(cuò)誤校正位數(shù)(即,錯(cuò)誤校正單元210無(wú)法將錯(cuò)誤位進(jìn)行更正)時(shí),內(nèi)存管理單元204會(huì) 將實(shí)體區(qū)塊122-Φ+1)內(nèi)其它實(shí)體頁(yè)面中的有效數(shù)據(jù)搬移至另一個(gè)實(shí)體區(qū)塊(例如,實(shí)體 區(qū)塊122-Φ+2))中,并且將實(shí)體區(qū)塊122-(D+1)標(biāo)記為壞實(shí)體區(qū)塊。同時(shí),內(nèi)存管理單元 204會(huì)向主機(jī)系統(tǒng)1000傳送一寫入錯(cuò)誤信息。例如,主機(jī)系統(tǒng)1000可依據(jù)此寫入錯(cuò)誤信 息,重新傳送主機(jī)寫入指令與對(duì)應(yīng)的寫入數(shù)據(jù)。此外,在錯(cuò)誤校正單元210判斷從實(shí)體區(qū)塊122-Φ+1)的實(shí)體頁(yè)面P2中所讀取的 數(shù)據(jù)存有錯(cuò)誤位的例子中,倘若此錯(cuò)誤位的數(shù)目未超過(guò)錯(cuò)誤校正單元210的最大錯(cuò)誤校正 位數(shù)(即,錯(cuò)誤校正單元210可將錯(cuò)誤位進(jìn)行更正)時(shí),則內(nèi)存管理單元204會(huì)依據(jù)錯(cuò)誤 校正單元210的錯(cuò)誤校正結(jié)果來(lái)判斷此錯(cuò)誤位的數(shù)目是否超過(guò)一錯(cuò)誤位門坎值。另外,倘 若此錯(cuò)誤位的數(shù)目超過(guò)錯(cuò)誤位門坎值時(shí),則內(nèi)存管理單元204會(huì)將實(shí)體區(qū)塊122-(D+1)內(nèi) 的所有有效數(shù)據(jù)搬移至另一個(gè)實(shí)體區(qū)塊(例如,實(shí)體區(qū)塊122-(D+2))中,并且將實(shí)體區(qū)塊 310 (D+1)標(biāo)記為壞實(shí)體區(qū)塊。在此,錯(cuò)誤位門坎值是依據(jù)欲達(dá)到的可靠度來(lái)設(shè)定,其可以是 任何適當(dāng)?shù)臄?shù)值。具體來(lái)說(shuō),盡管所讀取的數(shù)據(jù)的錯(cuò)誤位的數(shù)目未超過(guò)錯(cuò)誤校正單元210 的最大錯(cuò)誤校正位數(shù),然而,當(dāng)所儲(chǔ)存的數(shù)據(jù)的錯(cuò)誤位的數(shù)目過(guò)多時(shí),此實(shí)體區(qū)塊也處于相 當(dāng)不可靠的狀態(tài),因此,內(nèi)存管理單元204會(huì)將此實(shí)體區(qū)塊標(biāo)記為壞實(shí)體區(qū)塊。在本范例實(shí) 施例中,錯(cuò)誤位門坎值是設(shè)定為錯(cuò)誤校正單元210的最大錯(cuò)誤校正位數(shù)的50%。再者,例如,在內(nèi)存管理單元204依據(jù)錯(cuò)誤校正單元210的錯(cuò)誤校正結(jié)果判斷從實(shí) 體區(qū)塊122-Φ+1)的實(shí)體頁(yè)面P2中所讀取的數(shù)據(jù)的錯(cuò)誤位的數(shù)目未超過(guò)錯(cuò)誤位門坎值的 例子中,內(nèi)存管理單元204會(huì)將實(shí)體區(qū)塊122-Φ+1)標(biāo)記為不可靠實(shí)體區(qū)塊。具體來(lái)說(shuō), 內(nèi)存管理單元204會(huì)使用一不可靠實(shí)體區(qū)塊記錄表來(lái)記錄關(guān)于實(shí)體區(qū)塊122-(D+1)的信 息。特別是,后續(xù)當(dāng)內(nèi)存管理單元204執(zhí)行寫入運(yùn)作而以上述輪替方式來(lái)儲(chǔ)存數(shù)據(jù)時(shí),被記 錄于不可靠實(shí)體區(qū)塊記錄表中的實(shí)體區(qū)塊將不會(huì)優(yōu)先被使用。例如,內(nèi)存管理單元204會(huì) 先使用取代區(qū)308中的實(shí)體區(qū)塊來(lái)儲(chǔ)存數(shù)據(jù),并且當(dāng)壞實(shí)體區(qū)塊過(guò)多而無(wú)法執(zhí)行寫入運(yùn)作 來(lái)寫入數(shù)據(jù)時(shí),內(nèi)存管理單元204才會(huì)使用不可靠實(shí)體區(qū)塊記錄表中的實(shí)體區(qū)塊來(lái)寫入數(shù) 據(jù)。值得一提的是,在本范例實(shí)施例中,當(dāng)內(nèi)存管理單元204對(duì)實(shí)體區(qū)塊執(zhí)行寫入運(yùn) 作時(shí),內(nèi)存管理單元204會(huì)將剛剛所寫入的數(shù)據(jù)讀取出來(lái)以確認(rèn)所寫入的數(shù)據(jù)是否正確。 然而,本發(fā)明不限于此,在本發(fā)明另一范例實(shí)施例中,內(nèi)存管理單元204也可從所寫入實(shí)體 區(qū)塊一并讀取其它頁(yè)面中所儲(chǔ)存的數(shù)據(jù),由此確認(rèn)實(shí)體區(qū)塊的狀態(tài)。圖5是根據(jù)本發(fā)明第一范例實(shí)施例所繪示用于閃存的數(shù)據(jù)寫入方法的流程圖。請(qǐng)參照?qǐng)D5,在步驟S501中閃存控制器104從主機(jī)系統(tǒng)1000中接收主機(jī)寫入指令 與對(duì)應(yīng)此主機(jī)寫入指令的邏輯地址與寫入數(shù)據(jù)。在步驟S503中,閃存控制器104的內(nèi)存管理單元204會(huì)依據(jù)對(duì)應(yīng)主機(jī)寫入的邏輯 地址所對(duì)映的邏輯區(qū)塊使用數(shù)據(jù)程序化指令將寫入數(shù)據(jù)寫入至閃存芯片106的實(shí)體區(qū)塊的實(shí)體頁(yè)面(例如,實(shí)體區(qū)塊122-(D+1)的實(shí)體頁(yè)面P2)中。之后,在步驟S505中,內(nèi)存管理單元204會(huì)向閃存芯片106發(fā)送讀取指令以從剛 剛被寫入的實(shí)體區(qū)塊(例如,實(shí)體區(qū)塊122-Φ+1)的實(shí)體頁(yè)面P2)中讀取數(shù)據(jù),并且在步驟 S507中錯(cuò)誤校正單元210會(huì)對(duì)所讀取的數(shù)據(jù)進(jìn)行錯(cuò)誤校正程序以判斷所讀取的數(shù)據(jù)是否 存有錯(cuò)誤位。倘若在步驟S507中錯(cuò)誤校正單元210判斷所讀取的數(shù)據(jù)無(wú)存有錯(cuò)誤位時(shí),則結(jié)束 圖5所示的數(shù)據(jù)寫入流程。倘若在步驟S507中錯(cuò)誤校正單元210判斷所讀取的數(shù)據(jù)存有錯(cuò)誤位時(shí),則在步驟 S509中內(nèi)存管理單元204會(huì)依據(jù)錯(cuò)誤校正的結(jié)果判斷錯(cuò)誤位的數(shù)目是否超過(guò)最大錯(cuò)誤校 正位數(shù)。倘若錯(cuò)誤位的數(shù)目超過(guò)最大錯(cuò)誤校正位數(shù)時(shí),則在步驟S511中內(nèi)存管理單元204 會(huì)將此實(shí)體區(qū)塊內(nèi)其它正確的數(shù)據(jù)復(fù)制到另一實(shí)體區(qū)塊(例如,實(shí)體區(qū)塊122-Φ+2)),并 且在步驟S513中將此實(shí)體區(qū)塊(即,在步驟S503中被寫入數(shù)據(jù)的實(shí)體區(qū)塊)標(biāo)記為壞實(shí) 體區(qū)塊。接著,在步驟S515中向主機(jī)系統(tǒng)1000傳送對(duì)應(yīng)此主機(jī)寫入指令的寫入錯(cuò)誤信息 并結(jié)束圖5所示的數(shù)據(jù)寫入流程。倘若錯(cuò)誤位的數(shù)目未超過(guò)最大錯(cuò)誤校正位數(shù)時(shí),則在步驟S517中內(nèi)存管理單元 204會(huì)依據(jù)錯(cuò)誤校正的結(jié)果判斷錯(cuò)誤位的數(shù)目是否超過(guò)錯(cuò)誤位門坎值。倘若錯(cuò)誤位的數(shù)目 超過(guò)錯(cuò)誤位門坎值時(shí),則在步驟S519中內(nèi)存管理單元204會(huì)將此實(shí)體區(qū)塊內(nèi)所有數(shù)據(jù)復(fù)制 到另一實(shí)體區(qū)塊(例如,實(shí)體區(qū)塊310-(D+2))。接著,在步驟S521中將此實(shí)體區(qū)塊(S卩,在 步驟S503中被寫入數(shù)據(jù)的實(shí)體區(qū)塊)標(biāo)記為壞實(shí)體區(qū)塊并結(jié)束圖5所示的數(shù)據(jù)寫入流程。倘若錯(cuò)誤位的數(shù)目未超過(guò)錯(cuò)誤位門坎值時(shí),則在步驟S523中內(nèi)存管理單元204會(huì) 將此實(shí)體區(qū)塊(即,在步驟S503中被寫入數(shù)據(jù)的實(shí)體區(qū)塊)標(biāo)記為不可靠實(shí)體區(qū)塊并結(jié)束 圖5所示的數(shù)據(jù)寫入流程。如上所述,例如,在步驟523中內(nèi)存管理單元204使用不可靠實(shí) 體區(qū)塊記錄表來(lái)記錄標(biāo)記為不可靠實(shí)體區(qū)塊的實(shí)體區(qū)塊的信息。值得一提的是,在本范例實(shí)施例中,在執(zhí)行主機(jī)寫入指令時(shí)內(nèi)存管理單元204會(huì) 從剛剛寫入數(shù)據(jù)的實(shí)體頁(yè)面中讀取數(shù)據(jù)并由錯(cuò)誤校正單元210來(lái)執(zhí)行錯(cuò)誤校正程序以判 斷所讀取的數(shù)據(jù)是否存有錯(cuò)誤位。然而,本發(fā)明不限于此,在本發(fā)明另一范例實(shí)施例中,內(nèi) 存管理單元204也可將所讀取的數(shù)據(jù)與從主機(jī)系統(tǒng)1000中所接收的寫入數(shù)據(jù)來(lái)一個(gè)位接 著一個(gè)位來(lái)逐一比對(duì),以判斷所讀取的數(shù)據(jù)是否存有錯(cuò)誤位及其存有的錯(cuò)誤位的個(gè)數(shù)。[第二范例實(shí)施例]圖6是根據(jù)本發(fā)明第二范例實(shí)施例所繪示的閃存儲(chǔ)存裝置的概要方塊圖。閃存存儲(chǔ)裝置600是通過(guò)數(shù)據(jù)傳輸接口 1110與主機(jī)系統(tǒng)1000的其它組件電性連 接,并且通過(guò)微處理器1102、隨機(jī)存取內(nèi)存1104與輸入/輸出裝置1106的運(yùn)作,主機(jī)系統(tǒng) 1000可將數(shù)據(jù)寫入至閃存儲(chǔ)存裝置600或從閃存儲(chǔ)存裝置600中讀取數(shù)據(jù)。同樣的,閃存 儲(chǔ)存裝置600可以是如圖IB所示的隨身碟1212、記憶卡1214或固態(tài)硬盤1216,或者是如 圖IC所示的SD卡1312,MMC卡1314、記憶棒1316,CF卡1318或嵌入式儲(chǔ)存裝置1320 (如 圖IC所示)。嵌入式儲(chǔ)存裝置1320包括嵌入式多媒體卡(Embedded MMC, eMMC)。值得一 提的是,嵌入式多媒體卡是直接電性連接于主機(jī)系統(tǒng)的基板上。請(qǐng)參照?qǐng)D6,閃存儲(chǔ)存裝置600包括連接器602、閃存控制器604與閃存芯片606。連接器602是電性連接至閃存控制器604并且用以電性連接至主機(jī)系統(tǒng)1000。在本范例實(shí)施例中,連接器602為SATA連接器。然而,必須了解的是本發(fā)明不限于此,連接器 602也可以是PATA連接器、USB連接器、IEEE 1394連接器、PCI Express連接器、SD接口連 接器、MS接口連接器、MMC接口連接器、CF接口連接器、IDE連接器或其它適合的連接器。閃存控制器604會(huì)執(zhí)行以硬件型式或韌體型式實(shí)作的多個(gè)邏輯閘或控制指令,并 且根據(jù)主機(jī)系統(tǒng)1000的指令在閃存芯片606中進(jìn)行數(shù)據(jù)的寫入、讀取與抹除等運(yùn)作。閃存 控制器604包括微處理器單元612、內(nèi)存管理單元614、主機(jī)接口單元616與閃存接口單元 618。微處理器單元612、主機(jī)接口單元616與閃存接口單元618本質(zhì)上是相同于微處理器 單元202、主機(jī)接口單元206與閃存接口單元208,在此不重復(fù)描述。內(nèi)存管理單元614是電性連接至微處理器單元612,用以執(zhí)行根據(jù)本范例實(shí)施例 的數(shù)據(jù)寫入機(jī)制與區(qū)塊管理機(jī)制,內(nèi)存管理單元614的運(yùn)作將于以下配合圖式作詳細(xì)說(shuō) 明。在本范例實(shí)施例中,內(nèi)存管理單元614是以一韌體型式實(shí)作在閃存控制器604 中。例如,將包括多個(gè)控制指令的內(nèi)存管理單元614燒錄至一程序內(nèi)存(例如,只讀存儲(chǔ)器 (Read Only Memory, ROM))中并且將此程序內(nèi)存嵌入在閃存控制器604中,當(dāng)閃存儲(chǔ)存裝 置600運(yùn)作時(shí),內(nèi)存管理單元614的多個(gè)控制指令會(huì)由微處理器單元612來(lái)執(zhí)行以完成根 據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)寫入機(jī)制與區(qū)塊管理機(jī)制。在本發(fā)明另一范例實(shí)施例中,內(nèi)存管理單元614的控制指令也可以程序代碼型式 儲(chǔ)存于閃存芯片606的特定區(qū)域(例如,閃存芯片中專用于存放系統(tǒng)數(shù)據(jù)的系統(tǒng)區(qū))中。 同樣的,當(dāng)閃存儲(chǔ)存裝置600運(yùn)作時(shí),內(nèi)存管理單元614的多個(gè)控制指令會(huì)由微處理器單元 612來(lái)執(zhí)行。此外,在本發(fā)明另一范例實(shí)施例中,內(nèi)存管理單元614也可以一硬件型式實(shí)作 在閃存控制器604中。閃存芯片606是電性連接至閃存控制器604并且用以儲(chǔ)存數(shù)據(jù)。閃存芯片606是 MLC NAND閃存芯片,其具有實(shí)體區(qū)塊122-(0) 122-(N)與錯(cuò)誤校正單元620。在第二范 例實(shí)施例中,實(shí)體區(qū)塊的配置與運(yùn)作方式是相同于第一范例實(shí)施例,在此不再重復(fù)描述。錯(cuò)誤校正單元620用以執(zhí)行錯(cuò)誤校正程序以確保數(shù)據(jù)的正確性。具體來(lái)說(shuō),當(dāng)內(nèi) 存管理單元614從主機(jī)系統(tǒng)1000中接收到主機(jī)寫入指令并且將數(shù)據(jù)寫入至閃存芯片606 時(shí),錯(cuò)誤校正單元620會(huì)為所寫入的寫入數(shù)據(jù)產(chǎn)生對(duì)應(yīng)的錯(cuò)誤檢查與校正碼,并且所產(chǎn)生 的錯(cuò)誤檢查與校正碼會(huì)與此寫入數(shù)據(jù)一起寫入至實(shí)體區(qū)塊122-(0) 122-(N)中。之后, 當(dāng)內(nèi)存管理單元614從閃存芯片606中讀取數(shù)據(jù)時(shí)錯(cuò)誤校正單元620會(huì)依據(jù)所讀取的數(shù)據(jù) 對(duì)應(yīng)的錯(cuò)誤校正碼來(lái)執(zhí)行錯(cuò)誤校正程序,以確認(rèn)所讀取的數(shù)據(jù)的正確性。在本范例實(shí)施例 中,錯(cuò)誤校正單元620的最大錯(cuò)誤校正位數(shù)為26。也就是說(shuō),在數(shù)據(jù)的錯(cuò)誤位數(shù)不超過(guò)沈 的情況下,錯(cuò)誤校正單元620能夠偵測(cè)此些錯(cuò)誤位并且將數(shù)據(jù)進(jìn)行校正。必須了解的是,本 發(fā)明不限于此,錯(cuò)誤校正單元的最大錯(cuò)誤校正位數(shù)可以是任何適當(dāng)?shù)臄?shù)值,例如4個(gè)位、16 個(gè)位或64個(gè)位。特別是,內(nèi)存管理單元614在將寫入數(shù)據(jù)寫入至實(shí)體區(qū)塊的實(shí)體頁(yè)面后,內(nèi)存管 理單元614會(huì)向閃存芯片606發(fā)送寫入確認(rèn)指令以判斷剛剛所寫入的數(shù)據(jù)是否存有錯(cuò)誤 位。具體來(lái)說(shuō),當(dāng)閃存芯片606接收到寫入確認(rèn)指令時(shí),閃存芯片606會(huì)從剛剛所寫入實(shí) 體頁(yè)面中讀取數(shù)據(jù),由錯(cuò)誤校正單元620執(zhí)行錯(cuò)誤校正程序以判斷所儲(chǔ)存的數(shù)據(jù)是否存有 錯(cuò)誤位,并且閃存芯片606會(huì)將錯(cuò)誤校正結(jié)果傳送給內(nèi)存管理單元614,由此內(nèi)存管理單元614可依據(jù)錯(cuò)誤校正單元620的錯(cuò)誤校正結(jié)果來(lái)判斷剛剛所寫入的數(shù)據(jù)是否存有錯(cuò)誤位。例如,在執(zhí)行主機(jī)寫入指令期間,在錯(cuò)誤校正單元620判斷從實(shí)體區(qū)塊122_(D+1) 的實(shí)體頁(yè)面P2中所讀取的數(shù)據(jù)存有錯(cuò)誤位且此錯(cuò)誤位的數(shù)目超過(guò)錯(cuò)誤校正單元620的最 大錯(cuò)誤校正位數(shù)(即,錯(cuò)誤校正單元620無(wú)法將錯(cuò)誤位進(jìn)行更正)的例子中,內(nèi)存管理單元 614會(huì)將實(shí)體區(qū)塊122-Φ+1)內(nèi)其它實(shí)體頁(yè)面中的有效數(shù)據(jù)搬移至另一個(gè)實(shí)體區(qū)塊(例如, 實(shí)體區(qū)塊122-Φ+2))中,并且將實(shí)體區(qū)塊122-(D+1)標(biāo)記為壞實(shí)體區(qū)塊。同時(shí),內(nèi)存管理 單元614會(huì)向主機(jī)系統(tǒng)1000傳送一寫入錯(cuò)誤信息。例如,主機(jī)系統(tǒng)1000可依據(jù)此寫入錯(cuò) 誤信息,重新傳送主機(jī)寫入指令與對(duì)應(yīng)的寫入數(shù)據(jù)。此外,在錯(cuò)誤校正單元620判斷從實(shí)體區(qū)塊122-Φ+1)的實(shí)體頁(yè)面P2中所讀取 的數(shù)據(jù)存有錯(cuò)誤位的例子中,倘若此錯(cuò)誤位的數(shù)目未超過(guò)錯(cuò)誤校正單元620的最大錯(cuò)誤校 正位數(shù)(即,錯(cuò)誤校正單元620可將錯(cuò)誤位進(jìn)行更正)時(shí),則內(nèi)存管理單元614會(huì)依據(jù)錯(cuò) 誤校正單元620的錯(cuò)誤校正結(jié)果來(lái)判斷此錯(cuò)誤位的數(shù)目是否超過(guò)上述的錯(cuò)誤位門坎值,其 中當(dāng)此錯(cuò)誤位的數(shù)目超過(guò)錯(cuò)誤位門坎值時(shí),內(nèi)存管理單元614會(huì)將實(shí)體區(qū)塊122-(D+1)內(nèi) 的所有有效數(shù)據(jù)搬移至另一個(gè)實(shí)體區(qū)塊(例如,實(shí)體區(qū)塊122-(D+2))中,并且將實(shí)體區(qū)塊 122-(D+1)標(biāo)記為壞實(shí)體區(qū)塊。再者,在內(nèi)存管理單元614依據(jù)錯(cuò)誤校正單元620的錯(cuò)誤校正結(jié)果判斷從實(shí)體區(qū) 塊122-Φ+1)的實(shí)體頁(yè)面P2中所讀取的數(shù)據(jù)的錯(cuò)誤位的數(shù)目未超過(guò)錯(cuò)誤位門坎值的例子 中,內(nèi)存管理單元614會(huì)將實(shí)體區(qū)塊122-(D+1)標(biāo)記為上述的不可靠實(shí)體區(qū)塊。值得一提的是,在本范例實(shí)施例中,當(dāng)內(nèi)存管理單元614對(duì)實(shí)體區(qū)塊執(zhí)行寫入運(yùn) 作時(shí),內(nèi)存管理單元614會(huì)確認(rèn)所寫入的數(shù)據(jù)是否正確。然而,本發(fā)明不限于此,在本發(fā)明 另一范例實(shí)施例中,內(nèi)存管理單元614也會(huì)確認(rèn)其它頁(yè)面中所儲(chǔ)存的數(shù)據(jù)是否正確,由此 確認(rèn)實(shí)體區(qū)塊的狀態(tài)。圖7是根據(jù)本發(fā)明第二范例實(shí)施例所繪示用于閃存的數(shù)據(jù)寫入方法的流程圖。請(qǐng)參照?qǐng)D7,在步驟S701中閃存控制器604從主機(jī)系統(tǒng)1000中接收主機(jī)寫入指令 與對(duì)應(yīng)此主機(jī)寫入指令的邏輯地址與寫入數(shù)據(jù)。在步驟S703中,閃存控制器604的內(nèi)存管理單元614會(huì)依據(jù)對(duì)應(yīng)主機(jī)寫入的邏輯 地址所對(duì)映的邏輯區(qū)塊使用數(shù)據(jù)程序化指令將寫入數(shù)據(jù)寫入至閃存芯片606的實(shí)體區(qū)塊 的實(shí)體頁(yè)面(例如,實(shí)體區(qū)塊122-(D+1)的實(shí)體頁(yè)面P2)中。之后,在步驟S705中,內(nèi)存管理單元614會(huì)向閃存芯片606發(fā)送寫入確認(rèn)指令,并 且從閃存芯片606中接收到錯(cuò)誤校正結(jié)果。接著,在步驟S707中內(nèi)存管理單元614會(huì)依據(jù) 錯(cuò)誤校正結(jié)果來(lái)判斷剛剛寫入至實(shí)體頁(yè)面(例如,實(shí)體區(qū)塊122-Φ+1)的實(shí)體頁(yè)面P2)的 數(shù)據(jù)是否存有錯(cuò)誤位。倘若在步驟S707中依據(jù)錯(cuò)誤校正結(jié)果判斷剛剛所寫入的數(shù)據(jù)不存有錯(cuò)誤位時(shí), 則結(jié)束圖7所示的數(shù)據(jù)寫入流程。倘若在步驟S707中判斷所寫入的數(shù)據(jù)存有錯(cuò)誤位時(shí),則在步驟S709中內(nèi)存管理 單元614會(huì)依據(jù)錯(cuò)誤校正結(jié)果判斷錯(cuò)誤位的數(shù)目是否超過(guò)最大錯(cuò)誤校正位數(shù)。倘若錯(cuò)誤位 的數(shù)目超過(guò)最大錯(cuò)誤校正位數(shù)時(shí),則在步驟S711中內(nèi)存管理單元614會(huì)將此實(shí)體區(qū)塊內(nèi)其 它正確的數(shù)據(jù)復(fù)制到另一實(shí)體區(qū)塊(例如,實(shí)體區(qū)塊122-Φ+2)),并且在步驟S713中將此 實(shí)體區(qū)塊(即,在步驟S703中被寫入數(shù)據(jù)的實(shí)體區(qū)塊)標(biāo)記為壞實(shí)體區(qū)塊。接著,在步驟S715中向主機(jī)系統(tǒng)1000傳送對(duì)應(yīng)此主機(jī)寫入指令的寫入錯(cuò)誤信息并結(jié)束圖7所示的數(shù)據(jù) 寫入流程。倘若錯(cuò)誤位的數(shù)目未超過(guò)最大錯(cuò)誤校正位數(shù)時(shí),則在步驟S717中內(nèi)存管理單元 614會(huì)依據(jù)錯(cuò)誤校正結(jié)果判斷錯(cuò)誤位的數(shù)目是否超過(guò)錯(cuò)誤位門坎值。倘若錯(cuò)誤位的數(shù)目超 過(guò)錯(cuò)誤位門坎值時(shí),則在步驟S719中內(nèi)存管理單元614會(huì)將此實(shí)體區(qū)塊內(nèi)所有數(shù)據(jù)復(fù)制到 另一實(shí)體區(qū)塊(例如,實(shí)體區(qū)塊122-(D+2))。接著,在步驟S721中將此實(shí)體區(qū)塊(即,在步 驟S503中被寫入數(shù)據(jù)的實(shí)體區(qū)塊)標(biāo)記為壞實(shí)體區(qū)塊并結(jié)束圖7所示的數(shù)據(jù)寫入流程。倘若錯(cuò)誤位的數(shù)目未超過(guò)錯(cuò)誤位門坎值時(shí),則在步驟S723中內(nèi)存管理單元614會(huì) 將此實(shí)體區(qū)塊(即,在步驟S703中被寫入數(shù)據(jù)的實(shí)體區(qū)塊)標(biāo)記為不可靠實(shí)體區(qū)塊并結(jié)束 圖7所示的數(shù)據(jù)寫入流程。綜上所述,根據(jù)本發(fā)明范例實(shí)施例的數(shù)據(jù)寫入方法會(huì)在執(zhí)行主機(jī)寫入指令期間判 斷所寫入至實(shí)體頁(yè)面的數(shù)據(jù)是否存有錯(cuò)誤位,基此,可有效地確保所程序化的數(shù)據(jù)的正確 性。此外,當(dāng)數(shù)據(jù)存有錯(cuò)誤位時(shí),依據(jù)發(fā)生錯(cuò)誤的程度來(lái)標(biāo)記實(shí)體區(qū)塊,由此避免再次使用 有問(wèn)題的實(shí)體區(qū)塊,以提升閃存儲(chǔ)存系統(tǒng)的可靠性。最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡 管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然 可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替 換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精 神和范圍。
權(quán)利要求
1.一種用于閃存的數(shù)據(jù)寫入方法,用于將來(lái)自于一主機(jī)系統(tǒng)的數(shù)據(jù)寫入至一閃存芯片 中,其中所述閃存芯片包括多個(gè)實(shí)體區(qū)塊,所述數(shù)據(jù)寫入方法包括配置一閃存控制器;從所述主機(jī)系統(tǒng)中接收一主機(jī)寫入指令以及對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù),并且 通過(guò)所述閃存控制器執(zhí)行所述主機(jī)寫入指令;在執(zhí)行所述主機(jī)寫入指令期間向所述閃存芯片傳送一數(shù)據(jù)程序化指令來(lái)將所述寫入 數(shù)據(jù)寫入至所述實(shí)體區(qū)塊之中的其中一個(gè)實(shí)體區(qū)塊內(nèi);以及在執(zhí)行所述主機(jī)寫入指令期間向所述閃存芯片傳送一指令來(lái)判斷儲(chǔ)存于所述其中一 個(gè)實(shí)體區(qū)塊中的至少部分?jǐn)?shù)據(jù)是否存有至少一錯(cuò)誤位。
2.根據(jù)權(quán)利要求1所述的用于閃存的數(shù)據(jù)寫入方法,其中所述閃存控制器具有一錯(cuò)誤 校正單元,其中向所述閃存芯片傳送所述指令來(lái)判斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的至少部 分?jǐn)?shù)據(jù)是否存有所述至少一錯(cuò)誤位的步驟包括向所述閃存芯片傳送一讀取指令來(lái)從所述其中一個(gè)實(shí)體區(qū)塊中讀取數(shù)據(jù);以及通過(guò)所述錯(cuò)誤校正單元依據(jù)所讀取的數(shù)據(jù)來(lái)判斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的 數(shù)據(jù)是否具有所述至少一錯(cuò)誤位。
3.根據(jù)權(quán)利要求1所述的用于閃存的數(shù)據(jù)寫入方法,其中判斷儲(chǔ)存于所述其中一個(gè)實(shí) 體區(qū)塊中的至少部分?jǐn)?shù)據(jù)是否存有至少一錯(cuò)誤位的步驟包括僅判斷儲(chǔ)存于所述其中一個(gè) 實(shí)體區(qū)塊中對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù)是否存有所述至少一錯(cuò)誤位。
4.根據(jù)權(quán)利要求2所述的用于閃存的數(shù)據(jù)寫入方法,其中每一實(shí)體區(qū)塊具有多個(gè)實(shí)體 頁(yè)面且還包括當(dāng)儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊內(nèi)的其中一個(gè)實(shí)體頁(yè)面中的數(shù)據(jù)存有所述至少一錯(cuò) 誤位并且所述至少一錯(cuò)誤位的數(shù)目超過(guò)所述錯(cuò)誤校正單元的最大錯(cuò)誤校正位數(shù)時(shí),則將儲(chǔ) 存于所述其中一個(gè)實(shí)體區(qū)塊內(nèi)其它實(shí)體頁(yè)面中的數(shù)據(jù)搬移至所述實(shí)體區(qū)塊之中的另一個(gè) 實(shí)體區(qū)塊,將所述其中一個(gè)實(shí)體區(qū)塊標(biāo)記為一壞實(shí)體區(qū)塊。
5.根據(jù)權(quán)利要求2所述的用于閃存的數(shù)據(jù)寫入方法,其中當(dāng)所述存有所述至少一錯(cuò)誤 位的實(shí)體區(qū)塊中的數(shù)據(jù)為對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù)時(shí),通過(guò)所述閃存控制器向所 述主機(jī)系統(tǒng)傳送一寫入錯(cuò)誤信息。
6.根據(jù)權(quán)利要求2所述的用于閃存的數(shù)據(jù)寫入方法,其中每一實(shí)體區(qū)塊具有多個(gè)實(shí)體 頁(yè)面且更包括當(dāng)儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊內(nèi)的其中一個(gè)實(shí)體頁(yè)面中的數(shù)據(jù)存有所述至少一錯(cuò) 誤位,同時(shí)所述至少一錯(cuò)誤位的數(shù)目超過(guò)一錯(cuò)誤位門坎值且未超過(guò)所述錯(cuò)誤校正單元的最 大錯(cuò)誤校正位數(shù)時(shí),則將儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的數(shù)據(jù)搬移至所述實(shí)體區(qū)塊之中 的另一個(gè)實(shí)體區(qū)塊,并且將所述其中一個(gè)實(shí)體區(qū)塊標(biāo)記為一壞實(shí)體區(qū)塊。
7.根據(jù)權(quán)利要求2所述的用于閃存的數(shù)據(jù)寫入方法,其中每一實(shí)體區(qū)塊具有多個(gè)實(shí)體 頁(yè)面且還包括當(dāng)儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊內(nèi)的其中一個(gè)實(shí)體頁(yè)面中的數(shù)據(jù)存有所述至少一錯(cuò) 誤位并且所述至少一錯(cuò)誤位的數(shù)目未超過(guò)一錯(cuò)誤位門坎值時(shí),則將所述其中一個(gè)實(shí)體區(qū)塊 標(biāo)記為一不可靠實(shí)體區(qū)塊。
8.根據(jù)權(quán)利要求7所述的用于閃存的數(shù)據(jù)寫入方法,還包括使用一不可靠實(shí)體區(qū)塊記 錄表來(lái)記錄所述不可靠實(shí)體區(qū)塊。
9.根據(jù)權(quán)利要求1所述的用于閃存的數(shù)據(jù)寫入方法,其中向所述閃存芯片傳送所述 指令來(lái)判斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的數(shù)據(jù)是否存有所述至少一錯(cuò)誤位的步驟包 括向所述閃存芯片傳送一讀取指令來(lái)從所述其中一個(gè)實(shí)體區(qū)塊中讀取對(duì)應(yīng)所述主機(jī)寫 入指令的寫入數(shù)據(jù);比對(duì)所讀取的數(shù)據(jù)是否相同于所寫入的數(shù)據(jù);以及當(dāng)所讀取的數(shù)據(jù)相同于所寫入的數(shù)據(jù)時(shí),則判斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中對(duì)應(yīng) 所述主機(jī)寫入指令的寫入數(shù)據(jù)不存有所述至少一錯(cuò)誤位,并且當(dāng)所讀取的數(shù)據(jù)不相同于所 寫入的數(shù)據(jù)時(shí),則判斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù) 存有所述至少一錯(cuò)誤位。
10.根據(jù)權(quán)利要求1所述的用于閃存的數(shù)據(jù)寫入方法,其中所述閃存芯片具有一錯(cuò)誤 校正單元,并且其中向所述閃存芯片傳送所述指令來(lái)判斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的數(shù)據(jù)是 否存有所述至少一錯(cuò)誤位的步驟包括向所述閃存芯片傳送一寫入確認(rèn)指令;以及通過(guò)所述錯(cuò)誤校正單元依據(jù)所述寫入確認(rèn)指令來(lái)判斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊 中的至少部分?jǐn)?shù)據(jù)是否具有所述至少一錯(cuò)誤位。
11.一種閃存控制器,用于將來(lái)自于一主機(jī)系統(tǒng)的數(shù)據(jù)寫入至一閃存芯片中,其中所述 閃存芯片包括多個(gè)實(shí)體區(qū)塊,所述閃存控制器包括一微處理器單元;一閃存接口單元,電性連接至所述微處理器單元,用以電性連接至所述閃存芯片;一主機(jī)接口單元,電性連接至所述微處理器單元,用以電性連接至所述主機(jī)系統(tǒng),并且 從所述主機(jī)系統(tǒng)中接收一主機(jī)寫入指令以及對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù);以及一內(nèi)存管理單元,電性連接至所述微處理器單元,用以在執(zhí)行所述主機(jī)寫入指令期間 向所述閃存芯片傳送一數(shù)據(jù)程序化指令來(lái)將所述寫入數(shù)據(jù)寫入至所述實(shí)體區(qū)塊之中的其 中一個(gè)實(shí)體區(qū)塊內(nèi),其中所述內(nèi)存管理單元在執(zhí)行所述主機(jī)寫入指令期間向所述閃存芯片傳送一指令來(lái) 判斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的至少部分?jǐn)?shù)據(jù)是否存有至少一錯(cuò)誤位。
12.根據(jù)權(quán)利要求11所述的閃存控制器,還包括一錯(cuò)誤校正單元,其中所述內(nèi)存管理單元在執(zhí)行所述主機(jī)寫入指令期間向所述閃存芯片傳送一讀取指 令來(lái)從所述其中一個(gè)實(shí)體區(qū)塊中讀取數(shù)據(jù),并且所述錯(cuò)誤校正單元依據(jù)所讀取的數(shù)據(jù)來(lái)判 斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的至少部分?jǐn)?shù)據(jù)是否具有所述至少一錯(cuò)誤位。
13.根據(jù)權(quán)利要求11所述的閃存控制器,其中所述內(nèi)存管理單元僅判斷儲(chǔ)存于所述其 中一個(gè)實(shí)體區(qū)塊中對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù)是否存有所述至少一錯(cuò)誤位。
14.根據(jù)權(quán)利要求12所述的閃存控制器,其中每一實(shí)體區(qū)塊具有多個(gè)實(shí)體頁(yè)面,以及其中當(dāng)儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊內(nèi)的其中一個(gè)實(shí)體頁(yè)面中的數(shù)據(jù)存有所述至少一錯(cuò)誤位并且所述至少一錯(cuò)誤位的數(shù)目超過(guò)所述錯(cuò)誤校正單元的最大錯(cuò)誤校正位數(shù)時(shí),則所述內(nèi)存管理單元將儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊內(nèi)其它實(shí)體頁(yè)面中的數(shù)據(jù)搬移至所述 實(shí)體區(qū)塊之中的另一個(gè)實(shí)體區(qū)塊,將所述其中一個(gè)實(shí)體區(qū)塊標(biāo)記為一壞實(shí)體區(qū)塊。
15.根據(jù)權(quán)利要求12所述的閃存控制器,其中當(dāng)所述存有所述至少一錯(cuò)誤位的實(shí)體區(qū) 塊中的數(shù)據(jù)為對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù)時(shí),所述內(nèi)存管理單元向所述主機(jī)系統(tǒng)傳送一寫入錯(cuò)誤信息。
16.根據(jù)權(quán)利要求12所述的閃存控制器,其中每一實(shí)體區(qū)塊具有多個(gè)實(shí)體頁(yè)面,以及 其中當(dāng)儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊內(nèi)的其中一個(gè)實(shí)體頁(yè)面中的數(shù)據(jù)存有所述至少一錯(cuò)誤位,同時(shí)所述至少一錯(cuò)誤位的數(shù)目超過(guò)一錯(cuò)誤位門坎值且未超過(guò)所述錯(cuò)誤校正單元 的最大錯(cuò)誤校正位數(shù)時(shí),則所述內(nèi)存管理單元將儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的數(shù)據(jù)搬 移至所述實(shí)體區(qū)塊之中的另一個(gè)實(shí)體區(qū)塊,并且將所述其中一個(gè)實(shí)體區(qū)塊標(biāo)記為一壞實(shí)體 區(qū)塊。
17.根據(jù)權(quán)利要求12所述的閃存控制器,其中每一實(shí)體區(qū)塊具有多個(gè)實(shí)體頁(yè)面, 其中當(dāng)儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊內(nèi)的其中一個(gè)實(shí)體頁(yè)面中的數(shù)據(jù)存有所述至少一錯(cuò)誤位并且所述至少一錯(cuò)誤位的數(shù)目未超過(guò)一錯(cuò)誤位門坎值時(shí),則所述內(nèi)存管理單元將 所述其中一個(gè)實(shí)體區(qū)塊標(biāo)記為一不可靠實(shí)體區(qū)塊。
18.根據(jù)權(quán)利要求17所述的閃存控制器,其中所述內(nèi)存管理單元使用一不可靠實(shí)體區(qū) 塊記錄表來(lái)記錄所述不可靠實(shí)體區(qū)塊。
19.根據(jù)權(quán)利要求11所述的閃存控制器,其中所述內(nèi)存管理單元向所述閃存芯片傳送 一讀取指令來(lái)從所述其中一個(gè)實(shí)體區(qū)塊中讀取對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù),并且比 對(duì)所讀取的數(shù)據(jù)是否相同于所寫入的數(shù)據(jù),其中當(dāng)所讀取的數(shù)據(jù)相同于所寫入的數(shù)據(jù)時(shí),則所述內(nèi)存管理單元判斷儲(chǔ)存于所述其 中一個(gè)實(shí)體區(qū)塊中對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù)不存有所述至少一錯(cuò)誤位,并且當(dāng)所 讀取的數(shù)據(jù)不相同于所寫入的數(shù)據(jù)時(shí),則所述內(nèi)存管理單元判斷儲(chǔ)存于所述其中一個(gè)實(shí)體 區(qū)塊中對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù)存有所述至少一錯(cuò)誤位。
20.根據(jù)權(quán)利要求11所述的閃存控制器,其中所述閃存芯片具有一錯(cuò)誤校正單元,其中所述內(nèi)存管理單元向所述閃存芯片傳送一寫入確認(rèn)指令,并且所述錯(cuò)誤校正單元 依據(jù)所述寫入確認(rèn)指令來(lái)判斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的至少部分?jǐn)?shù)據(jù)是否具有 所述至少一錯(cuò)誤位。
21.—種閃存儲(chǔ)存系統(tǒng),包括 一閃存芯片,具有多個(gè)實(shí)體區(qū)塊;一連接器,用以電性連接至一主機(jī)系統(tǒng)并且從所述主機(jī)系統(tǒng)中接收一主機(jī)寫入指令以 及對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù);以及一閃存控制器,電性連接至所述閃存芯片與所述連接器,用以在執(zhí)行所述主機(jī)寫入指 令期間向所述閃存芯片傳送一數(shù)據(jù)程序化指令來(lái)將所述寫入數(shù)據(jù)寫入至所述實(shí)體區(qū)塊之 中的其中一個(gè)實(shí)體區(qū)塊內(nèi),其中所述閃存控制器在執(zhí)行所述主機(jī)寫入指令期間向所述閃存芯片傳送一指令來(lái)判 斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的至少部分?jǐn)?shù)據(jù)是否存有至少一錯(cuò)誤位。
22.根據(jù)權(quán)利要求21所述的閃存儲(chǔ)存系統(tǒng),其中所述閃存控制器還包括一錯(cuò)誤校正單元,其中所述閃存控制器在執(zhí)行所述主機(jī)寫入指令期間向所述閃存芯片傳送一讀取指令 來(lái)從所述其中一個(gè)實(shí)體區(qū)塊中讀取數(shù)據(jù),并且所述錯(cuò)誤校正單元依據(jù)所讀取的數(shù)據(jù)來(lái)判斷 儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的數(shù)據(jù)是否具有所述至少一錯(cuò)誤位。
23.根據(jù)權(quán)利要求21所述的閃存儲(chǔ)存系統(tǒng),其中所述閃存控制器僅判斷儲(chǔ)存于所述其 中一個(gè)實(shí)體區(qū)塊中對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù)是否存有所述至少一錯(cuò)誤位。
24.根據(jù)權(quán)利要求22所述的閃存儲(chǔ)存系統(tǒng),其中每一實(shí)體區(qū)塊具有多個(gè)實(shí)體頁(yè)面,以及其中當(dāng)儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊內(nèi)的其中一個(gè)實(shí)體頁(yè)面中的數(shù)據(jù)存有所述至少 一錯(cuò)誤位并且所述至少一錯(cuò)誤位的數(shù)目超過(guò)所述錯(cuò)誤校正單元的最大錯(cuò)誤校正位數(shù)時(shí),則 所述閃存控制器將儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊內(nèi)其它實(shí)體頁(yè)面中的數(shù)據(jù)搬移至所述實(shí) 體區(qū)塊之中的另一個(gè)實(shí)體區(qū)塊,將所述其中一個(gè)實(shí)體區(qū)塊標(biāo)記為一壞實(shí)體區(qū)塊。
25.根據(jù)權(quán)利要求22所述的閃存儲(chǔ)存系統(tǒng),其中當(dāng)所述存有所述至少一錯(cuò)誤位的實(shí)體 區(qū)塊中的數(shù)據(jù)為對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù)時(shí),所述閃存控制器向所述主機(jī)系統(tǒng)傳 送一寫入錯(cuò)誤信息。
26.根據(jù)權(quán)利要求22所述的閃存儲(chǔ)存系統(tǒng),其中每一實(shí)體區(qū)塊具有多個(gè)實(shí)體頁(yè)面,以及其中當(dāng)儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊內(nèi)的其中一個(gè)實(shí)體頁(yè)面中的數(shù)據(jù)存有所述至少 一錯(cuò)誤位,同時(shí)所述至少一錯(cuò)誤位的數(shù)目超過(guò)一錯(cuò)誤位門坎值且未超過(guò)所述錯(cuò)誤校正單元 的最大錯(cuò)誤校正位數(shù)時(shí),則所述閃存控制器將儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的數(shù)據(jù)搬移 至所述實(shí)體區(qū)塊之中的另一個(gè)實(shí)體區(qū)塊,并且將所述其中一個(gè)實(shí)體區(qū)塊標(biāo)記為一壞實(shí)體區(qū) 塊。
27.根據(jù)權(quán)利要求22所述的閃存儲(chǔ)存系統(tǒng),其中每一實(shí)體區(qū)塊具有多個(gè)實(shí)體頁(yè)面, 其中當(dāng)儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊內(nèi)的其中一個(gè)實(shí)體頁(yè)面中的數(shù)據(jù)存有所述至少 一錯(cuò)誤位并且所述至少一錯(cuò)誤位的數(shù)目未超過(guò)一錯(cuò)誤位門坎值時(shí),則所述閃存控制器將所 述其中一個(gè)實(shí)體區(qū)塊標(biāo)記為一不可靠實(shí)體區(qū)塊。
28.根據(jù)權(quán)利要求27所述的閃存儲(chǔ)存系統(tǒng),其中所述閃存控制器使用一不可靠實(shí)體區(qū) 塊記錄表來(lái)記錄所述不可靠實(shí)體區(qū)塊。
29.根據(jù)權(quán)利要求21所述的閃存儲(chǔ)存系統(tǒng),其中所述閃存控制器向所述閃存芯片傳送 一讀取指令來(lái)從所述其中一個(gè)實(shí)體區(qū)塊中讀取對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù),并且比 對(duì)所讀取的數(shù)據(jù)是否相同于所寫入的數(shù)據(jù),其中當(dāng)所讀取的數(shù)據(jù)相同于所寫入的數(shù)據(jù)時(shí),則所述閃存控制器判斷儲(chǔ)存于所述其中 一個(gè)實(shí)體區(qū)塊中對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù)不存有所述至少一錯(cuò)誤位,并且當(dāng)所讀 取的數(shù)據(jù)不相同于所寫入的數(shù)據(jù)時(shí),則所述閃存控制器判斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊 中對(duì)應(yīng)所述主機(jī)寫入指令的寫入數(shù)據(jù)存有所述至少一錯(cuò)誤位。
30.根據(jù)權(quán)利要求21所述的閃存儲(chǔ)存系統(tǒng),其中所述閃存芯片具有一錯(cuò)誤校正單元, 其中所述閃存控制器向所述閃存芯片傳送一寫入確認(rèn)指令,并且所述錯(cuò)誤校正單元依據(jù)所述寫入確認(rèn)指令來(lái)判斷儲(chǔ)存于所述其中一個(gè)實(shí)體區(qū)塊中的至少部分?jǐn)?shù)據(jù)是否具有所 述至少一錯(cuò)誤位。
全文摘要
本發(fā)明實(shí)施例提供了一種用于閃存的數(shù)據(jù)寫入方法及其控制器與儲(chǔ)存系統(tǒng),用于將來(lái)自于主機(jī)系統(tǒng)的數(shù)據(jù)寫入至閃存芯片中,其中此閃存芯片包括多個(gè)實(shí)體區(qū)塊。本方法包括從主機(jī)系統(tǒng)中接收主機(jī)寫入指令以及對(duì)應(yīng)此主機(jī)寫入指令的寫入數(shù)據(jù),并且執(zhí)行此主機(jī)寫入指令。本方法也包括在執(zhí)行此主機(jī)寫入指令期間向閃存芯片傳送數(shù)據(jù)程序化指令來(lái)將此寫入數(shù)據(jù)寫入至實(shí)體區(qū)塊中,以及判斷儲(chǔ)存于此實(shí)體區(qū)塊中的數(shù)據(jù)是否存有錯(cuò)誤位。因此,本數(shù)據(jù)寫入方法可有效地確保所寫入的數(shù)據(jù)的正確性。
文檔編號(hào)G06F11/10GK102043725SQ200910206069
公開(kāi)日2011年5月4日 申請(qǐng)日期2009年10月20日 優(yōu)先權(quán)日2009年10月20日
發(fā)明者吳宗霖, 沈育仲, 游祥雄, 黃意翔 申請(qǐng)人:群聯(lián)電子股份有限公司