System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及計算機緩存領域,尤其涉及一種緩存垃圾回收方法及其存儲介質。
技術介紹
1、隨著物聯網、智能家居和移動互聯網的發展,嵌入式系統和移動設備的普及程度不斷增加,這些設備通常需要使用flash存儲來存儲數據和程序。而flash存儲具有高速、低功耗和可靠性等優點,因此在嵌入式和移動設備中得到了廣泛應用,然而,flash存儲的管理對于不同的硬件平臺和操作系統環境中存在挑戰,如數據擦除復雜,數據管理,存儲器壽命管理和性能優化等方面。
2、現有技術中,nand?flash存儲器每次在進行新的寫入操作之前,nand?flash存儲器都需要頻繁地擦除原有數據,這一擦除過程相對較慢,而且需要在數據被寫入之前進行,這可能會增加系統復雜性和數據延遲,并且在進行數據刪除和寫入操作時還會產生垃圾,這些垃圾數據會占用存儲空間并降低性能。
技術實現思路
1、本申請實施例的主要目的在于提出一種緩存垃圾回收方法及其存儲介質,通過多個區塊鏈表之間的調用判定,準確地確定出真正需要優先擦除數據的區塊,進而限定了需要緊急回收的區塊的可選范圍,無需在讀寫過程中頻繁地對不同區塊進行回收處理,降低了數據響應的延遲性,提高了nand?flash存儲器的處理性能。
2、為實現上述目的,本申請實施例的第一方面提出了一種緩存垃圾回收方法,包括:
3、響應于緩存讀寫操作執行完畢,獲取第一區塊鏈表,并確定第一區塊鏈表是否為空鏈表,第一區塊鏈表用于存儲在閃存觸發斷電恢復的場景下被判定為含有無效頁的區塊
4、當第一區塊鏈表不為空鏈表時,在第一區塊鏈表的頭部抽離第一目標區塊,并確定第一目標區塊是否處于正在使用狀態;
5、當第一目標區塊處于正在使用狀態時,將第一目標區塊放至第一區塊鏈表的末尾;
6、當第一目標區塊不處于正在使用狀態時,確定第二區塊鏈表是否存儲有第一目標區塊,第二區塊鏈表用于存儲處于緩存分區中含有無效頁的區塊;
7、當第二區塊鏈表存儲有第一目標區塊時,回收第一目標區塊中的所有包含有效數據的物理頁,以及在回收第一目標區塊中的所有包含有效數據的物理頁完畢之后,擦除第一目標區塊中的數據。
8、進一步,在一些實施例中,確定第一目標區塊是否處于正在使用狀態,包括:
9、獲取當前正在使用的第二目標區塊;
10、確定第一目標區塊的物理地址與第二目標區塊的物理地址是否一致;
11、當第一目標區塊的物理地址與第二目標區塊的物理地址一致時,確定第一目標區塊處于正在使用狀態;
12、當第一目標區塊的物理地址與第二目標區塊的物理地址不一致時,確定第一目標區塊不處于正在使用狀態。
13、進一步,在一些實施例中,回收第一目標區塊中的所有包含有效數據的物理頁,包括:
14、在第二區塊鏈表中刪除第一目標區塊;
15、根據第一目標區塊的最后一個物理頁,構建第一映射數組,第一映射數組的各個數組元素分別存儲第一目標區塊的各個物理頁對應的第一邏輯頁地址;
16、依次獲取各個第一邏輯頁地址對應在邏輯頁映射表中的第一物理頁地址以及第一目標區塊中各個物理頁對應在閃存中的第二物理頁地址,并在第一目標區塊中將其對應的第二物理頁地址與第一物理頁地址相等的物理頁確定為第一有效頁,第一有效頁用于表示第一目標區塊中包含有效數據的物理頁;
17、根據各個第一有效頁依次從閃存中讀取對應的第一用戶數據,并將各個第一用戶數據寫入至第二目標區塊的存儲空間和將第一目標區塊的無效頁數自增一,以及在邏輯頁映射表中更新各個第三物理頁地址,并將各個第一邏輯頁地址寫入第二映射數組,當第二目標區塊的所有物理頁完成寫入操作后,將第二映射數組寫入至第二目標區塊的最后一個物理頁,第一用戶數據為第一有效頁的用戶數據,第三物理頁地址用于表示各個第一用戶數據寫入至第二目標區塊的各個物理頁地址;
18、根據第一目標區塊中被判定為無效頁的總數量,在第一目標區塊中回收所有的有效頁,并將第一目標區塊放至第二區塊鏈表對應的序列位置;
19、在第二區塊鏈表中查找并抽離第三目標區塊,以及將第三目標區塊放至第三區塊鏈表對應的序列位置,第三目標區塊中的所有物理頁均被判定為無效頁,第三區塊鏈表用于存儲處于空閑狀態的區塊。
20、進一步,在一些實施例中,擦除第一目標區塊中的數據,包括:
21、確定第三區塊鏈表是否存儲有第一目標區塊;
22、當第三區塊鏈表存儲有第一目標區塊時,在第三區塊鏈表中刪除第一目標區塊,以及擦除第一目標區塊中的數據。
23、進一步,在一些實施例中,將各個第一用戶數據寫入至第二目標區塊的存儲空間之前,緩存垃圾回收方法還包括:
24、根據第一映射數組,計算邏輯頁映射表中屬于第一目標區塊的無效頁的總數量,得到第一數量值;
25、統計第一目標區塊中被判定為無效頁的總數量,得到第二數量值;
26、確定第一數量值是否等于第二數量值;
27、當第一數量值不等于第二數量值時,輸出日志警告信息。
28、進一步,在一些實施例中,在獲取第一區塊鏈表之前,緩存垃圾回收方法還包括:
29、統計緩存分區中處于空閑狀態的區塊的總數量,得到第四數量值;
30、當第四數量值處于預設回收區間時,對第四目標區塊進行垃圾回收處理,第四目標區塊存儲于第二區塊鏈表的頭部;
31、其中,對第四目標區塊進行垃圾回收處理,包括以下步驟:
32、統計第四目標區塊中所有物理頁的總數量,得到第五數量值;
33、統計第四目標區塊中被判定為無效頁的總數量,得到第六數量值;
34、根據第五數量值與第六數量值之間的比值,確定第四目標區塊的待回收頁數;
35、根據待回收頁數,回收第四目標區塊中的待回收頁,以及在回收第四目標區塊中的待回收頁完畢之后,擦除第四目標區塊中的數據。
36、進一步,在一些實施例中,回收第四目標區塊中的待回收頁,包括:
37、在第二區塊鏈表的頭部抽離第四目標區塊;
38、根據第四目標區塊的最后一個物理頁,構建第三映射數組,第三映射數組的各個數組元素分別對應存儲第四目標區塊各個物理頁對應的第二邏輯頁地址;
39、依次獲取各個第二邏輯頁地址對應在邏輯頁映射表中的第四物理頁地址以及第一目標區塊中各個待回收頁對應在閃存中的第五物理頁地址,并在第四目標區塊中將其對應的第五物理頁地址與第四物理頁地址相等的物理頁確定為第二有效頁,第二有效頁用于表示第四目標區塊中包含有效數據的待回收頁;
40、根據各個第二有效頁依次從閃存中讀取對應的第二用戶數據,并將各個第二用戶數據寫入至第二目標區塊的存儲空間和將第四目標區塊的無效頁數自增一,以及在邏輯頁映射表中更新各個第六物理頁地址,并將各個第二邏輯頁地本文檔來自技高網...
【技術保護點】
1.一種緩存垃圾回收方法,其特征在于,包括:
2.根據權利要求1所述的緩存垃圾回收方法,其特征在于,所述確定所述第一目標區塊是否處于正在使用狀態,包括:
3.根據權利要求2所述的緩存垃圾回收方法,其特征在于,所述回收所述第一目標區塊中的所有包含有效數據的物理頁,包括:
4.根據權利要求1所述的緩存垃圾回收方法,其特征在于,所述擦除所述第一目標區塊中的數據,包括:
5.根據權利要求3所述的緩存垃圾回收方法,其特征在于,所述將各個所述第一用戶數據寫入至所述第二目標區塊的存儲空間之前,所述緩存垃圾回收方法還包括:
6.根據權利要求1所述的緩存垃圾回收方法,其特征在于,在所述獲取第一區塊鏈表之前,所述緩存垃圾回收方法還包括:
7.根據權利要求6所述的緩存垃圾回收方法,其特征在于,所述回收所述第四目標區塊中的待回收頁,包括:
8.根據權利要求7所述的緩存垃圾回收方法,其特征在于,所述將各個所述第二用戶數據寫入至第二目標區塊的存儲空間之前,所述緩存垃圾回收方法還包括:
9.根據權利要求6所述的緩存
10.一種計算機可讀存儲介質,所述存儲介質存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現權利要求1至9任意一項所述的緩存垃圾回收方法。
...【技術特征摘要】
1.一種緩存垃圾回收方法,其特征在于,包括:
2.根據權利要求1所述的緩存垃圾回收方法,其特征在于,所述確定所述第一目標區塊是否處于正在使用狀態,包括:
3.根據權利要求2所述的緩存垃圾回收方法,其特征在于,所述回收所述第一目標區塊中的所有包含有效數據的物理頁,包括:
4.根據權利要求1所述的緩存垃圾回收方法,其特征在于,所述擦除所述第一目標區塊中的數據,包括:
5.根據權利要求3所述的緩存垃圾回收方法,其特征在于,所述將各個所述第一用戶數據寫入至所述第二目標區塊的存儲空間之前,所述緩存垃圾回收方法還包括:
6.根據權利要求1所述的緩存垃圾回收方...
【專利技術屬性】
技術研發人員:江澈,原順,李明烽,
申請(專利權)人:廣東匠芯創科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。