TWI569275B - 資料儲存裝置及其資料維護方法 - Google Patents
資料儲存裝置及其資料維護方法 Download PDFInfo
- Publication number
- TWI569275B TWI569275B TW104123194A TW104123194A TWI569275B TW I569275 B TWI569275 B TW I569275B TW 104123194 A TW104123194 A TW 104123194A TW 104123194 A TW104123194 A TW 104123194A TW I569275 B TWI569275 B TW I569275B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- seed
- block
- data segment
- controller
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本發明係關於一種記憶體裝置之資料維護方法;特別係關於一種將寫入資料編碼的資料維護方法。
快閃記憶體為一種普遍的非揮發性資料儲存裝置,係以電性方式抹除與程式化。以非及閘型的快閃記憶體(即NAND FLASH)為例,常用作記憶卡(memory card)、通用序列匯流排閃存裝置(USB flash device)、固態硬碟(SSD)、嵌入式快閃記憶體模組(eMMC)…等使用。
快閃記憶體(如,NAND FLASH)的儲存陣列包括複數個區塊(blocks)。各區塊包括複數頁面(pages),其中在快閃記憶體中資料寫入的單位是頁面,資料抹除之最小單位為區塊。由於快閃記憶體的存取過程中對同一頁面或者同一區塊反覆存取,可能會發生資料內容的錯誤。所以需要一種資料維護方法來避免對快閃記憶體中之資料錯誤。
本發明所提供之資料儲存裝置可降低頁面損壞的機率。
本發明提供一種資料儲存裝置。資料儲存裝置包括一快閃記憶體以及一控制器。快閃記憶體包括複數區塊,每
一區塊具有複數頁面。控制器用以接收將複數資料段分別寫入區塊中之一第一區塊之複數第一頁面的一寫入命令,根據第一區塊之一第一抹除次數,計算一偏移指標,根據偏移指標擷取一隨機種子表中之複數種子,使用所擷取之種子對資料段進行編碼以獲得複數編碼後資料段,並且將編碼後資料段寫入第一頁面。
在一實施例中,控制器更用以紀錄每一區塊被抹除之次數,並且第一抹除次數為第一區塊被抹除之次數。控制器係對第一抹除次數進行一哈希演算法,以獲得偏移指標。在一實施例中,哈希演算法中之除數為一個區塊中之頁面的數量。
又另一實施例中,種子係依照一既定順序排列於隨機種子表中,控制器用以根據偏移指標定位至種子中之一指標種子,並且自指標種子開始依照既定順序擷取種子,以依序對資料段進行編碼。另外,一個種子用以對一個資料段進行編碼,並且一個資料段用以儲存至一個第一頁面。在一實施例中,資料段彼此相同,種子彼此不相同,並且編碼後資料段彼此不相同。
本發明亦提供另一種資料儲存裝置。資料儲存裝置包括一快閃記憶體以及控制器。快閃記憶體包括複數區塊,每一區塊具有複數頁面。控制器用以將一資料段重複寫入區塊中之頁面,其中當控制器對區塊中之一第一區塊進行寫入時,控制器根據第一區塊被抹除之次數,計算一偏移指標,並且根據偏移指標對資料段進行編碼以產生複數編碼後資料段,並且
將編碼後資料段依序寫入第一區塊中之複數第一頁面。
在一實施例中,資料儲存裝置更包括一隨機種子表,隨機種子表中具有依照一既定順序排列之複數種子,其中控制器更用以根據偏移指標在隨機種子表中定位一指標種子以對資料段進行編碼。控制器更用以自指標種子開始依照既定順序擷取種子,以使用所擷取之種子對資料段進行編碼,其中每一種子用以對資料段進行編碼並產生一個編碼後資料段,每一編碼後資料段彼此不相同,並且一個第一頁面用以儲存一個編碼後資料段。
在一實施例中,控制器係對第一抹除次數進行一哈希演算法,以獲得偏移指標。哈希演算法中之除數為一個區塊中之頁面的數量。
本發明更提供一種資料維護方法,適用於一資料儲存裝置,其中資料儲存裝置具有複數區塊,每一區塊包括複數頁面。資料維護方法包括:接收將複數資料段分別寫入區塊中之一第一區塊之複數第一頁面的一寫入命令;讀取第一區塊之一第一抹除次數,以根據第一抹除次數計算一偏移指標;根據偏移指標擷取一隨機種子表中之複數種子,以使用所擷取之種子對資料段進行編碼以獲得複數編碼後資料段;以及將編碼後資料段寫入第一頁面。第一抹除次數為第一區塊被抹除之次數。
在一實施例中,根據第一區塊之第一抹除次數,計算偏移指標的步驟更包括對第一抹除次數進行一哈希演算法,以獲得偏移指標,其中哈希演算法中之除數為一個區塊中
之頁面的數量。
又另一實施例中,種子係依照一既定順序排列於隨機種子表中,並且根據偏移指標擷取隨機種子表中之種子,以使用所擷取之種子對資料段進行編碼以獲得編碼後資料段的步驟更包括:根據偏移指標定位至種子中之一指標種子;以及自指標種子開始依照既定順序擷取種子,以依序對資料段進行編碼。一個種子用以對一個資料段進行編碼,並且一個資料段用以儲存至一個第一頁面。在一實施例中,資料段彼此相同,種子彼此不相同,並且編碼後資料段彼此不相同。
本發明更提供一種資料維護方法,適用於一資料儲存裝置,其中資料儲存裝置具有複數區塊,每一區塊包括複數頁面。資料維護方法包括:接收用以將一資料段重複寫入區塊中之一第一區塊之複數第一頁面之一寫入命令;根據寫入命令,讀取第一區塊之一第一抹除次數,以判斷第一區塊被抹除之次數;根據第一區塊被抹除之次數,計算一偏移指標;根據偏移指標對資料段進行編碼以產生複數編碼後資料段;以及將編碼後資料段依序寫入第一區塊中之複數第一頁面。
根據偏移指標對資料段進行編碼以產生編碼後資料段之步驟更包括根據偏移指標在一隨機種子表中定位一指標種子以對資料段進行編碼,其中隨機種子表中具有依照既定順序排列之複數種子。根據偏移指標對資料段進行編碼以產生編碼後資料段之步驟更包括自指標種子開始依照既定順序擷取種子,以使用所擷取之種子對資料段進行編碼,其中每一種子用以對資料段進行編碼並產生一個編碼後資料段,每一編碼
後資料段彼此不相同,並且一個第一頁面用以儲存一個編碼後資料段。
另外,根據第一區塊被抹除之次數,計算偏移指標之步驟更包括對第一抹除次數進行一哈希演算法,以獲得偏移指標。哈希演算法中之除數為一個區塊中之頁面的數量。
100‧‧‧電子系統
120‧‧‧主機
140‧‧‧資料儲存裝置
160‧‧‧控制器
162‧‧‧運算單元
164‧‧‧永久記憶體
166‧‧‧動態隨機存取器
180‧‧‧快閃記憶體
B0~BN‧‧‧區塊
P0~PN‧‧‧頁面
RST‧‧‧隨機種子表
RS_0~RS_N‧‧‧種子
ECD0~ECD7‧‧‧編碼後資料段
DS‧‧‧資料段
S600~S604、S700~S706‧‧‧步驟
第1圖係本發明之一種實施例之電子系統之方塊圖。
第2圖係本發明之一種實施例之快閃記憶體的示意圖。
第3圖係本發明之一種實施例之隨機種子表的示意圖。
第4圖係本發明之一種實施例之選取種子之操作的示意圖。
第5圖係本發明之另一種實施例之選取種子之操作的示意圖。
第6圖係本發明之一種實施例之資料維護方法之流程圖。
第7圖係本發明之一種實施例之資料維護方法之流程圖。
以下將詳細討論本發明各種實施例之裝置及使用方法。然而值得注意的是,本發明所提供之許多可行的發明概念可實施在各種特定範圍中。這些特定實施例僅用於舉例說明本發明之裝置及使用方法,但非用於限定本發明之範圍。
第1圖係本發明之一種實施例之電子系統之方塊圖。電子系統100包括一主機120以及一資料儲存裝置140。資料儲存裝置140包括一快閃記憶體180以及一控制器160,且可
根據主機120所下達的命令操作。
控制器160包括一運算單元162、一永久記憶體(如,唯讀記憶體ROM)164以及一動態隨機存取器(RAM)166。永久記憶體164與所載之程式碼、資料組成韌體(firmware),由運算單元162執行,使控制器160基於該韌體控制該快閃記憶體180。
快閃記憶體180包括複數區塊B0~BN,每一區塊B0~BN中包括複數頁面P0~PN,如第2圖所示。值得注意的是,快閃記憶體180之最小寫入單位為頁面,並且快閃記憶體180最小的抹除單位為區塊。在本發明之一實施例中,控制器160更用以紀錄每一區塊B0~BN被抹除之次數。換言之,快閃記憶體180或者永久記憶體164中具有一抹除次數表,用以紀錄快閃記憶體180中每一區塊B0~BN從第一次使用開始被抹除之次數,但本發明不限於此。在其他實施例中,每一區塊B0~BN之抹除次數亦可分別儲存於所相應之區塊B0~BN中。另外,快閃記憶體180更包括一隨機種子表RST,如第3圖所示。
第3圖係本發明之一種實施例之隨機種子表的示意圖。隨機種子表RST具有複數種子RS_0~RS_N,其中種子RS_0~RS_N係依照一既定順序排列於隨機種子RS_0~RS_N表RST中,如第3圖所示。換言之,隨機種子RS_0~RS_N是依序儲存於隨機種子表RST中。隨機種子表RST是用以提供控制器160種子RS_0~RS_N,使得控制器160可使用不同之種子對資料進行編碼,以產生不同的編碼資料。在本發明之一實施例中,隨機種子RS_0~RS_N的數量與一個區塊中之頁面P0~PN的數
量相同,但本發明不限於此。在其他實施例中,隨機種子RS_0~RS_N之數量亦可大於一個區塊中之頁面P0~PN的數量,或者小於一個區塊中之頁面P0~PN的數量。在某些實施例中,一個區塊可具有128個頁面,但本發明不限於此。不同的快閃記憶體180可具有不同之頁面數量以及區塊數量。
在某些情況下,控制器160需要將資料重複地寫入頁面中。然而,快閃記憶體180中之頁面若重複被寫入相同的資料或者相鄰的頁面被寫入相同的資料,則容易造成頁面損壞。有鑑於此,控制器160可藉由隨機種子表RST中之種子RS_0~RS_N隨機打亂所寫入之資料,以避免頁面損壞。
詳細而言,當控制器160接收到將複數資料段分別寫入區塊中之一第一區塊之複數第一頁面的一寫入命令時,控制器160根據第一區塊之一第一抹除次數,計算一偏移指標。接著,控制器160根據偏移指標擷取一隨機種子表RST中之複數種子RS_0~RS_N,並且使用所擷取之種子RS_0~RS_N分別對資料段進行編碼以獲得複數編碼後資料段。最後,控制器160將編碼後資料段寫入第一頁面。值得注意的是,在本實施例中,資料段之內容可相同亦可彼此不同,本發明不限於此。
在本發明之一實施例中,控制器160係對第一抹除次數進行一哈希演算法(Hash),以獲得偏移指標,其中哈希演算法中之除數(Divisor)為一個區塊中之頁面的數量,但本發明不限於此。在其他實施例中,控制器160亦使用其他演算法藉由第一抹除次數,計算出偏移指標。接著,控制器160根據偏移指標,在隨機種子表RST中定位至種子RS_0~RS_N中之一
者,以作為指標種子。接著,控制器160自指標種子開始依照種子RS_0~RS_N所排列之既定順序,擷取種子RS_0~RS_N,以依序對資料段進行編碼。值得注意的是,一個種子RS_0~RS_N用以對一個資料段進行編碼,並且一個資料段用以儲存至一個第一頁面。另外,在一實施例中,資料段彼此相同,種子RS_0~RS_N彼此不相同,並且編碼後資料段彼此不相同。
換言之,在資料段彼此相同的實施例中,控制器160係用以將資料段重複寫入區塊中之頁面。舉例而言,當測試快閃記憶體180之性能時,控制器160往往被指示對快閃記憶體180重複地寫入一相同的資料,並且在快閃記憶體180被寫滿後抹除掉快閃記憶體180中之資料以繼續重複地寫入相同的資料。因此,在上述的情況下,區塊中相鄰的頁面以及被重複寫入之同樣區塊容易損壞。因此,藉由本發明之一實施例,控制器160可藉由隨機種子表RST中之種子RS_0~RS_N打斷所要寫入的資料以達到保護快閃記憶體180之效果。
詳細而言,當控制器160對區塊中之一第一區塊進行寫入時,控制器160根據第一區塊被抹除之次數(第一抹除次數),計算一偏移指標。接著,控制器160根據偏移指標對資料段進行編碼以產生複數編碼後資料段,並且將編碼後資料段依序寫入第一區塊中之複數第一頁面。如上所述,控制器160係對第一抹除次數進行哈希演算法,以獲得偏移指標,其中哈希演算法中之除數為一個區塊中之頁面的數量,但本發明不限於此。另外,控制器160係用以根據偏移指標在隨機種子表RST中定位一指標種子以對資料段進行編碼。如上所述,在一實施
例中,控制器160係用以自指標種子RS_0~RS_N開始依照既定順序擷取種子RS_0~RS_N,以使用所擷取之種子RS_0~RS_N對資料段進行編碼,其中每一種子RS_0~RS_N用以對資料段進行編碼並產生一個編碼後資料段,每一編碼後資料段彼此不相同,並且一個第一頁面用以儲存一個編碼後資料段。
另外,當控制器160又再次對區塊中之第一區塊進行寫入時,第一區塊之第一抹除次數必然大於上一次控制器160所讀取之數值。因此,當第一區塊被重複寫入資料段時,控制器160根據第一區塊已增加之第一抹除次數,獲得不同於前次的偏移指標。因此,控制器160根據偏移指標,會以不同之順序擷取隨機種子表RST中之種子RS_0~RS_N。換言之,頁面中被寫入之編碼後資料段會不同於前次相同頁面被寫入之編碼後資料段。
第4圖係本發明之一種實施例之選取種子之操作的示意圖。舉例而言,如第4圖所示,快閃記憶體180中之每一區塊B0~BN分別具有八個頁面P0~P7,並且隨機種子表RST具有依照既定順序排列之八個種子RS0~RS7。當控制器160對區塊中之區塊B0進行寫入時,控制器160根據區塊B0被抹除之次數,計算一偏移指標。假設,區塊B0之抹除次數為2,哈希演算法中之除數為8。控制器160則可根據哈希演算法將2除以8,以獲得餘數為2,並且將餘數”2”作為偏移指標OFS。接著,控制器160根據偏移指標OFS,在隨機種子表RST中定位至偏移量為2之種子RS2以做為指標種子。接著,控制器160擷取種子RS2以對資料段DS進行編碼,並將所產生之編碼後資料段ECD2寫
入區塊B0之第一個頁面P0。接著,控制器160依照種子RS0~RS7所排列之既定順序擷取下一個種子RS3,並且控制器160使用種子RS3對資料段DS進行編碼,並將所產生之編碼後資料段ECD3寫入區塊B0之第二個頁面P1。接著,控制器160依照種子RS0~RS7所排列之既定順序擷取下一個種子RS4,並且控制器160使用種子RS4對資料段DS進行編碼,並將所產生之編碼後資料段ECD4寫入區塊B0之第三個頁面P2,依此類推。直到控制器160使用隨機種子表RST中最後一個種子RS7對資料段DS進行編碼並將所產生之編碼後資料段ECD7寫入區塊B0之第六個頁面P5後,控制器160回頭擷取隨機種子表RST中之第一個種子RS0,以對資料段DS進行編碼並將所產生之編碼後資料段ECD0寫入區塊B0之第七個頁面P6。接著,控制器160重複上述動作直到區塊B0中之所有頁面都被寫滿為止。值得注意的是,由於種子RS0~RS7皆不相同,故所產生之編碼後資料段ECD0~ECD7亦彼此不同。
當控制器160寫完區塊B0後,控制器160可依照指令繼續以相同的方式對其他區塊進行寫入,但本發明不限於此。由於記憶體空間不足、接收到主機所產生之指令或者基於資料維護的原因,區塊B0可能在被控制器160寫完後被抹除,並且重新歸屬到可寫入之資料區塊。值得注意的是,當區塊B0被抹除時,控制器160將區塊B0之抹除次數加1。當控制器160又再次選取到區塊B0並且進行寫入時,控制器160則會藉由不同的抹除次數獲得到不同之偏移指標。如第5圖所示,相同地快閃記憶體180中之每一區塊B0~BN分別具有八個頁面
P0~P7,並且隨機種子表RST具有依照既定順序排列之八個種子RS0~RS7。當控制器160再次對區塊中之區塊B0進行寫入時,控制器160根據區塊B0被抹除之次數,計算一偏移指標。在本實施例中,區塊B0之抹除次數已增加為3。因此,控制器160根據哈希演算法將3除以8,以獲得餘數為3,並且將餘數”3”作為偏移指標OFS。接著,控制器160根據偏移指標OFS,在隨機種子表RST中定位至偏移量為3之種子RS3以做為指標種子。接著,控制器160擷取種子RS3以對資料段DS進行編碼,並將所產生之編碼後資料段ECD3寫入區塊B0之第一個頁面P0。接著,控制器160依照種子RS0~RS7所排列之既定順序擷取下一個種子RS4,並且控制器160使用種子RS4對資料段DS進行編碼,並將所產生之編碼後資料段ECD4寫入區塊B0之第二個頁面P1。接著,控制器160依照種子RS0~RS7所排列之既定順序擷取下一個種子RS5,並且控制器160使用種子RS5對資料段DS進行編碼,並將所產生之編碼後資料段ECD5寫入區塊B0之第三個頁面P2,依此類推。直到控制器160使用隨機種子表RST中最後一個種子RS7對資料段DS進行編碼並將所產生之編碼後資料段ECD7寫入區塊B0之第五個頁面P4後,控制器160回頭擷取隨機種子表RST中之第一個種子RS0,以對資料段DS進行編碼並將所產生之編碼後資料段ECD0寫入區塊B0之第六個頁面P5。接著,控制器160重複上述動作直到區塊B0中之所有頁面都被寫滿為止。比較第4圖以及第5圖可知,當偏移指標不同時,頁面所被寫入的資料也就不同。換言之,由於偏移指標是由抹除次數所決定的,故區塊在重複被寫入時也可避免相
同的資料重複被寫入到同一個頁面。值得注意的是,在其他實施例中,寫入每一頁面之資料段亦可不相同。藉由上述的方法,不相同之資料段可更隨機的被打亂並且寫入頁面中,以達到存入不規則資料或者資料安全之需求。
第6圖係本發明之一種實施例之資料維護方法之流程圖。資料維護方法適用於第1圖所示之資料儲存裝置140。流程開始於步驟S600。
在步驟S600中,控制器160自主機120或者其他裝置接收將複數資料段分別寫入區塊中之一第一區塊之複數第一頁面的一寫入命令。值得注意的是,在本實施例中,資料段之內容可相同亦可彼此不同,本發明不限於此。換言之,在資料段彼此相同的實施例中,控制器160係接收用以將資料段重複寫入區塊中之一第一區塊之第一頁面的寫入命令。
接著,在步驟S602中,控制器160讀取第一區塊之一第一抹除次數以判斷第一區塊被抹除之次數,並且根據第一抹除次數計算一偏移指標。換言之,快閃記憶體180或者永久記憶體164中具有一抹除次數表,用以紀錄快閃記憶體180中每一區塊B0~BN從第一次使用開始被抹除之次數,但本發明不限於此。在其他實施例中,每一區塊B0~BN之抹除次數亦可分別儲存於所相應之區塊B0~BN中。在本發明之一實施例中,控制器160係對第一抹除次數進行一哈希演算法(Hash),以獲得偏移指標,其中哈希演算法中之除數(Divisor)為一個區塊中之頁面的數量,但本發明不限於此。以第4圖為例,快閃記憶體180中之每一區塊B0~BN分別具有八個頁面P0~P7,並且隨機種子
表RST具有依照既定順序排列之八個種子RS0~RS7。當控制器160對區塊中之區塊B0進行寫入時,控制器160根據區塊B0被抹除之次數,計算一偏移指標(步驟S602)。假設,區塊B0之抹除次數為2,哈希演算法中之除數為8。控制器160則可根據哈希演算法將2除以8,以獲得餘數為2,並且將餘數”2”作為偏移指標OFS,但本發明不限於此。
接著,在步驟S604中,控制器160根據偏移指標對資料段進行編碼以產生複數編碼後資料段,並將所產生之編碼後資料段依序儲存至第一區塊之第一頁面。流程結束於步驟S604。
第7圖係本發明之一種實施例之資料維護方法之流程圖。資料維護方法適用於第1圖所示之資料儲存裝置140。流程開始於步驟S700。值得注意的是,第7圖之資料維護方法為第6圖之步驟S604的詳細步驟。
在步驟S700中,控制器160根據偏移指標擷取一隨機種子表RST中之複數種子RS_0~RS_N中之一者。詳細而言,種子RS_0~RS_N係依照一既定順序排列於隨機種子表RST中,如第3圖所示。控制器160係根據偏移指標定位至種子RS_0~RS_N中之一指標種子RS_0~RS_N,以自指標種子開始依照種子RS_0~RS_N所排列之既定順序擷取種子RS_0~RS_N。值得注意的是,在步驟S700中一次僅擷取一個種子,在下一次流程回到步驟S700後才會自指標種子開始依照種子RS_0~RS_N所排列之既定順序擷取下一個種子。
接著,在步驟S702中,控制器160使用所擷取之種
子對資料段進行編碼以獲得一編碼後資料段。
接著,在步驟S704中,控制器160將所獲得之編碼後資料段依序寫入第一頁面。值得注意的是,一個第一頁面用以儲存一個編碼後資料段。一個種子RS_0~RS_N用以對一個資料段進行編碼,並且一個資料段用以儲存至一個第一頁面。在一實施例中,資料段彼此相同,種子RS_0~RS_N彼此不相同,並且編碼後資料段彼此不相同。
接著,在步驟S706中,控制器160判斷第一區塊是否有其他頁面需要寫入。當控制器160判斷第一區塊有其他頁面需要寫入時,流程回到步驟S700;否則,流程結束於步驟S706。以第4圖為例,假設控制器160則根據哈希演算法獲得偏移指標OFS為”2”。接著,在步驟S700中,控制器160根據偏移指標OFS,在隨機種子表RST中定位至偏移量為2之種子RS2以做為指標種子。接著,控制器160擷取種子RS2以對資料段DS進行編碼(步驟S702),並將所產生之編碼後資料段ECD2寫入區塊B0之第一個頁面P0(步驟S704)。由於區塊B0中尚有頁面P1~P7需要寫入資料。因此,流程回到步驟S700,控制器160依照種子RS0~RS7所排列之既定順序擷取指標種子之下一個種子RS3,並且控制器160使用種子RS3對資料段DS進行編碼(步驟S702),並將所產生之編碼後資料段ECD3寫入區塊B0之第二個頁面P1(步驟S704)。由於區塊B0中尚有頁面P2~P7需要寫入資料。因此,流程回到步驟S700,控制器160依照種子RS0~RS7所排列之既定順序擷取指標種子之下兩個種子RS4,並且控制器160使用種子RS4對資料段DS進行編碼(步驟
S702),並將所產生之編碼後資料段ECD4寫入區塊B0之第三個頁面P2(步驟S704),依此類推。直到控制器160使用隨機種子表RST中最後一個種子RS7對資料段DS進行編碼並將所產生之編碼後資料段ECD7寫入區塊B0之第六個頁面P5後,控制器160在步驟S700中,回頭擷取隨機種子表RST中之第一個種子RS0,以對資料段DS進行編碼並將所產生之編碼後資料段ECD0寫入區塊B0之第七個頁面P6(步驟S702~S704)。接著,控制器160重複上述動作直到區塊B0中之所有頁面都被寫滿為止。值得注意的是,由於種子RS0~RS7皆不相同,故所產生之編碼後資料段ECD0~ECD7亦彼此不同。
本發明所提供之資料儲存裝置以及資料維護方法可降低頁面損壞的機率。
本發明之方法,或特定型態或其部份,可以以程式碼的型態存在。程式碼可儲存於實體媒體,如軟碟、光碟片、硬碟、或是任何其他機器可讀取(如電腦可讀取)儲存媒體,亦或不限於外在形式之電腦程式產品,其中,當程式碼被機器,如電腦載入且執行時,此機器變成用以參與本發明之裝置。程式碼也可透過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態進行傳送,其中,當程式碼被機器,如電腦接收、載入且執行時,此機器變成用以參與本發明之裝置。當在一般用途處理單元實作時,程式碼結合處理單元提供一操作類似於應用特定邏輯電路之獨特裝置。
惟以上所述者,僅為本發明之較佳實施例而已,當不能以此限定本發明實施之範圍,即大凡依本發明申請專利
範圍及發明說明內容所作之簡單的等效變化與修飾,皆仍屬本發明專利涵蓋之範圍內。另外本發明的任一實施例或申請專利範圍不須達成本發明所揭露之全部目的或優點或特點。此外,摘要部分和標題僅是用來輔助專利文件搜尋之用,並非用來限制本發明之權利範圍。
100‧‧‧電子系統
120‧‧‧主機
140‧‧‧資料儲存裝置
160‧‧‧控制器
162‧‧‧運算單元
164‧‧‧永久記憶體
166‧‧‧動態隨機存取器
180‧‧‧快閃記憶體
Claims (24)
- 一種資料儲存裝置,包括:一快閃記憶體,包括複數區塊,每一上述區塊具有複數頁面;以及一控制器,用以接收將複數資料段分別寫入上述區塊中之一第一區塊之複數第一頁面的一寫入命令,根據上述第一區塊之一第一抹除次數,計算一偏移指標,根據上述偏移指標擷取一隨機種子表中之複數種子,使用所擷取之上述種子對上述資料段進行編碼以獲得複數編碼後資料段,並且將上述編碼後資料段寫入上述第一頁面。
- 根據申請專利範圍第1項之資料儲存裝置,其中上述控制器更用以紀錄每一上述區塊被抹除之次數,並且上述第一抹除次數為上述第一區塊被抹除之次數。
- 根據申請專利範圍第1項之資料儲存裝置,其中上述控制器係對上述第一抹除次數進行一哈希演算法,以獲得上述偏移指標。
- 根據申請專利範圍第3項之資料儲存裝置,其中上述哈希演算法中之除數為一個上述區塊中之上述頁面的數量。
- 根據申請專利範圍第1項之資料儲存裝置,其中上述種子係依照一既定順序排列於上述隨機種子表中,上述控制器用以根據上述偏移指標定位至上述種子中之一指標種子,並且自上述指標種子開始依照上述既定順序擷取上述種子,以依序對上述資料段進行編碼。
- 根據申請專利範圍第5項之資料儲存裝置,其中一個上述種 子用以對一個上述資料段進行編碼,並且一個上述資料段用以儲存至一個上述第一頁面。
- 根據申請專利範圍第6項之資料儲存裝置,其中上述資料段彼此相同,上述種子彼此不相同,並且上述編碼後資料段彼此不相同。
- 一種資料儲存裝置,包括:一快閃記憶體,包括複數區塊,每一上述區塊具有複數頁面;以及一控制器,用以將一資料段重複寫入上述區塊中之上述頁面,其中當上述控制器對上述區塊中之一第一區塊進行寫入時,上述控制器根據上述第一區塊被抹除之次數,計算一偏移指標,並且根據上述偏移指標對上述資料段進行編碼以產生複數編碼後資料段,並且將上述編碼後資料段依序寫入上述第一區塊中之複數第一頁面。
- 根據申請專利範圍第8項之資料儲存裝置,更包括一隨機種子表,上述隨機種子表中具有依照一既定順序排列之複數種子,其中上述控制器更用以根據上述偏移指標在上述隨機種子表中定位一指標種子以對上述資料段進行編碼。
- 根據申請專利範圍第9項之資料儲存裝置,其中上述控制器更用以自上述指標種子開始依照上述既定順序擷取上述種子,以使用所擷取之上述種子對上述資料段進行編碼,其中每一上述種子用以對上述資料段進行編碼並產生一個上述編碼後資料段,每一上述編碼後資料段彼此不相同,並且一個上述第一頁面用以儲存一個上述編碼後資料段。
- 根據申請專利範圍第8項之資料儲存裝置,其中上述控制器係對上述第一抹除次數進行一哈希演算法,以獲得上述偏移指標。
- 根據申請專利範圍第11項之資料儲存裝置,其中上述哈希演算法中之除數為一個上述區塊中之上述頁面的數量。
- 一種資料維護方法,適用於一資料儲存裝置,其中上述資料儲存裝置具有複數區塊,每一上述區塊包括複數頁面,上述資料維護方法包括:接收將複數資料段分別寫入上述區塊中之一第一區塊之複數第一頁面的一寫入命令;讀取上述第一區塊之一第一抹除次數,以根據上述第一抹除次數計算一偏移指標;根據上述偏移指標擷取一隨機種子表中之複數種子,以使用所擷取之上述種子對上述資料段進行編碼以獲得複數編碼後資料段;以及將上述編碼後資料段寫入上述第一頁面。
- 根據申請專利範圍第13項之資料維護方法,其中上述第一抹除次數為上述第一區塊被抹除之次數。
- 根據申請專利範圍第13項之資料維護方法,其中上述根據上述第一區塊之上述第一抹除次數,計算上述偏移指標的步驟更包括對上述第一抹除次數進行一哈希演算法,以獲得上述偏移指標。
- 根據申請專利範圍第15項之資料維護方法,其中上述哈希演算法中之除數為一個上述區塊中之上述頁面的數量。
- 根據申請專利範圍第13項之資料維護方法,其中上述種子係依照一既定順序排列於上述隨機種子表中,並且上述根據上述偏移指標擷取上述隨機種子表中之上述種子,以使用所擷取之上述種子對上述資料段進行編碼以獲得上述編碼後資料段的步驟更包括:根據上述偏移指標定位至上述種子中之一指標種子;以及自上述指標種子開始依照上述既定順序擷取上述種子,以依序對上述資料段進行編碼。
- 根據申請專利範圍第17項之資料維護方法,其中一個上述種子用以對一個上述資料段進行編碼,並且一個上述資料段用以儲存至一個上述第一頁面。
- 根據申請專利範圍第18項之資料維護方法,其中上述資料段彼此相同,上述種子彼此不相同,並且上述編碼後資料段彼此不相同。
- 一種資料維護方法,適用於一資料儲存裝置,其中上述資料儲存裝置具有複數區塊,每一上述區塊包括複數頁面,上述資料維護方法包括:接收用以將一資料段重複寫入上述區塊中之一第一區塊之複數第一頁面之一寫入命令;根據上述寫入命令,讀取上述第一區塊之一第一抹除次數,以判斷上述第一區塊被抹除之次數;根據上述第一區塊被抹除之次數,計算一偏移指標;根據上述偏移指標對上述資料段進行編碼以產生複數編碼後資料段;以及 將上述編碼後資料段依序寫入上述第一區塊中之複數第一頁面。
- 根據申請專利範圍第20項之資料維護方法,其中上述根據上述偏移指標對上述資料段進行編碼以產生上述編碼後資料段之步驟更包括根據上述偏移指標在一隨機種子表中定位一指標種子以對上述資料段進行編碼,其中上述隨機種子表中具有依照上述既定順序排列之複數種子。
- 根據申請專利範圍第21項之資料維護方法,其中上述根據上述偏移指標對上述資料段進行編碼以產生上述編碼後資料段之步驟更包括自上述指標種子開始依照上述既定順序擷取上述種子,以使用所擷取之上述種子對上述資料段進行編碼,其中每一上述種子用以對上述資料段進行編碼並產生一個上述編碼後資料段,每一上述編碼後資料段彼此不相同,並且一個上述第一頁面用以儲存一個上述編碼後資料段。
- 根據申請專利範圍第20項之資料維護方法,其中上述根據上述第一區塊被抹除之次數,計算上述偏移指標之步驟更包括對上述第一抹除次數進行一哈希演算法,以獲得上述偏移指標。
- 根據申請專利範圍第23項之資料維護方法,其中上述哈希演算法中之除數為一個上述區塊中之上述頁面的數量。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104123194A TWI569275B (zh) | 2015-07-17 | 2015-07-17 | 資料儲存裝置及其資料維護方法 |
CN201610069348.5A CN106354653B (zh) | 2015-07-17 | 2016-02-01 | 数据储存装置及其数据维护方法 |
US15/210,495 US9933958B2 (en) | 2015-07-17 | 2016-07-14 | Data storage device and data maintenance method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104123194A TWI569275B (zh) | 2015-07-17 | 2015-07-17 | 資料儲存裝置及其資料維護方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI569275B true TWI569275B (zh) | 2017-02-01 |
TW201705147A TW201705147A (zh) | 2017-02-01 |
Family
ID=57775055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104123194A TWI569275B (zh) | 2015-07-17 | 2015-07-17 | 資料儲存裝置及其資料維護方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9933958B2 (zh) |
CN (1) | CN106354653B (zh) |
TW (1) | TWI569275B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10319228B2 (en) * | 2017-06-27 | 2019-06-11 | Waymo Llc | Detecting and responding to sirens |
TWI653538B (zh) * | 2017-11-13 | 2019-03-11 | 慧榮科技股份有限公司 | 資料儲存裝置與記憶體裝置之資料處理方法 |
TWI660269B (zh) | 2018-01-26 | 2019-05-21 | 慧榮科技股份有限公司 | 用來於一記憶裝置中進行寫入管理之方法以及記憶裝置及其控制器 |
TWI709855B (zh) * | 2018-01-26 | 2020-11-11 | 慧榮科技股份有限公司 | 用來於一記憶裝置中進行寫入管理之方法以及記憶裝置及其控制器 |
US11288181B2 (en) * | 2019-03-07 | 2022-03-29 | Silicon Motion, Inc. | Flash memory initialization scheme for writing boot up information into selected pages averagely and randomly distributed over more pages and correspondingly method for reading boot up information from selected pages |
KR20220058224A (ko) * | 2020-10-30 | 2022-05-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120290783A1 (en) * | 2011-05-09 | 2012-11-15 | Samsung Electronics Co., Ltd. | Memory device and memory system including the same |
TW201250582A (en) * | 2011-06-03 | 2012-12-16 | Toshiba Kk | Semiconductor memory device |
US8352808B2 (en) * | 2008-10-08 | 2013-01-08 | Samsung Electronics Co., Ltd. | Data storage system and device with randomizer/de-randomizer |
US20130124781A1 (en) * | 2011-11-15 | 2013-05-16 | Sandisk Technologies Inc. | Data scrambling based on transition characteristic of the data |
US20130219247A1 (en) * | 2012-02-22 | 2013-08-22 | Silicon Motion, Inc. | Method for Accessing Flash Memory and Associated Flash Memory Controller |
US8595422B2 (en) * | 2008-08-12 | 2013-11-26 | Micron Technology, Inc. | Memory devices and methods of storing data on a memory device |
TWI438778B (zh) * | 2010-03-25 | 2014-05-21 | Silicon Motion Inc | 用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器 |
US8751729B2 (en) * | 2010-12-23 | 2014-06-10 | Samsung Electronics Co., Ltd. | Flash memory device and memory system including the same |
TWI455136B (zh) * | 2010-07-01 | 2014-10-01 | Silicon Motion Inc | 用來進行資料整形之方法以及相關之記憶裝置及其控制器 |
US20150095550A1 (en) * | 2013-09-27 | 2015-04-02 | Jawad B. Khan | Generating random numbers utilizing entropic nature of nand flash memory medium |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070300130A1 (en) * | 2006-05-17 | 2007-12-27 | Sandisk Corporation | Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices |
JP2016506585A (ja) * | 2013-01-08 | 2016-03-03 | ヴァイオリン メモリー インコーポレイテッド | データストレージのための方法及びシステム |
CN104346236B (zh) * | 2013-08-06 | 2018-03-23 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
TWI515737B (zh) * | 2013-12-09 | 2016-01-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及其資料抹除方法 |
KR102200108B1 (ko) * | 2014-10-10 | 2021-01-08 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그 동작 방법 |
-
2015
- 2015-07-17 TW TW104123194A patent/TWI569275B/zh active
-
2016
- 2016-02-01 CN CN201610069348.5A patent/CN106354653B/zh active Active
- 2016-07-14 US US15/210,495 patent/US9933958B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8595422B2 (en) * | 2008-08-12 | 2013-11-26 | Micron Technology, Inc. | Memory devices and methods of storing data on a memory device |
US8352808B2 (en) * | 2008-10-08 | 2013-01-08 | Samsung Electronics Co., Ltd. | Data storage system and device with randomizer/de-randomizer |
TWI438778B (zh) * | 2010-03-25 | 2014-05-21 | Silicon Motion Inc | 用來抑制資料錯誤之方法以及相關之記憶裝置及其控制器 |
TWI455136B (zh) * | 2010-07-01 | 2014-10-01 | Silicon Motion Inc | 用來進行資料整形之方法以及相關之記憶裝置及其控制器 |
US8751729B2 (en) * | 2010-12-23 | 2014-06-10 | Samsung Electronics Co., Ltd. | Flash memory device and memory system including the same |
US20120290783A1 (en) * | 2011-05-09 | 2012-11-15 | Samsung Electronics Co., Ltd. | Memory device and memory system including the same |
TW201250582A (en) * | 2011-06-03 | 2012-12-16 | Toshiba Kk | Semiconductor memory device |
US20130124781A1 (en) * | 2011-11-15 | 2013-05-16 | Sandisk Technologies Inc. | Data scrambling based on transition characteristic of the data |
US20130219247A1 (en) * | 2012-02-22 | 2013-08-22 | Silicon Motion, Inc. | Method for Accessing Flash Memory and Associated Flash Memory Controller |
US20150095550A1 (en) * | 2013-09-27 | 2015-04-02 | Jawad B. Khan | Generating random numbers utilizing entropic nature of nand flash memory medium |
Also Published As
Publication number | Publication date |
---|---|
US20170017426A1 (en) | 2017-01-19 |
TW201705147A (zh) | 2017-02-01 |
US9933958B2 (en) | 2018-04-03 |
CN106354653B (zh) | 2019-04-12 |
CN106354653A (zh) | 2017-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI569275B (zh) | 資料儲存裝置及其資料維護方法 | |
US8665648B2 (en) | Flash memory device having seed selector circuit | |
US10283216B2 (en) | Data storage device and data maintenance method thereof | |
US20130219247A1 (en) | Method for Accessing Flash Memory and Associated Flash Memory Controller | |
JP2013522792A (ja) | メタデータタグを介した不規則なパリティ分布の検出 | |
US8762810B2 (en) | Semiconductor recording device, control method of semiconductor recording device, and semiconductor recording system | |
US9959218B2 (en) | Method and apparatus to generate zero content over garbage data when encryption parameters are changed | |
TW201931366A (zh) | 資料儲存裝置以及非揮發式記憶體操作方法 | |
TW201523253A (zh) | 資料儲存裝置以及其資料存取方法 | |
US20160283319A1 (en) | Data storage device and encoding method thereof | |
WO2017143843A1 (zh) | 元数据修复方法及装置 | |
US10942678B2 (en) | Method of accessing data in storage device, method of managing data in storage device and storage device performing the same | |
US20190377693A1 (en) | Method to generate pattern data over garbage data when encryption parameters are changed | |
TWI608488B (zh) | 資料儲存裝置以及資料存取方法 | |
CN109558066B (zh) | 存储系统中恢复元数据的方法和装置 | |
TWI559139B (zh) | 資料儲存裝置及其資料維護方法 | |
JP6103958B2 (ja) | 半導体記憶装置 | |
US11347860B2 (en) | Randomizing firmware loaded to a processor memory | |
CN110231914A (zh) | 数据存储装置及其操作方法 | |
TWI557560B (zh) | 資料儲存裝置以及資料讀取方法 | |
US9417954B2 (en) | Data storage device and method for operating the same | |
US20170068592A1 (en) | Data recovery circuit, semiconductor storage device, and data recovery method | |
CN107562655B (zh) | 一种数据存储方法和装置 | |
KR101733567B1 (ko) | 초기 시드 생성 방법과 그것을 이용한 플래시 메모리 장치 및 메모리 시스템 | |
CN112148212B (zh) | 用于存储器装置的多维伪随机二进制序列分析 |