本發(fā)明有關于一種數(shù)據(jù)儲存裝置,特別有關于以位元表維護的數(shù)據(jù)儲存裝置。
背景技術:
快閃存儲器為一種普遍的非揮發(fā)性數(shù)據(jù)儲存裝置,是以電性方式抹除與程式化。以與非門型的快閃存儲器(即NAND FLASH)為例,常用作記憶卡(memory card)、通用串行總線閃存裝置(USB flash device)、固態(tài)硬碟(SSD)、嵌入式快閃存儲器模組(eMMC)…等使用。
快閃存儲器(如,NAND FLASH)的儲存陣列包括多個區(qū)塊(blocks),其中浮置柵極晶體管可用以構成快閃存儲器。浮置柵極晶體管中的浮置柵極,可捕捉的電荷以儲存數(shù)據(jù)。另外,快閃存儲器中的實體頁面與主機裝置所指定的邏輯頁面的轉換關系需要一個實體轉邏輯表記錄。當非預期的斷電事件發(fā)生時,儲存于隨機存儲器中的實體轉邏輯表會丟失。如何有效重建實體轉邏輯表是一個重要的課題。
技術實現(xiàn)要素:
本發(fā)明所提供的數(shù)據(jù)儲存裝置以及數(shù)據(jù)維護方法可藉由位元表判斷兩個表中是否具有重復的邏輯地址以降低實體轉邏輯對應表重建的時間。
本發(fā)明提供一種數(shù)據(jù)儲存裝置。數(shù)據(jù)儲存裝置包括一快閃存儲器以及一控制器??扉W存儲器包括多個區(qū)塊,每一區(qū)塊包括多個頁面,其中快閃存儲器可儲存相應于多個邏輯地址的數(shù)據(jù)。當數(shù)據(jù)儲存裝置發(fā)生一斷電事件并且數(shù)據(jù)儲存裝置恢復電力后,控制器依序讀取快閃存儲器中的一第一目前區(qū)塊以及一第二目前區(qū)塊,以建立一第一目前區(qū)塊表以及一第二目前區(qū)塊表并且根據(jù)第二目前區(qū)塊中的每一頁面的邏輯地址建立一位元表,其中控制器還用以根據(jù)位元表整理第一目前區(qū)塊表以及第二目前區(qū)塊表。
在一實施例中,位元表具有多個位元,位元依序代表每一邏輯地址。第一目前區(qū)塊表以及第二目前區(qū)塊表分別具有第一目前區(qū)塊以及第二目前區(qū)塊中的所有頁 面中所儲存的邏輯地址,其中控制器在讀取第二目前區(qū)塊的頁面時,將位元表中代表所讀取的頁面的邏輯地址的位元寫入一既定值??刂破饔靡愿鶕?jù)位元表,判斷第一目前區(qū)塊表以及第二目前區(qū)塊表中是否具有重復的邏輯地址。
在另一實施例中,控制器是在讀取第一目前區(qū)塊表中相應于一第一頁面的一第一邏輯地址時,根據(jù)位元表中代表第一邏輯地址的位元是否為既定值,判斷第一邏輯地址是否重復出現(xiàn)于第二目前區(qū)塊表中,其中當代表第一邏輯地址的位元為既定值時,控制器判斷第一邏輯地址重復出現(xiàn)于第二目前區(qū)塊表中,當代表第一邏輯地址的位元不是既定值時,控制器判斷第一邏輯地址沒有重復出現(xiàn)于第二目前區(qū)塊表中。
又另一實施例中,第一目前區(qū)塊以及第二目前區(qū)塊的頁面具有多個寫入序號,第一目前區(qū)塊以及第二目前區(qū)塊的每一頁面,具有一個寫入序號用以代表頁面的數(shù)據(jù)被寫入的順序。當控制器判斷第一邏輯地址重復出現(xiàn)于第二目前區(qū)塊表時,控制器接著讀取第二目前區(qū)塊表以找出具有第一邏輯地址的至少一第二頁面??刂破髡页鼍哂械谝贿壿嫷刂返牡诙撁婧?,比較第一頁面以及第二頁面所相應的寫入序號,以將第一頁面以及第二頁面中寫入序號小于第一頁面以及第二頁面中的其他者的至少一者舍棄。
一實施例中,控制器還用以根據(jù)一第一目前區(qū)塊序號表以及一第二目前區(qū)塊序號表,比較第一頁面以及第二頁面所相應的寫入序號,其中第一目前區(qū)塊序號表包括第一目前區(qū)塊中的頁面所儲存的寫入序號,并且第二目前區(qū)塊序號表包括第二目前區(qū)塊中的頁面所儲存的寫入序號。當控制器判斷第一邏輯地址沒有重復出現(xiàn)于第二目前區(qū)塊表時,控制器接著讀取第一目前區(qū)塊表中的下一個頁面的邏輯地址。
另外,控制器根據(jù)至少一寫入命令,將屬于一連續(xù)型態(tài)的數(shù)據(jù)寫入第一目前區(qū)塊的頁面,并且將屬于一隨機型態(tài)的數(shù)據(jù)寫入第二目前區(qū)塊的頁面。
本發(fā)明另提供一種數(shù)據(jù)維護方法,適用于包括一快閃存儲器的一數(shù)據(jù)儲存裝置,其中快閃存儲器包括多個區(qū)塊,每一區(qū)塊包括多個頁面,并且快閃存儲器可儲存相應于多個邏輯地址的數(shù)據(jù)。數(shù)據(jù)維護方法包括:當數(shù)據(jù)儲存裝置發(fā)生一斷電事件并且數(shù)據(jù)儲存裝置恢復電力后,依序讀取快閃存儲器中的一第一目前區(qū)塊以及一第二目前區(qū)塊,以建立一第一目前區(qū)塊表以及一第二目前區(qū)塊表,并且根據(jù)第二目前區(qū)塊中的每一頁面的邏輯地址建立一位元表;以及根據(jù)位元表,整理第一目前區(qū)塊表以及第二目前區(qū)塊表。
在一實施例中,位元表具有多個位元,位元依序代表每一邏輯地址,第一目前區(qū)塊表以及第二目前區(qū)塊表分別具有第一目前區(qū)塊以及第二目前區(qū)塊中的所有頁面中所儲存的邏輯地址,其中根據(jù)第二目前區(qū)塊中的每一頁面的邏輯地址建立位元表的步驟還包括讀取第二目前區(qū)塊的頁面時,將位元表中代表所讀取的頁面的邏輯地址的位元寫入一既定值。
另外,根據(jù)位元表整理第一目前區(qū)塊表以及第二目前區(qū)塊表的步驟還包括根據(jù)位元表,判斷第一目前區(qū)塊表以及第二目前區(qū)塊表中是否具有重復的邏輯地址。根據(jù)位元表整理第一目前區(qū)塊表以及第二目前區(qū)塊表的步驟還包括:在讀取第一目前區(qū)塊表中相應于一第一頁面的一第一邏輯地址時,根據(jù)位元表中代表第一邏輯地址的位元是否為既定值,判斷第一邏輯地址是否重復出現(xiàn)于第二目前區(qū)塊表中;當代表第一邏輯地址的位元為既定值時,判斷第一邏輯地址重復出現(xiàn)于第二目前區(qū)塊表中;以及當代表第一邏輯地址的位元不是既定值時,判斷第一邏輯地址沒有重復出現(xiàn)于第二目前區(qū)塊表中。
根據(jù)位元表整理第一目前區(qū)塊表以及第二目前區(qū)塊表的步驟還包括:當判斷第一邏輯地址重復出現(xiàn)于第二目前區(qū)塊表時,讀取第二目前區(qū)塊表以找出具有第一邏輯地址的至少一第二頁面;以及當判斷第一邏輯地址沒有重復出現(xiàn)于第二目前區(qū)塊表時,讀取第一目前區(qū)塊表中的下一個頁面的邏輯地址。
一實施例中,第一目前區(qū)塊以及第二目前區(qū)塊的頁面具有多個寫入序號,第一目前區(qū)塊以及第二目前區(qū)塊的每一頁面,具有一個寫入序號用以代表頁面的數(shù)據(jù)被寫入的順序。根據(jù)位元表整理第一目前區(qū)塊表以及第二目前區(qū)塊表的步驟還包括:找出具有第一邏輯地址的第二頁面后,比較第一頁面以及第二頁面所相應的寫入序號;以及將第一頁面以及第二頁面中寫入序號小于第一頁面以及第二頁面中的其他者的至少一者舍棄。比較第一頁面以及第二頁面所相應的寫入序號的步驟還包括根據(jù)一第一目前區(qū)塊序號表以及一第二目前區(qū)塊序號表,比較第一頁面以及第二頁面所相應的寫入序號,其中第一目前區(qū)塊序號表包括第一目前區(qū)塊中的頁面所儲存的寫入序號,并且第二目前區(qū)塊序號表包括第二目前區(qū)塊中的頁面所儲存的寫入序號。
附圖說明
圖1為本發(fā)明所提供的一電子系統(tǒng)的一種實施例的方塊圖。
圖2為本發(fā)明所提供的一快閃存儲器的一種實施例的方塊圖。
圖3為本發(fā)明所提供的一目前區(qū)塊的一種實施例的方塊圖。
圖4為本發(fā)明所提供的一目前區(qū)塊表以及位元表的方塊圖。
圖5為本發(fā)明所提供的一數(shù)據(jù)維護方法的一種實施例的流程圖。
圖6為本發(fā)明所提供的一目前區(qū)塊表整理方法的一種實施例的流程圖。
符號說明
100 電子系統(tǒng);
120 主機;
140 數(shù)據(jù)儲存裝置;
160 控制器;
162 運算單元;
164 永久存儲器;
166 隨機存取存儲器;
180 快閃存儲器;
TB1 數(shù)據(jù)鏈結關系表;
SPA0-SPAN 備用區(qū)域;
P0-PN 頁面;
B0~BN 區(qū)塊;
CB0 第一目前區(qū)塊;
CB1 第二目前區(qū)塊;
D1~D4 數(shù)據(jù);
AD1~AD10 邏輯地址;
1~4 寫入序號;
CB0_ADT 第一目前區(qū)塊表;
CB1_ADT 第二目前區(qū)塊表;
CB0_SNT 第一目前區(qū)塊序號表;
CB1_SNT 第二目前區(qū)塊序號表;
BT 位元表;
S500~S504、S600~S610 步驟。
具體實施方式
以下將詳細討論本發(fā)明各種實施例的裝置及使用方法。然而值得注意的是,本發(fā)明所提供的許多可行的發(fā)明概念可實施在各種特定范圍中。這些特定實施例僅用于舉例說明本發(fā)明的裝置及使用方法,但非用于限定本發(fā)明的范圍。
圖1為本發(fā)明所提供的一電子系統(tǒng)的一種實施例的方塊圖。電子系統(tǒng)100包括一主機120以及一數(shù)據(jù)儲存裝置140。數(shù)據(jù)儲存裝置140包括一快閃存儲器180以及一控制器160,且可根據(jù)主機120所下達的命令操作??刂破?60包括一運算單元162、一永久存儲器(如,只讀存儲器ROM)164以及隨機存取存儲器(RAM)166。永久存儲器164與所載的程式碼、數(shù)據(jù)組成固件(firmware),由運算單元162執(zhí)行,使控制器160基于該固件控制該快閃存儲器180。隨機存取存儲器(RAM)166用以載入程式碼與參數(shù)以提供控制器160根據(jù)所載入的程式碼與參數(shù)動作。快閃存儲器180包括多個區(qū)塊,每一區(qū)塊包括多個頁面P0~PN,其中每一頁面P0~PN具有一備用區(qū)域(Spare Area)SPA0~SPAN,如圖2所示。值得注意的是,快閃存儲器180以區(qū)塊為最小單位進行抹除,并且頁面為最小單位進行寫入。另外,備用區(qū)域SPA0~SPAN可在其所相應的頁面的前方或者后方,本發(fā)明不限于此。在其他實施例中,備用區(qū)域SPA0~SPAN亦可位于區(qū)塊B0~BN的前端或者后端。值得注意的是,在一實施例中,具有有效數(shù)據(jù)的每一頁面的備用區(qū)域中包括一邏輯地址以及一寫入序號??扉W存儲器180還包括一數(shù)據(jù)鏈結關系表TB1,用以記錄快閃存儲器180中所有區(qū)塊以及頁面的邏輯地址以及實體地址的對應關系。
在一實施例中,控制器160依序接收多個寫入指令,根據(jù)接收寫入指令之順序,分配寫入指令不同的多個寫入序號。另外,控制器160更依序根據(jù)寫入指令,將多個數(shù)據(jù)以及目前所執(zhí)行的寫入指令的寫入序號寫入?yún)^(qū)塊中的一第一目前區(qū)塊CB0以及一第二目前區(qū)塊CB1的頁面中。在一實施例中,控制器160根據(jù)寫入指令,判斷寫入指令所指示寫入的數(shù)據(jù)的一型態(tài)為一連續(xù)型態(tài)或者一隨機型態(tài),并且將屬于連續(xù)型態(tài)的數(shù)據(jù)寫入第一目前區(qū)塊CB0中的頁面,將屬于隨機型態(tài)的數(shù)據(jù)寫入第二目前區(qū)塊CB1中的頁面。舉例而言,當寫入指令所指示寫入的數(shù)據(jù)的總長度大于一個頁面的數(shù)據(jù)量時,控制器160判斷該寫入指令的數(shù)據(jù)為連續(xù)型態(tài)。當寫入指令所指示寫入的數(shù)據(jù)的總長度小于等于一個頁面的數(shù)據(jù)量時,控制器160判斷該寫入指令的數(shù)據(jù)為隨機型態(tài),但本發(fā)明不限于此。值得注意的是,當寫入指令的數(shù)據(jù)為連續(xù)型態(tài),但這些數(shù)據(jù)中具有無法寫滿一個頁面的數(shù)據(jù)的數(shù)據(jù)時,控制器160判斷該無法寫滿一個頁面的數(shù)據(jù)為隨機型態(tài)。在另一實施例中,控制器160還將數(shù) 據(jù)所相應的邏輯地址寫入第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1的頁面中。詳細而言,在寫入數(shù)據(jù)的過程中,控制器160會自快閃存儲器180的區(qū)塊B0~BN中選取兩個可使用的區(qū)塊以作為一第一目前區(qū)塊CB0以及一第二目前區(qū)塊CB1,并且在隨機存取存儲器166中建立一實體轉邏輯對應表以記錄第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1的頁面的實體地址與數(shù)據(jù)的頁面的邏輯地址的對應關系,如圖3所示。第一目前區(qū)塊CB0是用以儲存連續(xù)型態(tài)的數(shù)據(jù),并且第二目前區(qū)塊CB1是用以儲存隨機型態(tài)的數(shù)據(jù)。當?shù)谝荒壳皡^(qū)塊CB0以及第二目前區(qū)塊CB1已經(jīng)被寫滿(無法再寫入新的數(shù)據(jù)時),控制器160將實體轉邏輯對應表整理至數(shù)據(jù)鏈結關系表TB1,將第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1定義為數(shù)據(jù)母區(qū)塊,重新自快閃存儲器180的區(qū)塊B0~BN中選取兩個可使用的區(qū)塊以作為新的第一目前區(qū)塊CB0以及新的第二目前區(qū)塊CB1,并且在隨機存取存儲器166中建立新的一實體轉邏輯對應表以記錄新的第一目前區(qū)塊CB0以及新的第二目前區(qū)塊CB1之頁面的實體地址與數(shù)據(jù)的頁面的邏輯地址的對應關系。
圖3為本發(fā)明所提供的一目前區(qū)塊的一種實施例的方塊圖。在本實施例中,快閃存儲器180中的每一區(qū)塊B0~BN包括16個頁面P0~P15,每一頁面P0~P15具有一個相應的備用區(qū)域SPA0~SPA15,但本發(fā)明不限于此。因此,控制器160所選擇的第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1也同樣分別包括16個頁面P0~P15以及16個備用區(qū)域SPA0~SPA15。
舉例而言,當控制器160接收到用以寫入一第一數(shù)據(jù)D1的一第一寫入指令時,控制器160根據(jù)接收第一寫入指令的順序分配一第一寫入序號給第一寫入指令。舉例而言,當?shù)谝粚懭胫噶钍强刂破?60選取第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1后所接收到的第一個寫入指令時,控制器160分配”1”以作為第一寫入指令的寫入序號。值得注意的是,第一寫入指令包括第一數(shù)據(jù)D1的邏輯地址AD1。接著,由于第一寫入指令所指示寫入的第一數(shù)據(jù)D1的長度小于等于一頁面的大小,因此控制器160判斷第一數(shù)據(jù)D1的型態(tài)為隨機型態(tài)。接著,控制器160將第一數(shù)據(jù)D1、第一寫入序號”1”以及邏輯地址AD1寫入第二目前區(qū)塊CB1中之頁面P0中。最后,控制器160在實體轉邏輯對應表中記錄邏輯地址AD1與第二目前區(qū)塊CB1中的頁面P0的實體地址對應關系。
接著,控制器160接收到用以寫入多個第二數(shù)據(jù)D2的一第二寫入指令??刂破?60根據(jù)接收第二寫入指令的順序分配一第二寫入序號給第二寫入指令。由于第 二寫入指令是在第一寫入指令之后所接收到的,所以控制器160分配”2”以作為第二寫入指令的寫入序號。值得注意的是,其中第二寫入指令包括第二數(shù)據(jù)D2的邏輯地址AD2~AD5。接著,由于第二寫入指令所指示寫入的第二數(shù)據(jù)D2的總長度大于一頁面的大小,因此控制器160判斷第二數(shù)據(jù)D2的型態(tài)為連續(xù)型態(tài)。接著,控制器160依序將第二數(shù)據(jù)D2、第二寫入序號”2”以及邏輯地址AD2~AD5寫入第一目前區(qū)塊CB0中的頁面P0~P3中。詳細而言,控制器160將第二數(shù)據(jù)D2中的第一者、第二寫入序號”2”以及邏輯地址AD2寫入第一目前區(qū)塊CB0中的頁面P0、將第二數(shù)據(jù)D2中的第二者、第二寫入序號”2”以及邏輯地址AD3寫入第一目前區(qū)塊CB0中的頁面P1、將第二數(shù)據(jù)D2中的第三者、第二寫入序號”2”以及邏輯地址AD4寫入第一目前區(qū)塊CB0中的頁面P2,依此類推。最后,控制器160在實體轉邏輯對應表中記錄邏輯地址AD2~AD5與第一目前區(qū)塊CB0中的之頁面P0~P3的實體地址對應關系。
接著,控制器160接收到用以寫入多個第三數(shù)據(jù)D3的一第三寫入指令??刂破?60根據(jù)接收第三寫入指令的順序分配一第三寫入序號給第三寫入指令。由于第三寫入指令是在第二寫入指令之后所接收到的,所以控制器160分配”3”以作為第三寫入指令的寫入序號。值得注意的是,其中第三寫入指令包括第三數(shù)據(jù)D3的邏輯地址AD6~AD10。接著,由于第三寫入指令所指示寫入的第三數(shù)據(jù)D3的總長度大于一頁面的大小,因此控制器160判斷第三數(shù)據(jù)D3的型態(tài)為連續(xù)型態(tài)。然而,第一個第三數(shù)據(jù)D3以及最后一個第三數(shù)據(jù)D3之數(shù)據(jù)量小于一個頁面的大小,因此第一個第三數(shù)據(jù)D3以及最后一個第三數(shù)據(jù)D3被定義為隨機型態(tài),并且除了第一個第三數(shù)據(jù)D3以及最后一個第三數(shù)據(jù)D3外,其他第三數(shù)據(jù)D3為連續(xù)型態(tài)。舉例而言,每一頁面P0~P15的數(shù)據(jù)量為16K,其中第一頁面的地址為0~15K、第二頁面的地址為16~32K,依此類推。當?shù)谝粋€第三數(shù)據(jù)D3的起始邏輯地址AD6為8K時,第一個第三數(shù)據(jù)D3的數(shù)據(jù)則用以儲存在8~15K的地址,故第一個第三數(shù)據(jù)D3的數(shù)據(jù)量小于一個頁面的大小,邏輯地址為AD6的第三數(shù)據(jù)D3為隨機型態(tài)。接著,控制器160將定義為隨機型態(tài)的第一個以及最后一個第三數(shù)據(jù)D3、第三寫入序號”3”以及邏輯地址AD6、AD10分別寫入第二目前區(qū)塊CB1中的頁面P1以及頁面P2中,并且依序將被定義為連續(xù)型態(tài)的第三數(shù)據(jù)D3、第三寫入序號”3”以及邏輯地址AD7~AD9寫入第一目前區(qū)塊CB0的頁面P4~P6中。詳細而言,控制器160將第三數(shù)據(jù)D3中的第一者、第三寫入序號”3”以及邏輯地址AD6寫 入第二目前區(qū)塊CB1中的頁面P1、將第三數(shù)據(jù)D3中的第二者、第三寫入序號”3”以及邏輯地址AD7寫入第一目前區(qū)塊CB0中的頁面P4、將第三數(shù)據(jù)D3中的第三者、第三寫入序號”3”以及邏輯地址AD8寫入第一目前區(qū)塊CB0中的頁面P5,依此類推。最后,控制器160在實體轉邏輯對應表中記錄邏輯地址AD6~AD9與第一目前區(qū)塊CB0與第二目前區(qū)塊CB1中的實體地址的對應關系。
最后,控制器160接收到用以寫入一第四數(shù)據(jù)D4的一第四寫入指令時,控制器160根據(jù)接收第四寫入指令的順序分配一第四寫入序號給第四寫入指令。由于第四寫入指令是在第三寫入指令之后所接收到的,所以控制器160分配”4”以作為第四寫入指令的寫入序號。值得注意的是,第四寫入指令包括第四數(shù)據(jù)D4的邏輯地址AD2。接著,由于第四寫入指令所指示寫入的第四數(shù)據(jù)D4的長度小于等于一頁面的大小,因此控制器160判斷第四數(shù)據(jù)D4的型態(tài)為隨機型態(tài)。接著,控制器160將第四數(shù)據(jù)D4、第四寫入序號”4”以及邏輯地址AD2寫入第二目前區(qū)塊CB1中的頁面P3中。最后,由于第四數(shù)據(jù)D4的邏輯地址AD2與已儲存第一目前區(qū)塊CB0的頁面P0的于第二數(shù)據(jù)D2的邏輯地址AD2相同。因此,控制器160在寫入第四數(shù)據(jù)D4之后,會將實體轉邏輯對應表中邏輯地址AD2所相應的實體地址更新為第二目前區(qū)塊CB1的頁面P3。藉由上述流程可知,每一具有有效數(shù)據(jù)的頁面包括數(shù)據(jù)中之一者、一寫入序號以及該數(shù)據(jù)所相應的一邏輯地址。另外,本發(fā)明所提供的控制器160可將相應于寫入指令的順序的寫入序號導入快閃存儲器180中。
當發(fā)生一斷電事件時,隨機存取存儲器166中所儲存的實體轉邏輯對應表會因為電力消失而丟失。因此當發(fā)生一斷電事件并且數(shù)據(jù)儲存裝置140恢復電力后,控制器160需要依序讀取第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1中的頁面以重新在隨機存取存儲器166中建立一實體轉邏輯對應表。在本發(fā)明的一實施例中,控制器166先在隨機存取存儲器166中建立一第一目前區(qū)塊表CB0_ADT以及一第二目前區(qū)塊表CB1_ADT,并且根據(jù)一位元表BT整理第一目前區(qū)塊表CB0_ADT以及第二目前區(qū)塊表CB1_ADT,以在隨機存取存儲器166中重建實體轉邏輯對應表,如圖4所示。
詳細而言,當數(shù)據(jù)儲存裝置140發(fā)生一斷電事件并且數(shù)據(jù)儲存裝置140恢復電力后,控制器160依序讀取快閃存儲器180中的第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1,以建立第一目前區(qū)塊表CB0_ADT、第二目前區(qū)塊表CB1_ADT、一第一目前區(qū)塊序號表CB0_SNT以及一第二目前區(qū)塊序號表CB1_SNT。在一實施例 中,第一目前區(qū)塊表CB0_ADT以及第二目前區(qū)塊表CB1_ADT分別具有第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1中的所有頁面中所儲存的邏輯地址。第一目前區(qū)塊序號表CB0_SNT以及第二目前區(qū)塊序號表CB1_SNT分別具有第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1中的所有頁面中所儲存的寫入序號。值得注意的是,在某些實施例中,第一目前區(qū)塊序號表CB0_SNT以及第二目前區(qū)塊序號表CB1_SNT可分別設置于第一目前區(qū)塊表CB0_ADT以及第二目前區(qū)塊表CB1_ADT中,但本發(fā)明不限于此。
接著,控制器160根據(jù)第二目前區(qū)塊CB1中的每一頁面的邏輯地址建立一位元表BT。在一實施例中,位元表BT具有多個位元,位元依序代表每一邏輯地址,但本發(fā)明不限于此。位元表BT亦以其他形式記錄每一邏輯地址的對應關系??刂破?60在讀取第二目前區(qū)塊CB1的頁面時,將位元表BT中代表所讀取的第二目前區(qū)塊CB1中的頁面的邏輯地址的位元寫入一既定值。舉例而言,既定值可為1,但本發(fā)明不限于此。在其他實施例中,既定值可為0或者其他數(shù)值。
控制器160還用以根據(jù)位元表BT整理第一目前區(qū)塊表CB0_ADT以及第二目前區(qū)塊表CB1_ADT。詳細而言,控制器160用以根據(jù)位元表BT,判斷第一目前區(qū)塊表CB0_ADT以及第二目前區(qū)塊表CB1_ADT中是否具有重復的邏輯地址,以舍棄具有重復邏輯地址的頁面數(shù)據(jù)只保留一個最新的數(shù)據(jù)。舉例而言,控制器160在讀取第一目前區(qū)塊表CB0_ADT中相應于一第一頁面的一第一邏輯地址時,根據(jù)位元表BT中代表第一邏輯地址的位元是否為既定值,判斷第一邏輯地址是否重復出現(xiàn)于第二目前區(qū)塊表CB1_ADT中。
當代表第一邏輯地址的位元為既定值時,控制器160判斷第一邏輯地址重復出現(xiàn)于第二目前區(qū)塊表CB1_ADT中。當控制器160判斷第一邏輯地址重復出現(xiàn)于第二目前區(qū)塊表CB1_ADT時,控制器160接著讀取第二目前區(qū)塊表CB1_ADT以找出具有第一邏輯地址的至少一第二頁面。如圖3所示,第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1的頁面具有多個寫入序號,第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1的每一頁面,具有一個寫入序號用以代表頁面的數(shù)據(jù)被寫入的順序。值得注意的是,不具有寫入序號以及邏輯地址的頁面是尚未被寫入的頁面??刂破?60找出具有第一邏輯地址的第二頁面后,根據(jù)第一目前區(qū)塊序號表CB0_SNT以及第二目前區(qū)塊序號表CB1_SNT,比較第一頁面以及第二頁面所相應的寫入序號,以 將第一頁面以及第二頁面中寫入序號小于第一頁面以及第二頁面中的其他者的至少一者舍棄,使得重復邏輯地址的頁面中最后一個被寫入的數(shù)據(jù)保留下來。
當代表第一邏輯地址的位元不是既定值時,控制器160判斷第一邏輯地址沒有重復出現(xiàn)于第二目前區(qū)塊表CB1_ADT中。當控制器160判斷第一邏輯地址沒有重復出現(xiàn)于第二目前區(qū)塊表CB1_ADT時,控制器160接著讀取第一目前區(qū)塊表CB0_ADT中的下一個頁面的邏輯地址。
圖4為本發(fā)明所提供的目前區(qū)塊表以及位元表的方塊圖。值得注意的是,圖4是以圖3所示的一目前區(qū)塊CB0以及第二目前區(qū)塊CB1為例說明,本發(fā)明不限于此。詳細而言,當數(shù)據(jù)儲存裝置140發(fā)生一斷電事件并且數(shù)據(jù)儲存裝置140恢復電力后,控制器160依序讀取快閃存儲器180中的圖3所示的第一目前區(qū)塊CB0,以將儲存于第一目前區(qū)塊CB0的備用區(qū)域SPA0~SPA15中的邏輯地址填入第一目前區(qū)塊表CB0_ADT中所相應的頁面的欄位中,并且將儲存于第一目前區(qū)塊CB0的備用區(qū)域SPA0~SPA15中的寫入序號填入第一目前區(qū)塊序號表CB0_SNT中所相應的頁面的欄位中。接著,控制器160依序讀取快閃存儲器180中的圖3所示的第二目前區(qū)塊CB1,以將儲存于第二目前區(qū)塊CB1的備用區(qū)域SPA0~SPA15中的邏輯地址填入第二目前區(qū)塊表CB1_ADT中所相應的頁面的欄位中、將儲存于第二目前區(qū)塊CB1的備用區(qū)域SPA0~SPA15中的寫入序號填入第二目前區(qū)塊序號表CB1_SNT中所相應的頁面的欄位中、并且根據(jù)所讀取到的邏輯地址將既定值寫入位元表BT中相應于所讀取道的邏輯地址的位元欄位。詳細而言,位元表BT具有多個位元,每一位元分別依序對應至(代表)快閃存儲器180可儲存的邏輯地址AD1~AND。換言之,位元表BT包括所有主機120可用的邏輯地址的對應位元,位元表BT包括儲存于快閃存儲器180中所有區(qū)塊中所儲存的邏輯地址的對應位元。值得注意的是,在圖3以及圖4的實施例中,每一區(qū)塊包括16個頁面,但本發(fā)明不限于此。在其他實施例中,一個區(qū)塊亦可包括265、1036等其他數(shù)量的頁面。另外,在本實施例中,既定值為1。因此,控制器160是將既定值”1”寫入位元表BT中對應于第二目前區(qū)塊CB1中所具有的邏輯地址AD1、AD6、AD10、AD2的位元。不存在于二目前區(qū)塊CB1中的其他位元,則保持0。
接著,控制器160依序讀取第一目前區(qū)塊表CB0_ADT中的邏輯地址,并且根據(jù)位元表BT,判斷第一目前區(qū)塊表CB0_ADT以及第二目前區(qū)塊表CB1_ADT中是否具有重復的邏輯地址,以舍棄具有重復邏輯地址的頁面數(shù)據(jù)只保留一個最新的 數(shù)據(jù)。舉例而言,控制器160讀取第一目前區(qū)塊表CB0_ADT中相應于頁面P0的邏輯地址AD2時,判斷位元表BT中代表邏輯地址AD2的位元是否為既定值”1”。在本實施例中,位元表BT中代表邏輯地址AD2的位元為1,故控制器160判斷第二目前區(qū)塊表CB1_ADT具有重復的邏輯地址AD2。換言之,第一目前區(qū)塊CB0所儲存的相應于邏輯地址AD2的數(shù)據(jù)D2重復寫在第二目前區(qū)塊CB1中。因此,控制器160則需要在第二目前區(qū)塊CB1中找出重復的頁面,并且判斷哪個頁面是最后被寫入的,以保留最后被寫入的頁面并舍棄其他頁面。詳細而言,控制器160根據(jù)位元表BT得知,第二目前區(qū)塊表CB1_ADT具有重復的邏輯地址AD2時,控制器160依序讀取第二目前區(qū)塊表CB1_ADT中的所有欄位以尋找重復的邏輯地址AD2。當控制器160讀到相應于第二目前區(qū)塊CB1的頁面P3的欄位時,獲得邏輯地址AD2。因此,控制器160可得知具有重復邏輯地址的頁面及為第二目前區(qū)塊CB1的頁面P3。接著,控制器160自第一目前區(qū)塊序號表CB0_SNT中讀取相應于第一目前區(qū)塊CB0的頁面P0的欄位以獲得第一目前區(qū)塊CB0的頁面P0的寫入序號”2”,并且自第二目前區(qū)塊序號表CB1_SNT中讀取相應于第二目前區(qū)塊CB1的頁面P3的欄位以獲得第二目前區(qū)塊CB1的頁面P3的寫入序號”4”。接著,控制器160比較第一目前區(qū)塊CB0的頁面P0的寫入序號”2”以及第二目前區(qū)塊CB1的頁面P3的寫入序號”4”后,判斷具有較大寫入序號”4”的第二目前區(qū)塊CB1的頁面P3是在第一目前區(qū)塊CB0的頁面P0之后寫入的。因此,控制器160保留第二目前區(qū)塊表CB1_ADT中頁面P3的數(shù)據(jù),并且舍棄第一目前區(qū)塊表CB0_ADT中頁面P0的數(shù)據(jù)。
接著,控制器160讀取第一目前區(qū)塊表CB0_ADT中相應于頁面P1的邏輯地址AD3時,判斷位元表BT中代表邏輯地址AD3的位元是否為既定值”1”。在本實施例中,位元表BT中代表邏輯地址AD3的位元為0,故控制器160判斷第二目前區(qū)塊表CB1_ADT并不具有重復的邏輯地址AD3。換言之,第一目前區(qū)塊CB0所儲存的相應于邏輯地址AD3的數(shù)據(jù)D2并未重復寫在第二目前區(qū)塊CB1中。依此類推,直到控制器160處理完所有第一目前區(qū)塊表CB0_ADT中的所有數(shù)據(jù)。
由上述可知,控制器160可藉由先前所導入的寫入序號以及位元表BT,成功辨認在不同的目前區(qū)塊中具有相同邏輯地址的數(shù)據(jù)的寫入順序,以在整理完第一目前區(qū)塊表CB0_ADT以及第二目前區(qū)塊表CB1_ADT后重建實體轉邏輯對應表。換言之,控制器160不會將較舊的數(shù)據(jù)建入實體轉邏輯對應表中。
圖5為本發(fā)明所提供的一數(shù)據(jù)維護方法的一種實施例的流程圖。數(shù)據(jù)維護方法適用于圖1所示的數(shù)據(jù)儲存裝置140,用以在數(shù)據(jù)儲存裝置140發(fā)生一斷電事件并且數(shù)據(jù)儲存裝置140恢復電力后重建實體轉邏輯對應表。流程開始于步驟S500。
在步驟S500中,當數(shù)據(jù)儲存裝置140發(fā)生一斷電事件并且數(shù)據(jù)儲存裝置140恢復電力后,控制器160依序讀取快閃存儲器180中的一第一目前區(qū)塊CB0以及一第二目前區(qū)塊CB1,以建立一第一目前區(qū)塊表CB0_ADT、一第二目前區(qū)塊表CB1_ADT、第一目前區(qū)塊序號表CB0_SNT以及第二目前區(qū)塊序號表CB1_SNT。在一實施例中,第一目前區(qū)塊表CB0_ADT以及第二目前區(qū)塊表CB1_ADT分別具有第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1中的所有頁面中所儲存的邏輯地址。第一目前區(qū)塊序號表CB0_SNT以及第二目前區(qū)塊序號表CB1_SNT分別具有第一目前區(qū)塊CB0以及第二目前區(qū)塊CB1中的所有頁面中所儲存的寫入序號。值得注意的是,在某些實施例中,第一目前區(qū)塊序號表CB0_SNT以及第二目前區(qū)塊序號表CB1_SNT可分別設置于第一目前區(qū)塊表CB0_ADT以及第二目前區(qū)塊表CB1_ADT中,但本發(fā)明不限于此。以圖3以及圖4為例,當數(shù)據(jù)儲存裝置140發(fā)生一斷電事件并且數(shù)據(jù)儲存裝置140恢復電力后,控制器160依序讀取快閃存儲器180中的圖3所示的第一目前區(qū)塊CB0,以將儲存于第一目前區(qū)塊CB0的備用區(qū)域SPA0~SPA15中的邏輯地址填入第一目前區(qū)塊表CB0_ADT中所相應的頁面的欄位中,并且將儲存于第一目前區(qū)塊CB0的備用區(qū)域SPA0~SPA15中的寫入序號填入第一目前區(qū)塊序號表CB0_SNT中所相應的頁面的欄位中。接著,控制器160依序讀取快閃存儲器180中的圖3所示的第二目前區(qū)塊CB1,以將儲存于第二目前區(qū)塊CB1的備用區(qū)域SPA0~SPA15中的邏輯地址填入第二目前區(qū)塊表CB1_ADT中所相應的頁面的欄位中、將儲存于第二目前區(qū)塊CB1的備用區(qū)域SPA0~SPA15中的寫入序號填入第二目前區(qū)塊序號表CB1_SNT中所相應的頁面的欄位中。
接著,在步驟S502中,控制器160根據(jù)第二目前區(qū)塊CB1中的每一頁面的邏輯地址建立一位元表BT。詳細而言,在一實施例中,位元表BT具有多個位元,位元依序代表每一邏輯地址,但本發(fā)明不限于此。位元表BT亦以其他形式記錄每一邏輯地址的對應關系??刂破?60在讀取第二目前區(qū)塊CB1的頁面時,將位元表BT中代表所讀取的頁面的邏輯地址的位元寫入一既定值。舉例而言,既定值可為1,但本發(fā)明不限于此。在其他實施例中,既定值可為0或者其他數(shù)值。以圖3以及圖4為例,既定值為1。因此,控制器160將既定值”1”寫入位元表BT中對 應于第二目前區(qū)塊CB1中所具有的邏輯地址AD1、AD6、AD10、AD2的位元。不存在于二目前區(qū)塊CB1中的其他位元,則保持0。
接著,在步驟S504中,控制器160根據(jù)位元表BT,整理第一目前區(qū)塊表CB0_ADT以及第二目前區(qū)塊表CB1_ADT,以重建實體轉邏輯對應表。值得注意的是,在本實施例中,第一目前區(qū)塊表CB0_ADT、第二目前區(qū)塊表CB1_ADT、第一目前區(qū)塊序號表CB0_SNT、一第二目前區(qū)塊序號表CB1_SNT、位元表BT以及實體轉邏輯對應表皆是設置于隨機存取存儲器166中。
圖6為本發(fā)明所提供的一目前區(qū)塊表整理方法的一種實施例的流程圖。目前區(qū)塊表整理方法適用于圖1所示的數(shù)據(jù)儲存裝置140,其中目前區(qū)塊表整理方法是圖5中步驟S504的一種實施例。流程開始于步驟S600。
在步驟S600中,控制器160依序讀取第一目前區(qū)塊表CB0_ADT中相應于頁面的邏輯地址中之一者。
接著,在步驟S602中,控制器160讀取位元表BT,以根據(jù)位元表BT,判斷第二目前區(qū)塊表CB1_ADT中是否具有與所讀取的第一目前區(qū)塊表CB0_ADT的邏輯地址重復的邏輯地址。詳細而言,當控制器160在步驟S600中讀取了第一目前區(qū)塊表CB0_ADT中相應于一第一頁面的一第一邏輯地址時,控制器160則在步驟S602中根據(jù)位元表BT中代表第一邏輯地址的位元是否為既定值,判斷第一邏輯地址是否重復出現(xiàn)于第二目前區(qū)塊表CB1_ADT中。當代表第一邏輯地址的位元為既定值時,控制器160判斷第一邏輯地址重復出現(xiàn)于第二目前區(qū)塊表CB1_ADT并且流程進行至步驟S604。當代表第一邏輯地址的位元不是既定值時,控制器160判斷第一邏輯地址沒有重復出現(xiàn)于第二目前區(qū)塊表CB1_ADT,流程進行至步驟S610。
在步驟S604中,控制器160依序讀取第二目前區(qū)塊表CB1_ADT以找出在第二目前區(qū)塊表CB1_ADT中具有第一邏輯地址的至少一第二頁面。
接著,在步驟S606中,控制器160根據(jù)第一目前區(qū)塊序號表CB0_SNT以及第二目前區(qū)塊序號表CB1_SNT,比較第一頁面以及第二頁面所相應的寫入序號。
接著,在步驟S608中,控制器160將第一頁面以及第二頁面中寫入序號小于第一頁面以及第二頁面中的其他者的至少一者舍棄,使得重復邏輯地址的頁面中最后一個被寫入的數(shù)據(jù)保留下來。
接著,在步驟S610中,控制器160判斷第一目前區(qū)塊表CB0_ADT中所有的邏輯地址是否皆讀取完畢。當?shù)谝荒壳皡^(qū)塊表CB0_ADT中所有的邏輯地址皆讀取完畢時,流程結束于步驟S610。當?shù)谝荒壳皡^(qū)塊表CB0_ADT中具有至少一邏輯地址尚未讀取時,流程回到步驟S600,以讀取第一目前區(qū)塊表CB0_ADT中的下一個頁面的邏輯地址。
本發(fā)明所提供的數(shù)據(jù)儲存裝置140以及數(shù)據(jù)維護方法可藉由位元表BT判斷兩個表中是否具有重復的邏輯地址以降低實體轉邏輯對應表重建的時間。
本發(fā)明的方法,或特定型態(tài)或其部份,可以以程式碼的型態(tài)存在。程式碼可儲存于實體媒體,如軟碟、光碟片、硬碟、或是任何其他機器可讀取(如電腦可讀取)儲存媒體,亦或不限于外在形式的電腦程式產(chǎn)品,其中,當程式碼被機器,如電腦載入且執(zhí)行時,此機器變成用以參與本發(fā)明的裝置。程式碼也可透過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態(tài)進行傳送,其中,當程式碼被機器,如電腦接收、載入且執(zhí)行時,此機器變成用以參與本發(fā)明的裝置。當在一般用途處理單元實作時,程式碼結合處理單元提供一操作類似于應用特定邏輯電路的獨特裝置。
以上所述,僅為本發(fā)明的較佳實施例而已,當不能以此限定本發(fā)明實施的范圍,即凡依本發(fā)明申請專利范圍及發(fā)明說明內(nèi)容所作的簡單的等效變化與修飾,皆仍屬本發(fā)明專利涵蓋的范圍內(nèi)。另外本發(fā)明的任一實施例或申請專利范圍不須達成本發(fā)明所揭示的全部目的或優(yōu)點或特點。此外,摘要部分和標題僅是用來輔助專利文件搜尋之用,并非用來限制本發(fā)明的權利范圍。