存儲(chǔ)器裝置與其操作方法
【專利摘要】本發(fā)明提供了一種存儲(chǔ)器裝置。該存儲(chǔ)器裝置包括一存儲(chǔ)器控制器與一非易失性存儲(chǔ)器。非易失性存儲(chǔ)器耦接到存儲(chǔ)器控制器并儲(chǔ)存一映射表與一日志表。該存儲(chǔ)器控制器用以將一數(shù)據(jù)及該數(shù)據(jù)的一邏輯地址寫(xiě)到該非易失性存儲(chǔ)器,并從非易失性存儲(chǔ)器的映射表加載相關(guān)于該數(shù)據(jù)的邏輯地址的映射信息到存儲(chǔ)器控制器的一映射高速緩存。并且,存儲(chǔ)器控制器更用以使用該數(shù)據(jù)的邏輯地址與該數(shù)據(jù)的物理地址之間的一更新映射關(guān)系更新該映射高速緩存,并執(zhí)行一日志操作以將該更新映射關(guān)系寫(xiě)到日志表。
【專利說(shuō)明】
存儲(chǔ)器裝置與其操作方法
技術(shù)領(lǐng)域
[0001]本發(fā)明是有關(guān)于一種存儲(chǔ)器裝置與其操作方法,特別于,一存儲(chǔ)器裝置包括一非易失性存儲(chǔ)器。
【背景技術(shù)】
[0002]非易失性存儲(chǔ)器裝置是一種即使在移除電源供應(yīng)時(shí)仍可連續(xù)儲(chǔ)存數(shù)據(jù)的半導(dǎo)體裝置。閃存為非易失性裝置中已被發(fā)展的一種類型。閃存的操作通常包含將更新數(shù)據(jù)寫(xiě)入到一未使用的物理位置。為了要有效追蹤閃存中數(shù)據(jù)的物理地址,提供一映射表到閃存以儲(chǔ)存外部系統(tǒng)可使用的數(shù)據(jù)的邏輯地址與閃存可使用的數(shù)據(jù)的物理地址之間的映射信息。
【發(fā)明內(nèi)容】
[0003]根據(jù)本發(fā)明的一實(shí)施例,存儲(chǔ)器裝置包含一存儲(chǔ)器控制器與一非易失性存儲(chǔ)器。非易失性存儲(chǔ)器耦接到存儲(chǔ)器控制器并儲(chǔ)存一映射表與一日志表。存儲(chǔ)器控制器用以將一數(shù)據(jù)及該數(shù)據(jù)的一邏輯地址寫(xiě)到非易失性存儲(chǔ)器,并從非易失性存儲(chǔ)器的映射表加載相關(guān)于該數(shù)據(jù)的邏輯地址的映射信息到存儲(chǔ)器控制器的映射高速緩存(mapping cache)。并且,存儲(chǔ)器控制器還用以使用該數(shù)據(jù)的邏輯地址與該數(shù)據(jù)的物理地址之間的一更新映射關(guān)系更新該映射高速緩存,并執(zhí)行一日志操作以將該更新映射關(guān)系寫(xiě)到日志表。
[0004]根據(jù)本發(fā)明的另一實(shí)施例,提供一種由存儲(chǔ)器控制器控制存儲(chǔ)器裝置的方法。存儲(chǔ)器裝置包括一非易失性存儲(chǔ)器,用以儲(chǔ)存映射表與日志表。此方法包括:將數(shù)據(jù)與該數(shù)據(jù)的邏輯地址寫(xiě)到非易失性存儲(chǔ)器,并從非易失性存儲(chǔ)器的映射表加載相關(guān)于數(shù)據(jù)的邏輯地址的映射信息到存儲(chǔ)器控制器的映射高速緩存。此方法還包括以該數(shù)據(jù)的邏輯地址與該數(shù)據(jù)的物理地址之間的更新映射關(guān)系更新映射高速緩存,并且執(zhí)行一日志操作以將該更新映射關(guān)系寫(xiě)到日志表。
[0005]根據(jù)本發(fā)明的又一個(gè)實(shí)施例,提供一種控制非易失性存儲(chǔ)器的存儲(chǔ)器控制器。非易失性存儲(chǔ)器儲(chǔ)存一映射表與一日志表。存儲(chǔ)器控制器包括一處理電路用以將數(shù)據(jù)及該數(shù)據(jù)的邏輯地址入到非易失性存儲(chǔ)器,并從非易失性存儲(chǔ)器的映射表加載相關(guān)于該數(shù)據(jù)的邏輯地址的一映射信息到存儲(chǔ)器控制器的映射高速緩存。此處理電路更用以使用該數(shù)據(jù)的邏輯地址與該數(shù)據(jù)的物理地址之間的一更新映射關(guān)系更新該映射高速緩存,并且執(zhí)行一日志操作以將更新映射關(guān)系寫(xiě)到日志表。
[0006]所附的附圖包含在說(shuō)明書(shū)中,并與說(shuō)明書(shū)構(gòu)成本說(shuō)明書(shū)的一部分,附圖示出了本發(fā)明的幾個(gè)實(shí)施例,并且可參照說(shuō)明書(shū)用以解釋本發(fā)明的實(shí)施例。
【附圖說(shuō)明】
[0007]圖1繪示依據(jù)一實(shí)施例的一計(jì)算機(jī)系統(tǒng)的方塊圖。
[0008]圖2繪示依據(jù)一實(shí)施例的如圖1的計(jì)算機(jī)系統(tǒng)的軟件層的方塊圖。
[0009]圖3?圖6繪示依據(jù)一實(shí)施例的一寫(xiě)入程序的一例。
[0010]圖7繪示依據(jù)一實(shí)施例的一恢復(fù)程序的一例。
[0011]圖8繪示依據(jù)一實(shí)施例的一存儲(chǔ)器控制器執(zhí)行的寫(xiě)入程序的流程圖。
[0012]圖9繪示依據(jù)一實(shí)施例的一存儲(chǔ)器控制器執(zhí)行的恢復(fù)程序的流程圖。
[0013]【符號(hào)說(shuō)明】
[0014]100:計(jì)算機(jī)系統(tǒng)
[0015]110:系統(tǒng)端
[0016]115:存儲(chǔ)器裝置
[0017]120:存儲(chǔ)器控制器
[0018]122:處理電路
[0019]124:SRAM
[0020]128:映射高速緩存
[0021]130:寫(xiě)回高速緩存
[0022]140:閃存
[0023]142:存儲(chǔ)區(qū)域
[0024]142a、142b、1421、320、420、520、620:數(shù)據(jù)區(qū)塊
[0025]144:映射表
[0026]146:日志表
[0027]210:應(yīng)用層
[0028]220:文件系統(tǒng)
[0029]230:快閃轉(zhuǎn)換層
[0030]804:初始化映射高速緩存和寫(xiě)回高速緩存
[0031]806:指定閃存的一空閑數(shù)據(jù)區(qū)塊用于寫(xiě)入數(shù)據(jù)
[0032]808:接收寫(xiě)入要求寫(xiě)入數(shù)據(jù)及邏輯地址
[0033]810:寫(xiě)入數(shù)據(jù)和該數(shù)據(jù)的邏輯地址到數(shù)據(jù)區(qū)塊的一頁(yè)
[0034]812:判斷映射高速緩存是否包含邏輯地址的映射信息
[0035]814:判斷映射高速緩存是否已裝滿
[0036]816:將在映射高速緩存中較少使用的高速緩存的映射信息寫(xiě)回到閃存的映射表
[0037]818:紀(jì)錄寫(xiě)回高速緩存的寫(xiě)回信息
[0038]820:從閃存加載相關(guān)于對(duì)應(yīng)邏輯地址的一邏輯區(qū)塊的映射信息到映射高速緩存中
[0039]822:以數(shù)據(jù)的邏輯地址與數(shù)據(jù)的一物理地址之間的一更新映射關(guān)系更新映射高速緩存
[0040]824:判斷目前數(shù)據(jù)區(qū)塊是否已裝滿?
[0041 ]826:執(zhí)行一日志操作
[0042]906:讀取日志表中最后一頁(yè)的映射信息包含的高速緩存號(hào)碼
[0043]908:設(shè)定N= I
[0044]910:讀取日志表中第N頁(yè)的寫(xiě)回信息包含的高速緩存號(hào)碼
[0045]912:判斷映射高速緩存中是否也存在任何高速緩存號(hào)碼
[0046]914:從映射高速緩存中移除相關(guān)于高速緩存號(hào)碼的映射信息
[0047]916:讀取日志表中第N頁(yè)的映射信息包含的高速緩存號(hào)碼
[0048]918:判斷日志表中最后一頁(yè)的映射信息中是否也存在任何高速緩存號(hào)碼
[0049]920:從閃存的映射表加載相關(guān)于高速緩存號(hào)碼地映射信息到映射高速緩存中
[0050]922:以日志表第N頁(yè)的映射信息更新映射高速緩存
[0051]924:判斷第N頁(yè)是否為最后一頁(yè)
[0052]926:設(shè)定 N = N+1
[0053]928:以現(xiàn)在數(shù)據(jù)區(qū)塊的映射信息更新映射高速緩存
【具體實(shí)施方式】
[0054]參照附圖描述本發(fā)明的實(shí)施例。盡可能地,附圖中相同的參考符號(hào)用來(lái)表示相同或相似的元件。
[0055]圖1繪示依據(jù)一實(shí)施例的一計(jì)算機(jī)系統(tǒng)的方塊圖(在此文中稱為系統(tǒng)100)。該系統(tǒng)100包含有一系統(tǒng)端110與一存儲(chǔ)器裝置115,存儲(chǔ)器裝置115包含一存儲(chǔ)器控制器120與耦接到存儲(chǔ)器控制器120的一非易失性存儲(chǔ)器140。非易失性存儲(chǔ)器140能夠通過(guò)一閃存執(zhí)行。在下文中,非易失性存儲(chǔ)器140被稱為閃存140。然而對(duì)于本領(lǐng)域普通技術(shù)人員而言,非易失性存儲(chǔ)器140可通過(guò)任何其他種非易失性存儲(chǔ)器執(zhí)行,如一只讀存儲(chǔ)器(ROM)、一鐵電隨機(jī)存取存儲(chǔ)器(F-RAM)、一磁性的計(jì)算機(jī)儲(chǔ)存裝置或一光盤。
[0056]系統(tǒng)端110傳送一讀取或一寫(xiě)入要求到存儲(chǔ)器裝置115的存儲(chǔ)器控制器120。存儲(chǔ)器控制器120能響應(yīng)系統(tǒng)端110接收的該讀取或該寫(xiě)入要求而控制閃存140的操作。
[0057]存儲(chǔ)器控制器120包含一處理電路122與一易失性存儲(chǔ)器124。該處理電路122控制存儲(chǔ)器控制器120的全部操作。易失性存儲(chǔ)器124可通過(guò)一快速隨機(jī)存取存儲(chǔ)器,例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)或相變化隨機(jī)存取存儲(chǔ)器(PRAM)執(zhí)行。在下文中,易失性存儲(chǔ)器124被稱為SRAM 124。然而,對(duì)于本領(lǐng)域普通技術(shù)人員而言,易失性存儲(chǔ)器124可通過(guò)任何其他種易失性存儲(chǔ)器能執(zhí)行,例如DRAM或PRAM。SRAM 124作為存儲(chǔ)器控制器120的工作存儲(chǔ)器。SRAM124儲(chǔ)存映射高速緩存128及寫(xiě)回高速緩存130。映射高速緩存128暫時(shí)儲(chǔ)存存儲(chǔ)器控制器120使用的映射信息。寫(xiě)回高速緩存130用來(lái)紀(jì)錄兩個(gè)連續(xù)的日志操作之間執(zhí)行在映射高速緩存128上的多個(gè)操作,將完整描述如下。
[0058]閃存140包含多個(gè)數(shù)據(jù)區(qū)塊,數(shù)據(jù)區(qū)塊用來(lái)儲(chǔ)存存儲(chǔ)區(qū)域142的數(shù)據(jù)、映射表144的映射信息、以及日志表146的日志信息。存儲(chǔ)區(qū)域142儲(chǔ)存系統(tǒng)端110經(jīng)由存儲(chǔ)器控制器120接收的用戶數(shù)據(jù)。數(shù)據(jù)區(qū)塊142由多個(gè)數(shù)據(jù)區(qū)塊142a,142b,...,142?組成,每一個(gè)數(shù)據(jù)區(qū)塊包含多個(gè)頁(yè)面。每一個(gè)數(shù)據(jù)區(qū)塊142a,142b,...,142?包含一數(shù)據(jù)區(qū)域用來(lái)儲(chǔ)存用戶數(shù)據(jù),以及一保留區(qū)域(spare area)用來(lái)儲(chǔ)存相關(guān)于儲(chǔ)存在數(shù)據(jù)區(qū)塊的用戶數(shù)據(jù)的額外信息,例如用戶數(shù)據(jù)的物理地址及/或邏輯地址。映射表144儲(chǔ)存存儲(chǔ)區(qū)域142中的儲(chǔ)存的數(shù)據(jù)的邏輯地址與物理地址之間的映射信息。日志表146儲(chǔ)存日志信息,此日志信息為因?yàn)榇鎯?chǔ)器控制器120執(zhí)行的一操作(例如一寫(xiě)入操作)而改變的映射信息。更具體地說(shuō),日志表146包含一映射信息區(qū)域以儲(chǔ)存映射高速緩存128的更新映射信息、一最后高速緩存區(qū)域以儲(chǔ)存映射高速緩存128的映射信息,以及一寫(xiě)回區(qū)域以儲(chǔ)存寫(xiě)回高速緩存130的寫(xiě)回信息。
[0059]圖2繪示依據(jù)一實(shí)施例的如圖1的計(jì)算機(jī)系統(tǒng)的軟件層的方塊圖。請(qǐng)參照?qǐng)D2,系統(tǒng)100的軟件層包含一應(yīng)用層210、一文件系統(tǒng)220、一快閃轉(zhuǎn)換層(FTL) 230以及一閃存140。應(yīng)用層210包含執(zhí)行在系統(tǒng)100上的多種應(yīng)用程序。文件系統(tǒng)220組織欲儲(chǔ)存到閃存140的數(shù)據(jù)或文件。文件系統(tǒng)220被系統(tǒng)端110驅(qū)動(dòng)??扉W轉(zhuǎn)換層230提供在系統(tǒng)端110與閃存140之間的一接口。在一些實(shí)施例,快閃轉(zhuǎn)換層230接收由文件系統(tǒng)220所產(chǎn)生的邏輯地址(LA),并將邏輯地址轉(zhuǎn)換成閃存能使用的物理地址(PA)。
[0060]如先前所述,存儲(chǔ)器控制器120的工作存儲(chǔ)器可由SRAM 124形成,其為一易失性存儲(chǔ)器。也就是說(shuō),當(dāng)提供到SRAM 124電源供給中斷時(shí),儲(chǔ)存于SRAM 124的數(shù)據(jù)會(huì)消失,而導(dǎo)致儲(chǔ)存在SRAM 124與儲(chǔ)存在閃存140的數(shù)據(jù)之間會(huì)不一致?,F(xiàn)在已提出一種解決此問(wèn)題的方法,即以周期性的將SRAM 124的全部數(shù)據(jù)復(fù)制到閃存140,以使在電源中斷時(shí),閃存140的數(shù)據(jù)能被恢復(fù)或者能與SRAM的數(shù)據(jù)一致。然而,周期性復(fù)制SRAM124的全部數(shù)據(jù)至IJ閃存140將導(dǎo)致數(shù)據(jù)處理的大量負(fù)擔(dān),而降低系統(tǒng)效率。相反地,根據(jù)本發(fā)明實(shí)施例的有效率的日志方法將幾乎負(fù)擔(dān)而實(shí)現(xiàn)可靠的管理儲(chǔ)存在SRAM 124的數(shù)據(jù)。
[0061]圖3?圖6繪示依據(jù)一實(shí)施例的用于管理儲(chǔ)存在SRAM124的數(shù)據(jù)的一寫(xiě)入程序的一例。在圖3?6的例子中,一邏輯地址“N_M”(N與M代表任一大于或等于O的整數(shù))代表一邏輯區(qū)塊號(hào)碼“N”與一邏輯頁(yè)面號(hào)碼“M”。相似地,一物理地址“A_B”(A與B代表任一大于或等于的整數(shù),且)代表一物理區(qū)塊號(hào)碼“A”與一物理頁(yè)面號(hào)碼“B”。
[0062]在圖3?圖6的例子中,一映射表包含多個(gè)單元,其中該些單元由行與列所排列。每一個(gè)單元表示一邏輯地址與一物理地址的映射關(guān)系。在映射表中,一單元的地址(一列號(hào)碼“N”與一行號(hào)碼“M” )表示一邏輯地址“N_M”。包含在映射表的一個(gè)單元的信息“A_B”表示一物理地址“A_B”。
[0063]在圖3?圖6的例子中,假設(shè)閃存140的每一個(gè)數(shù)據(jù)區(qū)塊有4頁(yè)。然而,本領(lǐng)域普通技術(shù)人員可理解的是閃存140的每一個(gè)數(shù)據(jù)區(qū)塊可以有超過(guò)4頁(yè)。
[0064]在圖3?圖6的例子中,假設(shè)映射高速緩存128包含以4行和2列排列的多個(gè)單元,并可儲(chǔ)存兩個(gè)邏輯區(qū)塊的映射信息。映射高速緩存128中的每一列有一高速緩存號(hào)碼[#N],其表示一邏輯區(qū)塊號(hào)碼“N”。一行號(hào)碼“M”表示一邏輯頁(yè)號(hào)碼“M”。也就是說(shuō),高速緩存[#N]的第M列的一單元代表一邏輯地址“N_M”。除此之外,包含在映射高速緩存128的一單元的信息“A_B”代表一物理地址“A_B”。因此,映射高速緩存128可儲(chǔ)存超過(guò)兩個(gè)邏輯區(qū)塊的映射信息。
[0065]在圖3?圖6的例子中,圖示左半邊的表格被儲(chǔ)存在SRAM 124,以及圖示右半邊的表格被儲(chǔ)存在閃存140。
[0066]請(qǐng)參照?qǐng)D3,首先,在步驟311啟動(dòng)系統(tǒng)100。在這個(gè)階段時(shí),SRAM的映射高速緩存128與寫(xiě)回高速緩存130皆為空的,而閃存140的映射表144儲(chǔ)存該完整的映射表。如圖3所示的映射表144所指示的(當(dāng)系統(tǒng)100啟動(dòng)時(shí)),邏輯地址LA “0_0”映射到物理地址PA “0_0”,以及邏輯地址LA “0_1”映射到物理地址PA “0_1”,等等。
[0067]在步驟312中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)I及LA “0_0”到閃存140時(shí),存儲(chǔ)器控制器120指定具有一物理區(qū)塊號(hào)碼“101”的一空閑數(shù)據(jù)區(qū)塊320以寫(xiě)入數(shù)據(jù)。之后存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)I到數(shù)據(jù)區(qū)塊320的第一頁(yè)(例如頁(yè)“O”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊320的第I頁(yè)有物理地址PA “101_0”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)I的邏輯地址LA “0_0”到數(shù)據(jù)區(qū)塊320的第一頁(yè)的一保留區(qū)域。
[0068]現(xiàn)在邏輯地址LA “ 0_0 ”映射到物理地址PA “ 101_0 ”,而非物理地址PA “ 0_0 ”,所以存儲(chǔ)器控制器120將邏輯地址LA “0_0”與物理地址PA “101_0”之間的更新映射關(guān)系,也就是“0_0 — 101_0”,儲(chǔ)存到SRAM 124的映射高速緩存128。為了要儲(chǔ)存該更新映射關(guān)系,存儲(chǔ)器控制器120從映射表144加載相關(guān)于邏輯區(qū)塊號(hào)碼“O” (其對(duì)應(yīng)到更新映射關(guān)系的邏輯地址LA“0_0”)的映射信息加載到如高速緩存[#0]的映射高速緩存128。之后存儲(chǔ)器控制器120將會(huì)通過(guò)將在高速緩存“O”的行O的單元包含的信息從“0_0”改變?yōu)椤?101_0”以更新映射關(guān)系(“0_0 — 101_0”)更新映射高速緩存128的高速緩存[#0](如圖3灰色部分)。在此階段中,因?yàn)榇鎯?chǔ)器控制器120并未將任何映射高速緩存128的映射信息寫(xiě)回閃存140,所以寫(xiě)回高速緩存130為空的。
[0069]在步驟313中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)2及LA “1_0”到閃存140時(shí),存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)2到數(shù)據(jù)區(qū)塊320的第2頁(yè)(也就是頁(yè)“I”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊320的第2頁(yè)有物理地址PA “101_1”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)2的邏輯地址LA “1_0”到數(shù)據(jù)區(qū)塊320的第2頁(yè)(也就是頁(yè)“I”)的保留區(qū)域。并且,為了要儲(chǔ)存映射高速緩存128的更新映射關(guān)系(“1_0 — 101_1”),存儲(chǔ)器控制器120從映射表144加載相關(guān)于邏輯區(qū)塊號(hào)碼I (其對(duì)應(yīng)到更新映射關(guān)系的邏輯地址LA “1_0”)的映射信息到如高速緩存[#1]的映射高速緩存128。之后存儲(chǔ)器控制器120以更新映射關(guān)系(“1_0 — 101_1”)更新映射高速緩存128的高速緩存[# I](如圖3灰色部分)。
[0070]在步驟314中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求時(shí)寫(xiě)入數(shù)據(jù)3及LA “1_1”到閃存140時(shí),存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)3到數(shù)據(jù)區(qū)塊320中第3頁(yè)(也就是頁(yè)“2”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊320的第2頁(yè)有物理地址PA “101_1”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)3的邏輯地址LA “1_1”到數(shù)據(jù)區(qū)塊320的第3頁(yè)的保留區(qū)域。對(duì)儲(chǔ)存更新映射關(guān)系(“1_1 — 101_2”)到映射高速緩存128的下一步驟而言,因?yàn)橛成涓咚倬彺?28已經(jīng)包含相關(guān)于邏輯區(qū)塊號(hào)碼I (其對(duì)應(yīng)到更新映射關(guān)系的邏輯地址LA的映射信息,所以存儲(chǔ)器控制器120無(wú)需加載相關(guān)于邏輯區(qū)塊號(hào)碼I的映射信息到映射高速緩存128。取而代之,存儲(chǔ)器控制器120直接地以更新映射關(guān)系(“1_1 — 101_2”)更新映射高速緩存128中的高速緩存[# I](如圖3灰色部分)。
[0071]在步驟315中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求寫(xiě)入數(shù)據(jù)4及LA “1_2”到閃存140時(shí),存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)4到該數(shù)據(jù)區(qū)塊320中第4頁(yè)(也就是頁(yè)“3”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊320的第4頁(yè)面有物理地址PA “101_3”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)4的邏輯地址LA“1_3”到數(shù)據(jù)區(qū)塊320中第4頁(yè)的保留區(qū)域。之后存儲(chǔ)器控制器120以更新映射關(guān)系(“1_2 — 101_3”)更新映射高速緩存128中的高速緩存[# I](如圖3灰色部分)。
[0072]在數(shù)據(jù)區(qū)塊320的第4頁(yè)被寫(xiě)入數(shù)據(jù)后,存儲(chǔ)器控制器120判斷數(shù)據(jù)區(qū)塊320是否被裝滿,因此,存儲(chǔ)器控制器120在步驟316中執(zhí)行一日志操作以記錄更新映射信息。在此日志操作中,存儲(chǔ)器控制器120將全部的更新信息、相關(guān)于映射高速緩存128的映射高速緩存、以及相關(guān)于寫(xiě)回高速緩存130的寫(xiě)回信息寫(xiě)到閃存140的日志表146的第I頁(yè)(也就是頁(yè)“I”)。首先,存儲(chǔ)器控制器120將目前儲(chǔ)存在映射高速緩存128的更新映射信息寫(xiě)到日志表146的頁(yè)“I”的區(qū)域。也就是說(shuō),存儲(chǔ)器控制器120將全部的映射關(guān)系“0_0 — 101_0”、“1_0 — 101_1,,、“1_1 — 101_2,,、“1_2 — 101_3” 寫(xiě)到日志表 146 的頁(yè)“I” 的映射信息區(qū)域。存儲(chǔ)器控制器120也將目前儲(chǔ)存在映射高速緩存128的高速緩存號(hào)碼寫(xiě)到日志表146的頁(yè)“I”的一最后高速緩存區(qū)域。也就是說(shuō),存儲(chǔ)器控制器120會(huì)將高速緩存號(hào)碼[#0]與[# I]寫(xiě)到日志表146的頁(yè)“I”的最后高速緩存區(qū)域。因?yàn)槟壳皩?xiě)回高速緩存130為空的,存儲(chǔ)器控制器120并未將任何寫(xiě)回信息寫(xiě)到日志表146。因此,日志表146的頁(yè)“I”的寫(xiě)回區(qū)域包含“FF,F(xiàn)F”,代表當(dāng)存儲(chǔ)器控制器120寫(xiě)入映射信息到日志表146的頁(yè)“I”時(shí),沒(méi)有映射信息寫(xiě)回到閃存140。
[0073]請(qǐng)參照?qǐng)D4,在步驟411中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)5及LA “0_0”到閃存140時(shí),存儲(chǔ)器控制器120指定一個(gè)具有一物理區(qū)塊號(hào)碼“ 102”的數(shù)據(jù)區(qū)塊420以寫(xiě)入數(shù)據(jù)。之后存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)5到數(shù)據(jù)區(qū)塊420的第I頁(yè)(也就是頁(yè)“O”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊420的第I頁(yè)具有物理地址PA “102_0”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)5的邏輯地址LA “0_0”到數(shù)據(jù)區(qū)塊420的第I頁(yè)的保留區(qū)域。之后存儲(chǔ)器控制器120以更新映射關(guān)系“0_0 — 102_0”更新映射高速緩存128的高速緩存[#0](如圖4灰色部分)。在此階段,存儲(chǔ)器控制器120加載記錄在日志表146的前一頁(yè)(即頁(yè)面“I”)的最后高速緩存區(qū)域的高速緩存號(hào)碼到寫(xiě)回高速緩存130。也就是說(shuō),存儲(chǔ)器控制器120加載高速緩存號(hào)碼[#0]與[# I]到寫(xiě)回高速緩存130。然而,由于存儲(chǔ)器控制器120并未將任何映射高速緩存128的映射信息寫(xiě)回到閃存140,因此,在寫(xiě)回高速緩存130中沒(méi)有對(duì)應(yīng)于高速緩存號(hào)碼[#0]與[# I]的數(shù)據(jù)輸入。
[0074]在步驟412中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)6及LA “2_0”到閃存140時(shí),存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)6到數(shù)據(jù)區(qū)塊420的第2頁(yè)(也就是頁(yè)“I”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊420的第2頁(yè)具有物理地址ΡΑ“102_?!薄?。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)6的邏輯地址LA “2_0”到數(shù)據(jù)區(qū)塊420的第2頁(yè)的保留區(qū)域。之后,存儲(chǔ)器控制器120準(zhǔn)備以儲(chǔ)存SRAM 124的映射高速緩存128的一更新映射關(guān)系“2_0 — 102_1”。因?yàn)橛成涓咚倬彺?28目前有高速緩存[#0]與高速緩存[# I],該些高速緩存分別儲(chǔ)存邏輯區(qū)塊“O”與邏輯區(qū)塊“I”的映射信息,因此映射高速緩存128達(dá)到儲(chǔ)存兩個(gè)邏輯區(qū)塊的映射信息的最大容量(即映射高速緩存128裝滿)。因此,存儲(chǔ)器控制器120判斷以通過(guò)將映射高速緩存127的較少使用的高速緩存的映射信息寫(xiě)回到閃存140的映射表144而移除映射高速緩存128中較少使用的列(即高速緩存號(hào)碼)。在圖4的例子中,存儲(chǔ)器控制器120判斷高速緩存[# I]的使用頻率低于高速緩存[#0]。因此,存儲(chǔ)器控制器120將高速緩存[# I]的映射信息寫(xiě)回到閃存140的映射表144的行[# I]。據(jù)此,閃存140的映射表144的列[# I]以儲(chǔ)存在映射高速緩存128中的最新映射信息而被更新(如圖4的灰色部分)。在一實(shí)施例中,更新映射信息的步驟例如是將最新映射信息寫(xiě)入到另一個(gè)位置的映射表144。之后存儲(chǔ)器控制器120從映射表144加載對(duì)應(yīng)于邏輯區(qū)塊號(hào)碼”2”的映射信息(其對(duì)應(yīng)于更新映射信息的邏輯地址LA“2_0”)到如高速緩存[#2]的映射高速緩存128。存儲(chǔ)器控制器120以更新映射關(guān)系“2_0 — 102_1”更新映射高速緩存128的高速緩存[#2](如圖4的灰色部分)。存儲(chǔ)器控制器120還通過(guò)以“V”標(biāo)示高速緩存[# I]以代表高速緩存[# I]已被寫(xiě)回到閃存140的映射表144而紀(jì)錄寫(xiě)回高速緩存130的中的寫(xiě)回信息。
[0075]在步驟413中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)7及LA “3_1”到閃存140時(shí),存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)7到數(shù)據(jù)區(qū)塊420的第3頁(yè)(也就是頁(yè)“2”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊420的第3頁(yè)具有物理地址PA “102_2”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)7的邏輯地址LA “3_1”到數(shù)據(jù)區(qū)塊420的第3頁(yè)的保留區(qū)域。之后,存儲(chǔ)器控制器120準(zhǔn)備以儲(chǔ)存SRAM 124的映射高速緩存128的一更新映射關(guān)系“3_1 — 102_2”。因?yàn)橛成涓咚倬彺?28目前是被裝滿的,所以存儲(chǔ)器控制器120將較少使用的高速緩存[#0]的映射信息寫(xiě)回閃存140的映射表144的列[#0],并從映射表144加載相關(guān)于邏輯區(qū)塊號(hào)碼“3”(其對(duì)應(yīng)于更新映射關(guān)系的邏輯地址LA的映射信息到如高速緩存[#3]的映射高速緩存128。存儲(chǔ)器控制器120之后以更新映射關(guān)系“3_1 — 102_2”更新映射高速緩存128的高速緩存[#3](如圖4的灰色部分)。存儲(chǔ)器控制器120更通過(guò)以“V”標(biāo)示高速緩存[#0]以代表高速緩存[#0]已被寫(xiě)回到閃存140的映射表144而更新寫(xiě)回高速緩存130。
[0076]在步驟414中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求以將寫(xiě)入數(shù)據(jù)8及LA “0_3”到閃存140時(shí),存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)8到數(shù)據(jù)區(qū)塊420的第4頁(yè)面(也就是頁(yè)“3”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊420的第4頁(yè)具有物理地址PA “102_3”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)8的邏輯地址LA “0_3”到數(shù)據(jù)區(qū)塊420的第4頁(yè)的保留區(qū)域。之后,存儲(chǔ)器控制器120準(zhǔn)備以儲(chǔ)存SRAM 124的映射高速緩存128的一更新映射關(guān)系“0_3 — 102_3”。因?yàn)橛成涓咚倬彺?28目前是被裝滿的,所以存儲(chǔ)器控制器120將較少使用的高速緩存[#2]的映射信息寫(xiě)回閃存140的映射表144的列[#2],并從映射表144加載相關(guān)于邏輯區(qū)塊號(hào)碼“0”(其對(duì)應(yīng)于更新映射關(guān)系的邏輯地址LA “0_3”)的映射信息到如同高速緩存[#0]的映射高速緩存128。存儲(chǔ)器控制器120之后以更新映射關(guān)系“0_3 — 102_3”更新映射高速緩存128的高速緩存[#0](如圖4的灰色部分)。因?yàn)閷?xiě)回高速緩存130中的高速緩存[#0]與高速緩存[# I]已經(jīng)被標(biāo)示為“V”,所以存儲(chǔ)器控制器120將不會(huì)進(jìn)一步更新寫(xiě)回高速緩存130。
[0077]在數(shù)據(jù)區(qū)塊420中第4頁(yè)被寫(xiě)入數(shù)據(jù)后,存儲(chǔ)器控制器120判斷數(shù)據(jù)區(qū)塊420是否被裝滿,并據(jù)以在步驟415中執(zhí)行一日志操作。在此日志操作中,存儲(chǔ)器控制器120將全部的更新信息、全部的映射高速緩存信息以及全部的寫(xiě)回信息寫(xiě)到日志表的第2頁(yè)(也就是頁(yè)“2”)。首先,存儲(chǔ)器控制器120將目前儲(chǔ)存在映射高速緩存128的更新映射信息寫(xiě)到日志表146的頁(yè)“2”的一映射信息區(qū)域。也就是說(shuō),存儲(chǔ)器控制器120將全部的映射信息“0_3 — 102_3”及“3_1 — 102_2”寫(xiě)到日志表146的頁(yè)“2”的映射信息區(qū)域。因?yàn)橛成潢P(guān)系“0_0 — 102_0”已經(jīng)被記錄在閃存140的映射表144中,所以并不一定要將映射關(guān)系“0_0 — 102_0”寫(xiě)到日志表146。存儲(chǔ)器控制器120也將目前儲(chǔ)存在映射高速緩存128的高速緩存號(hào)碼寫(xiě)到日志表的頁(yè)“2”的最后高速緩存區(qū)域。也就是說(shuō),存儲(chǔ)器控制器120將高速緩存[#0]與[#3]寫(xiě)到日志表的頁(yè)“2”的最后高速緩存區(qū)域。存儲(chǔ)器控制器120還將被寫(xiě)回到映射表144的如寫(xiě)回高速緩存130中所指示的高速緩存號(hào)碼寫(xiě)到日志表146的頁(yè)“2”的一寫(xiě)回區(qū)域。也就是說(shuō),存儲(chǔ)器控制器120將高速緩存[#0]與高速緩存[#1]寫(xiě)到日志表146的頁(yè)“2”的最后高速緩存區(qū)域。
[0078]請(qǐng)參照?qǐng)D5,在步驟511中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)9及LA “0_2”到閃存140時(shí),存儲(chǔ)器控制器120指定一個(gè)有一物理區(qū)塊號(hào)碼“ 103”的數(shù)據(jù)區(qū)塊520以寫(xiě)入數(shù)據(jù)。之后存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)9到數(shù)據(jù)區(qū)塊520中第I頁(yè)(也就是頁(yè)“O”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊520的第I頁(yè)具有物理地址PA“103_0”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)9的邏輯地址LA “0_2”到數(shù)據(jù)區(qū)塊520中第I頁(yè)的保留區(qū)域。之后存儲(chǔ)器控制器120以更新映射關(guān)系“0_2 — 103_0”更新映射高速緩存128的高速緩存[#0](如圖5灰色部分)。在此階段,存儲(chǔ)器控制器120加載記錄在日志表146的前一頁(yè)(即頁(yè)“3”)的最后高速緩存區(qū)域的高速緩存號(hào)碼到寫(xiě)回高速緩存130。也就是說(shuō),存儲(chǔ)器控制器120加載高速緩存號(hào)碼[#0]與[#3]到寫(xiě)回高速緩存130。然而,由于存儲(chǔ)器控制器120并未將任何映射高速緩存128的映射信息寫(xiě)回到閃存140。因此,在寫(xiě)回高速緩存130中沒(méi)有對(duì)應(yīng)于高速緩存號(hào)碼[#0]與[# I]的數(shù)據(jù)輸入。
[0079]在步驟512中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)10及LA “4_0”到閃存140時(shí),存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)10到數(shù)據(jù)區(qū)塊520的第2頁(yè)(也就是頁(yè)“I”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊520的第2頁(yè)具有物理地址PA “103_1”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)10的邏輯地址LA “4_0”到數(shù)據(jù)區(qū)塊520的第2頁(yè)的保留區(qū)域。之后存儲(chǔ)器控制器120需要儲(chǔ)存SRAM 124的映射高速緩存128的更新映射關(guān)系“4_0 — 103_1”。因?yàn)橛成涓咚倬彺?28目前是被裝滿的,所以存儲(chǔ)器控制器120將較少使用的高速緩存號(hào)碼的高速緩存[#3]的映射信息寫(xiě)回閃存140的映射表144的列[#3],并從映射表144加載相關(guān)于邏輯區(qū)塊號(hào)碼“4”(其對(duì)應(yīng)于更新映射關(guān)系中的邏輯地址LA “4_0”)的映射信息到如高速緩存[#4]的映射高速緩存128。之后存儲(chǔ)器控制器120以更新映射關(guān)系“4_0 — 103_1”更新映射高速緩存128中的高速緩存[#4](如圖5灰色部分)。存儲(chǔ)器控制器120還通過(guò)以“V”標(biāo)示高速緩存[#3]以代表高速緩存[#3]已被寫(xiě)回到閃存140的映射表144而更新寫(xiě)回高速緩存130。
[0080]在步驟513中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)11及LA“4_1”到閃存140時(shí),存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)11到數(shù)據(jù)區(qū)塊520的第3頁(yè)(也就是頁(yè)“2”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊520的第3頁(yè)具有物理地址PA “103_2”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)11的邏輯地址LA “4_1”到數(shù)據(jù)區(qū)塊520的第3頁(yè)的保留區(qū)域。之后存儲(chǔ)器控制器120以更新映射關(guān)系“4_1 — 103_2”更新映射高速緩存128中的高速緩存[#4](如圖5灰色部分)。因?yàn)榇鎯?chǔ)器控制器120并未將任何映射信息寫(xiě)回映射表144,所以寫(xiě)回高速緩存130保持不變。
[0081]在步驟514中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)12及LA “0_3”到閃存140時(shí),存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)12到數(shù)據(jù)區(qū)塊520的第4頁(yè)(也就是頁(yè)“3”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊520的第4頁(yè)面具有PA物理地址“103_3”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)12的邏輯地址LA “0_3”到數(shù)據(jù)區(qū)塊520的第4頁(yè)的保留區(qū)域。之后存儲(chǔ)器控制器120以更新映射關(guān)系“0_3 — 103_3”更新映射高速緩存128中的高速緩存[#0](如圖5灰色部分)。因?yàn)榇鎯?chǔ)器控制器120并未將任何映射信息寫(xiě)回映射表144,所以寫(xiě)回高速緩存130保持不變。
[0082]在數(shù)據(jù)區(qū)塊520中第4頁(yè)被寫(xiě)入數(shù)據(jù)后,存儲(chǔ)器控制器120判斷數(shù)據(jù)區(qū)塊520是否被裝滿,并據(jù)以在步驟515中執(zhí)行一日志操作。在此日志操作中,存儲(chǔ)器控制器120將全部的更新信息、全部的映射高速緩存信息以及全部的寫(xiě)回信息寫(xiě)到日志表146的第3頁(yè)(也就是頁(yè)“3”)。首先,存儲(chǔ)器控制器120將目前儲(chǔ)存在映射高速緩存128的更新映射信息寫(xiě)到日志表146的頁(yè)“3”的一映射信息區(qū)域。也就是說(shuō),存儲(chǔ)器控制器120將全部的映射信息“0_2 — 103_0,,、“0_3 — 103_3,,、“4_0 — 103_1” 及“4_1 — 103_2” 寫(xiě)到日志表 146的頁(yè)“3”的映射信息區(qū)域。存儲(chǔ)器控制器120也將目前儲(chǔ)存在映射高速緩存128的高速緩存號(hào)碼寫(xiě)到日志表146的頁(yè)“3”的一最后高速緩存區(qū)域。也就是說(shuō),存儲(chǔ)器控制器120寫(xiě)入高速緩存號(hào)碼[#0]與[#4]到日志表146的最后高速緩存區(qū)域。存儲(chǔ)器控制器120還將被寫(xiě)回到映射表144的如寫(xiě)回高速緩存130中所指示的高速緩存號(hào)碼寫(xiě)到日志表146的頁(yè)“3”的寫(xiě)回區(qū)域,其中該高速緩存號(hào)碼已被寫(xiě)回到映射表144(如同寫(xiě)回高速緩存130)。也就是說(shuō),存儲(chǔ)器控制器120將高速緩存號(hào)碼[#3]寫(xiě)到日志表146的頁(yè)“3”的寫(xiě)回區(qū)域。
[0083]請(qǐng)參照?qǐng)D6,在步驟611中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求時(shí)以寫(xiě)入數(shù)據(jù)13及LA “0_?!介W存140時(shí),存儲(chǔ)器控制器120指定一個(gè)具有物理區(qū)塊號(hào)碼“200”的數(shù)據(jù)區(qū)塊620以寫(xiě)入數(shù)據(jù)。之后存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)13到數(shù)據(jù)區(qū)塊620的第I頁(yè)(也就是頁(yè)“O”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊620的第I頁(yè)面具有物理地址“200_0”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)13的邏輯地址LA “0_1”到數(shù)據(jù)區(qū)塊620中第I頁(yè)的保留區(qū)域。之后存儲(chǔ)器控制器120以更新映射關(guān)系“0_1 — 200_0”更新映射高速緩存128的高速緩存[#0](如圖6灰色部分)。在此階段,存儲(chǔ)器控制器120加載記錄在日志表146的前一頁(yè)面(即頁(yè)面“3”)的最后高速緩存區(qū)域的高速緩存號(hào)碼到寫(xiě)回高速緩存130。也就是說(shuō),存儲(chǔ)器控制器120加載高速緩存號(hào)碼[#0]與[#4]到寫(xiě)回高速緩存130。然而,由于存儲(chǔ)器控制器120并未將任何映射高速緩存128的映射信息寫(xiě)回到閃存140。因此,在寫(xiě)回高速緩存130中沒(méi)有對(duì)應(yīng)于高速緩存號(hào)碼[#0]與[#4]的數(shù)據(jù)輸入。
[0084]在步驟612中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)14及LA “4_2”到閃存140時(shí),存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)14到數(shù)據(jù)區(qū)塊620的第2頁(yè)(也就是頁(yè)“I”)即第I頁(yè)面)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊620的第2頁(yè)具有物理地址PA “200_1”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)14的邏輯地址LA “4_2”到數(shù)據(jù)區(qū)塊620的第2頁(yè)的保留區(qū)域。之后存儲(chǔ)器控制器120以更新映射關(guān)系“4_2 — 200_1”更新映射高速緩存128中的高速緩存[#4](如圖6灰色部分)。因?yàn)榇鎯?chǔ)器控制器120并未將任何映射信息寫(xiě)回映射表144,所以寫(xiě)回高速緩存130保持不變。
[0085]在步驟613中,當(dāng)存儲(chǔ)器控制器120接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)15及LA“4_3”到閃存140時(shí),存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)15到數(shù)據(jù)區(qū)塊620的第3頁(yè)面(也就是頁(yè)“2”)的數(shù)據(jù)區(qū)域,數(shù)據(jù)區(qū)塊620的第3頁(yè)具有物理地址PA “200_2”。存儲(chǔ)器控制器120也寫(xiě)入數(shù)據(jù)15的邏輯地址LA “4_3”到數(shù)據(jù)區(qū)塊620的第3頁(yè)的保留區(qū)域。之后存儲(chǔ)器控制器120以更新映射關(guān)系“4_3 — 200_2”更新映射高速緩存128中的高速緩存[#4](如圖6灰色部分)。因?yàn)榇鎯?chǔ)器控制器120并未將任何映射信息寫(xiě)回映射表144,所以寫(xiě)回高速緩存130保持不變。
[0086]閃存140寫(xiě)入程序可持續(xù)執(zhí)行如同先前描述的步驟。然而,當(dāng)供應(yīng)到系統(tǒng)100的電源中斷時(shí),SRAM 124的數(shù)據(jù)將會(huì)消失。在此情況下,當(dāng)系統(tǒng)100的電源重新恢復(fù)時(shí),存儲(chǔ)器控制器120通過(guò)掃描儲(chǔ)存在數(shù)據(jù)區(qū)塊620的數(shù)據(jù)、儲(chǔ)存在映射表144的數(shù)據(jù)以及儲(chǔ)存在閃存140的日志表146的數(shù)據(jù)而恢復(fù)映射信息。
[0087]圖7繪示依據(jù)一實(shí)施例的一恢復(fù)程序的一例。此恢復(fù)程序可在系統(tǒng)100的斷電而恢復(fù)電源之后被執(zhí)行。在圖7的例子中,斷電發(fā)生在如圖6所示的步驟613之后,其中存儲(chǔ)器控制器120才剛完成寫(xiě)入數(shù)據(jù)15及LA “4_3到數(shù)據(jù)區(qū)塊620,并以更新映射關(guān)系“4_3 — 200_2”更新映射高速緩存128。由于系統(tǒng)100的電源中斷,SRAM 124的數(shù)據(jù)消失,而儲(chǔ)存在數(shù)據(jù)區(qū)塊620的數(shù)據(jù)及儲(chǔ)存在閃存140的日志表146的數(shù)據(jù)保持不變。
[0088]請(qǐng)參照?qǐng)D7,在步驟711a中,存儲(chǔ)器控制器120讀取儲(chǔ)存在閃存140的日志表146的最后一頁(yè)(也就是頁(yè)“3”)的最后高速緩存區(qū)域的映射信息,并得到高速緩存號(hào)碼[#0]與[#4],這代表只有在映射表144中對(duì)應(yīng)于邏輯區(qū)塊號(hào)碼“O”與“4”的映射信息被改變且并未被寫(xiě)回到閃存140的映射表144。也就是說(shuō),映射表144中對(duì)應(yīng)于邏輯區(qū)塊號(hào)碼“O”與“4的映射信息不是最新的,而映射表144中對(duì)應(yīng)于邏輯區(qū)塊號(hào)碼及“3”的映射信息是最新的。在這階段,存儲(chǔ)器控制器120并未從映射表144中加載任何映射信息到SRAM124的映射高速緩存128,因此映射高速緩存128為空的。
[0089]在步驟711b中,存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的頁(yè)“I”的最后高速緩存區(qū)域的映射信息,,并得到高速緩存號(hào)碼[#0]與[# I]。之后存儲(chǔ)器控制器120判斷高速緩存[#0]是否存在于日志表146的最后一頁(yè)(也就是頁(yè)“3”)的映射高速緩存信息中。也就是說(shuō),映射高速緩存128中對(duì)應(yīng)于邏輯區(qū)塊號(hào)碼“O”的映射信息不是最新的,而映射高速緩存128中中對(duì)應(yīng)于邏輯區(qū)塊號(hào)碼“I”的映射信息是最新的。因此,存儲(chǔ)器控制器120無(wú)需將相關(guān)于邏輯區(qū)塊號(hào)碼“I”的映射信息加載到映射高速緩存128。存儲(chǔ)器控制器120僅從映射表144加載相關(guān)于邏輯區(qū)塊號(hào)碼“O”的映射信息到如高速緩存[#0]的映射高速緩存128。
[0090]在步驟711c中,存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的頁(yè)“I”的映射信息區(qū)域的映射信息,并根據(jù)此讀取映射信息更新映射高速緩存128。也就是說(shuō),存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的頁(yè)“I”的映射信息區(qū)域的映射關(guān)系“0_0 — 101_0”、“1_0 — 101_1”、“1_1 — 101_2” 及 “1_2 — 101_3”。因?yàn)橛成潢P(guān)系 “1_0 — 101_1”、“1_1 — 101_2”、及“1_2 — 101_3”對(duì)應(yīng)邏輯區(qū)塊號(hào)碼的“I”的映射信息而是映射高速緩存128中最新的,所以存儲(chǔ)器控制器120無(wú)需依據(jù)映射關(guān)系“1_0 — 101_1”、“1_1 — 101_2”、及“1_2 — 101_3”更新映射高速緩存128。存儲(chǔ)器控制器120僅以讀取映射關(guān)系“0_0 — 101_0”更新映射高速緩存128中的高速緩存[#0](如圖7灰色部分)。
[0091]在步驟712a中,存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的頁(yè)“2”的寫(xiě)回區(qū)域的數(shù)據(jù),并得到高速緩存號(hào)碼[#0]與[# I],這代表映射高速緩存128中對(duì)應(yīng)于邏輯區(qū)塊號(hào)碼“O”與“I”的映射信息在電源中斷發(fā)生前已被寫(xiě)回映射表144。因?yàn)楦咚倬彺鎇#0]已經(jīng)存在于映射高速緩存128中,所以存儲(chǔ)器控制器120判斷而從映射高速緩存128移除包含在高速緩存[#0]的映射信息。
[0092]在步驟712b中,存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的頁(yè)“2”的最后高速緩存區(qū)域的數(shù)據(jù),并得到高速緩存號(hào)碼[#0]與[#3]。因?yàn)橛成涓咚倬彺?28中對(duì)應(yīng)于邏輯區(qū)塊號(hào)碼“3”的映射信息是最新的,所以存儲(chǔ)器控制器120無(wú)需將相關(guān)于邏輯區(qū)塊號(hào)碼“3”的映射信息加載到映射高速緩存128。存儲(chǔ)器控制器120僅從映射表144加載相關(guān)于邏輯區(qū)塊號(hào)碼“O”的映射信息到如高速緩存[#0]的映射高速緩存128。
[0093]在步驟712c中,存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的頁(yè)“2”的映射信息區(qū)域的映射信息,并根據(jù)此讀取映射信息更新映射高速緩存128。也就是說(shuō),存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的頁(yè)“2”的映射信息區(qū)域的映射關(guān)系“0_3 — 102_3”與“3_1 — 102_2”。因?yàn)橛成潢P(guān)系“3_1 — 102_2”對(duì)應(yīng)邏輯區(qū)塊號(hào)碼“3”的映射信息而是為映射表144中最新的,所以存儲(chǔ)器控制器120無(wú)需依據(jù)該映射關(guān)系“3_1 — 102_2”更新映射高速緩存128。存儲(chǔ)器控制器120僅以讀取映射關(guān)系“0_3 — 102_3”更新映射高速緩存128中的高速緩存[#0](如圖7灰色部分)。
[0094]在步驟713a中,存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的頁(yè)“3”的寫(xiě)回區(qū)域的數(shù)據(jù),并且得到高速緩存號(hào)碼[#3],這代表映射高速緩存128中對(duì)應(yīng)于邏輯區(qū)塊號(hào)碼“3”的映射信息在電源中斷前已被寫(xiě)回映射表144。因?yàn)橛成涓咚倬彺?28并未包含高速緩存[#3],所以存儲(chǔ)器控制器120判斷對(duì)于映射高速緩存128不執(zhí)行任何動(dòng)作。
[0095]在步驟713b中,存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的頁(yè)“3”的映射信息區(qū)域的映射信息,并且得到高速緩存號(hào)碼[#0]與[#4]。因?yàn)橛成涓咚倬彺?28已經(jīng)包含高速緩存號(hào)碼[#0],所以存儲(chǔ)器控制器120僅從映射表144加載相關(guān)于邏輯區(qū)塊號(hào)碼“4”的映射信息加載到如高速緩存[#4]的映射高速緩存128。
[0096]在步驟713c,存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的頁(yè)“3”的映射信息區(qū)域的映射信息,并根據(jù)此讀取映射信息更新映射高速緩存128。也就是說(shuō),存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的頁(yè)面“3”的映射信息區(qū)域的映射關(guān)系“0_2 — 103_0”、“0_3 — 103_3”、“4_0 — 103_1”、及“4_1 — 103_2”。之后存儲(chǔ)器控制器120以讀取映射關(guān)系 “0_2 — 103_0,,、“0_3 — 103_3,,、“4_0 — 103_1”、及 “4_1 — 103_2” 更新映射高速緩存128中的高速緩存[#0]與[#3](如圖7灰色部分)ο
[0097]在步驟714中,存儲(chǔ)器控制器120掃描目前的數(shù)據(jù)區(qū)塊620并得到映射關(guān)系“0_1 — 200_0”、“4_2 — 200_1”、及“4_3 — 200_2”,此數(shù)據(jù)區(qū)塊620是斷電之前存儲(chǔ)器控制器120使用的最后數(shù)據(jù)區(qū)塊。之后存儲(chǔ)器控制器120以獲得的映射關(guān)系“0_1 — 200_0”、“4_2 — 200_1”、及“4_3 — 200_2”更新映射高速緩存128 (如圖7灰色部分)。
[0098]之后,存儲(chǔ)器控制器120結(jié)束此恢復(fù)程序。當(dāng)在電源中斷發(fā)生時(shí),在恢復(fù)程序結(jié)束時(shí)的步驟714的映射高速緩存128與在步驟613的映射高速緩存128是相同的。也就是說(shuō),通過(guò)掃描儲(chǔ)存在數(shù)據(jù)區(qū)塊620的數(shù)據(jù)、儲(chǔ)存在映射表144的數(shù)據(jù)及儲(chǔ)存在閃存140的日志表146的數(shù)據(jù),存儲(chǔ)器控制器120能將映射信息恢復(fù)為電源中斷前的狀態(tài)。
[0099]圖8繪示依據(jù)一實(shí)施例的一存儲(chǔ)器控制器執(zhí)行的寫(xiě)入程序的流程圖。請(qǐng)參照?qǐng)D8,當(dāng)系統(tǒng)100被啟動(dòng)時(shí),在步驟804,存儲(chǔ)器控制器120初始化映射高速緩存128與SRAM 124的寫(xiě)回高速緩存130。舉例來(lái)說(shuō),存儲(chǔ)器控制器120通過(guò)清除映射高速緩存128與寫(xiě)回高速緩存130來(lái)初始化該映射高速緩存128與SRAM 124的寫(xiě)回高速緩存130。因此,映射高速緩存128與寫(xiě)回高速緩存130為空的。
[0100]在步驟806,存儲(chǔ)器控制器120指定閃存140中的一空閑數(shù)據(jù)區(qū)塊以寫(xiě)入數(shù)據(jù)。舉例來(lái)說(shuō),如圖3步驟312所示,存儲(chǔ)器控制器120指定具有物理區(qū)塊號(hào)碼“101”的數(shù)據(jù)區(qū)塊320以寫(xiě)入數(shù)據(jù)。
[0101]在步驟808,存儲(chǔ)器控制器120從系統(tǒng)端110接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)及一邏輯地址到閃存140。舉例來(lái)說(shuō),如圖3步驟312所示,存儲(chǔ)器控制器120接收一寫(xiě)入要求以寫(xiě)入數(shù)據(jù)I及LA “0_0”到閃存140。
[0102]在步驟810,存儲(chǔ)器控制器120響應(yīng)于接收寫(xiě)入要而寫(xiě)入數(shù)據(jù)和該數(shù)據(jù)的邏輯地址到指定的數(shù)據(jù)區(qū)塊的一頁(yè)。舉例來(lái)說(shuō),如圖3步驟313所示,存儲(chǔ)器控制器120寫(xiě)入數(shù)據(jù)I到數(shù)據(jù)區(qū)塊320的第一頁(yè)的數(shù)據(jù)區(qū)域,并寫(xiě)入數(shù)據(jù)I的邏輯地址到數(shù)據(jù)區(qū)塊320的第一頁(yè)的保留區(qū)域。
[0103]之后存儲(chǔ)器控制器120將數(shù)據(jù)的邏輯地址與數(shù)據(jù)的物理地址之間的一更新映射關(guān)系儲(chǔ)存到SRAM 124的映射高速緩存128中。舉例來(lái)說(shuō),如圖3步驟312所示,存儲(chǔ)器控制器120需要將數(shù)據(jù)區(qū)塊320的第一頁(yè)的LA “0_0”與PA “ 101_0”之間的更新映射關(guān)系儲(chǔ)存到映射高速緩存128。
[0104]具體地,在步驟812,存儲(chǔ)器控制器120先判斷映射高速緩存128是否包含數(shù)據(jù)的邏輯地址的映射信息。如果在步驟812中映射高速緩存128沒(méi)有包含數(shù)據(jù)的邏輯地址的映射信息(否),則在步驟814,存儲(chǔ)器控制器120判斷映射高速緩存128是否已被裝滿。如果在步驟814中映射高速緩存128已被裝滿(是),則在步驟816存儲(chǔ)器控制器120將映射高速緩存128中較少使用的高速緩存的映射信息寫(xiě)回到閃存140的映射表144,并在步驟818紀(jì)錄寫(xiě)回高速緩存130的寫(xiě)回信息。寫(xiě)回信息代表較少使用的高速緩存中的映射信息已經(jīng)被寫(xiě)回閃存140的映射表144。之后在步驟820,存儲(chǔ)器控制器120從映射表144加載相關(guān)于對(duì)應(yīng)邏輯地址的邏輯區(qū)塊的映射信息到映射高速緩存中128,并在步驟822,以數(shù)據(jù)的邏輯地址與數(shù)據(jù)的物理地址之間的一更新映射關(guān)系更新映射高速緩存128。
[0105]舉例來(lái)說(shuō),如圖4步驟412所示,為了儲(chǔ)存SRAM 124的映射高速緩存128的一更新映射關(guān)系“2_0 — 102_1,存儲(chǔ)器控制器120先判斷映射高速緩存128沒(méi)有包含數(shù)據(jù)的邏輯地址"2_0"的映射信息,且映射高速緩存128是裝滿的,也就是映射高速緩存128目前有對(duì)應(yīng)儲(chǔ)存邏輯區(qū)塊"O"與邏輯區(qū)塊"I"的映射信息的高速緩存[#0]與高速緩存[# I],并達(dá)到儲(chǔ)存兩個(gè)邏輯區(qū)塊的映射信息的最大容量。因此,存儲(chǔ)器控制器120將較少使用的高速緩存,也就是高速緩存[#1]中的映射信息寫(xiě)回閃存140的映射表,并記錄寫(xiě)回高速緩存130中代表高速緩存[# I]中的映射信息已經(jīng)被寫(xiě)回閃存140的寫(xiě)回信息。存儲(chǔ)器控制器120之后從映射表144加載相關(guān)于邏輯區(qū)塊號(hào)碼“2” (其對(duì)應(yīng)于更新映射關(guān)系中的LA “2_0”)的映射信息到映射高速緩存128,并以更新映射關(guān)系“2_0 — 102_1”更新映射高速緩存128中的高速緩存[#2]。
[0106]請(qǐng)?jiān)賲⒄請(qǐng)D8,如果在步驟812,存儲(chǔ)器控制器120判斷映射高速緩存128包含有數(shù)據(jù)的邏輯地址的映射信息(是),則在步驟822,存儲(chǔ)器控制器以數(shù)據(jù)的邏輯地址與數(shù)據(jù)的物理地址之間的更新映射關(guān)系直接更新映射高速緩存。舉例來(lái)說(shuō),如圖3步驟314所示,為了儲(chǔ)存映射高速緩存128中的更新映射關(guān)系(“1_1 — 101_2”),存儲(chǔ)器控制器120判斷映射高速緩存128包含邏輯地址LA“1_1”的映射信息的高速緩存[# I],并以更新映射關(guān)系“1_1 — 101_2”直接更新映射高速緩存128中的高速緩存[# I]。
[0107]請(qǐng)?jiān)賲⒄請(qǐng)D8,如果在步驟812,存儲(chǔ)器控制器120判斷映射高速緩存128沒(méi)有包含數(shù)據(jù)的邏輯地址的映射信息(否),但是在步驟814,映射高速緩存沒(méi)有被裝滿(否),則在步驟820存儲(chǔ)器控制器120從映射表144直接加載相關(guān)于對(duì)應(yīng)邏輯地址的邏輯區(qū)塊的映射信息到映射高速緩存中128,并在步驟822以數(shù)據(jù)的邏輯地址與數(shù)據(jù)的物理地址之間的更新映射關(guān)系更新映射高速緩存128。舉例來(lái)說(shuō),如圖3步驟313所示,為了儲(chǔ)存映射高速緩存128中的更新映射關(guān)系“1_0 — 101_1”,存儲(chǔ)器控制器120判斷映射高速緩存128未包含相關(guān)于邏輯地址LA “1_0”的映射信息,但映射高速緩存128未被裝滿。據(jù)此,存儲(chǔ)器控制器120從映射表144加載對(duì)應(yīng)LA “1_0”的相關(guān)于邏輯區(qū)塊號(hào)碼“I”的映射信息到如高速緩存[# I]的映射高速緩存128,并以更新映射關(guān)系“1_0 — 101_1”更新映射高速緩存128中的高速緩存[# I]。
[0108]請(qǐng)?jiān)賲⒄請(qǐng)D8,在存儲(chǔ)器控制器120在步驟822以更新映射關(guān)系更新映射高速緩存128之后,在步驟824,存儲(chǔ)器控制器120判斷目前數(shù)據(jù)區(qū)塊是否被裝滿。如果在步驟824中目前數(shù)據(jù)區(qū)塊被裝滿(是),則在步驟826存儲(chǔ)器控制器120執(zhí)行一日志操作以將在映射高速緩存128中的更新映射信息、映射高速緩存128中的映射高速緩存信息、及寫(xiě)回高速緩存130中的寫(xiě)回信息寫(xiě)到閃存140的日志表146。之后存儲(chǔ)器控制器120回到步驟806以指定閃存140的一空閑數(shù)據(jù)區(qū)塊以寫(xiě)入未來(lái)數(shù)據(jù)。如果在步驟824目前數(shù)據(jù)區(qū)塊沒(méi)有被裝滿(否),則存儲(chǔ)器控制器120回到步驟808以接收寫(xiě)入要求以寫(xiě)入數(shù)據(jù)。舉例來(lái)說(shuō),如圖4的步驟415所示,當(dāng)存儲(chǔ)器控制器120判斷數(shù)據(jù)區(qū)塊320被裝滿時(shí),存儲(chǔ)器控制器120將全部的映射關(guān)系“0_3 — 102_3”與“3_1 — 102_2”寫(xiě)到日志表146的映射信息區(qū)域。存儲(chǔ)器控制器120也將目前儲(chǔ)存在映射高速緩存128中的高速緩存號(hào)碼[#0]與[#3]寫(xiě)到日志表146的最后高速緩存區(qū)域。存儲(chǔ)器控制器120還將目前儲(chǔ)存在寫(xiě)回高速緩存130中的高速緩存號(hào)碼[#0]與高速緩存號(hào)碼[# I]寫(xiě)到日志表146的寫(xiě)回區(qū)域。之后存儲(chǔ)器控制器120如圖4所示的指定數(shù)據(jù)區(qū)塊420以寫(xiě)入未來(lái)數(shù)據(jù)。
[0109]圖9繪示依據(jù)一實(shí)施例的一存儲(chǔ)器控制器執(zhí)行的恢復(fù)程序的流程圖。請(qǐng)參照?qǐng)D9,在步驟906,當(dāng)存儲(chǔ)器控制器120判斷系統(tǒng)100在一斷電而恢復(fù)電源之后,存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的最后一頁(yè)的映射高速緩存信息包含的高速緩存號(hào)碼。舉例來(lái)說(shuō),如圖7的步驟711a所示,存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的最后一頁(yè)(即頁(yè)面“3”)的最后高速緩存區(qū)域映射高速緩存信息,并得到高速緩存號(hào)碼[#0]與[#4]。在此時(shí),因?yàn)殡娫粗袛鄬?dǎo)致的SRAM的數(shù)據(jù)消失,所以映射高速緩存128為空的。
[0110]之后,存儲(chǔ)器控制器120通過(guò)從第一頁(yè)依次讀取儲(chǔ)存在日志表146的不同頁(yè)的信息而恢復(fù)映射高速緩存128中的映射信息。首先,在步驟908,存儲(chǔ)器控制器120設(shè)定一頁(yè)面指標(biāo)N= I。之后,在步驟910,存儲(chǔ)器控制器120讀取日志表146的第N頁(yè)中的寫(xiě)回信息包含的高速緩存號(hào)碼。舉例來(lái)說(shuō),如圖7的步驟711a所示,當(dāng)N= I時(shí),存儲(chǔ)器控制器120讀取日志表146的頁(yè)“I”的寫(xiě)回信息包含的"FF,F(xiàn)F"," FF,F(xiàn)F"代表當(dāng)存儲(chǔ)器控制器120寫(xiě)入信息到日志表146中的頁(yè)“I”時(shí),沒(méi)有映射信息被寫(xiě)回閃存140。在另一個(gè)例子中,如圖7的步驟712a所示,當(dāng)N = 2時(shí),存儲(chǔ)器控制器120讀取日志表146的頁(yè)“2”的寫(xiě)回信息包含的高速緩存[#0]與高速緩存[# I],這代表當(dāng)存儲(chǔ)器控制器120寫(xiě)入映射信息到日志表146的頁(yè)“2”時(shí),映射高速緩存128的高速緩存[#0]與高速緩存[# I]的映射信息已被寫(xiě)回閃存140。
[0111]請(qǐng)?jiān)賲⒄請(qǐng)D9,在步驟912,存儲(chǔ)器控制器120判斷映射高速緩存128中的步驟910讀取的寫(xiě)回信息是否也存在任何的高速緩存號(hào)碼。在步驟912中,如果在映射高速緩存128中也存在多個(gè)步驟910讀取的一個(gè)或多個(gè)高速緩存號(hào)碼(是),存儲(chǔ)器控制器120從映射高速緩存128中移除相關(guān)于該一個(gè)或多個(gè)高速緩存號(hào)碼的映射信息。舉例來(lái)說(shuō),如圖7的步驟712a所示,當(dāng)N = 2時(shí),存儲(chǔ)器控制器120讀取日志表146的頁(yè)“2”的寫(xiě)回信息包含的高速緩存[#0]與高速緩存[# I],并判斷映射高速緩存128目前存在高速緩存[#0]。因此,存儲(chǔ)器控制器120從映射高速緩存128中移除高速緩存[#0]包含的映射信息。
[0112]存儲(chǔ)器控制120器讀取日志表146中第N頁(yè)的映射信息包含的高速緩存號(hào)碼(步驟916)?;蛘?,假如存儲(chǔ)器控制器120判斷在映射高速緩存128中沒(méi)有高速緩存號(hào)碼(步驟912:否),存儲(chǔ)器控制器120將直接讀取日志表146中第N頁(yè)的映射信息包含的高速緩存號(hào)碼(步驟916)。接著存儲(chǔ)器控制器120會(huì)判斷日志表146中最后一頁(yè)的映射高速緩存信息是否也存在任何高速緩存號(hào)碼(步驟918)。如果一個(gè)或多個(gè)高速緩存號(hào)碼已存日志表146中最后一頁(yè)的映射高速緩存信息中(步驟918:是),存儲(chǔ)器控制器120會(huì)從閃存140的映射表中144將相關(guān)高速緩存號(hào)碼的映射信息加載到映射高速緩存128中(步驟920)。然后存儲(chǔ)器控制器120還以日志表146中第N頁(yè)的映射信息更新映射高速緩存(步驟922)。
[0113]舉例來(lái)說(shuō),如圖7的步驟711b所示,當(dāng)N = I時(shí),存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146的頁(yè)“I”的最后高速緩存區(qū)域的映射高速緩存信息包含的高速緩存號(hào)碼[#0]與高速緩存[# I]。之后存儲(chǔ)器控制器120判斷高速緩存[#0]存在于儲(chǔ)存在日志表146的最后的一頁(yè)的映射信息。因此,存儲(chǔ)器控制器120從閃存140的映射表144中加載相關(guān)于邏輯區(qū)塊號(hào)碼"O "的映射信息到映射高速緩存128。之后存儲(chǔ)器控制器120讀取儲(chǔ)存在日志表146 的頁(yè)“I”的映射信息區(qū)域的映射關(guān)系“0_0 — 101_0,,、“1_0 — 101_1”、“1_1 — 101_2”、及“1_2 — 101_3”,并如圖7的步驟711所示,以映射關(guān)系“0_0 — 101_0”更新映射高速緩存 128。
[0114]接在步驟922之后,在步驟924中,存儲(chǔ)器控制器120判斷第N頁(yè)是否為日志表146的最后一頁(yè)。或者,如果在步驟918中存儲(chǔ)器控制器120判斷在日志表146的最后一頁(yè)沒(méi)的映射高速緩存信息沒(méi)有存在高速緩存號(hào)碼(否),則存儲(chǔ)器控制器120直接跳到步驟924以判斷第N頁(yè)是否為日志表146的最后一頁(yè)。如果在步驟924,第N頁(yè)不是日志表146的最后一頁(yè)(否),則在步驟926存儲(chǔ)器控制器120設(shè)定N = N+1,并回到步驟910以讀取日志表146的第N頁(yè)中的寫(xiě)回信息包含的高速緩存號(hào)碼。
[0115]否則,如果在步驟924,第N頁(yè)是日志表146的最后一頁(yè)(是),則在步驟928存儲(chǔ)器控制器120以目前數(shù)據(jù)區(qū)塊包含的映射信息更新映射高速緩存。舉例來(lái)說(shuō),如圖7的步驟714所示,當(dāng)存儲(chǔ)器控制器120判斷頁(yè)“3”為日志表146的最后一頁(yè)時(shí),存儲(chǔ)器控制器120以包含在數(shù)據(jù)區(qū)塊620的映射關(guān)系“0_1 — 200_0”、“4_2 — 200_1”、及“4_3 — 200_2”更新映射高速緩存128。之后存儲(chǔ)器控制器120便完成此恢復(fù)程序。
[0116]以上揭露的實(shí)施例是在數(shù)據(jù)區(qū)塊被填滿時(shí)執(zhí)行一日志操作。然而,在一些實(shí)施例中,當(dāng)數(shù)據(jù)區(qū)塊沒(méi)有裝滿時(shí)也可執(zhí)行日志操作。舉例來(lái)說(shuō),日志操作可在經(jīng)過(guò)一段預(yù)定周期的時(shí)間之后執(zhí)行。
[0117]本領(lǐng)域普通技術(shù)人員依據(jù)本說(shuō)明書(shū)和本發(fā)明揭露的實(shí)施方式容易想到其他實(shí)例。應(yīng)當(dāng)理解的是本說(shuō)明書(shū)和這些例子僅是示范性的而非用以限定本發(fā)明。本發(fā)明真正的保護(hù)范圍和精神如權(quán)利要求所示。
【主權(quán)項(xiàng)】
1.一種存儲(chǔ)器裝置,其特征在于,包括: 一存儲(chǔ)器控制器;及 一非易失性存儲(chǔ)器,用以親接到該存儲(chǔ)器控制器并儲(chǔ)存一映射表與一日志表, 其中該存儲(chǔ)器控制器用以: 將一數(shù)據(jù)及該數(shù)據(jù)的一邏輯地址寫(xiě)到該非易失性存儲(chǔ)器; 從該非易失性存儲(chǔ)器的該映射表加載相關(guān)于該數(shù)據(jù)的該邏輯地址的一映射信息到該存儲(chǔ)器控制器的一映射高速緩存; 以該數(shù)據(jù)的該邏輯地址與該數(shù)據(jù)的一物理地址之間的一更新映射關(guān)系更新該映射高速緩存;以及 執(zhí)行一日志操作以將該更新映射關(guān)系寫(xiě)到該日志表。2.根據(jù)權(quán)利要求1所述的存儲(chǔ)器裝置,其中該非易失性存儲(chǔ)器還包括多個(gè)數(shù)據(jù)區(qū)塊,該存儲(chǔ)器控制器還用以: 將該數(shù)據(jù)與該邏輯地址寫(xiě)到該多個(gè)數(shù)據(jù)區(qū)塊的其中一個(gè),以及當(dāng)該多個(gè)數(shù)據(jù)區(qū)塊的該其中一個(gè)被裝滿時(shí),執(zhí)行該日志操作,并指定一空閑數(shù)據(jù)區(qū)塊以寫(xiě)入一未來(lái)數(shù)據(jù)。3.根據(jù)權(quán)利要求1所述的存儲(chǔ)器裝置,其中該存儲(chǔ)器控制器還用以在一寫(xiě)回高速緩存紀(jì)錄兩個(gè)連續(xù)的日志操作之間執(zhí)行在該映射高速緩存上的多個(gè)操作,并將儲(chǔ)存在該寫(xiě)回高速緩存的信息寫(xiě)到該日志表以執(zhí)行該日志操作。4.根據(jù)權(quán)利要求1所述的存儲(chǔ)器裝置,其中該存儲(chǔ)器控制器更用以在一斷電而恢復(fù)電源之后基于儲(chǔ)存在該日志表的該信息恢復(fù)該映射高速緩存的該映射信息。5.一種由一存儲(chǔ)器控制器控制一存儲(chǔ)器裝置的方法,其特征在于,該存儲(chǔ)器裝置包括一非易失性存儲(chǔ)器,用以儲(chǔ)存一映射表與一日志表,該方法包括: 將一數(shù)據(jù)與該數(shù)據(jù)的一邏輯地址寫(xiě)到該非易失性存儲(chǔ)器; 從該非易失性存儲(chǔ)器的該映射表加載相關(guān)于該數(shù)據(jù)的該邏輯地址的一映射信息到該存儲(chǔ)器控制器的一映射高速緩存; 以該數(shù)據(jù)的該邏輯地址與該數(shù)據(jù)的一物理地址之間的一更新映射關(guān)系更新該映射高速緩存;以及 執(zhí)行一日志操作以將該更新映射關(guān)系寫(xiě)到該日志表。6.根據(jù)權(quán)利要求5所述的方法,其中,該非易失性存儲(chǔ)器還包括多個(gè)數(shù)據(jù)區(qū)塊, 將該數(shù)據(jù)寫(xiě)到該非易失性存儲(chǔ)器的步驟包含將該數(shù)據(jù)與該邏輯地址寫(xiě)到該多個(gè)數(shù)據(jù)區(qū)塊的其中一個(gè),以及 當(dāng)該多個(gè)數(shù)據(jù)區(qū)塊的該其中一個(gè)被裝滿時(shí),執(zhí)行該日志操作,并指定一空閑數(shù)據(jù)區(qū)塊以寫(xiě)入一未來(lái)數(shù)據(jù)。7.根據(jù)權(quán)利要求5所述的方法,其中該方法還包含在一寫(xiě)回高速緩存中紀(jì)錄兩個(gè)連續(xù)的日志操作之間執(zhí)行在該映射高速緩存上的多個(gè)操作,其中該日志操作包括將儲(chǔ)存在該寫(xiě)回高速緩存的信息寫(xiě)到該日志表。8.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括: 在一斷電而恢復(fù)電源之后基于儲(chǔ)存在該日志表中的該信息恢復(fù)該映射高速緩存中的該映射信息。9.一種用以控制一非易失性存儲(chǔ)器的存儲(chǔ)器控制器,其特征在于,該非易失性存儲(chǔ)器儲(chǔ)存一映射表與一日志表, 該存儲(chǔ)器控制器包括一處理電路用以: 將一數(shù)據(jù)及該數(shù)據(jù)的一邏輯地址寫(xiě)到該非易失性存儲(chǔ)器; 從該非易失性存儲(chǔ)器的該映射表加載相關(guān)于該數(shù)據(jù)的該邏輯地址的一映射信息到該存儲(chǔ)器控制器的一映射高速緩存中; 以該數(shù)據(jù)的該邏輯地址與該數(shù)據(jù)的一物理地址之間的一更新映射關(guān)系更新該映射高速緩存;以及 執(zhí)行一日志操作以將該更新映射關(guān)系寫(xiě)到該日志表。10.根據(jù)權(quán)利要求9所述的存儲(chǔ)器控制器,其中,該非易失性存儲(chǔ)器還包括多個(gè)數(shù)據(jù)區(qū)塊,該存儲(chǔ)控制器的該處理電路用以: 將該數(shù)據(jù)與該邏輯地址寫(xiě)到該多個(gè)數(shù)據(jù)區(qū)塊的其中一個(gè),以及 當(dāng)該多個(gè)數(shù)據(jù)區(qū)塊的該其中一個(gè)被裝滿時(shí),執(zhí)行該日志操作,并指定一空閑數(shù)據(jù)區(qū)塊以寫(xiě)入一未來(lái)數(shù)據(jù)。11.根據(jù)權(quán)利要求9所述的存儲(chǔ)器控制器,其中該存儲(chǔ)器控制器的該處理電路用以在一寫(xiě)回高速緩存中紀(jì)錄兩個(gè)連續(xù)的日志操作之間執(zhí)行在該映射高速緩存上的多個(gè)操作,并將儲(chǔ)存在該寫(xiě)回高速緩存的信息寫(xiě)到該日志表以執(zhí)行該日志操作。12.根據(jù)權(quán)利要求9所述的存儲(chǔ)器控制器,其中該存儲(chǔ)器控制器的該處理電路還用以在一斷電而恢復(fù)電源之后基于儲(chǔ)存在該日志表中的該信息恢復(fù)該映射高速緩存中的該映射信息。
【文檔編號(hào)】G06F12/1045GK106055489SQ201510422191
【公開(kāi)日】2016年10月26日
【申請(qǐng)日】2015年7月17日
【發(fā)明人】張育銘, 黃偉杰, 黃莉君, 張弘升, 李祥邦, 劉庭宇, 劉建興, 郭乃萍
【申請(qǐng)人】旺宏電子股份有限公司