TW201800932A - 資料儲存方法及資料儲存裝置 - Google Patents
資料儲存方法及資料儲存裝置 Download PDFInfo
- Publication number
- TW201800932A TW201800932A TW105135476A TW105135476A TW201800932A TW 201800932 A TW201800932 A TW 201800932A TW 105135476 A TW105135476 A TW 105135476A TW 105135476 A TW105135476 A TW 105135476A TW 201800932 A TW201800932 A TW 201800932A
- Authority
- TW
- Taiwan
- Prior art keywords
- storage unit
- storage
- data
- user data
- status flag
- 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/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- 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/0647—Migration 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本發明提供了一種資料儲存方法及資料儲存裝置。該方法基於快閃記憶體儲存裝置,該方法包括:獲取保存有最新使用者資料的一第一儲存單元;依序查找並得到靠近第一儲存單元的空閒的一第二儲存單元;將更新後的使用者資料儲存至第二儲存單元,並將第二儲存單元的狀態標誌更新為有效狀態;將第一儲存單元的狀態標誌從有效狀態更新為廢棄狀態。通過上述方式,本發明可保證延長快閃記憶體儲存裝置的壽命,同時亦能夠保證將使用者資料準確地、有效地儲存至快閃記憶體儲存裝置中。
Description
本發明係關於一資料儲存機制,尤指一種資料儲存方法及資料儲存裝置。
現有的電子產品中,基本上都會用到快閃記憶體儲存裝置。快閃記憶體儲存裝置在儲存資料時,一般至少有兩部分資料需要儲存:程式部分和使用者資料部分。其中,電子產品出廠後,程式部分一般不會再改變,而使用者資料部分經常會被使用者修改。
因此,採用快閃記憶體儲存裝置儲存使用者資料時,則會出現以下問題:大部分快閃記憶體儲存裝置在寫入資料之前,必須以儲存區塊(Bank)為單位,亦即以64KB為最小抹除單位進行抹除,其中,一次抹除要100ms以上。由於使用者資料部分經常會被使用者修改,導致大大增加了快閃記憶體儲存裝置的抹除次數,致使影響到了快閃記憶體儲存裝置的使用壽命。
為了解決上述問題,現有的一種基於快閃記憶體儲存裝置的資料儲存方法為:以快閃記憶體儲存裝置中的兩個儲存區塊(Bank)為例進行說明,對兩個儲存區塊進行標識,譬如標識為第一儲存區塊Bank61 和第二儲存區塊Bank62。每個儲存區塊的儲存空間為64KB,將第一儲存區塊Bank61 和第二儲存區塊Bank62劃分為64個儲存單元,每個儲存區塊包括32個儲存單元,每個儲存單元的儲存空間是2KB,請參照第1圖所示。
當使用者使用包含上述快閃記憶體儲存裝置的電子產品時,如果調整了使用者資料,那麼使用者資料會被依次連續存入第一儲存區Bank61 和第二儲存區Bank62 的某一個儲存單元內。
具體來說,第一個儲存單元B(61)Index1的前64位元組用以儲存第一標識和第二標識,其中,第一標識用於標識最新儲存的使用者資料,第二標識用於標識已廢棄的使用者資料。當儲存使用者資料時,使用者資料會在其它63 個儲存單元中依次儲存,第一儲存單元的前64個位元組位置與64個儲存單元一一對應。如第1圖所示,如果第一次使用者資料儲存在儲存單元B(61)Index2,則第一個儲存單元B(61)Index1的第二個位元組為第一標識;那麼第二次使用者資料儲存在儲存單元B(61)Index3,第一個儲存單元B(61)Index1的第三個位元組標識為第一標識,第二位元組從第一標識更新為第二標識;第三次使用者資料儲存在儲存單元B(61)Index4,第一個儲存單B(61)Index1的第四個位元組標識為第一標識,第三個位元組從第一標識更新為第二標識……按如此連續儲存的原則進行資料儲存。
通過上述方式,當使用者資料需要再次儲存至上次寫過的儲存單元時(例如再次儲存至儲存單元B(61)Index3),需要等到兩個儲存區塊中的63 個儲存單元都被寫入過,且整個128KB的空間進行抹除後。因此,極大地降低同一儲存單元被重複儲存的機率,從而達到延長快閃記憶體儲存裝置壽命的目的。
但是,現有技術提供的資料儲存方法無法保證能夠將使用者資料準確地、有效地儲存至快閃記憶體儲存裝置。例如,當使用者資料儲存至某一儲存單元的過程中發生斷電,則會導致儲存後續更新的使用者資料時發生異常。又例如,當使用者資料儲存至帶有壞塊(Bad Block)的某一儲存單元時,則會導致電子產品使用該使用者資料時發生異常。
本發明主要解決的技術問題是提供一種資料儲存方法及資料儲存裝置,在保證延長快閃記憶體儲存裝置壽命的同時,也能夠保證使用者資料準確地、有效地儲存至快閃記憶體儲存裝置。
為解決上述技術問題,本發明採用的一個技術方案是:提供一種資料儲存方法,該資料儲存方法基於快閃記憶體儲存裝置,該快閃記憶體儲存裝置包括用於儲存至少一種使用者資料的資料儲存區,每一資料儲存區至少包括一個儲存區塊,儲存區塊包括依序排列的多個相同結構的儲存單元,每一儲存單元包括標識區和資料區,標識區至少包括狀態標誌,該方法包括:獲取保存有最新使用者資料的一第一儲存單元;依序查找並得到靠近第一儲存單元的空閒的一第二儲存單元;將更新後的使用者資料儲存至第二儲存單元,並將第二儲存單元的狀態標誌更新為有效狀態;以及,將第一儲存單元的狀態標誌從有效狀態更新為廢棄狀態。
為解決上述技術問題,本發明採用的另一技術方案是:提供一種資料儲存裝置,該資料儲存裝置包括快閃記憶體儲存裝置和處理器;其中,該快閃記憶體儲存裝置包括用於儲存至少一種使用者資料的資料儲存區,每一資料儲存區至少包括一個儲存區塊,儲存區塊包括依序排列的多個相同結構的儲存單元,每一儲存單元包括標識區和資料區,標識區至少包括狀態標誌;其中,該處理器用於獲取保存有最新使用者資料的一第一儲存單元;依序查找並得到靠近第一儲存單元的空閒的一第二儲存單元;將更新後的使用者資料儲存至第二儲存單元,並將第二儲存單元的狀態標誌更新為有效狀態;將第一儲存單元的狀態標誌從有效狀態更新為廢棄狀態。
本發明可達到的技術功效在於,相較於現有技術,本發明的資料儲存方法及資料儲存裝置通過獲取保存有最新使用者資料的一第一儲存單元;依序查找並得到靠近第一儲存單元的空閒的一第二儲存單元;將更新後的使用者資料儲存至第二儲存單元,並將第二儲存單元的狀態標誌更新為有效狀態;將第一儲存單元的狀態標誌從有效狀態更新為廢棄狀態。通過上述方式,本發明在保證延長快閃記憶體儲存裝置壽命的同時,能夠保證使用者資料準確地、有效地儲存至快閃記憶體儲存裝置。
為了使讀者更加清楚明白本發明的目的、技術手段及優點,以下結合附圖圖式及實施例,對本發明進行進一步詳細說明。讀者應當瞭解,此處所描述的具體實施例僅用以解釋本發明的精神,並非為本發明的限制。
本發明公開的資料儲存方法基於快閃記憶體儲存裝置,其中,該快閃記憶體儲存裝置包括用於儲存至少一種使用者資料的資料儲存區,每一資料儲存區至少包括一個儲存區塊(Bank),各儲存區塊(Bank)包括依序排列的多個相同結構的儲存單元,每一儲存單元包括標識區和資料區,其中,標識區至少包括狀態標誌。
請參考第2圖,第2圖是本發明提供的快閃記憶體儲存裝置中某一種使用者資料的資料儲存區中儲存區塊的內部劃分示意圖。如第2圖所示,該儲存區塊(64KB)包括32個依序排列具有相同結構的儲存單元。其中,每一個儲存單元的大小為2KB,也就是說,儲存至該儲存單元的使用者資料小於2KB。
請一併搭配參考第3圖,第3圖是第2圖所示之儲存區塊中儲存單元的結構示意圖。如第3圖所示,該儲存單元包括標識區和資料區,其中標識區設置於各儲存單元的最開始16個位元組的儲存空間,剩餘的儲存空間則為資料區。
具體來說,標識區依次包括1個位元組的狀態標誌、4個位元組的寫入次數標誌、3個位元組的保留位元和8個位元組的身份編碼。
其中,狀態標誌包括四種不同狀態,分別為全新狀態例如為0xFF、可寫入狀態例如為0x7F、有效狀態例如為0x3F和廢棄狀態例如為0x1F。具體來說,當快閃記憶體儲存裝置中包括該儲存單元的儲存區塊進行抹除操作後,該儲存單元的狀態標誌為全新狀態。當該儲存單元正確地寫入最新的使用者資料後,該儲存單元的狀態標誌為有效狀態。當該儲存單元中儲存的使用者資料不是最新資料時,該儲存單元的狀態標誌為廢棄狀態。當該儲存單元處於寫入最新的使用者資料的過程中,該儲存單元的狀態標誌為可寫入狀態。其中,寫入次數標誌用於標識該儲存單元被寫入的次數,其中,該儲存單元每寫一次,寫入次數標誌自動加1。其中,身份編碼用於標識該儲存單元的使用者資料是否合法。
具體來說,資料區用於儲存使用者資料對應的資料流。
所屬領域的通常知識者應可以瞭解,第2圖所示的儲存區塊的內部劃分示意圖僅為舉例,本發明不以此為限。也就是說,儲存區塊的內部劃分可根據使用者資料的大小有不同的劃分方法。例如使用者資料大於2KB且小於4KB時,則儲存區塊可以包括16個依序排列具有相同結構的儲存單元,其中,每一個儲存單元的大小為4KB。在本發明的一較佳實施例中,使用者資料係以一資料結構的形式進行儲存,該資料結構具體如下所示:
typedef struct
{
BYTE gucObjectID;
BYTE gucDebugMode;
BYTE gucBankList[FDA_BANK_COUNT];
U8 gucUnitSize;
BYTE gucDataIDCard[8];
U32 gu32RamStartAddress;
U32 gu32RamLen;
BYTE ucBankCount;
BYTE ucBankUnitCount;
WORD u16AreaUnitCount;
WORD u16UnitIndex; } clsFlashDataArea;
其中,成員[gucObjectID]表示資料物件的身份識別碼,用於標識唯一的資料物件。
成員[gucDebugMode]表示偵錯介面,用於設置不同參數以出現不同類型的列印資訊。
成員[gucBankList]表示儲存區塊清單,用於標識快閃記憶體儲存裝置中被劃分的用於儲存對象資料的儲存區塊列表,其中,儲存區塊列表中可包括多個儲存區塊,且多個儲存區塊可以是連續的,也可以是不連續的。
成員[gucUnitSize]表示儲存單元的大小,用於指定儲存區塊中一個儲存單元的大小,取值範圍為(1~64)KB;
成員[gucDataIDCard]表示資料物件的身份編碼,用於在載入資料時進行身份驗證,如身份不正確會導入預設值;
成員[gu32RamStartAddress, gu32RamLen]表示指定映射至可快速讀寫的記憶體(Memory)中的區域。
成員[ucBankCount]表示本資料對象中儲存區塊的數量。
成員[ucBankUnitCount]表示儲存區塊中儲存單元的數量,也即指定一個儲存區塊被分成多少個儲存單元,取值範圍為(1~64);
成員[u16AreaUnitCount]表示當前資料物件區域有多少個儲存單元,公式如下:
u16AreaUnitCount = (ucBankUnitCount * ucBankCount);
成員[u16AreaUnitCount]表示資料物件中的指標,用於標識保存有最新的使用者資料的索引。
所屬領域的通常知識者應可以瞭解,由於使用者資料以資料結構的形式進行儲存,從而可以很方便地實現對不同大小的使用者資料在快閃記憶體儲存裝置中的儲存。例如,假設A使用者資料每次需要2KB大小的儲存單元,B使用者資料每次需要4KB大小的儲存單元,則通過定義上述資料結構的兩個不同資料物件即可實現在快閃記憶體儲存裝置中配置兩個具有不同大小的儲存單元的資料儲存區,從而使得對快閃記憶體儲存裝置的使用更加靈活方便,進而提高了快閃記憶體儲存裝置的利用率,減少了抹除快閃記憶體儲存裝置的次數。
請參考第4圖,第4圖是本發明第一實施例的資料儲存方法的流程圖。需注意的是,若有實質上相同的結果,本發明的方法並不以第4圖所示的流程順序為限。如第4圖所示,該方法包括如下步驟:
步驟S101:獲取保存有最新使用者資料的一第一儲存單元。
在步驟S101中,舉例來說,在電子產品使用過程中,如果使用者需要改變將使用者資料,以電子產品為機上盒為例來說,假如需要將預設音量從20調整到21,則首先查找保存有最新使用者資料(亦即預設音量20)的儲存單元作為第一儲存單元,其中,儲存預設音量20的儲存單元的狀態標誌為有效狀態。
步驟S102:依序查找並得到靠近第一儲存單元的空閒的一第二儲存單元。
在步驟S102中,依序查找第一儲存單元之後空閒的儲存單元(亦即第二儲存單元),其中,空閒的儲存單元可以被定義為沒有被寫入過使用者資料的儲存單元。
步驟S103:將更新後的資料對象儲存至第二儲存單元,並將第二儲存單元的狀態標誌更新為有效狀態。
在步驟S103中,承接上述舉例,將預設音量21儲存至第二儲存單元,同時,將儲存預設音量21的儲存單元的狀態標誌更新為有效狀態。
步驟S104:將第一儲存單元的狀態標誌從有效狀態更新為廢棄狀態。
在步驟S104中,承接上述舉例,當預設音量21儲存至第二儲存單元後,將儲存預設音量20的儲存單元的狀態標誌更新為廢棄狀態。本領域的技術人員應可以明白,假設將預設音量21儲存至第二儲存單元的過程中發生斷電,該第二儲存單元中儲存了部分資料而不再處於空閒狀態。此時儲存預設音量20的儲存單元對應的狀態標誌還是為有效狀態而尚未更新為廢棄狀態,機上盒依舊認定預設音量20為最新使用者資料,亦即第一儲存單元的地址保持不變。當機上盒再次開啟後,使用者仍需要將預設音量調整到21時,則在查找靠近第一儲存單元的空閒的儲存單元的過程中,會跳過斷電過程中寫入了一部分預設音量21的資料的該第二儲存單元,從而避免了儲存預設音量21時發生斷電而產生的異常。
通過上述實施例,本發明第一實施例的資料儲存方法通過依序查找保存有最新資料對象的儲存單元之後空閒的儲存單元,並將更新後的資料對象儲存至該空閒儲存單元,從而保證延長快閃記憶體儲存裝置壽命的同時,能夠避免使用者資料儲存至某一儲存單元的過程中發生斷電,導致儲存後續更新的使用者資料時發生異常,進而能夠保證使用者資料準確地、有效地儲存至快閃記憶體儲存裝置。
請參考第5圖,第5圖是本發明第二實施例的資料儲存方法的流程圖。需注意的是,若有實質上相同的結果,本發明的方法並不以第5圖所示的流程順序為限。如第5圖所示,該方法包括如下步驟:
步驟S201:獲取保存有最新使用者資料的一第一儲存單元。
在步驟S201中:獲取保存有最新使用者資料的一第一儲存單元的步驟具體為:依次讀取資料儲存區中各儲存單元的狀態標誌,獲取狀態標誌位元為有效狀態對應的儲存單元作為保存有最新使用者資料的第一儲存單元。
在其它實施例中,獲取保存有最新使用者資料的一第一儲存單元也可以通過直接讀取資料結構中的成員[u16AreaUnitCount]的值得到,其中,成員[u16AreaUnitCount]用於標識保存有最新的使用者資料的索引。
步驟S202:依序查找並得到靠近第一儲存單元的空閒的一第二儲存單元。
在步驟S202中,依序查找並得到靠近第一儲存單元的空閒的一第二儲存單元的操作具體為:依次讀取第一儲存單元之後的儲存單元的狀態標誌;獲取一狀態標誌為一全新狀態所對應的儲存單元,作為靠近第一儲存單元的空閒的第二儲存單元。
步驟S203:將第二儲存單元的狀態標誌更新為可寫入狀態。
在步驟S203中,當準備向第二儲存單元儲存更新後的使用者資料時,首先將第二儲存單元的狀態標誌從全新狀態更新為可寫入狀態,亦即指示第二儲存單元正在寫入更新後的使用者資料。
步驟S204:將更新後的使用者資料寫入第二儲存單元的資料區。
在步驟S204中,更新後的使用者資料在未被寫入快閃記憶體儲存裝置時,一般儲存在可快速讀寫的記憶體例如RAM中,亦即資料結構中成員[gu32RamStartAddress, gu32RamLen]對應的區域。將更新後的使用者資料寫入第二儲存單元的資料區的操作具體為:從可快速讀寫的記憶體的指定區域依次讀取使用者資料的資料流,隨後寫入第二儲存單元的資料區。
步驟S205:讀取儲存至第二儲存單元的使用者資料。
在步驟S205中,當完成更新後的使用者資料寫入第二儲存單元的操作後,繼續讀取儲存至第二儲存單元的使用者資料並寫入可快速讀寫的記憶體中不同於資料結構中成員[gu32RamStartAddress, gu32RamLen]對應的區域的其它區域。
步驟S206:根據讀取出的使用者資料判斷第二儲存單元是否存在壞塊,若存在,繼續執行步驟S202,否則執行步驟S207。
在步驟S206中,根據讀取出的使用者資料判斷第二儲存單元是否存在壞塊的操作具體為:計算從第二儲存單元讀取的使用者資料對應的校驗資料,並與原始儲存在可快速讀寫的記憶體中的使用者資料對應的校驗資料進行比對,若兩者一致,則表示第二儲存單元不存在壞塊,若兩者不一致,則表示第二儲存單元存在壞塊。
換言之,若從第二儲存單元讀取出的使用者資料與原始儲存在可快速讀寫的記憶體中的使用者資料相同,則表示該使用者資料準確地、有效地儲存至第二儲存單元。反之,則表示該使用者資料未被正確儲存。
其中,校驗資料的計算方法可以採用現有技術,為簡略說明書篇幅,不再贅述。
本領域的技術人員應可以瞭解,當步驟S206中判斷第二儲存單元存在壞塊時,此時由於第二儲存單元中儲存了錯誤資料從而使得第二儲存單元不再處於空閒狀態。也就是說,此時第二儲存單元的狀態標誌為不同于全新狀態的可寫入狀態。因此,再次執行查找靠近第一儲存單元的空閒的儲存單元的過程中,會跳過該狀態標誌為可寫入狀態的第二儲存單元,從而避免了後續儲存更新的使用者資料時發生異常。
步驟S207:將第二儲存單元的狀態標誌從可寫入狀態更新為有效狀態。
在步驟S207中,當步驟S206中判斷第二儲存單元不存在壞塊時,將第二儲存單元的狀態標誌從可寫入狀態更新為有效狀態,以標識第二儲存單元為保存有最新使用者資料的儲存單元。
在其它實施例中,若獲取保存有最新使用者資料的儲存單元通過直接讀取資料結構中的成員[u16AreaUnitCount]的值得到,則步驟S207執行完畢後,進一步將儲存有更新後的使用者資料的第二儲存單元的位址更新至資料結構的成員[u16AreaUnitCount]中。
在一較佳實施例,為了對第二儲存單元中的使用者資料進行有效性標識,步驟S207進一步包括將資料結構中成員[gucDataIDCard]對應的值寫入第二儲存單元的標識區中的身份編碼所在的區域。
在一較佳實施例,為了對第二儲存單元寫入的次數進行標識,步驟S207進一步包括將第二儲存單元的標識區中的寫入次數標誌的值自動加1。
步驟S208:將第一儲存單元的狀態標誌從有效狀態更新為廢棄狀態。
在步驟S208中,當步驟S207標識第二儲存單元為保存有最新使用者資料的儲存單元後,將第一儲存單元的狀態標誌從有效狀態更新為廢棄狀態,以標識第一儲存單元為保存舊的使用者資料的儲存單元。
通過上述實施例,本發明第二實施例的資料儲存方法通過將更新後的使用者資料寫入第二儲存單元的資料區後,讀取寫入第二儲存單元的使用者資料以判斷第二儲存單元是否存在壞塊。通過上述方式,本發明能夠避免使用者資料儲存至帶有壞塊的儲存單元而導致的電子產品工作異常,進而能夠保證使用者資料準確地、有效地儲存至快閃記憶體儲存裝置。
請參考第6圖,第6圖是本發明第三實施例的資料儲存方法的流程圖。其中,第6圖所示的第三實施例與第5圖所示的第二實施例的區別在於:
當資料儲存區包括至少兩個儲存區塊時,在步驟S208後,第6圖所示的第三實施例還包括:
步驟S301:判斷第一儲存單元和第二儲存單元是否處於同一儲存區塊中,若是,繼續執行步驟S201,否則執行步驟S302。
步驟S302:對第一儲存單元所在的儲存區塊進行抹除操作。
在步驟S302中,當步驟S301判斷第一儲存單元和第二儲存單元沒有處於同一儲存區塊中時,則對第一儲存單元所在的儲存區塊進行抹除操作。
以資料儲存區包括兩個儲存區塊為例來說,對兩個儲存區塊進行標識,譬如標識為第一儲存區塊和第二儲存區塊,則當第一儲存單元處於第一儲存區塊,而第二儲存單元處於第二儲存區塊時,則對第一儲存區塊進行抹除操作。本領域的技術人員可以理解,第一儲存單元處於第一儲存區塊,第二儲存單元處於第二儲存區塊可以理解為:第一儲存區塊已經儲存滿而繼續使用第二儲存區塊儲存資料對象。
另外,當第一儲存區塊進行抹除操作後,若第二儲存區塊儲存滿,則繼續使用第一儲存區塊儲存使用者資料並抹除第二儲存區塊。也就是說,兩者交替進行抹除操作。
通過上述實施例,本發明第三實施例的資料儲存方法通過判斷第一儲存單元和第二儲存單元是否處於同一儲存區塊中,當第一儲存單元和第二儲存單元沒有處於同一儲存區塊中時,則對第一儲存單元所在的儲存區塊進行抹除操作。通過上述方式,本發明能夠在抹除操作中發生斷電異常時,很好地保護最新的使用者資料不被丟失。
請參考第7圖,第7圖是本發明第四實施例的資料儲存方法的流程圖。其中,第7圖所示的第四實施例與第6圖所示的第三實施例的區別在於:
在步驟S202之後,第7圖所示的第四實施例還包括:
步驟S401:判斷更新後的使用者資料是否大於快閃記憶體儲存裝置中儲存區塊的大小,若大於,則執行步驟S402,否則繼續執行步驟S203。
在步驟S401中,判斷更新後的使用者資料是否大於快閃記憶體儲存裝置中儲存區塊的大小之具體步驟為:判斷更新後的使用者資料是否大於64KB。
步驟S402:對使用者資料進行壓縮操作以使壓縮後的資料流小於儲存區塊的大小,並繼續執行步驟S203。
在步驟S402中,當步驟S401判斷更新後的使用者資料大於64KB時,對資料流進行壓縮操作以使壓縮後的使用者資料小於64KB。
通過上述實施例,本發明第四實施例的資料儲存方法通過將超過儲存區塊的大小的資料流進行壓縮操作,從而能夠實現將較大資料量的使用者資料準確地、有效地儲存至快閃記憶體儲存裝置。
請參考第8圖,第8圖是本發明實施例的資料儲存裝置的結構示意圖。如第8圖所示,該資料儲存裝置包括快閃記憶體儲存裝置11、與快閃記憶體儲存裝置11耦接的處理器12。
快閃記憶體儲存裝置11包括用於儲存至少一種使用者資料的資料儲存區,每一資料儲存區至少包括一個儲存區塊,儲存區塊包括依序排列具有多個相同結構的儲存單元,每一儲存單元包括標識區和資料區,標識區至少包括狀態標誌。
處理器12用於獲取保存有最新使用者資料的一第一儲存單元;依序查找並得到靠近第一儲存單元的空閒的一第二儲存單元;將更新後的使用者資料儲存至第二儲存單元,並將第二儲存單元的狀態標誌更新為有效狀態;將第一儲存單元的狀態標誌從有效狀態更新為廢棄狀態。
具體來說,處理器12執行獲取保存有最新使用者資料的一第一儲存單元的操作具體為:處理器12依次讀取資料儲存區中各儲存單元的狀態標誌;獲取狀態標誌位元為有效狀態對應的儲存單元作為保存有最新使用者資料的第一儲存單元。
處理器12執行依序查找並得到靠近第一儲存單元的空閒的一第二儲存單元的操作具體為:處理器12依次讀取第一儲存單元之後的儲存單元的狀態標誌;獲取狀態標誌位元為全新狀態對應的儲存單元作為靠近第一儲存單元的空閒的第二儲存單元。
處理器12執行將更新後的使用者資料儲存至第二儲存單元的操作包括:處理器12將第二儲存單元的狀態標誌更新為可寫入狀態;將更新後的使用者資料寫入第二儲存單元的資料區;將第二儲存單元的狀態標誌從可寫入狀態更新為有效狀態。
較佳地,在本實施例中,當處理器12執行將更新後的使用者資料寫入第二儲存單元的資料區的操作後,處理器12還用於讀取儲存至第二儲存單元的使用者資料,並根據讀取出的使用者資料判斷第二儲存單元是否存在壞塊。其中,當處理器12識別出第二儲存單元存在壞塊時,繼續執行依序查找並得到靠近第一儲存單元的空閒的儲存單元的操作。當處理器12識別出第二儲存單元不存在壞塊時,將第二儲存單元的狀態標誌從可寫入狀態更新為有效狀態。
較佳地,在本實施例中,處理器12執行將更新後的使用者資料儲存至第二儲存單元的操作之前,處理器12還用於判斷更新後的使用者資料是否大於快閃記憶體儲存裝置中儲存區塊的大小;若使用者資料大於儲存區塊的大小,則對使用者資料進行壓縮操作以使壓縮後的使用者資料小於儲存區塊的大小。
較佳地,在本實施例中,當資料儲存區包括至少兩個儲存區塊時,處理器12執行將第一儲存單元的狀態標誌從有效狀態更新為廢棄狀態的操作之後,處理器12還用於判斷第一儲存單元和第二儲存單元是否處於同一儲存區塊中;若第一儲存單元和第二儲存單元不在同一儲存區塊中,對第一儲存單元所在的儲存區塊進行抹除操作。
較佳地,在本實施例中,使用者資料以資料結構的形式進行儲存,資料結構至少包括儲存區塊的數量、儲存區塊中儲存單元的大小、儲存區塊中儲存單元的數量。
較佳地,在本實施例中,每一儲存單元的標識區依次包括狀態標誌、寫入次數標誌、保留位元和身份編碼。
另外,在本發明各個實施例或實施例中的各功能單元可以整合在單一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元整合在一個單元中。上述整合的單元既可以採用硬體的形式實現,也可以採用軟體功能單元的形式實現。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
11‧‧‧處理器
12‧‧‧快閃記憶體儲存裝置
S101~S104、S201~S208、S301、S302、S401、S402‧‧‧步驟
12‧‧‧快閃記憶體儲存裝置
S101~S104、S201~S208、S301、S302、S401、S402‧‧‧步驟
第1圖為現有技術提供的快閃記憶體儲存裝置的內部劃分示意圖。 第2圖為本發明提供的快閃記憶體儲存裝置中某一種使用者資料的資料儲存區中儲存區塊的內部劃分示意圖。 第3圖為第2圖所示儲存區塊中儲存單元的結構示意圖。 第4圖為本發明第一實施例的資料儲存方法的流程圖。 第5圖為本發明第二實施例的資料儲存方法的流程圖。 第6圖為本發明第三實施例的資料儲存方法的流程圖。 第7圖為本發明第四實施例的資料儲存方法的流程圖。 第8圖為本發明實施例的資料儲存裝置的結構示意圖。
S101~S104‧‧‧步驟
Claims (18)
- 一種基於一快閃記憶體儲存裝置的資料儲存方法,該快閃記憶體儲存裝置包括用於儲存至少一種使用者資料的複數資料儲存區,每一資料儲存區至少包括一儲存區塊,該儲存區塊包括依序排列的具有一相同結構的複釋個儲存單元,每一儲存單元包括一標識區和一資料區,該標識區至少包括一狀態標誌,該資料儲存方法包括: 獲取保存有最新的一使用者資料之一第一儲存單元; 依序查找並得到靠近該第一儲存單元之一第二儲存單元,該第二儲存單元為一空閒的儲存單元; 將更新後之該使用者資料儲存至該第二儲存單元,並將該第二儲存單元之一狀態標誌更新為一有效狀態; 將該第一儲存單元之一狀態標誌從該有效狀態更新為一廢棄狀態。
- 如申請專利範圍第1項所述之資料儲存方法,其中將更新後之該使用者資料儲存至該第二儲存單元的步驟包括: 將該第二儲存單元之該狀態標誌更新為一可寫入狀態; 將更新後之該使用者資料寫入該第二儲存單元之一資料區; 將該第二儲存單元之該狀態標誌從該可寫入狀態更新為該有效狀態。
- 如申請專利範圍第2項所述之資料儲存方法,其另包含有: 在將更新後之該使用者資料寫入該第二儲存單元之該資料區之後: 讀取儲存至該第二儲存單元之該使用者資料; 根據所讀取出之該使用者資料,判斷該第二儲存單元是否存在一壞塊(Bad Block);以及 若該第二儲存單元存在該壞塊,則繼續執行依序查找並得到靠近該第一儲存單元之空閒的一儲存單元之操作。
- 如申請專利範圍第1項所述之資料儲存方法,其另包含有: 在將更新後之該使用者資料儲存該第二儲存單元之前: 判斷更新後之該使用者資料是否大於該快閃記憶體儲存裝置中一儲存區塊的大小;以及 若更新後之該使用者資料大於該儲存區塊的大小,則對更新後之該使用者資料進行一壓縮操作以使壓縮後之該使用者資料小於該儲存區塊的大小。
- 如申請專利範圍第1項所述之資料儲存方法,其中該資料儲存區包括至少兩個儲存區塊,以及該資料儲存方法另包含有: 將該第一儲存單元之該狀態標誌從該有效狀態更新為該廢棄狀態之後: 判斷該第一儲存單元和該第二儲存單元是否處於同一儲存區塊中;以及 若該第一儲存單元和該第二儲存單元不在同一儲存區塊中,對該第一儲存單元所在的一儲存區塊進行一抹除操作。
- 如申請專利範圍第1項所述之資料儲存方法,其中獲取保存有最新的該使用者資料之該第一儲存單元的步驟包含: 依次讀取該資料儲存區中各儲存單元的各狀態標誌;以及 獲取一狀態標誌位於該有效狀態所對應之一儲存單元,作為保存有最新的該使用者資料之該第一儲存單元。
- 如申請專利範圍第1項所述之資料儲存方法,其中,依序查找並得到靠近該第一儲存單元之該第二儲存單元的步驟包括: 依次讀取該第一儲存單元之後的至少一儲存單元的至少一狀態標誌; 獲取一狀態標誌位於一全新狀態所對應的一儲存單元,作為靠近該第一儲存單元之空閒的該第二儲存單元。
- 如申請專利範圍第1項所述之資料儲存方法,其中,該使用者資料以一資料結構的形式進行儲存,該資料結構至少包括該儲存區塊的數量、該儲存區塊中之儲存單元的大小、該儲存區塊中之儲存單元的數量。
- 如申請專利範圍第1項所述之資料儲存方法,其中,每一該儲存單元之該標識區依次包括該狀態標誌、一寫入次數標誌、一保留位元和一身份編碼。
- 一種資料儲存裝置,包含: 一快閃記憶體儲存裝置,該快閃記憶體儲存裝置包括用於儲存至少一種使用者資料的複數資料儲存區,每一資料儲存區至少包括一儲存區塊,該儲存區塊包括依序排列具有相同結構之複數儲存單元,每一儲存單元包括一標識區和一資料區,該標識區至少包括一狀態標誌;以及 一處理器,用於獲取保存有最新的一使用者資料之一第一儲存單元;依序查找並得到靠近該第一儲存單元之一第二儲存單元,該第二儲存單元為一空閒的儲存單元;將更新後之該使用者資料儲存至該第二儲存單元,並將該第二儲存單元之一狀態標誌更新為一有效狀態;以及,將該第一儲存單元之一狀態標誌從該有效狀態更新為一廢棄狀態。
- 如申請專利範圍第10項所述之資料儲存裝置,其中,該處理器將該第二儲存單元之該狀態標誌更新為一可寫入狀態、將更新後之該使用者資料寫入該第二儲存單元之一資料區、以及將該第二儲存單元之該狀態標誌從該可寫入狀態更新為該有效狀態。
- 如申請專利範圍第11項所述之資料儲存裝置,其中,在將更新後之該使用者資料寫入該第二儲存單元之該資料區之後,該處理器係執行: 讀取儲存至該第二儲存單元之該使用者資料; 根據所讀取出之該使用者資料,判斷該第二儲存單元是否存在一壞塊(Bad Block);以及 若該第二儲存單元存在該壞塊,則繼續執行依序查找並得到靠近該第一儲存單元之空閒的一儲存單元之操作。
- 如申請專利範圍第10項所述之資料儲存裝置,其中,在將更新後之該使用者資料儲存該第二儲存單元之前,該處理器係執行: 判斷更新後之該使用者資料是否大於該快閃記憶體儲存裝置中一儲存區塊的大小;以及 若更新後之該使用者資料大於該儲存區塊的大小,則對更新後之該使用者資料進行一壓縮操作以使壓縮後之該使用者資料小於該儲存區塊的大小。
- 如申請專利範圍第10項所述之資料儲存裝置,其中該資料儲存區包括至少兩個儲存區塊,以及在將該第一儲存單元之該狀態標誌從該有效狀態更新為該廢棄狀態之後,該處理器係執行: 判斷該第一儲存單元和該第二儲存單元是否處於同一儲存區塊中;以及 若該第一儲存單元和該第二儲存單元不在同一儲存區塊中,對該第一儲存單元所在的一儲存區塊進行一抹除操作。
- 如申請專利範圍第10項所述之資料儲存裝置,其中,該處理器係依次讀取該資料儲存區中各儲存單元的各狀態標誌、以及獲取一狀態標誌位於該有效狀態所對應之一儲存單元,作為保存有最新的該使用者資料之該第一儲存單元。
- 如申請專利範圍第10項所述之資料儲存裝置,其中,該處理器係依次讀取該第一儲存單元之後的至少一儲存單元的至少一狀態標誌,以及獲取一狀態標誌位於一全新狀態所對應的一儲存單元,作為靠近該第一儲存單元之空閒的該第二儲存單元。
- 如申請專利範圍第10項所述之資料儲存裝置,其中,該使用者資料以一資料結構的形式進行儲存,該資料結構至少包括該儲存區塊的數量、該儲存區塊中之儲存單元的大小、該儲存區塊中之儲存單元的數量。
- 如申請專利範圍第10項所述之資料儲存裝置,其中,每一該儲存單元之該標識區依次包括該狀態標誌、一寫入次數標誌、一保留位元和一身份編碼。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
??201610380158.5 | 2016-05-31 | ||
CN201610380158.5A CN106020735A (zh) | 2016-05-31 | 2016-05-31 | 一种数据存储方法及数据存储装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201800932A true TW201800932A (zh) | 2018-01-01 |
TWI622924B TWI622924B (zh) | 2018-05-01 |
Family
ID=57091822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105135476A TWI622924B (zh) | 2016-05-31 | 2016-11-02 | 資料儲存方法及資料儲存裝置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106020735A (zh) |
TW (1) | TWI622924B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018158189A1 (en) * | 2017-03-02 | 2018-09-07 | Philips Lighting Holding B.V. | Monitoring and adjusting memory usage in connected device systems |
CN107039077A (zh) * | 2017-03-20 | 2017-08-11 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
CN107704200A (zh) * | 2017-09-08 | 2018-02-16 | 晶晨半导体(上海)股份有限公司 | 一种数据存放方法 |
CN108804346A (zh) * | 2018-05-30 | 2018-11-13 | 广东思诺伟智能技术有限公司 | 一种电池soc数据在flash存储器存储的方法 |
CN110895444B (zh) * | 2018-09-12 | 2022-12-09 | 厦门歌乐电子企业有限公司 | 一种电子设备以及数据读写方法 |
CN111913647B (zh) * | 2019-05-08 | 2022-10-11 | 华为技术有限公司 | 一种存储设备的磨损均衡方法、装置及相关设备 |
CN113282240A (zh) * | 2021-05-24 | 2021-08-20 | 深圳市盈和致远科技有限公司 | 存储空间数据读写方法、设备、存储介质及程序产品 |
CN114385082A (zh) * | 2021-12-31 | 2022-04-22 | 北京得瑞领新科技有限公司 | Nor闪存的数据处理方法、存储介质及ssd设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006285600A (ja) * | 2005-03-31 | 2006-10-19 | Tokyo Electron Device Ltd | 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム |
CN101162608B (zh) * | 2006-10-10 | 2010-12-01 | 北京华旗资讯数码科技有限公司 | 闪存的存储块的标识方法 |
US7934052B2 (en) * | 2007-12-27 | 2011-04-26 | Pliant Technology, Inc. | System and method for performing host initiated mass storage commands using a hierarchy of data structures |
CN101567217A (zh) * | 2008-04-23 | 2009-10-28 | 中兴通讯股份有限公司 | 一种安全烧写闪存的方法及数据写入方法 |
JP2010020586A (ja) * | 2008-07-11 | 2010-01-28 | Nec Electronics Corp | データ処理装置 |
KR101602939B1 (ko) * | 2009-10-16 | 2016-03-15 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법 |
TWI497293B (zh) * | 2009-12-17 | 2015-08-21 | Ibm | 固態儲存裝置內之資料管理 |
CN102890656B (zh) * | 2012-09-25 | 2016-09-28 | Tcl光电科技(惠州)有限公司 | 提高flash使用寿命的方法 |
CN103914407B (zh) * | 2012-12-30 | 2016-09-14 | 航天信息股份有限公司 | 一种sd卡掉电保护、恢复方法以及带有掉电保护的sd卡 |
US9152330B2 (en) * | 2014-01-09 | 2015-10-06 | Netapp, Inc. | NVRAM data organization using self-describing entities for predictable recovery after power-loss |
-
2016
- 2016-05-31 CN CN201610380158.5A patent/CN106020735A/zh active Pending
- 2016-11-02 TW TW105135476A patent/TWI622924B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN106020735A (zh) | 2016-10-12 |
TWI622924B (zh) | 2018-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI622924B (zh) | 資料儲存方法及資料儲存裝置 | |
US8683113B2 (en) | Concurrently searching multiple devices of a non-volatile semiconductor memory | |
WO2015185002A1 (zh) | 一种数据写入方法及装置 | |
TWI692690B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
CN102890656B (zh) | 提高flash使用寿命的方法 | |
US9594675B2 (en) | Virtualization of chip enables | |
US9058256B2 (en) | Data writing method, memory controller and memory storage apparatus | |
TW201814526A (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
EP3196767B1 (en) | Method for writing data into flash memory device, flash memory device and storage system | |
CN105393228B (zh) | 读写闪存中数据的方法、装置及用户设备 | |
TWI486957B (zh) | Nand快閃記憶體燒錄資料的處理、使用方法及裝置、運行系統 | |
TW201719412A (zh) | 記憶體管理方法與系統及其記憶體儲存裝置 | |
TWI659304B (zh) | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 | |
JP2013174975A (ja) | メモリシステムとそのデータ書き込み方法 | |
WO2021238053A1 (zh) | 耳机及其程序升级方法、控制装置和可读存储介质 | |
TWI556103B (zh) | 記憶體裝置及其資料存取方法 | |
US20160070648A1 (en) | Data storage system and operation method thereof | |
TWI463311B (zh) | 快閃記憶體儲存設備的資料儲存方法和裝置 | |
CN113885808A (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
CN106469019B (zh) | 存储器管理方法、存储器控制电路单元及存储器储存装置 | |
US8312205B2 (en) | Method for identifying a page of a block of flash memory, and associated memory device | |
US20160275011A1 (en) | Microcomputer with built-in flash memory, method for writing data to built-in flash memory of microcomputer, and program for writing data to flash memory | |
TW202013183A (zh) | 高效能垃圾收集方法以及資料儲存裝置及其控制器 | |
TWI795119B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
JP2012234428A (ja) | メモリ制御装置、メモリ制御方法、プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees | ||
MM4A | Annulment or lapse of patent due to non-payment of fees |