TWI557744B - 資料儲存方法及嵌入式系統 - Google Patents
資料儲存方法及嵌入式系統 Download PDFInfo
- Publication number
- TWI557744B TWI557744B TW104102675A TW104102675A TWI557744B TW I557744 B TWI557744 B TW I557744B TW 104102675 A TW104102675 A TW 104102675A TW 104102675 A TW104102675 A TW 104102675A TW I557744 B TWI557744 B TW I557744B
- Authority
- TW
- Taiwan
- Prior art keywords
- sector
- data
- storage state
- flag
- block
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本揭露是有關於一種資料儲存方法及嵌入式系統,且特別是有關於一種具有高寫入次數的資料儲存方法及嵌入式系統。
一般來說,傳統的嵌入式系統通常使用電子抹除式可複寫唯讀記憶體(EEPROM,Electrically Erasable Programmable Read Only Memory)作為小量資料的儲存媒體,其具有可以位元組為單位寫入及清除的優勢,因此在寫入多筆小量資料時十分的方便。但隨著快閃記憶體的容量越來越大及價格越來越便宜,EEPROM變的相對昂貴並在嵌入式系統中逐漸地被便宜的快閃記憶體所取代。
然而,由於快閃記憶體在執行清除指令時必須一次清除(erase)一整個區塊(block),無法像EERPOM以位元組為單位進行清除。若將一個資料量較小的檔案,例如系統的啟動載入器(bootloader)或是網路設定配置等,儲存於快閃記憶體的區塊中,當更新此檔案時,系統必須清除檔案所在的整個區塊,再將更新
的檔案儲存於原本的區塊中,這使得快閃記憶體的重新寫入次數遠小於EEPROM。
本揭露提出一種資料儲存方法及嵌入式系統,其能有效地延長快閃記憶體的壽命。
本揭露提出一種資料儲存方法,用於將更新資料寫入快閃記憶體模組以更新原始資料,上述快閃記憶體模組至少包括一區塊,上述區塊包括多個扇區,每一此些扇區包括多個位元,每一位元可被識別為第一儲存狀態或第二儲存狀態,每一此些扇區記錄一旗標。上述資料儲存方法包括獲取此些扇區之中的第一扇區,其中第一扇區的旗標的所有位元為第二儲存狀態。上述資料儲存方法更包括將更新資料寫入至第一扇區,並將第一扇區的旗標的至少一位元程式化為第一儲存狀態且至少一位元程式化為第二儲存狀態。上述資料儲存方法更包括識別此些扇區之中儲存原始資料的第二扇區,其中第二扇區的旗標的至少一位元為第一儲存狀態且第二扇區的旗標的至少一其他位元為第二儲存狀態。上述資料儲存方法更包括將第二扇區的所有位元程式化為第一儲存狀態。
在本揭露的一範例實施例中,上述資料儲存方法更包括若在上述區塊中不存在所有位元為第二儲存狀態的旗標,將上述區塊的所有位元程式化為第二儲存狀態。
在本揭露的一範例實施例中,上述資料儲存方法更包括為儲存於第一扇區的更新資料產生對應錯誤校正碼。
在本揭露的一範例實施例中,其中若儲存於第一扇區的更新資料的所有位元為第一儲存狀態時,對應錯誤校正碼的所有位元為第一儲存狀態。
在本揭露的一範例實施例中,上述資料儲存方法更包括根據更新資料及原始資料的大小決定此些扇區的大小。
在本揭露的一範例實施例中,其中第一儲存狀態為0且第二儲存狀態為1。
本揭露提出一種嵌入式系統,包括快閃記憶體模組及微控制單元。上述快閃記憶體模組儲存原始資料且至少包括一區塊,上述區塊包括多個扇區,每一此些扇區包括多個位元,每一位元可被識別為第一儲存狀態或第二儲存狀態,每一此些扇區記錄一旗標。微控制單元耦接於快閃記憶體模組。微控制單元執行程式碼以獲取此些扇區之中的第一扇區,其中第一扇區的旗標的所有位元為第二儲存狀態。微控制單元還執行程式碼以將更新資料寫入至第一扇區,並將第一扇區的旗標的至少一位元程式化為第一儲存狀態且至少一位元程式化為第二儲存狀態。微控制單元還執行程式碼以識別此些扇區之中儲存原始資料的第二扇區,其中第二扇區的旗標的至少一位元為第一儲存狀態且第二扇區的旗標的至少一其他位元為第二儲存狀態。微控制單元還執行程式碼以將第二扇區的所有位元程式化為第一儲存狀態。
在本揭露的一範例實施例中,其中若在上述區塊中不存在所有位元為第二儲存狀態的旗標,微控制單元將上述區塊的所有位元程式化為第二儲存狀態。
在本揭露的一範例實施例中,上述微控制單元更為儲存於該第一扇區的該更新資料產生一對應錯誤校正碼。
在本揭露的一範例實施例中,其中若儲存於第一扇區的更新資料的所有位元為第一儲存狀態時,對應錯誤校正碼的所有位元為第一儲存狀態。
在本揭露的一範例實施例中,其中上述微控制單元根據更新資料及原始資料的大小決定此些扇區的大小。
在本揭露的一範例實施例中,其中第一儲存狀態為0且第二儲存狀態為1。
基於上述,本揭露的資料寫入方法及嵌入式系統可以根據旗標尋找未寫入的扇區寫入更新資料,並將儲存原始資料的扇區的所有位元設定為第一儲存狀態。如此一來,在每次更新資料時可逐一使用區塊中的扇區寫入更新資料,只有當所有扇區都被使用過,也就是上述區塊不具有未寫入的扇區時,才需要清除整個區塊,從而延長快閃記憶體的壽命。
為讓本揭露的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
100‧‧‧嵌入式系統
102‧‧‧控制器
104‧‧‧快閃記憶體模組
201、202‧‧‧區塊
211a、211b、…、211h、211i‧‧‧資料
221‧‧‧資料區
231‧‧‧帶外區
241、242、…、247、248‧‧‧旗標
S302、S304、S306、S308、S310、S312‧‧‧資料儲存方法的步驟
S402、S404、S406‧‧‧讀取資料的步驟
圖1為根據本揭露範例實施例所繪示的嵌入式系統的方塊圖。
圖2A-圖2C為根據本揭露範例實施例存取快閃記憶體模組扇區的示意圖。
圖3為根據本揭露一範例實施例所繪示的資料儲存方法的流程圖。
圖4為根據本揭露一範例實施例所繪示的資料讀取的流程圖。
圖5為根據本揭露另一範例實施例存取快閃記憶體模組扇區的示意圖。
圖6為根據本揭露另一範例實施例存取快閃記憶體模組扇區的示意圖。
為了使本揭露的範例實施例更容易理解,以下將使用一個大小為256MB的反及閘快閃記憶體(NAND flash)作為範例說明。此快閃記憶體可包括2048個區塊(block),每一區塊可包括64個頁面(page),因此每一區塊的大小為128KB,且每一頁面的大小為2KB。
快閃記憶體會將錯誤校正碼(ECC,Error Correction Code)儲存在每一個頁面的帶外(OOB,Out Of Band)區域,並利用錯誤校
正碼來修正資料錯誤。一個頁面還可以分成四個512位元組(Byte)的小塊(chunk),錯誤校正碼的計算是以小塊為單位,因此每次修改一小塊的資料時,系統會計算對應該小塊的錯誤校正碼(其大小為16位元組),並儲存於該小塊所屬頁面的帶外區域。由於一個2KB頁面包括四小塊,因此一個2KB頁面會包含64位元組的帶外區域。因此,一個頁面的實際大小可為(2K+64)位元組,也就是資料區域加上帶外區域,而一個區塊的實際大小可為64x(2K+64)位元組=(128K+4K)位元組。值得一提的是,帶外區域是系統用來存取對應頁面的錯誤校正碼,因此使用者並無法存取帶外區域。另外,在寫入資料時,快閃記憶體的最小寫入單位為一個位元組,而在清除資料時,快閃記憶體的最小清除單位為一個區塊。
以上所述的快閃記憶體的區塊、頁面、小塊、帶外區域的數量及大小僅用於使本揭露的範例實施例更加容易理解。必須了解的是,本揭露並不以此為限。本揭露快閃記憶體的區塊、頁面、小塊、帶外區域的數量及大小也可具有其他配置,而快閃記憶體也可為反或閘快閃記憶體(NOR flash)或其他種類的快閃記憶體。
圖1為根據本揭露範例實施例所繪示的嵌入式系統的方塊圖並且圖2A-圖2C為根據本揭露範例實施例存取快閃記憶體模組扇區的示意圖。
請參照圖1及圖2A,本揭露範例實施例的嵌入式系統100包括控制器102及快閃記憶體模組104,其中控制器102是耦接於
快閃記憶體模組104且用以執行寫入運作以將資料寫入至快閃記憶體模組104或者執行讀取運作以從快閃記憶體模組104中讀取資料。
假設目前要將一個16KB的資料211a存入快閃記憶體模組104的區塊201中,控制器102會先判斷資料211a的大小,也就是說,控制器102會判斷出16KB的資料211a可儲存於8個大小為2KB的頁面中,因此控制器102會將區塊201的頁面1到頁面64分成八個扇區(sector),其中扇區1對應頁面1到頁面8,扇區2對應頁面9到頁面16,以此類推。在此,資料可為嵌入式系統100的啟動載入器(bootloader)、網路設定配置(例如IP位址、網路遮罩、閘道器位址)、嵌入式系統100的系統設定檔等。
在此假設區塊201從未被寫入資料,因此所有的頁面的位元組皆記錄為0xFF。在此,控制器102會將扇區1的第一個位元組,也就是頁面1的第一個位元組辨識為旗標241。由於區塊201所有頁面的位元組皆為0xFF,因此旗標241當然也為0xFF。在本範例實施例中,旗標241為0xFF代表對應旗標的扇區1為未寫入扇區。同理可知,扇區2到扇區8的旗標,也就是扇區2到扇區8的第一個位元組在此時也都為0xFF。雖然以上說明了使用每個扇區的第一個位元組作為旗標,但本發明並不以此為限。在另一範例實施例中,也可利用扇區中的任一位元組作為旗標,或者也可利用扇區中的任意多個位元組作為旗標。
當控制器102將資料211a寫入區塊201之前,控制器102
會根據區塊201中所有扇區的旗標尋找扇區中未寫入的扇區。也就是說,控制器102會尋找旗標241到旗標248中數值為0xFF的旗標,並把資料211a寫入此旗標對應的扇區中。由於此時旗標241到旗標248的數值都是0xFF,因此控制器102會選擇第一個扇區1(或第一扇區)寫入資料211a。
在控制器102將資料211a寫入扇區1時,控制器102會將扇區1的旗標241,也就是扇區1的第一個位元組(或是頁面1的第一個位元組),修改為0x01,以表示目前扇區1存有有效資料(valid data)。此時,資料211a是儲存於頁面1到頁面8的資料區211中。雖然以上說明了將旗標241修改為0x01以表示其對應扇區存有有效資料,但本揭露並不以此為限。旗標241也可修改為0x02、0x03、…、0xFE等0x00及0xFF以外的值,用以其對應之扇區存有有效資料。
值得一提的是,將資料211a寫入至頁面1到頁面8的資料區211時,控制器102會分別計算頁面1到頁面8的錯誤校正碼ECC1到ECC8,並將ECC1到ECC8分別寫入到對應頁面1到頁面8的帶外(OOB,Out Of Band)區231中。在此,ECC1到ECC8可利用BCH、RS或漢明碼等錯誤校正演算法產生。值得注意的是,在一個完全未寫入的區塊中,其所有頁面對應的ECC值都是0xFF。
請繼續參照圖2B,資料211b可為資料211a的更新檔或其他類型的檔案。當控制器102要將資料211b寫入區塊201之前,
控制器102會根據區塊201中所有扇區的旗標尋找扇區中未寫入的扇區。也就是說,控制器102會尋找旗標241到旗標248中數值為0xFF的旗標,並把資料211a寫入此旗標對應的扇區中。由於此時旗標241的數值為0x01,而旗標242到旗標248的數值都是0xFF,因此控制器102會選擇扇區2到扇區8的第一個扇區2(或第一扇區)寫入資料211b。
在控制器102將資料211b寫入扇區2時,控制器102會將扇區2的旗標242,也就是扇區2的第一個位元組(或是頁面9的第一個位元組),修改為0x01,以表示目前扇區2存有有效資料。此時,資料211b是儲存於頁面9到頁面16的資料區211中。
同樣地,在將資料211b寫入頁面9到頁面16的資料區211時,控制器102會分別計算頁面9到頁面16的錯誤校正碼ECC9到ECC16,並將ECC9到ECC16分別寫入到對應頁面9到頁面16的帶外區231中。
除了將ECC9到ECC16分別寫入到對應頁面9到頁面16的帶外區231中,由於扇區2的上一個扇區,也就是扇區1中的資料211a已屬於無效資料,控制器102還會將扇區1(或第二扇區)的資料區221的所有位元組修改為0x00,這也包含了將扇區1的旗標241修改為0x00,表示此扇區1處於被寫入過且目前不具有效資料。
在控制器102將扇區1(或第二扇區)的資料區221的所有位元組修改為0x00時,控制器102會分別計算頁面1到頁面8的
錯誤校正碼ECC1到ECC8,由於所有位元組皆為0x00的資料所產生的錯誤校正碼也是所有位元組皆為0x00,控制器102會將頁面1到頁面8的帶外區231全部的位元組寫入0x00。
請繼續參照圖2C,當資料利用圖2A及圖2B的方法寫入數次,使得區塊201的扇區8存有資料時,此時扇區1到扇區7的資料區221的全部位元組已都被修改為0x00,且扇區1到扇區7的旗標241到旗標247也都被修改為0x00。若此時控制器102要將資料211i寫入至區塊201時,控制器102會先檢查區塊201中扇區1到扇區8的旗標241到旗標248。由於旗標241到旗標247的數值皆為0x00且旗標248的數值為0x01,所以控制器102找不到旗標值為0xFF的扇區,其代表區塊201中已經沒有未寫入的扇區。此時,控制器102便需要抹除整個區塊201,也就是把扇區1到扇區8的所有位元組抹除為0xFF。接著再利用與圖2A的相同方法,就可將資料211i寫入扇區1,也就是頁面1到頁面8的資料區211中。
由於本揭露只有在區塊201所有扇區都進行過寫入操作之後才會抹除整個區塊201,也就是在區塊201的八個扇區都儲存過資料之後才會抹除區塊201,因此相較於一般在快閃記憶體中更新一個扇區就必須清除整個區塊的狀況,本揭露的寫入方法在同樣次數的扇區資料更新中,抹除區塊201的次數只有一般快閃記憶體的八分之一,因此快閃記憶體寫入資料的次數也可提升為原本的八倍,從而延長快閃記憶體的壽命。
值得注意的是,本範例實施例中控制器102可為邏輯運算電路,以在寫入資料時進行扇區分配、尋找未寫入扇區及設定扇區旗標等運算。然而,本揭露並不以此為限,在另一實施例中,上述控制器102所執行的功能亦可以韌體或軟體的程式碼來實作,並且當嵌入式系統100上電時,此些程式碼會被載入至記憶體中,由微控制器單元(MCU,Mirco Controller Unit)來執行以完成上述控制器102所執行的功能。
圖3為根據本揭露一範例實施例所繪示的資料儲存方法的流程圖。
在步驟S302中,控制器102會依序檢查區塊中每一扇區的旗標,尋找具有旗標數值為0xFF的未寫入扇區,也就是在區塊被抹除之後尚未被寫入過的扇區。
若區塊中沒有旗標數值為0xFF的未寫入扇區,則在步驟S304中,控制器102會抹除區塊,將區塊中所有位元組修改為0xFF。
若區塊中具有旗標數值為0xFF的未寫入扇區時,則在步驟S306中,控制器102會將更新資料寫入旗標數值為0xFF的未寫入扇區,並且將對應的旗標設定為有效狀態,例如0x01。同時,在寫入更新資料到扇區時,控制器102會更新對應頁面的錯誤校正碼。
在步驟S308中,控制器102會判斷寫入是否成功。
若寫入不成功時,則在步驟S310中,控制器102會將目
前扇區的所有位元組填入0x00,並產生對應的錯誤校正碼(其中錯誤校正碼的所有位元組也都會是0x00),接著執行步驟S302,以尋找未寫入的扇區重新寫入資料。
若寫入成功時,則控制器102會將儲存原始資料(亦稱為舊資料)扇區的所有位元組填入0x00(包含扇區的旗標),並產生對應的錯誤校正碼(也全為0x00)。如此一來,控制器102可以藉由旗標0x00判斷先前之扇區所儲存的資料已變成無效資料。
圖4為根據本揭露一範例實施例所繪示的資料讀取的流程圖。
在步驟S402中,若控制器102要讀取資料,控制器102會在區塊中尋找有效扇區,也就是旗標不為0x00及0xFF的扇區。若區塊中沒有有效扇區時,則在步驟S404中,控制器102會傳送讀取失敗的訊息。
若區塊中具有有效扇區時,則控制器102會從有效扇區的資料區讀取資料,例如讀取嵌入式系統100的啟動載入器(bootloader)、網路設定配置(例如IP位址、網路遮罩、閘道器位址)、嵌入式系統100的系統設定檔等。
圖5為根據本揭露另一範例實施例存取快閃記憶體模組扇區的示意圖。
請參照圖5,相較於在圖2A到圖2C中使用單一區塊201儲存資料,在圖5中,也可使用兩個區塊,也就是區塊201及區塊202來儲存資料。
相同於圖2A的第一步驟,在區塊201及區塊202都無資料儲存時,扇區1到扇區16的資料區跟帶外區的所有位元組都是0xFF,當然每個扇區的旗標也都是0xFF,代表了每個扇區在目前都處於未寫入狀態。當有第一筆資料要寫入之前,控制器102會根據扇區1到扇區16的旗標尋找出處於未寫入狀態的扇區1,把資料寫入扇區1並將扇區1的旗標修改為0x01,代表扇區1目前儲存了有效資料。在寫入資料到扇區1時,控制器102也會計算扇區1每個頁面的ECC並將其儲存於扇區1的帶外區,此運作相同於圖2A的第2步驟。
當要寫入更新資料時,控制器102會將資料寫入扇區2,並重新程式化扇區1的資料區及帶外區,也就是,將扇區1的資料區及帶外區的所有位元組重新程式化為0x00。
以此類推,每一筆更新資料會依序寫入到扇區3至扇區16,且控制器102會分別重新程式化扇區2到扇區15的資料區及帶外區。之後,若要寫入下一筆更新資料且控制器102目前具有旗標值為0x01的扇區16的下一個扇區(即,扇區1)的旗標值為0x00時,控制器102會抹除區塊201,以將區塊201的所有位元組設定為0xFF。同理,當扇區8的旗標值為0x01且其他所有扇區的旗標值均為0x00時,控制器102會抹除區塊202,以將區塊202的所有位元組設定為0xFF。
在另一範例實施例中,控制器102也可在寫完每一筆資料之後檢查區塊的所有旗標值,若一區塊所有旗標值皆為0x00,
則清除該區塊。也就是說,控制器102亦可在更新資料寫入扇區9之後識別區塊201的所有旗標值都為0x00,並抹除區塊201。
雖然以上說明了使用兩個區塊來儲存資料,但本揭露並不以此為限。本揭露也可使用三個或更多個區塊來儲存資料,以防止執行時間壞區塊的產生,或是用於滿足更大資料量的儲存需求。
圖6為根據本揭露另一範例實施例存取快閃記憶體模組扇區的示意圖。
請參照圖6,相較於在以上範例實施例中,扇區大小都是頁面大小的倍數,然而,扇區大小亦可被設定為頁面大小2KB的四分之一,也就是小塊(chunk)的大小512位元組。
相同於以上範例實施例,當有第一筆資料要寫入之前,控制器102會尋找出處於未寫入狀態的扇區1,把資料寫入扇區1並將扇區1的旗標修改為0x01,以代表扇區1目前儲存了有效資料。在寫入資料到扇區1時,控制器102也會計算扇區1的ECC1並將其儲存於扇區1的帶外區。由於目前扇區1的大小是相當於小塊的大小,因此其ECC1的大小為一個頁面ECC大小64位元組的四分之一,也就是16位元組。
接著,可重複圖5的操作,直到扇區256儲存了有效資料,也就是扇區256的旗標為0x01。此時,扇區1到扇區255的所有位元組都為0x00,若有新的資料要寫入時,控制器102會將區塊201清除,並將新的資料寫入扇區1。
在本揭露的快閃記憶體中,小塊的大小為512位元組,而小塊是執行ECC運算的最小單位,因此扇區大小必須以小塊的大小512位元組為單位。雖然以上說明了以一個小塊作為扇區大小,但本揭露並不以此為限。本揭露也可使用兩個或更多小塊作為扇區大小。
綜上所述,上述範例實施例提出了一種資料儲存方法,將快閃記憶體的區塊分為多個扇區,每個扇區具有一個旗標,旗標值為0xFF代表扇區為未寫入狀態、0x00代表扇區為空白狀態、0xFF及0x00以外的數值代表扇區具有有效資料。由於在快閃記憶體中1到0的操作可以位元組為單位進行,但0到1的操作需要以區塊為單位進行,因此本範例實施例以0x00來表示此扇區曾經具有有效資料,但目前屬於抹除狀態。在本範例實施例中,資料可以依序儲存於區塊的未寫入扇區中,並在資料成功儲存之後將之前儲存有效資料的扇區重新程式化為0x00。只有當整個區塊中已經沒有旗標為0xFF的扇區時,才必須抹除區塊。相較於傳統使用快閃記憶體儲存系統的啟動載入器或是網路設定配置時,在每次更新資料時都要抹除整個區塊,本範例實施例可在一個區塊的全部扇區都使用過後才抹除區塊,因此可大幅增進使用於嵌入式系統中的快閃記憶體的使用壽命。
雖然本揭露已以實施例揭露如上,然其並非用以限定本揭露,任何所屬技術領域中具有通常知識者,在不脫離本揭露的精神和範圍內,當可作些許的更動與潤飾,故本揭露的保護範圍
當視後附的申請專利範圍所界定者為準。
S302、S304、S306、S308、S310、S312‧‧‧資料儲存方法的步驟
Claims (12)
- 一種資料儲存方法,用於將一更新資料寫入一快閃記憶體模組以更新一原始資料,該快閃記憶體模組至少包括一區塊,該區塊包括多個扇區,每一該些扇區包括多個位元,每一該些位元可被識別為一第一儲存狀態或一第二儲存狀態,每一該些扇區記錄一旗標,該資料儲存方法包括:獲取該些扇區之中的一第一扇區,其中該第一扇區的該旗標的所有位元為該第二儲存狀態;將該更新資料寫入至該第一扇區,並將該第一扇區的該旗標的至少一位元程式化為該第一儲存狀態且至少一其他位元維持該第二儲存狀態;識別該些扇區之中儲存該原始資料的一第二扇區,其中該第二扇區的該旗標的至少一位元為該第一儲存狀態且該第二扇區的該旗標的至少一其他位元為該第二儲存狀態;以及將該第二扇區的所有位元程式化為該第一儲存狀態。
- 如申請專利範圍第1項所述的資料儲存方法,更包括:若在該區塊中不存在所有位元為該第二儲存狀態的該旗標,將該區塊的所有位元程式化為該第二儲存狀態。
- 如申請專利範圍第1項所述的資料儲存方法,更包括:為儲存於該第一扇區的該更新資料產生一對應錯誤校正碼。
- 如申請專利範圍第3項所述的資料儲存方法,其中若儲存於該第一扇區的該更新資料的所有位元為該第一儲存狀態時,該 對應錯誤校正碼的所有位元為該第一儲存狀態。
- 如申請專利範圍第1項所述的資料儲存方法,更包括:根據該更新資料及該原始資料的大小決定該些扇區的大小。
- 如申請專利範圍第1項所述的資料儲存方法,其中該第一儲存狀態為0且該第二儲存狀態為1。
- 一種嵌入式系統,包括:一快閃記憶體模組,該快閃記憶體模組儲存一原始資料且至少包括一區塊,該區塊包括多個扇區,每一該些扇區包括多個位元,每一該些位元可被識別為一第一儲存狀態或一第二儲存狀態,每一該些扇區記錄一旗標;以及一微控制單元,耦接於該快閃記憶體模組,其中該微控制單元執行一程式碼以執行下列步驟:獲取該些扇區之中的一第一扇區,其中該第一扇區的該旗標的所有位元為該第二儲存狀態;將一更新資料寫入至該第一扇區,並將該第一扇區的該旗標的至少一位元程式化為該第一儲存狀態且至少一其他位元維持該第二儲存狀態;識別該些扇區之中儲存該原始資料的一第二扇區,其中該第二扇區的該旗標的至少一位元為該第一儲存狀態且該第二扇區的該旗標的至少一其他位元為該第二儲存狀態;以及將該第二扇區的所有位元程式化為該第一儲存狀態。
- 如申請專利範圍第7項所述的嵌入式系統,其中若在該區 塊中不存在所有位元為該第二儲存狀態的該旗標,該微控制單元將該區塊的所有位元程式化為該第二儲存狀態。
- 如申請專利範圍第7項所述的嵌入式系統,其中該微控制單元更為儲存於該第一扇區的該更新資料產生一對應錯誤校正碼。
- 如申請專利範圍第9項所述的嵌入式系統,其中若儲存於該第一扇區的該更新資料的所有位元為該第一儲存狀態時,該對應錯誤校正碼的所有位元為該第一儲存狀態。
- 如申請專利範圍第7項所述的嵌入式系統,其中該微控制單元根據該更新資料及該原始資料的大小決定該些扇區的大小。
- 如申請專利範圍第7項所述的嵌入式系統,其中該第一儲存狀態為0且該第二儲存狀態為1。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104102675A TWI557744B (zh) | 2015-01-27 | 2015-01-27 | 資料儲存方法及嵌入式系統 |
CN201510071871.7A CN105988722B (zh) | 2015-01-27 | 2015-02-11 | 数据储存方法及嵌入式系统 |
US14/681,095 US9563553B2 (en) | 2015-01-27 | 2015-04-08 | Data storing method and embedded system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104102675A TWI557744B (zh) | 2015-01-27 | 2015-01-27 | 資料儲存方法及嵌入式系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201628009A TW201628009A (zh) | 2016-08-01 |
TWI557744B true TWI557744B (zh) | 2016-11-11 |
Family
ID=56434106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104102675A TWI557744B (zh) | 2015-01-27 | 2015-01-27 | 資料儲存方法及嵌入式系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9563553B2 (zh) |
CN (1) | CN105988722B (zh) |
TW (1) | TWI557744B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648751B (zh) * | 2016-11-22 | 2020-04-21 | 深圳市元征软件开发有限公司 | 一种嵌入式软件快速升级的方法及嵌入式设备 |
CN107132994A (zh) * | 2017-03-20 | 2017-09-05 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
CN107122129A (zh) * | 2017-03-20 | 2017-09-01 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
CN107039076A (zh) * | 2017-03-20 | 2017-08-11 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
CN107037986A (zh) * | 2017-03-20 | 2017-08-11 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
CN107132995A (zh) * | 2017-03-20 | 2017-09-05 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
JP7089423B2 (ja) * | 2018-07-12 | 2022-06-22 | ルネサスエレクトロニクス株式会社 | 情報処理装置及び制御方法 |
CN112347002B (zh) * | 2020-11-13 | 2023-07-28 | 杭州芯炬视人工智能科技有限公司 | flash数据的保存方法、系统、计算机设备及存储介质 |
CN112817527B (zh) * | 2021-01-21 | 2024-06-04 | 深圳市显控科技股份有限公司 | 掉电数据存储方法、单片机及计算机可读存储介质 |
CN113053451B (zh) * | 2021-03-05 | 2022-05-10 | 深圳三地一芯电子有限责任公司 | Nandflash内生成softbit的方法、系统、主机以及储存介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003242788A (ja) * | 2003-02-10 | 2003-08-29 | Toshiba Corp | 不揮発性半導体メモリ装置及びその制御方法 |
US20060271725A1 (en) * | 2005-05-24 | 2006-11-30 | Micron Technology, Inc. | Version based non-volatile memory translation layer |
KR100908637B1 (ko) * | 2007-10-10 | 2009-07-21 | 한양대학교 산학협력단 | 플래시 메모리의 데이터 관리방법 |
US8452913B2 (en) * | 2009-12-16 | 2013-05-28 | Samsung Electronics Co., Ltd. | Semiconductor memory device and method of processing data for erase operation of semiconductor memory device |
TW201337554A (zh) * | 2012-03-14 | 2013-09-16 | Phison Electronics Corp | 程式化記憶胞與資料讀取方法、記憶體控制器與儲存裝置 |
US20130339585A1 (en) * | 2003-12-30 | 2013-12-19 | Sandisk Technologies Inc. | Management of Non-Volatile Memory Systems Having Large Erase Blocks |
US8762685B2 (en) * | 2010-12-10 | 2014-06-24 | Phison Electronics Corp. | Data writing method, memory controller and memory storage apparatus |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155559B1 (en) * | 2000-08-25 | 2006-12-26 | Lexar Media, Inc. | Flash memory architecture with separate storage of overhead and user data |
US8694869B2 (en) * | 2003-08-21 | 2014-04-08 | QUALCIMM Incorporated | Methods for forward error correction coding above a radio link control layer and related apparatus |
US7631162B2 (en) * | 2005-10-27 | 2009-12-08 | Sandisck Corporation | Non-volatile memory with adaptive handling of data writes |
US7551492B2 (en) | 2006-03-29 | 2009-06-23 | Mosaid Technologies, Inc. | Non-volatile semiconductor memory with page erase |
US9020047B2 (en) * | 2006-05-24 | 2015-04-28 | Panasonic Intellectual Property Management Co., Ltd. | Image decoding device |
CN102915273B (zh) * | 2011-08-02 | 2015-06-10 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
CN103514096B (zh) * | 2012-06-18 | 2016-06-08 | 群联电子股份有限公司 | 数据储存方法、存储器控制器与存储器储存装置 |
US9009565B1 (en) * | 2013-03-15 | 2015-04-14 | Pmc-Sierra, Inc. | Systems and methods for mapping for solid-state memory |
US9009568B2 (en) * | 2013-08-09 | 2015-04-14 | Sandisk Technologies Inc. | Sensing parameter management in non-volatile memory storage system to compensate for broken word lines |
-
2015
- 2015-01-27 TW TW104102675A patent/TWI557744B/zh active
- 2015-02-11 CN CN201510071871.7A patent/CN105988722B/zh active Active
- 2015-04-08 US US14/681,095 patent/US9563553B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003242788A (ja) * | 2003-02-10 | 2003-08-29 | Toshiba Corp | 不揮発性半導体メモリ装置及びその制御方法 |
US20130339585A1 (en) * | 2003-12-30 | 2013-12-19 | Sandisk Technologies Inc. | Management of Non-Volatile Memory Systems Having Large Erase Blocks |
US20060271725A1 (en) * | 2005-05-24 | 2006-11-30 | Micron Technology, Inc. | Version based non-volatile memory translation layer |
KR100908637B1 (ko) * | 2007-10-10 | 2009-07-21 | 한양대학교 산학협력단 | 플래시 메모리의 데이터 관리방법 |
US8452913B2 (en) * | 2009-12-16 | 2013-05-28 | Samsung Electronics Co., Ltd. | Semiconductor memory device and method of processing data for erase operation of semiconductor memory device |
US8762685B2 (en) * | 2010-12-10 | 2014-06-24 | Phison Electronics Corp. | Data writing method, memory controller and memory storage apparatus |
TW201337554A (zh) * | 2012-03-14 | 2013-09-16 | Phison Electronics Corp | 程式化記憶胞與資料讀取方法、記憶體控制器與儲存裝置 |
Also Published As
Publication number | Publication date |
---|---|
US20160217068A1 (en) | 2016-07-28 |
TW201628009A (zh) | 2016-08-01 |
CN105988722A (zh) | 2016-10-05 |
US9563553B2 (en) | 2017-02-07 |
CN105988722B (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI557744B (zh) | 資料儲存方法及嵌入式系統 | |
US9645894B2 (en) | Data storage device and flash memory control method | |
KR100847506B1 (ko) | 기억 장치, 메모리 관리 방법 및 프로그램 | |
TWI527037B (zh) | 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置 | |
TWI546666B (zh) | 資料儲存裝置以及快閃記憶體控制方法 | |
US8291155B2 (en) | Data access method, memory controller and memory storage system | |
JP2009512022A (ja) | フラッシュメモリの管理 | |
US8239612B2 (en) | Memory controller, flash memory system with memory controller, and control method of flash memory | |
TWI423026B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TW201351148A (zh) | 資料保護方法、記憶體控制器與記憶體儲存裝置 | |
JPWO2007000862A1 (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法 | |
US9721669B2 (en) | Data protection method, memory control circuit unit and memory storage apparatus | |
TWI529530B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI451247B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
JP5066894B2 (ja) | 記憶媒体制御装置 | |
US9760301B2 (en) | WOM code emulation of EEPROM-type devices | |
JP4794530B2 (ja) | 半導体装置および携帯電話 | |
JP3808842B2 (ja) | 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
CN116185563A (zh) | 一种基于车规级微控制器数据闪存的软件模拟算法 | |
JP3826115B2 (ja) | 記憶装置、メモリ管理方法及びプログラム | |
JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
US11966638B2 (en) | Dynamic rain for zoned storage systems | |
US20220188005A1 (en) | Memory system | |
JP6152999B2 (ja) | 半導体記憶装置 |