本技術(shù)屬于數(shù)據(jù)存儲,尤其涉及一種數(shù)據(jù)處理方法、裝置、電子設(shè)備和存儲介質(zhì)。
背景技術(shù):
1、非易失性存儲器(non-volatile?memory,nvm)是一種在嵌入式系統(tǒng)中大量使用的掉電期間也可以持久保存數(shù)據(jù)的存儲器,目前常見的是nor閃存(flash)和nand閃存,前者容量小、價格高、讀取速度快、支持指令片內(nèi)執(zhí)行,后者容量大、價格低、寫入和擦除速度相對較快,兩者都可以斷電保存,可以讀寫(通常4字節(jié)為單位),但在寫入之前需要整塊(通常kb為單位)擦除,每塊的可擦寫次數(shù)有限。在多數(shù)嵌入式系統(tǒng)中,閃存不僅用來存儲執(zhí)行程序,還會用來存放程序運行時需要經(jīng)常讀寫的數(shù)據(jù)。因此對于較復(fù)雜的嵌入式系統(tǒng),在軟件設(shè)計上需要重點考慮數(shù)據(jù)的讀寫效率以及閃存的使用壽命,保證磨損均衡。相關(guān)nvm數(shù)據(jù)處理方法中,存在nvm數(shù)據(jù)的讀寫效率低、閃存空間利用率低、磨損均衡等無法兼顧的問題。
技術(shù)實現(xiàn)思路
1、本技術(shù)提出一種數(shù)據(jù)處理方法、裝置、電子設(shè)備和存儲介質(zhì),以解決相關(guān)技術(shù)中存在的nvm數(shù)據(jù)的讀寫效率低以及閃存空間利用率低、磨損均衡等無法兼顧的問題。
2、第一方面,本技術(shù)提供了一種數(shù)據(jù)處理方法,包括:
3、接收數(shù)據(jù)存儲指令,所述數(shù)據(jù)存儲指令用于指示存儲第一數(shù)據(jù)對象;
4、響應(yīng)于所述數(shù)據(jù)存儲指令,獲取所述第一數(shù)據(jù)對象的標識字段,將所述第一數(shù)據(jù)對象和所述標識字段寫入循環(huán)緩沖區(qū),所述標識字段包括版本號和標識信息;
5、獲取所述第一數(shù)據(jù)對象在所述循環(huán)緩沖區(qū)中的存儲位置信息,將所述存儲位置信息和所述標識字段存儲至內(nèi)存中的數(shù)據(jù)對象信息表。
6、在本技術(shù)實施例中,為數(shù)據(jù)對象添加標識字段,通過將閃存可用空間作為一個循環(huán)緩沖區(qū),在接收到數(shù)據(jù)存儲指令時,將數(shù)據(jù)對象和數(shù)據(jù)對象的標識字段寫入循環(huán)緩沖區(qū),并在內(nèi)存中維護一張數(shù)據(jù)對象信息表,數(shù)據(jù)對象信息表中記錄每個數(shù)據(jù)對象的標識字段以及該數(shù)據(jù)對象在閃存空間中的存儲位置信息,通過結(jié)合數(shù)據(jù)對象信息表和循環(huán)緩沖區(qū),可以循環(huán)利用閃存空間,提高了閃存空間使用率。
7、根據(jù)本技術(shù)的一些實施例,所述響應(yīng)于所述數(shù)據(jù)存儲指令,獲取所述第一數(shù)據(jù)對象的標識字段,將所述第一數(shù)據(jù)對象和所述標識字段寫入循環(huán)緩沖區(qū),包括:
8、獲取所述第一數(shù)據(jù)對象的標識信息,根據(jù)所述標識信息查詢所述數(shù)據(jù)對象信息表中是否存在所述第一數(shù)據(jù)對象;
9、若不存在,對所述第一數(shù)據(jù)對象的版本號進行初始化,將所述第一數(shù)據(jù)對象和所述標識字段寫入循環(huán)緩沖區(qū)的空白位置;
10、若存在,將所述第一數(shù)據(jù)對象的版本號加一,將所述第一數(shù)據(jù)對象和所述標識字段寫入循環(huán)緩沖區(qū)的空白位置。
11、在本技術(shù)實施例中,通過結(jié)合數(shù)據(jù)對象信息表和循環(huán)緩沖區(qū),對數(shù)據(jù)對象添加版本信息,并順序?qū)懭腴W存空白位置,循環(huán)利用整個閃存空間,提高了閃存空間利用率,并保證了磨損均衡。
12、根據(jù)本技術(shù)的一些實施例,所述循環(huán)緩沖區(qū)包括:首部和尾部,所述循環(huán)緩沖區(qū)的首部和尾部之間的空白位置能夠存儲預(yù)設(shè)數(shù)據(jù)長度的數(shù)據(jù)對象;
13、所述將所述第一數(shù)據(jù)對象和所述標識字段寫入循環(huán)緩沖區(qū)的空白位置,包括:
14、將所述第一數(shù)據(jù)對象和所述標識字段寫入循環(huán)緩沖區(qū)的首部的空白位置。
15、在本技術(shù)實施例中,將整個閃存可用空間看作一個循環(huán)緩沖區(qū),存儲數(shù)據(jù)時,依次順序?qū)?shù)據(jù)對象寫入閃存的空白位置,即循環(huán)緩沖區(qū)的首部,隨著數(shù)據(jù)的存儲,循環(huán)緩沖區(qū)的尾部總是最舊版本的數(shù)據(jù),可以實現(xiàn)磨損均衡。
16、根據(jù)本技術(shù)的一些實施例,所述方法還包括:
17、在所述循環(huán)緩沖區(qū)的首部的空白位置無法寫入所述第一數(shù)據(jù)對象的情況下,擦除所述循環(huán)緩沖區(qū)的尾部的目標位置。
18、根據(jù)本技術(shù)的一些實施例,所述方法還包括:
19、接收數(shù)據(jù)擦除指令,所述數(shù)據(jù)擦除指令用于指示擦除目標閃存頁面;
20、響應(yīng)于所述數(shù)據(jù)擦除指令,獲取所述目標閃存頁面對應(yīng)的地址信息;
21、根據(jù)所述地址信息,查詢所述數(shù)據(jù)對象信息表,確定所述目標閃存頁面中是否存在最新版本的數(shù)據(jù)對象;
22、若不存在,則擦除所述目標閃存頁面;
23、或者,若存在,將所述最新版本的數(shù)據(jù)對象依次拷貝至新的空白閃存頁面,更新所述數(shù)據(jù)對象信息表中所述最新版本的數(shù)據(jù)對象對應(yīng)的存儲位置信息,擦除所述目標閃存頁面。
24、在本技術(shù)實施例中,當接收數(shù)據(jù)擦除指令時,首先判斷待擦除的目標閃存頁面中是否存在最新版本的數(shù)據(jù)對象,若存在,則先拷貝后擦除,若不存在,則直接擦除,可以保證總是擦除舊版本的數(shù)據(jù)對象,多數(shù)情況下無需拷貝或僅拷貝待擦除的目標閃存頁面中很少的數(shù)據(jù)對象,保證了寫入效率。
25、根據(jù)本技術(shù)的一些實施例,所述數(shù)據(jù)對象信息表還包括:內(nèi)存?zhèn)浞輼酥疚唬鰞?nèi)存?zhèn)浞輼酥疚挥糜谥甘緮?shù)據(jù)對象是否備份于內(nèi)存中;
26、所述將所述第一數(shù)據(jù)對象和所述標識字段寫入循環(huán)緩沖區(qū)之后,所述方法還包括:
27、將所述第一數(shù)據(jù)對象存儲于內(nèi)存中;
28、將所述數(shù)據(jù)對象信息表中所述第一數(shù)據(jù)對象的內(nèi)存?zhèn)浞輼酥疚辉O(shè)定為第一值。
29、在本技術(shù)實施例中,通過在數(shù)據(jù)對象信息表中增加內(nèi)存?zhèn)浞輼酥疚?,可以提高?shù)據(jù)讀取效率。
30、根據(jù)本技術(shù)的一些實施例,所述方法還包括:
31、接收數(shù)據(jù)讀取指令,所述數(shù)據(jù)讀取指令用于指示讀取第二數(shù)據(jù)對象;
32、響應(yīng)于所述數(shù)據(jù)讀取指令,通過所述數(shù)據(jù)對象信息表中的內(nèi)存?zhèn)浞輼酥疚唬_定所述內(nèi)存中是否存在所述第二數(shù)據(jù)對象;
33、若存在,從所述內(nèi)存中讀取所述第二數(shù)據(jù)對象;
34、或者,若不存在,基于所述數(shù)據(jù)對象信息表,獲取所述第二數(shù)據(jù)對象的存儲位置信息;
35、基于所述第二數(shù)據(jù)對象的存儲位置信息,從所述循環(huán)緩沖區(qū)讀取所述第二數(shù)據(jù)對象,并將所述第二數(shù)據(jù)對象存儲至所述內(nèi)存中。
36、在本技術(shù)實施例中,在需要讀取數(shù)據(jù)時,通過數(shù)據(jù)對象信息表定位數(shù)據(jù)對象的位置,如果在內(nèi)存有副本,則從內(nèi)存直接讀取,如果沒有,則從物理閃存讀取,可以提高數(shù)據(jù)讀取效率。
37、根據(jù)本技術(shù)的一些實施例,所述方法還包括:
38、在所述內(nèi)存中備份的數(shù)據(jù)對象的數(shù)量超過預(yù)設(shè)值時,基于最近最少被使用替換算法,刪除所述內(nèi)存中備份的最近最少被使用的至少一個數(shù)據(jù)對象。
39、在本技術(shù)實施例中,通過在內(nèi)存保留部分常用數(shù)據(jù)對象的副本,讀取數(shù)據(jù)對象時,通過查詢數(shù)據(jù)對象信息表定位數(shù)據(jù)對象的位置,提高了數(shù)據(jù)讀取效率。
40、第二方面,本技術(shù)提供了一種數(shù)據(jù)處理裝置,該裝置包括:
41、接收單元,用于接收數(shù)據(jù)存儲指令,所述數(shù)據(jù)存儲指令用于指示存儲第一數(shù)據(jù)對象;
42、數(shù)據(jù)存儲單元,用于響應(yīng)于所述數(shù)據(jù)存儲指令,獲取所述第一數(shù)據(jù)對象的標識字段,將所述第一數(shù)據(jù)對象和所述標識字段寫入循環(huán)緩沖區(qū),所述標識字段包括版本號和標識信息;
43、信息存儲單元,用于獲取所述第一數(shù)據(jù)對象在所述循環(huán)緩沖區(qū)中的存儲位置信息,將所述存儲位置信息和所述標識字段存儲至內(nèi)存中的數(shù)據(jù)對象信息表。
44、第三方面,本技術(shù)提供了一種電子設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述程序時實現(xiàn)如上述第一方面所述的數(shù)據(jù)處理方法。
45、第四方面,本技術(shù)提供了一種非暫態(tài)計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上述第一方面所述的數(shù)據(jù)處理方法。
46、第五方面,本技術(shù)提供了一種芯片,所述芯片包括處理器和通信接口,所述通信接口和所述處理器耦合,所述處理器用于運行程序或指令,實現(xiàn)如第一方面所述的數(shù)據(jù)處理方法。
47、第六方面,本技術(shù)提供了一種計算機程序產(chǎn)品,包括計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上述第一方面所述的數(shù)據(jù)處理方法。
48、本技術(shù)的附加方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本技術(shù)的實踐了解到。