數據存儲裝置及數據存儲方法
【專利摘要】一種數據存儲裝置,包括有一控制器及一連接于所述控制器的閃存單元,所述控制器包括有:寫入模塊,用于將數據寫入所述閃存單元的一第一目標塊中并記錄一寫入時間;讀取模塊,用于讀取所述第一目標塊中的數據并記錄一讀取時間;校驗模塊,比較所述讀取時間與所述寫入時間之間的時間間隔是否超過一設定期限;及更新模塊:用于在所述讀取時間與寫入時間之間的時間間隔超過所述設定期限后讀取所述第一目標塊中的數據而將所述數據寫入至所述閃存單元的一第二目標塊中。本發明還揭示了一種數據存儲方法。
【專利說明】
數據存儲裝置及數據存儲方法
技術領域
[0001] 本發明涉及一種數據存儲裝置及數據存儲方法。
【背景技術】
[0002] 隨著智能電視和移動終端設備的飛速發展,在這些設備上存儲系統數據和用戶數 據的芯片大都采用Flash芯片實現,因此Flash芯片存儲對整個設備的系統安全來說是極 為重要的。
[0003] 閃存(Flash memory)包括多個區塊(block),每一區塊包括多個頁(page)以供 數據儲存。此外,閃存的每一區塊分別對應至不同的地址。當主機欲存取閃存的數據時,主 機會向閃存的控制器發送存取命令,該存取命令包括所欲存取的區塊的地址。例如,當閃存 自控制器接收寫入命令時,便依控制器的指示將數據儲存至寫入地址所對應的區塊的某些 頁。當閃存自控制器收到讀取命令時,便依控制器的指示自讀取地址對應的區塊的某些頁 讀出數據而回傳數據至控制器。
[0004] 當閃存的一區塊的多個頁皆被寫入數據后,該區塊便無法再次被寫入數據。因此, 閃存的多個區塊可以大致分為數據區與空白區兩區,數據區的區塊為已儲存數據的區塊, 而空白區的區塊為未儲存數據的區塊。當主機欲寫入數據至對應于位于所述數據區的一數 據區塊的地址時,由于該數據區塊已無法再被寫入更新數據,控制器便只好自空白區取得 一空白區塊,將該空白區塊的地址改為該數據區塊的地址,再將更新數據轉寫入至該空白 區塊。此時原本的數據區塊已無用,控制器便抹除該數據區塊的數據,以將數據區塊轉換為 空白區塊而置入空白區中。
[0005] 現有的存儲裝置中,通常利用錯誤更正碼(Error Correcting Code,ECC)來保護 儲存在存儲裝置里的數據。舉例來說,當發現儲存在一儲存裝置中的數據有問題時,可利用 與該數據相對應的ECC進行錯誤更正。然而所述存儲裝置在經過一段時間存放以后,由于 所述存儲裝置中的存儲單元電子泄露的原因,會使得ECC的錯誤個數增大,并最終超過ECC 糾錯能力,從而引起存儲裝置中的數據錯誤,進而減少所述存儲裝置的數據存儲時間。
【發明內容】
[0006] 鑒于以上內容,有必要提供一種能夠延長存儲裝置的數據存儲時間的數據存儲裝 置及數據存儲方法。
[0007] -種數據存儲裝置,包括有一控制器及一連接于所述控制器的閃存單元,所述控 制器包括有:寫入模塊,用于將數據寫入所述閃存單元的一第一目標塊中并記錄一寫入時 間;讀取模塊,用于讀取所述第一目標塊中的數據并記錄一讀取時間;校驗模塊,比較所述 讀取時間與所述寫入時間之間的時間間隔是否超過一設定期限;及更新模塊:用于在所述 讀取時間與寫入時間之間的時間間隔超過所述設定期限后,讀取所述第一目標塊中的數據 而將所述數據寫入至所述閃存單元的一第二目標塊中。
[0008] 進一步地,所述寫入模塊寫入所述第一目標塊中并記錄寫入時間的數據為影響所 述數據存儲裝置存儲時長的固件程序數據。
[0009] 進一步地,所述校驗模塊還用于對所述讀取模塊讀取的數據進行ECC校驗,當ECC 校驗值接近一 ECC閾值時,所述校驗模塊用于讀取所述第一目標塊中的數據而讓所述更新 模塊將所述數據更新至所述閃存單元的第二目標塊中。
[0010] 進一步地,所述控制器還包括有一擦除模塊,所述擦除模塊用于在讀取所述第一 目標塊中的數據并將所述數據更新至所述閃存單元的第二目標塊中之后,擦除所述第一目 標塊的數據以讓所述第一目標塊作為一空塊待用,以讓所述更新模塊將所述第二目標塊中 的數據存回至所述第一目標塊中。
[0011] 進一步地,在所述讀取時間與寫入時間之間的時間間隔未超過所述設定期限但所 述ECC校驗值接近ECC閾值時,所述更新模塊用于讀取所述第一目標塊中的數據而將所述 數據寫入至所述第二目標塊中。
[0012] -種數據存儲方法,包括有: 寫入步驟:將數據寫入一閃存單元的一第一目標塊中并記錄一寫入時間; 讀取步驟:讀取所述第一目標塊中的數據并記錄一讀取時間; 校驗步驟:比較所述讀取時間與所述寫入時間之間的時間間隔是否超過一設定期限; 及 更新步驟:在所述讀取時間與寫入時間之間的時間間隔超過所述設定期限后,讀取所 述第一目標塊中的數據而將所述數據寫入至所述閃存單元的一第二目標塊中。
[0013] 進一步地,所述數據存儲方法還包括步驟:將影響所述數據存儲裝置存儲時長的 固件程序數據寫入所述第一目標塊中并記錄寫入時間。
[0014] 進一步地,所述方法還包括:讀取所述第一目標塊中的數據并進行ECC校驗,當 ECC校驗值接近一 ECC閾值時,讀取所述第一目標塊中的數據而將所述數據更新至所述閃 存單元的第二目標塊中。
[0015] 進一步地,所述方法還包括:擦除步驟:在讀取所述第一目標塊中的數據而將所 述數據更新至所述閃存單元的第二目標塊中之后,擦除所述第一目標塊的數據以讓所述第 一目標塊作為一空塊待用,以讓所述更新模塊將所述第二目標塊中的數據存回至所述第一 目標塊中。
[0016] 進一步地,所述方法還包括:在所述讀取時間與寫入時間之間的時間間隔未超過 所述設定期限但所述ECC校驗值接近ECC閾值時,讀取所述第一目標塊中的數據而將所述 數據寫入至所述第二目標塊中。
[0017] 相較于現有技術,在上述數據存儲裝置及數據存儲方法中,所述閃存單元的區塊 (如第一目標塊)中的數據在所述校驗模塊校驗到的讀取時間與寫入時間的間隔超過時間 期限或者ECC校驗值接近一 ECC閾值時,所述更新模塊即可將對應的區塊中的數據讀取出 來以轉換到一個新的空塊中。這樣,所述閃存單元的區塊的損壞率就大大降低,有效地延長 了所述數據存儲裝置的數據存儲時間。
【附圖說明】
[0018] 圖1是本發明數據存儲裝置的一較佳實施方式的一結構示意圖。
[0019] 圖2是圖1中數據存儲裝置中的一結構示意圖。
[0020] 圖3是利用圖2中的數據存儲裝置實施的一數據存儲方法的一流程圖。
[0021] 主要元件符號說明
如下【具體實施方式】將結合上述附圖進一步說明本發明。
【具體實施方式】
[0022] 請參閱圖1,在本發明的一較佳實施方式中,一數據存儲裝置100包括有一控制器 10及一連接于所述控制器10的閃存單元20。在一實施方式中,所述數據存儲裝置100為 一可攜式存儲裝置,如符合SD/MMC、CF、MS、XD標準的存儲卡。所述數據存儲裝置100可用 來與一主機裝置(Host Device) 200連接。
[0023] 請參閱圖2,所述控制器10包括有一閃存控制單元11、一微處理器 (Microprogrammed Control Unit,MCU) 12、一只讀存儲器(Read Only Memory,ROM) 13、及 一接口控制模塊15。在本實施例中,所述只讀存儲器13用于存儲一程序代碼,而所述微處 理器11則用于執行所述程序代碼去控制所述閃存控制單元11對所述閃存單元20的讀寫。 在一實施方式中,所述閃存單元20包含多個區塊(Block),如一第一目標塊21及一第二目 標塊23。在一實施方式中,所述第一目標塊21為存有數據的數據塊,所述第二目標塊23為 空塊。通過所述微處理器11來執行所述程序代碼的控制器10對所述閃存單元20進行抹 除數據的運作時是以區塊為單位來進行抹除。另外,每一區塊可記錄特定數量的頁(Page), 而所述控制器10對閃存單元20進行寫入數據的運作是以頁為單位來進行寫入。
[0024] 通過所述微處理器11來執行所述程序代碼的控制器10還可以利用所述接口控制 模塊15來與所述主機裝置(Host Device) 200連接。
[0025] 具體來說,所述控制器10中的閃存控制單元11包括有一設置模塊110、一寫入模 塊111、一讀取模塊112、一校驗模塊114、一更新模塊116、及一擦除模塊118。
[0026] 所述設置模塊110用于設定所述數據繼續有效的一設定期限。所述設定期限可根 據實際需要作相應的更改,如幾個小時,一個星期或半個月等,在本實施方式中,所述設定 期限為一個星期,即7天。
[0027] 所述寫入模塊111用于將數據寫入所述閃存單元20的區塊并記錄一寫入時間。 所述寫入時間包括有日期及與當天日期的時鐘,如2014年12月1日15點(時鐘為24小時 制)。在一實施方式中,所述數據可為影響所述數據存儲裝置100的數據存儲時長的固件程 序數據,該類固件程序數據寫入所述閃存單元20的區塊中的次數相對其他數據寫入所述 閃存單元20的區塊中的次數較少,但由所述閃存單元20讀取的次數相對其他數據由所述 閃存單元20讀取的次數較多。
[0028] 所述讀取模塊112用于讀取所述閃存單元20的區塊中的數據并記錄一讀取時間。 所述讀取時間包括有日期及與當天日期的時鐘,如2014年12月8日9點(時鐘為24小時 制)。
[0029] 所述校驗模塊114用于比較所述讀取時間與所述寫入時間之間的時間間隔是否 超過所述設定期限。如,若寫入時間為2014年12月1日15點,讀取時間為2014年12月8 日,則所述讀取時間與所述寫入時間之間的時間間隔就已經超過所述設定期限之7天。所 述校驗模塊114還可用于將所述讀取模塊112讀取所述閃存單元20的區塊中的數據并進 行ECC校驗,并判斷所述閃存單元20的區塊中的數據的一ECC校驗值是否接近一 ECC閾值。 例如,所述第一目標塊21中包含有128頁(Page),在進行ECC校驗時,所述讀取模塊112讀 取每一頁(Page)中的數據而讓所述校驗模塊114進行ECC校驗以得到所述ECC校驗值,所 述校驗模塊114即可將所述ECC校驗值與所述ECC閾值進行對比,如一 ECC閾值36。
[0030] 所述更新模塊116用于在所述閃存單元20中的一區塊中的數據的讀取時間與寫 入時間之間的時間間隔超過所述設定期限后讀取相應區塊中的數據而將所述區塊中的數 據寫入至所述閃存單元20的一空塊中。例如,若所述閃存單元20中的第一目標塊21中的 數據的讀取時間與寫入時間之間的時間間隔超過所述設定期限(7天)后讀取所述第一目標 塊21中的數據而將所述第一目標塊21中的數據寫入至所述閃存單元20的第二目標塊23 中。在一實施方式中,所述更新模塊116用于將所述第一目標塊21中的數據暫存至所述閃 存單元20的第二目標塊23中,當所述第一目標塊21的數據擦除時,所述更新模塊116還 可讀取暫存在所述第二目標塊23中的數據而將第二目標塊23中的數據存回至所述第一目 標塊21中。所述更新模塊116還用于在所述校驗模塊114得到的所述閃存單元20中的一 區塊的ECC校驗值接近所述ECC閾值時將所述區塊中的數據寫入至所述閃存單元20的一 空塊中。例如,若所述校驗模塊114得到的所述閃存單元20中的第一目標塊21中的數據 的ECC校驗值為32而接近所述ECC閾值36時,所述更新模塊116將所述第一目標塊21中 的數據寫入至所述閃存單元20的第二目標塊23中。當然,在所述校驗模塊114得到的所 述第一目標塊21的ECC校驗值接近所述ECC閾值時但所述第一目標塊21中的數據的讀取 時間與寫入時間之間的時間間隔并未超過所述設定期限(7天)時,所述更新模塊116亦將 所述第一目標塊21中的數據寫入至所述閃存單元20的第二目標塊23中。
[0031] 所述擦除模塊118用于在所述更新模塊116將數據更新至所述閃存單元20的空 塊(第二目標塊23)之后擦除所述閃存單元20中的ECC校驗值接近所述ECC閾值的區塊, 或擦除讀取時間與寫入時間之間的時間間隔超過所述設定期限后的區塊,如所述第一目標 塊21中的數據以讓所述第一目標塊21作為一空塊待用,這樣以使所述更新模塊116能夠 讀取暫存至所述第二目標塊23中的數據而將第二目標塊23的數據存回所述第一目標塊21 中。
[0032] 所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能 單元、模塊的劃分進行舉例說明,實際應用中,可以根據需要而將上述功能分配由不同的功 能單元或模塊完成,即將存儲裝置的內部結構劃分成不同的功能單元或模塊,以完成以上 描述的全部或者部分功能。實施方式中的各功能單元、模塊可以集成在一個處理單元中,也 可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中,上述集成 的單元既可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。另外,各功能單 元、模塊的具體名稱也只是為了便于相互區分,并不用于限制本申請的保護范圍。
[0033] 請參閱圖3,圖3為本發明第一實施方式中通過所述數據存儲裝置100實現一種數 據存儲方法300的一流程圖,所述數據存儲方法300方法包括以下步驟: 步驟301 :所述寫入模塊110將數據寫入所述閃存單元20的區塊(如第一目標塊21沖 并記錄一寫入時間,所述寫入時間例如為2014年12月1日15點(時鐘為24小時制)。
[0034] 步驟302 :所述讀取模塊111讀取所述閃存單元20區塊(如第一目標塊21)中的 數據并記錄一讀取時間,所述讀取時間例如為2014年12月8日9點(時鐘為24小時制)或 2014年12月4日13點(時鐘為24小時制)。
[0035] 步驟303 :所述校驗模塊114比較所述閃存單元20區塊(如第一目標塊21)中數據 的讀取時間與所述寫入時間之間的時間間隔是否超過一設定期限;若是則進行步驟305 ; 若否則不作處理。
[0036] 步驟304 :所述校驗模塊114將所述讀取模塊112讀取所述閃存單元20的區塊中 的數據進行ECC校驗,并判斷所述閃存單元20的區塊中的數據的一 ECC校驗值是否接近一 ECC閾值;若是則進行步驟305 ;若否則不作處理。例如,所述ECC閾值為36,所述ECC校驗 值為10或32。
[0037] 步驟305 :所述更新模塊116讀取所述閃存單元20的區塊(如第一目標塊21)中 的數據而將所述數據更新至所述閃存單元20的空塊(如第二目標塊23)中。例如,若所述 第一目標塊21中的數據的一 ECC閾值為32時或所述第一目標塊21的數據的讀取時間與 所述寫入時間之間的時間間隔為8天而超過所述設定期限(7天)時,所述更新模塊116讀 取所述第一目標塊21中的數據而將所述數據更新至所述第二目標塊23中。當然,當所述 所述第一目標塊21中的數據的一 ECC閾值為10時或所述第一目標塊21的數據的讀取時 間與所述寫入時間之間的時間間隔為小于7天而未超過所述設定期限(7天)時,所述更新 模塊116就不作處理。
[0038] 步驟306 :所述擦除模塊118擦除所述第一目標塊21的數據以讓所述第一目標塊 21作為一空塊待用,以讓所述更新模塊116能夠將所述第二目標塊23中的數據存回所述第 一目標塊21中。
[0039] 綜上所述,在所述閃存單元20的數據在所述校驗模塊114校驗到的讀取時間與寫 入時間的間隔超過時間期限或者ECC校驗值接近一 ECC閾值時,所述更新模塊116即可將 對應的區塊中的數據讀取出來以暫存到一個新的空塊中,而擦除模塊118將原區塊的數據 擦除以作為一待用空塊,以讓所述更新模塊116能夠讀取暫存至所述第二目標塊23中的數 據而將第二目標塊23的數據存回所述第一目標塊21中。這樣,所述閃存單元20的區塊的 損壞率就大大降低,有效地延長了所述數據存儲裝置100的壽命。
[0040] 本領域技術人員可以理解,圖2中示出的組成結構并不構成對數據存儲裝置100 的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置,而 圖3中的數據存儲方法300亦采用圖2中所示的更多或更少的部件,或者組合某些部件,或 者不同的部件布置來實現。
[0041] 以上內容是結合具體的優選實施方式對本發明所作的進一步詳細說明,不能認定 本發明的具體實施只局限于這些說明。對于本發明所屬技術領域的普通技術人員來說,在 不脫離本發明構思的前提下做出若干等同替代或明顯變型,而且性能或用途相同,都應當 視為屬于本發明由所提交的權利要求書確定的專利保護范圍。
【主權項】
1. 一種數據存儲裝置,包括有一控制器及一連接于所述控制器的閃存單元,其特征在 于:所述控制器包括有: 寫入模塊,用于將數據寫入所述閃存單元的一第一目標塊中并記錄一寫入時間; 讀取模塊,用于讀取所述第一目標塊中的數據并記錄一讀取時間; 校驗模塊,比較所述讀取時間與所述寫入時間之間的時間間隔是否超過一設定期限; 及 更新模塊,用于在所述讀取時間與寫入時間之間的時間間隔超過所述設定期限后,讀 取所述第一目標塊中的數據而將所述數據寫入至所述閃存單元的一第二目標塊中。2. 如權利要求1所述的數據存儲裝置,其特征在于:所述寫入模塊寫入所述第一目標 塊中并記錄寫入時間的數據為影響所述數據存儲裝置存儲時長的固件程序數據。3. 如權利要求1所述的數據存儲裝置,其特征在于:所述校驗模塊還用于對所述讀取 模塊讀取的數據進行ECC校驗,當ECC校驗值接近一 ECC閾值時,所述校驗模塊用于讀取所 述第一目標塊中的數據而讓所述更新模塊將所述數據更新至所述閃存單元的第二目標塊 中。4. 如權利要求1或3所述的數據存儲裝置,其特征在于:所述控制器還包括有一擦除 模塊,所述擦除模塊用于在讀取所述第一目標塊中的數據并將所述數據更新至所述閃存單 元的第二目標塊中之后,擦除所述第一目標塊的數據以讓所述第一目標塊作為一空塊待 用,以讓所述更新模塊將所述第二目標塊中的數據存回至所述第一目標塊中。5. 如權利要求3所述的數據存儲裝置,其特征在于:在所述讀取時間與寫入時間之間 的時間間隔未超過所述設定期限但所述ECC校驗值接近ECC閾值時,所述更新模塊用于讀 取所述第一目標塊中的數據而將所述數據寫入至所述第二目標塊中。6. -種數據存儲方法,包括有: 寫入步驟:將數據寫入一閃存單元的一第一目標塊中并記錄一寫入時間; 讀取步驟:讀取所述第一目標塊中的數據并記錄一讀取時間; 校驗步驟:比較所述讀取時間與所述寫入時間之間的時間間隔是否超過一設定期限; 及 更新步驟:在所述讀取時間與寫入時間之間的時間間隔超過所述設定期限后,讀取所 述第一目標塊中的數據而將所述數據寫入至所述閃存單元的一第二目標塊中。7. 如權利要求6所述的數據存儲方法,其特征在于:所述數據存儲方法還包括步驟:將 影響所述數據存儲裝置存儲時長的固件程序數據寫入所述第一目標塊中并記錄寫入時間。8. 如權利要求6所述的數據存儲方法,其特征在于:所述方法還包括: 讀取所述第一目標塊中的數據并進行ECC校驗,當ECC校驗值接近一 ECC閾值時,讀取 所述第一目標塊中的數據而將所述數據更新至所述閃存單元的第二目標塊中。9. 如權利要求6或8所述的數據存儲方法,其特征在于:所述方法還包括: 擦除步驟:在讀取所述第一目標塊中的數據而將所述數據更新至所述閃存單元的第二 目標塊中之后,擦除所述第一目標塊的數據以讓所述第一目標塊作為一空塊待用,以讓所 述更新模塊將所述第二目標塊中的數據存回至所述第一目標塊中。10. 如權利要求6所述的數據存儲方法,其特征在于:所述方法還包括: 在所述讀取時間與寫入時間之間的時間間隔未超過所述設定期限但所述ECC校驗值 接近ECC閾值時,讀取所述第一目標塊中的數據而將所述數據寫入至所述第二目標塊中。
【文檔編號】G06F3/06GK105867833SQ201510029219
【公開日】2016年8月17日
【申請日】2015年1月21日
【發明人】林寅, 吳大畏, 李曉強
【申請人】深圳市硅格半導體有限公司