日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AliOS Things KV组件的写平衡特性

發(fā)布時(shí)間:2024/8/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AliOS Things KV组件的写平衡特性 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要: KV組件的寫平衡(磨損平衡)特性就是通過異地更新、垃圾回收等策略來平衡flash介質(zhì)各個(gè)存儲區(qū)塊的磨損程度,以避免某些“特定”存儲區(qū)塊因過度使用而形成壞區(qū),從而延長flash的使用壽命。

前言

KV組件是AliOS Things中一個(gè)以Key-Value方式進(jìn)行持久化存儲的輕量級組件,主要為基于nor flash的小型MCU設(shè)備(Micro Control Unit)提供通用的Key-Value持久化存儲接口。KV組件支持寫平衡(磨損平衡)、掉電保護(hù)特性,且具有相當(dāng)?shù)偷膄ootprint。這里主要介紹KV組件在設(shè)計(jì)寫平衡特性時(shí)的一些考量。
What – KV組件的寫平衡特性是什么

對于flash介質(zhì)而言,它是有一定的擦寫次數(shù)限制的。如果針對介質(zhì)上一個(gè)固定地址進(jìn)行重復(fù)的擦除、寫入,將會導(dǎo)致該區(qū)域的使用壽命降低,甚至出現(xiàn)介質(zhì)損壞的情況。KV組件的寫平衡(磨損平衡)特性就是通過異地更新、垃圾回收等策略來平衡flash介質(zhì)各個(gè)存儲區(qū)塊的磨損程度,以避免某些“特定”存儲區(qū)塊因過度使用而形成壞區(qū),從而延長flash的使用壽命。
Why – KV組件為何需要寫平衡特性
KV組件的設(shè)計(jì)初衷是為了給基于nor flash的小型MCU設(shè)備提供一個(gè)可以存儲配置信息的模塊。對于單個(gè)配置信息而言,一般所需存儲的字節(jié)數(shù)大多在十幾個(gè)字節(jié)~幾百個(gè)字節(jié)量級,而一般nor flash的最小擦除單位(sector)都在4K字節(jié)以上,且根據(jù)flash介質(zhì)需先擦再寫的特點(diǎn),如果沒有寫平衡特性,每次新寫入或更新配置信息都會帶來一次flash介質(zhì)擦除操作,這將大大影響flash介質(zhì)的使用壽命(一般nor flash的擦除次數(shù)限制大約10萬次左右)。

下表是flash介質(zhì)在有無寫平衡特性下重復(fù)寫入使用壽命的理論計(jì)算對比:
(限制條件:flash擦除sector大小為4k, 擦除次數(shù)限制為10W次,每日寫入次數(shù)5000次)

根據(jù)上表的對比,KV組件的寫平衡特性在幾百個(gè)字節(jié)量級的寫入情況下起碼可以延長flash 8倍以上的使用壽命。

How – KV組件寫平衡特性的實(shí)現(xiàn)考量
由于小型物聯(lián)網(wǎng)嵌入式設(shè)備的硬件資源較為匱乏,對code size以及RAM的占用size比較敏感。所以基于資源消耗的考量,寫平衡特性在KV組件中的實(shí)現(xiàn)遵循make it simple原則,主要依賴以下兩個(gè)策略來實(shí)現(xiàn):

  • 異地更新策略:
    Key-Value鍵值對采用順序?qū)懭搿惖馗碌姆绞?#xff0c;即不再在原存儲位置擦除重寫,而是在其余空閑位置寫入新鍵值并將原鍵值標(biāo)記無效等待回收。這樣既可以減少flash的擦除操作次數(shù),又可以提高flash的空間利用率,也避免了對“特定”存儲區(qū)塊過度使用的問題。
    示意圖如下:
  • 垃圾回收策略:
    當(dāng)flash存儲區(qū)塊的剩余可用空間達(dá)到閾值時(shí),會觸發(fā)垃圾回收機(jī)制。垃圾回收機(jī)制采用基礎(chǔ)的SGC算法進(jìn)行資源回收釋放,即當(dāng)系統(tǒng)觸發(fā)垃圾回收時(shí),從當(dāng)前寫入塊的下一個(gè)存儲塊開始依次檢查存儲塊的管理狀態(tài),若存儲塊的管理狀態(tài)為Dirty狀態(tài),則將該存儲塊中的有效數(shù)據(jù)依次挪向垃圾回收預(yù)留的空閑存儲塊,當(dāng)數(shù)據(jù)遷移完成后,會擦除Dirty存儲塊并標(biāo)記可用空閑狀態(tài)。
    示意圖如下:
  • 小結(jié)
    KV組件的寫平衡特性,在兼顧footprint需求的同時(shí),也能有效的提升flash的使用壽命。不過也是由于footprint的要求,寫平衡特性在算法的實(shí)現(xiàn)相對較為簡單,在資源更豐富的場景下,可以采用更復(fù)雜高效一些的平衡算法。

    總結(jié)

    以上是生活随笔為你收集整理的AliOS Things KV组件的写平衡特性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。