网站第一屏一般做多大,深圳百度搜索排名优化,WordPress登录效果,福建交通建设网站摘要#xff1a; KV组件的写平衡#xff08;磨损平衡#xff09;特性就是通过异地更新、垃圾回收等策略来平衡flash介质各个存储区块的磨损程度#xff0c;以避免某些“特定”存储区块因过度使用而形成坏区#xff0c;从而延长flash的使用寿命。
前言
KV组件是AliOS Thing…摘要 KV组件的写平衡磨损平衡特性就是通过异地更新、垃圾回收等策略来平衡flash介质各个存储区块的磨损程度以避免某些“特定”存储区块因过度使用而形成坏区从而延长flash的使用寿命。
前言
KV组件是AliOS Things中一个以Key-Value方式进行持久化存储的轻量级组件主要为基于nor flash的小型MCU设备Micro Control Unit提供通用的Key-Value持久化存储接口。KV组件支持写平衡磨损平衡、掉电保护特性且具有相当低的footprint。这里主要介绍KV组件在设计写平衡特性时的一些考量。 What – KV组件的写平衡特性是什么
对于flash介质而言它是有一定的擦写次数限制的。如果针对介质上一个固定地址进行重复的擦除、写入将会导致该区域的使用寿命降低甚至出现介质损坏的情况。KV组件的写平衡磨损平衡特性就是通过异地更新、垃圾回收等策略来平衡flash介质各个存储区块的磨损程度以避免某些“特定”存储区块因过度使用而形成坏区从而延长flash的使用寿命。 Why – KV组件为何需要写平衡特性 KV组件的设计初衷是为了给基于nor flash的小型MCU设备提供一个可以存储配置信息的模块。对于单个配置信息而言一般所需存储的字节数大多在十几个字节~几百个字节量级而一般nor flash的最小擦除单位sector都在4K字节以上且根据flash介质需先擦再写的特点如果没有写平衡特性每次新写入或更新配置信息都会带来一次flash介质擦除操作这将大大影响flash介质的使用寿命一般nor flash的擦除次数限制大约10万次左右。
下表是flash介质在有无写平衡特性下重复写入使用寿命的理论计算对比 限制条件flash擦除sector大小为4k 擦除次数限制为10W次每日写入次数5000次
根据上表的对比KV组件的写平衡特性在几百个字节量级的写入情况下起码可以延长flash 8倍以上的使用寿命。
How – KV组件写平衡特性的实现考量 由于小型物联网嵌入式设备的硬件资源较为匮乏对code size以及RAM的占用size比较敏感。所以基于资源消耗的考量写平衡特性在KV组件中的实现遵循make it simple原则主要依赖以下两个策略来实现
异地更新策略 Key-Value键值对采用顺序写入、异地更新的方式即不再在原存储位置擦除重写而是在其余空闲位置写入新键值并将原键值标记无效等待回收。这样既可以减少flash的擦除操作次数又可以提高flash的空间利用率也避免了对“特定”存储区块过度使用的问题。 示意图如下垃圾回收策略 当flash存储区块的剩余可用空间达到阈值时会触发垃圾回收机制。垃圾回收机制采用基础的SGC算法进行资源回收释放即当系统触发垃圾回收时从当前写入块的下一个存储块开始依次检查存储块的管理状态若存储块的管理状态为Dirty状态则将该存储块中的有效数据依次挪向垃圾回收预留的空闲存储块当数据迁移完成后会擦除Dirty存储块并标记可用空闲状态。 示意图如下小结 KV组件的写平衡特性在兼顾footprint需求的同时也能有效的提升flash的使用寿命。不过也是由于footprint的要求写平衡特性在算法的实现相对较为简单在资源更丰富的场景下可以采用更复杂高效一些的平衡算法。