TWI640868B - 資料儲存裝置及其資料寫入方法 - Google Patents
資料儲存裝置及其資料寫入方法 Download PDFInfo
- Publication number
- TWI640868B TWI640868B TW106133115A TW106133115A TWI640868B TW I640868 B TWI640868 B TW I640868B TW 106133115 A TW106133115 A TW 106133115A TW 106133115 A TW106133115 A TW 106133115A TW I640868 B TWI640868 B TW I640868B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- order
- order block
- block
- blocks
- Prior art date
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明之一實施例提供一種資料儲存裝置包括一快閃記憶體以及一控制器。快閃記憶體具有複數三階區塊。控制器在資料儲存裝置自一斷電事件中回復時,檢查在斷電事件發生時是否存在一未完成寫入程序之三階區塊,若存在一未完成寫入程序之第一三階區塊,檢查是否可以成功讀取該未完成寫入程序之第一三階區塊中最後一個進行寫入之頁中之資料,其中當可成功讀取頁之資料時,繼續將資料寫入第一三階區塊。
Description
本發明係關於一種資料儲存裝置之資料寫入方法;特別係關於一種三階儲存單元的資料寫入方法。
快閃記憶體為一種普遍的非揮發性資料儲存媒體,係以電性方式抹除與程式化。以非及閘型的快閃記憶體(即NAND FLASH)為例,常用作記憶卡(memory card)、通用序列匯流排閃存裝置(USB flash device)、固態硬碟(SSD)、嵌入式快閃記憶體模組(eMMC)…等之儲存媒體。
快閃記憶體(如,NAND FLASH)的儲存陣列包括複數個區塊(blocks),其中浮置閘極電晶體可用以構成快閃記憶體。浮置閘極電晶體中之浮置閘極,可捕捉的電荷以儲存資料。然而,儲存於浮置閘極之電荷會由於快閃記憶體之操作以及各種環境參數,自浮置閘極流失,造成資料保存(Data retention)之問題。其中,三階儲存單元(Triple-Level Cell,TLC)之快閃記憶體相較於其他單階儲存單元(Single-Level Cell,SLC)之快閃記憶體以及二階儲存單元(Multi-Level Cell,MLC)之快閃記憶體,更容易受環境影響而無法保存資料。尤其是在斷電事件發生時,三階儲存單元相較於其他儲存單元有更大的機率被斷電事件影響而造成資料損毀。
本發明所提供之資料儲存裝置以及資料寫入方法可藉由繼續使用遭受斷電攻擊之三階區塊,來避免三階區塊的浪費並且減少三階區塊的抹除次數。
本發明之一實施例提供一種資料儲存裝置。資料儲存裝置包括一快閃記憶體以及一控制器。快閃記憶體具有複數三階區塊,並且每一三階區塊亦包括複數頁。控制器在資料儲存裝置自一斷電事件中回復時,檢查在斷電事件發生時是否存在一未完成寫入程序之三階區塊,若存在一未完成寫入程序之第一三階區塊,檢查是否可成功讀取未完成寫入程序之第一三階區塊中最後一個進行寫入之頁中之資料,其中當可成功讀取頁之資料時,繼續將資料寫入第一三階區塊。在一實施例中,寫入程序係將一既定數量之單階區塊中之資料,寫入(program)至三階區塊中之一者。
其中,當可成功讀取頁之資料並且第一三階區塊之寫入程序已完成時,控制器檢查第一三階區塊中之所有頁之複數錯誤位元數是否超過一第一既定值。當第一三階區塊中之任一頁的錯誤位元數大於第一既定值時,控制器自三階區塊中選擇一第二三階區塊,以將原本要寫入第一三階區塊之資料全部寫入第二三階區塊。當對第二三階區塊寫入的過程中皆未發生斷電事件時,控制器在完成第二三階區塊的寫入程序後,接著處理其他工作,並且省略檢查第二三階區塊中之所有頁之錯誤位元數的步驟。
又另一實施例中,控制器更用以當可成功讀取頁 之資料但頁之資料的錯誤位元數高於一第二既定值時,將頁在斷電程序前被寫入之資料,寫入快閃記憶體中之一暫時區塊。
其中,當無法成功讀取頁之資料時,控制器自三階區塊中選擇一第三三階區塊,以將原本要寫入第一三階區塊之資料全部寫入第三三階區塊。控制器係選擇三階區塊中除了第一三階區塊外,不具有有效資料之三階區塊中之一者作為第三三階區塊。
本發明之另一實施例更提供一種資料寫入方法,適用於一資料儲存裝置,其中資料儲存裝置包括具有複數三階區塊之一快閃記憶體。資料寫入方法包括:當資料儲存裝置自一斷電事件中回復時,檢查在斷電事件發生時是否存在一未完成寫入程序之三階區塊;當在斷電事件發生時有一未完成寫入程序之第一三階區塊時,檢查是否可成功讀取第一三階區塊中最後一個進行寫入之頁中之資料;以及當可成功讀取頁之資料時,繼續將資料寫入第一三階區塊。
在一實施例中,資料寫入方法更包括:當可成功讀取頁之資料並且第一三階區塊之寫入程序已完成時,檢查第一三階區塊中之所有頁之複數錯誤位元數是否超過一第一既定值;當第一三階區塊中之任一頁的錯誤位元數大於一第一既定值時,自三階區塊中選擇一第二三階區塊;將原本要寫入第一三階區塊之資料全部寫入第二三階區塊;以及當對第二三階區塊寫入的過程中皆未發生斷電事件時,在完成第二三階區塊的寫入程序後,接著處理其他工作,並且省略檢查第二三階區塊中之所有頁之錯誤位元數的步驟。
又另一實施例中,當可成功讀取頁之資料時資料寫入方法更包括:判斷頁之資料的錯誤位元數是否高於一第二既定值;當頁之資料的錯誤位元數高於第二既定值時,將頁在斷電程序前被寫入之資料,寫入快閃記憶體中之一暫時區塊;當無法成功讀取頁之資料時,自三階區塊中選擇一第三三階區塊;以及將原本要寫入第一三階區塊之資料全部寫入第三三階區塊。
100‧‧‧電子系統
120‧‧‧主機
140‧‧‧資料儲存裝置
160‧‧‧控制器
162‧‧‧運算單元
164‧‧‧永久記憶體
166‧‧‧隨機存取記憶體
180‧‧‧快閃記憶體
SLC_1~SLC_N‧‧‧單階區塊
TLC_1~TLC_N‧‧‧三階區塊
Data_1~Data_5‧‧‧資料
S500~S522、S600~S622‧‧‧步驟
第1圖係本發明之一種實施例之電子系統之方塊圖。
第2圖係本發明之一種實施例之快閃記憶體之示意圖。
第3圖係本發明之一種實施例之區塊之示意圖。
第4圖係本發明之一種實施例之區塊之示意圖。
第5圖係本發明之一種實施例之資料寫入方法之流程圖。
第6A~6B圖係本發明之一種實施例之資料寫入方法之流程圖。
以下將詳細討論本發明各種實施例之裝置及使用方法。然而值得注意的是,本發明所提供之許多可行的發明概念可實施在各種特定範圍中。這些特定實施例僅用於舉例說明本發明之裝置及使用方法,但非用於限定本發明之範圍。
第1圖為本發明所提供之一電子系統之一種實施例的方塊圖。電子系統100包括一主機120以及一資料儲存裝置140。資料儲存裝置140包括一快閃記憶體180以及一控制器 160,且可根據主機110所下達的命令操作。控制器160包括一運算單元162、一永久記憶體(如,唯讀記憶體ROM)164以及隨機存取記憶體(RAM)166。永久記憶體164與所載之程式碼、資料組成韌體(firmware),由運算單元162執行,使控制器160基於該韌體控制該快閃記憶體180。隨機存取記憶體(RAM)166用以載入程式碼與參數以提供控制器160根據所載入的程式碼與參數動作。快閃記憶體180具有複數區塊,其中每一區塊具有複數頁,其中快閃記憶體180係以頁為最小單位進行寫入,並且以區塊為最小單位進行抹除。在某些實施例中,控制器160可包括一錯誤校正引擎(未圖示)用以對所讀取之資料進行錯誤校正(Error Correction),以及對寫入之資料進行編碼以獲得校驗碼(parity),其中錯誤校正引擎更可藉由讀取資料來獲得頁中所儲存之資料的錯誤位元。
在一實施例中,快閃記憶體180中之區塊可包括複數單階區塊SLC_1~SLC_N以及複數三階區塊TLC_1~TLC_N,如第2圖所示,其中每一單階區塊SLC_1~SLC_N具有複數頁,並且每一三階區塊TLC_1~TLC_N亦具有複數頁。單階區塊SLC_1~SLC_N係用以以單階儲存單元模式(Single-Level Cell mode,SLC mode)寫入資料的區塊,並且三階區塊係用以以三階儲存單元模式(Triple-Level Cell mode,TLC mode)寫入資料的區塊。另外,三階區塊TLC_1~TLC_N可儲存之資料量是單階區塊SLC_1~SLC_N的三倍。詳細而言,三階區塊以及單階區塊中之頁皆是快閃記憶體180中之頁,其物理構造是相同的。然而,三階區塊中之頁是藉由電壓對區塊進行多次整理 (Program)來寫入資料,而單階區塊中之頁是藉由電壓對區塊進行一次整理(Program)來寫入資料。在一實施例中,三階區塊中之頁是藉由電壓對區塊進行三次整理(Program)來寫入資料。換言之,三個具有有效資料之單階區塊可整理為一個三階區塊,但本發明不限於此。
值得注意的是,本發明所揭露之快閃記憶體180為操作於三階儲存單元(Triple-Level Cell,TLC)模式之記憶體,並且包括單階儲存單元(Single-Level Cell,SLC),其中資料儲存至三階區塊TLC_1~TLC_N之前,需要先將資料儲存至相應的複數個單階區塊SLC_1~SLC_N。在資料的儲存過程中,控制器160被設置為用以對單階區塊SLC_1~SLC_N中之一預定數量之單階區塊進行一預定次數之讀取程序,以將單階儲存單元的資料寫入(program)至一個三階區塊中。詳細而言,當控制器160需要將資料寫入快閃記憶體180中之一特定三階區塊時,控制器160會先將資料寫入單階區塊SLC_1~SLC_N中之一既定數量之特定單階區塊。接著,控制器160對特定單階區塊進行一預定次數之讀取程序,以分別根據所讀取之資料寫入(program)特定三階區塊,進而將資料儲存至特定三階區塊中。換言之,三階區塊之寫入程序係將一既定數量之單階區塊中之資料,寫入(program)至所需寫入之三階區塊中。
在一實施例中,既定數量可為3,但本發明不限於此。在其他實施例中,既定數量亦可為4、5、6、7、8或者其他正整數。舉例而言,控制器160需要將資料寫入快閃記憶體180中之一特定三階區塊TLC_1,如第3圖所示。控制器160會 先將資料寫入3個之特定單階區塊SLC_1~SLC_3。接著,控制器160分別對特定單階區塊SLC_1~SLC_3中之三個第一頁進行第一次讀取程序,以根據特定單階區塊SLC_1~SLC_3中之三個第一頁的資料對特定三階區塊TLC_1中之一個第一頁進行第一次整理。接著,控制器160分別對特定單階區塊SLC_1~SLC_3中之同樣三個第一頁進行第二次讀取程序,以根據特定單階區塊SLC_1~SLC_3中之三個第一頁的資料對特定三階區塊TLC_1中的該第一頁進行第二次整理。最後,控制器160分別對特定單階區塊SLC_1~SLC_3中之三個第一頁進行第三次讀取程序,以根據特定單階區塊SLC_1~SLC_3中之三個第一頁的資料對特定三階區塊TLC_1中之該第一頁進行第三次整理。經由上述之三次整理,單階區塊SLC_1~SLC_3中之三個第一頁的資料已被寫入特定三階區塊TLC_1中之該第一頁,依此類推,直到特定單階區塊SLC_1~SLC_3中之所有頁的資料皆被整理至特定三階區塊TLC_1為止。
如上所述,對三階區塊TLC_1~TLC_N進行寫入所需要的時間較長。因此,斷電事件較容易發生在對三階區塊TLC_1~TLC_N寫入的過程中。在一實施例中,每當一斷電事件發生在對三階區塊寫入的過程中時,控制器160就選取一個新的三階區塊,並且將原本要寫入至原三階區塊之單階區塊中的資料,重新寫入新的三階區塊中。值得注意的是,控制器160可在資料儲存裝置140自斷電事件回復後,藉由快閃記憶體180或者其他記憶體裝置中的表,來判斷是否有三階區塊的寫入程序被斷電事件打斷。舉例而言,快閃記憶體180可具有一表用 以紀錄某頁或者某區塊開始被寫入,以及另一表用以紀錄某頁或者某區塊已寫入完畢。在本實施例中,快閃記憶體180可藉由比較該兩個表,來判斷是否有寫入程序被打斷,但本發明不限於此。在其他實施例中,資料儲存裝置140亦可藉由一個表、多個表或者旗標,來記錄資料寫入的狀況。另外,只要已開始寫入程序之三階區塊中之任一頁沒有被寫完,該三階區塊之寫入程序即沒有完成。
在某些情況下,例如資料儲存裝置140之製造過程或者測試過程中,資料儲存裝置140容易連續地遭受斷電攻擊。因此,上述的方法會導致控制器160連續地選擇新的區塊以及無法完成目前的寫入程序,造成三階區塊以及控制器160資源的浪費。
有鑑於此,在本發明之一實施例中,控制器160在資料儲存裝置140自一斷電事件中回復時,檢查在斷電事件發生時是否存在未完成寫入程序之三階區塊。接著,控制器160檢查是否可成功讀取未完成寫入程序之一第一三階區塊中最後一個進行寫入之一頁中之資料。值得注意的是,在本發明中,無法被成功讀取指的是無法藉由錯誤校正或者其他方式將儲存於頁中之資料正確地讀出。反之,成功讀取指的是可藉由錯誤校正或者其他方式將儲存於頁中之資料正確地讀出。當可成功讀取頁之資料時,控制器160不會放棄原本的第一三階區塊,並且繼續將資料寫入第一三階區塊以完成相應於第一三階區塊之寫入程序。當無法成功讀取頁之資料時,控制器160自三階區塊中選擇一第三三階區塊,以將原本要寫入第一三階區 塊之資料全部寫入第二三階區塊。換言之,控制器160將原本要寫入至第一三階區塊之單階區塊中的資料,重新寫入第二三階區塊中。值得注意的是,控制器160係選擇三階區塊中除了第一三階區塊外,不具有有效資料之三階區塊以作為第三三階區塊,但本發明不限於此。在其他實施例中,控制器160亦可根據抹除次數、寫入次數或者其他參考值,來選擇新的三階區塊。
在一實施例中,當第一三階區塊之寫入程序被完成時,控制器160更用以檢查第一三階區塊中之所有頁之複數錯誤位元數是否超過一第一既定值。當第一三階區塊中之任一頁的錯誤位元數大於第一既定值時,控制器160自三階區塊中選擇一第二三階區塊,以將原本要寫入第一三階區塊之資料全部寫入第二三階區塊,但本發明不限於此。值得注意的是,上述之第一既定值係由電路設計者所決定或者特殊規格所制定的值,其中電路設計者可根據其電路對於錯誤位元的校正能力來決定第一既定值。舉例而言,當資料的錯誤位元大於50則無法被成功校正時,電路設計者可將第一既定值設定為45~50之間的值,但本發明不限於此。換言之,第一既定值為用以判斷資料是否可能在未來或者現在無法被成功校正的臨界值。
又另一實施例中,當第一三階區塊中最後被寫入之頁之資料可被成功讀取但可被成功讀取之頁之資料的錯誤位元數高於一第二既定值時,控制器160更用以將頁或者第一三階區塊在斷電程序前被寫入之資料,寫入快閃記憶體180中之一暫時區塊。換言之,控制器160將自頁或者整個第一三階 區塊所讀取之資料寫入暫時區塊中。在本實施例中,暫時區塊為快閃記憶體180中之一單階區塊或者一三階區塊,用以暫時儲存其他區塊中較不穩定的資料。當其他區塊中不穩定之資料丟失或者無法被校正以成功讀取時,控制器160可自暫時區塊,重新獲得已丟失或者無法被校正以成功讀取的資料。值得注意的是,上述之第二既定值係由電路設計者所決定或者特殊規格所制定的值,其中電路設計者可根據其電路對於錯誤位元的校正能力來決定第二既定值。舉例而言,當資料的錯誤位元大於50則無法被成功校正時,電路設計者可將第二既定值設定為45~50之間的值,但本發明不限於此。換言之,第二既定值為用以判斷資料是否可能在未來或者現在無法被成功校正的臨界值。
另外,當三階區塊寫入的過程中並未發生斷電事件時,控制器160在完成三階區塊的寫入程序後,接著處理其他工作,並且省略檢查所寫入之三階區塊中之所有頁之錯誤位元數的步驟。換言之,當開始一第一三階區塊的寫入過程至第一三階區塊已被寫完的過程中皆未發生斷電事件時,控制器160則不會檢查第一三階區塊中之所有頁的錯誤位元是否超過一第一既定值。
舉例而言,如第4圖所示,控制器160要將單階區塊SLC_1~SLC_3中之資料,寫入/整理(program)至三階區塊TLC_4。假設資料Data_1~Data_4皆被寫入頁P1~P4中,並且一斷電事件發生在控制器160將資料Data_5寫入三階區塊TLC_4中之頁P5時。在本實施例中,控制器160則會在資料儲存裝置 140自斷電事件中回復時,檢查到斷電事件發生在三階區塊TLC_4的寫入過程中。換言之,控制器160判斷有三階區塊未完成寫入程序。接著,控制器160檢查是否可成功讀取三階區塊TLC_4中最後一個進行寫入之頁P5中之資料。
當頁P5之資料可被成功讀取時,控制器160不會放棄三階區塊TLC_4,並且自三階區塊TLC_4之頁P6開始繼續將資料寫入第一三階區塊以完成相應於第一三階區塊之寫入程序。換言之,控制器160自三階區塊TLC_4之頁P6開始寫入資料,直到三階區塊TLC_4之頁10也被寫入資料。另外,當三階區塊TLC_4中之頁P5之資料可被成功讀取但頁P5之資料的錯誤位元數高於一第二既定值時,控制器160更用以將自頁P5所讀取之資料Data_5寫入快閃記憶體180中之一暫時區塊。或者,當三階區塊TLC_4中之頁P5之資料可被成功讀取但頁P5之資料的錯誤位元數高於一第二既定值時,控制器160更用以將自頁P1~P5所讀取之資料Data_1~Data_5寫入快閃記憶體180中之一暫時區塊,並且接著完成三階區塊TLC_4之寫入程序。接著,當三階區塊TLC_4之寫入程序被完成時(三階區塊TLC_4之頁P1~P10被寫完時),控制器160檢查三階區塊TLC_4中之所有頁P1~P10之複數錯誤位元數是否超過一第一既定值。當三階區塊TLC_4中之任一頁的錯誤位元數大於第一既定值時,控制器160自三階區塊TLC_1~TLCN中選擇另一三階區塊(例如TLC_5),以將原本要寫入三階區塊TLC_4之資料全部寫入三階區塊TLC_5。換言之,控制器160將單階區塊SLC_1~SLC3中的資料,重新寫入三階區塊TLC_5中。
反之,當頁P5之資料無法被成功讀取時,控制器160自三階區塊TLC_1~TLCN中選擇不具有有效資料之一三階區塊(例如TLC_5),以將原本要寫入三階區塊TLC_4之資料全部寫入三階區塊TLC_5。換言之,控制器160將單階區塊SLC_1~SLC3中的資料,重新寫入三階區塊TLC_5中。
第5圖係本發明之一種實施例之資料寫入方法之流程圖。資料寫入方法適用於第1圖所示之資料儲存裝置140。流程開始於步驟S500。
在步驟S500中,資料儲存裝置140自一斷電事件中回復。值得注意的是,本發明所指之斷電事件包括資料儲存裝置140預期地或者非預期地被切斷電源,但本發明不限於此。在其他實施例中,斷電事件可僅包括資料儲存裝置140非預期地被切斷電源。
接著,在步驟S502中,控制器160檢查在斷電事件發生時快閃記憶體180是否存在未完成寫入程序之三階區塊。當控制器160判斷在斷電事件發生時有未完成寫入程序之一第一三階區塊時,流程進行至步驟S504。當控制器160判斷在斷電事件發生時沒有未完成寫入程序之三階區塊時,流程結束於步驟S502。
在步驟S504中,控制器160檢查是否可成功讀取未完成寫入程序之第一三階區塊中最後一個進行寫入之一頁中之資料。當第一三階區塊中頁中之資料可被成功讀取時,流程進行至步驟S510。當第一三階區塊中頁中之資料無法被成功讀取時,流程進行至步驟S520。值得注意的是,在本發明中,無 法被成功讀取指的是無法藉由錯誤校正或者其他方式將儲存於頁中之資料正確地讀出。反之,成功讀取指的是可藉由錯誤校正或者其他方式將儲存於頁中之資料正確地讀出。
在步驟S510中,控制器160不會放棄原本的第一三階區塊,並且繼續將資料寫入第一三階區塊以完成相應於第一三階區塊之寫入程序。流程結束於步驟S510。
在步驟S520中,控制器160自三階區塊中選擇一第三三階區塊,以取代受損之三階區塊。值得注意的是,控制器160係選擇三階區塊中除了第一三階區塊外,不具有有效資料之三階區塊以作為第三三階區塊,但本發明不限於此。在其他實施例中,控制器160亦可根據抹除次數、寫入次數或者其他參考值,來選擇新的三階區塊。
接著,在步驟S522中,控制器160將原本要寫入第一三階區塊之資料全部寫入第三三階區塊。換言之,控制器160將原本要寫入至第一三階區塊之單階區塊中的資料,重新寫入第三三階區塊中。換言之,控制器160將原本要寫入至第一三階區塊之單階區塊中之資料,重新寫入至第三三階區塊中。流程結束於步驟S522。值得注意的是,當三階區塊寫入的過程中並未發生斷電事件時,控制器160在完成三階區塊的寫入程序後,接著處理其他工作,並且省略檢查所寫入之三階區塊中之所有頁之錯誤位元數的步驟。換言之,當開始一第一三階區塊的寫入過程至第一三階區塊已被寫完的過程中皆未發生斷電事件時,控制器160則不會檢查第一三階區塊中之所有頁的錯誤位元是否超過一第一既定值。
第6A~6B圖係本發明之一種實施例之資料寫入方法之流程圖。資料寫入方法適用於第1圖所示之資料儲存裝置140。流程開始於步驟S600。其中,步驟S600、S602、S604、S610、S620、S622相似於第5圖之S500、S502、S504、S510、S520、S522,故其說明可參考第5圖,在此不再贅述。
在步驟S606中,第一三階區塊中最後被寫入之頁之資料可成功讀取時,控制器160判斷可被成功讀取之頁之資料的錯誤位元是否超過一第二既定值。當可被成功讀取之頁之資料的錯誤位元超過一第二既定值時,流程進行至步驟S608,否則,流程進行至步驟S610。
在步驟S608中,控制器160將錯誤位元超過第二既定值的頁或者第一三階區塊在斷電程序前被寫入之資料,寫入快閃記憶體180中之一暫時區塊。換言之,控制器160將自錯誤位元超過第二既定值的頁或者整個第一三階區塊所讀取之資料寫入暫時區塊中。
在步驟S614中,控制器160檢查第一三階區塊中之所有頁之複數錯誤位元數是否超過一第一既定值。當第一三階區塊中之任一頁的錯誤位元數大於第一既定值時,流程進行至步驟S616;否則,流程結束於步驟S614。
接著,在步驟S616中,控制器160自三階區塊中選擇一第二三階區塊。值得注意的是,控制器160係選擇三階區塊中除了第一三階區塊外,不具有有效資料之三階區塊以作為第二三階區塊,但本發明不限於此。在其他實施例中,控制器160亦可根據抹除次數、寫入次數或者其他參考值,來選擇二 階區塊。
接著,在步驟S618中,控制器160將原本要寫入第一三階區塊之資料全部寫入第二三階區塊。換言之,控制器160將原本要寫入第一三階區塊之單階區塊中之資料,重新寫入第二三階區塊中。流程結束於步驟S618。
如上所述,本發明所提供之資料儲存裝置140以及資料寫入方法可藉由繼續使用遭受斷電攻擊之三階區塊,來避免三階區塊的浪費並且減少三階區塊的抹除次數。另外,本發明所提供之資料儲存裝置140以及資料寫入方法可藉由省略未被斷電攻擊之三階區塊的檢查,來增進資料儲存裝置140之效能。
本發明之方法,或特定型態或其部份,可以以程式碼的型態存在。程式碼可儲存於實體媒體,如軟碟、光碟片、硬碟、或是任何其他機器可讀取(如電腦可讀取)儲存媒體,亦或不限於外在形式之電腦程式產品,其中,當程式碼被機器,如電腦載入且執行時,此機器變成用以參與本發明之裝置。程式碼也可透過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態進行傳送,其中,當程式碼被機器,如電腦接收、載入且執行時,此機器變成用以參與本發明之裝置。當在一般用途處理單元實作時,程式碼結合處理單元提供一操作類似於應用特定邏輯電路之獨特裝置。
惟以上所述者,僅為本發明之較佳實施例而已,當不能以此限定本發明實施之範圍,即大凡依本發明申請專利範圍及發明說明內容所作之簡單的等效變化與修飾,皆仍屬本 發明專利涵蓋之範圍內。另外本發明的任一實施例或申請專利範圍不須達成本發明所揭露之全部目的或優點或特點。此外,摘要部分和標題僅是用來輔助專利文件搜尋之用,並非用來限制本發明之權利範圍。
Claims (16)
- 一種資料儲存裝置,包括:一快閃記憶體,具有複數三階區塊,其中每一該等三階區塊包括複數頁;以及一控制器,在該資料儲存裝置自一斷電事件中回復時,檢查在該斷電事件發生時是否存在一未完成寫入程序之三階區塊,若存在一未完成寫入程序之第一三階區塊,檢查是否可以成功讀取該未完成寫入程序之第一三階區塊中最後一個寫入之頁中之資料,當該頁之資料無法被成功讀取時,該控制器自該等三階區塊中選擇一第三三階區塊,以將原本要寫入該未完成寫入程序之第一三階區塊之資料全部寫入該第三三階區塊。
- 根據申請專利範圍第1項之資料儲存裝置,其中該控制器係選擇該等三階區塊中除了該未完成寫入程序之第一三階區塊外,不具有有效資料之該等三階區塊中之一者作為該第三三階區塊。
- 根據申請專利範圍第1項之資料儲存裝置,其中當可成功讀取該頁之資料時,繼續將資料寫入該第一三階區塊。
- 根據申請專利範圍第3項之資料儲存裝置,其中該快閃記憶體具有複數單階區塊,並且每一該等單階區塊包括複數頁,其中寫入程序係將一既定數量之該等單階區塊中之資料,寫入(program)至該等三階區塊中之一者。
- 根據申請專利範圍第3項之資料儲存裝置,其中當該頁之資料可被成功讀取並且該未完成寫入程序之第一三階區塊 之寫入程序已完成時,該控制器檢查該未完成寫入程序之第一三階區塊中之所有該等頁之複數錯誤位元數是否超過一第一既定值。
- 根據申請專利範圍第5項之資料儲存裝置,其中當該未完成寫入程序之第一三階區塊中之任一該等頁的該錯誤位元數大於該第一既定值時,該控制器自該等三階區塊中選擇一第二三階區塊,以將原本要寫入該未完成寫入程序之第一三階區塊之資料全部寫入該第二三階區塊。
- 根據申請專利範圍第6項之資料儲存裝置,其中當對該第二三階區塊寫入的過程中皆未發生斷電事件時,該控制器在完成該第二三階區塊的寫入程序後,接著處理其他工作,並且省略檢查該第二三階區塊中之所有該等頁之錯誤位元數的步驟。
- 根據申請專利範圍第3項之資料儲存裝置,其中該控制器更用以當該頁之資料可被成功讀取但可被成功讀取之該頁之資料的錯誤位元數高於一第二既定值時,將可被成功讀取之該頁在該斷電程序前被寫入之資料,寫入該快閃記憶體中之一暫時區塊。
- 一種資料寫入方法,適用於一資料儲存裝置,其中該資料儲存裝置包括具有複數三階區塊之一快閃記憶體,該資料寫入方法包括:當該資料儲存裝置自一斷電事件中回復時,檢查在該斷電事件發生時是否存在一未完成寫入程序之三階區塊; 當在該斷電事件發生時有一未完成寫入程序之第一三階區塊時,檢查是否可以成功讀取該未完成寫入程序之第一三階區塊中最後一個進行寫入之一頁中之資料;當該頁之資料無法被成功讀取時,自該等三階區塊中選擇一第三三階區塊;以及將原本要寫入該未完成寫入程序之第一三階區塊之資料全部寫入該第三三階區塊。
- 根據申請專利範圍第9項之資料寫入方法,其中該自該等三階區塊中選擇該第三三階區塊之步驟更包括選擇該等三階區塊中除了該未完成寫入程序之第一三階區塊外,不具有有效資料之該等三階區塊中之一者作為該第三三階區塊。
- 根據申請專利範圍第9項之資料寫入方法,更包括:當該頁之資料可被成功讀取時,繼續將資料寫入該未完成寫入程序之第一三階區塊。
- 根據申請專利範圍第11項之資料寫入方法,其中該快閃記憶體更具有複數頁,其中寫入程序係將一既定數量之該等單階區塊中之資料,寫入(program)至該等三階區塊中之一者。
- 根據申請專利範圍第11項之資料寫入方法,更包括當該頁之資料可被成功讀取並且該未完成寫入程序之第一三階區塊之寫入程序已完成時,檢查該第一三階區塊中之所有該等頁之複數錯誤位元數是否超過一第一既定值。
- 根據申請專利範圍第13項之資料寫入方法,更包括: 當該未完成寫入程序之第一三階區塊中之任一該等頁的錯誤位元數大於上述第一既定值時,自該等三階區塊中選擇一第二三階區塊;以及將原本要寫入該未完成寫入程序之第一三階區塊之資料全部寫入該第二三階區塊。
- 根據申請專利範圍第14項之資料寫入方法,更包括當對該第二三階區塊寫入的過程中皆未發生斷電事件時,在完成該第二三階區塊的寫入程序後,接著處理其他工作,並且省略檢查該第二三階區塊中之所有該等頁之錯誤位元數的步驟。
- 根據申請專利範圍第11項之資料寫入方法,當該頁之資料可被成功讀取時該資料寫入方法更包括:判斷可被成功讀取之該頁之資料的錯誤位元數是否高於一第二既定值;以及當可被成功讀取之該頁之資料的錯誤位元數高於該第二既定值時,將可被成功讀取之該頁在該斷電程序前被寫入之資料,寫入該快閃記憶體中之一暫時區塊。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106133115A TWI640868B (zh) | 2016-10-07 | 2016-10-07 | 資料儲存裝置及其資料寫入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106133115A TWI640868B (zh) | 2016-10-07 | 2016-10-07 | 資料儲存裝置及其資料寫入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201814534A TW201814534A (zh) | 2018-04-16 |
TWI640868B true TWI640868B (zh) | 2018-11-11 |
Family
ID=62639362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106133115A TWI640868B (zh) | 2016-10-07 | 2016-10-07 | 資料儲存裝置及其資料寫入方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI640868B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI748507B (zh) * | 2020-06-08 | 2021-12-01 | 瑞昱半導體股份有限公司 | 資料存取系統及操作資料存取系統的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201011755A (en) * | 2008-09-10 | 2010-03-16 | Skymedi Corp | Flash memory system and its data recovery method |
US20130024748A1 (en) * | 2011-07-22 | 2013-01-24 | Sandisk Technologies Inc. | Systems and methods of storing data |
DE102013106242A1 (de) * | 2012-07-02 | 2014-04-17 | Infomicro Electronics Industrial Park (Shenzhen) Ltd. | Halbleiterlaufwerk mit Konvertierungsschicht (ETL) und Umleitung von temporären Dateien zur Verschleissminderung von Flashspeichern |
US20140359346A1 (en) * | 2013-05-31 | 2014-12-04 | Silicon Motion, Inc. | Data storage device and error correction method thereof |
TW201527970A (zh) * | 2013-12-26 | 2015-07-16 | Silicon Motion Inc | 資料儲存裝置以及快閃記憶體控制方法 |
-
2016
- 2016-10-07 TW TW106133115A patent/TWI640868B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201011755A (en) * | 2008-09-10 | 2010-03-16 | Skymedi Corp | Flash memory system and its data recovery method |
US20130024748A1 (en) * | 2011-07-22 | 2013-01-24 | Sandisk Technologies Inc. | Systems and methods of storing data |
DE102013106242A1 (de) * | 2012-07-02 | 2014-04-17 | Infomicro Electronics Industrial Park (Shenzhen) Ltd. | Halbleiterlaufwerk mit Konvertierungsschicht (ETL) und Umleitung von temporären Dateien zur Verschleissminderung von Flashspeichern |
US20140359346A1 (en) * | 2013-05-31 | 2014-12-04 | Silicon Motion, Inc. | Data storage device and error correction method thereof |
TW201527970A (zh) * | 2013-12-26 | 2015-07-16 | Silicon Motion Inc | 資料儲存裝置以及快閃記憶體控制方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201814534A (zh) | 2018-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI607312B (zh) | 資料儲存裝置及其資料寫入方法 | |
TWI621129B (zh) | 資料儲存裝置及其資料寫入方法 | |
TWI521513B (zh) | 讀取電壓設定方法、控制電路與記憶體儲存裝置 | |
TWI677879B (zh) | 資料儲存裝置與資料處理方法 | |
CN106708754B (zh) | 数据储存装置及其数据维护方法 | |
TWI512462B (zh) | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 | |
TWI545572B (zh) | 記憶胞程式化方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN107918523B (zh) | 数据储存装置及其数据写入方法 | |
TWI569144B (zh) | 資料儲存裝置及其斷電事件判斷方法 | |
CN110554844B (zh) | 数据储存装置及数据维护方法 | |
CN106297883B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
US9947417B2 (en) | Memory management method, memory storage device and memory controlling circuit unit | |
CN104282339A (zh) | 读取电压设定方法、控制电路与存储器储存装置 | |
TWI509615B (zh) | 資料儲存方法、記憶體控制器與記憶體儲存裝置 | |
TWI501245B (zh) | 資料讀取方法、控制電路、記憶體模組與記憶體儲存裝置 | |
TWI640868B (zh) | 資料儲存裝置及其資料寫入方法 | |
CN106205699B (zh) | 存储器管理方法、存储器存储装置与存储器控制电路单元 | |
US9007829B2 (en) | Memory repairing method, and memory controller and memory storage apparatus using the same | |
TW201629770A (zh) | 資料儲存裝置及其資料更新方法 | |
TWI527050B (zh) | 資料儲存裝置及其錯誤校正方法以及資料讀取方法 | |
TWI639946B (zh) | 資料儲存裝置及其資料維護方法 | |
TWI592801B (zh) | 資料儲存裝置及其資料維護方法 | |
US10210939B1 (en) | Solid state storage device and data management method | |
Handy | How Controllers Maximize SSD Life | |
TW201629979A (zh) | 資料儲存裝置及其資料維護方法 |