论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
FTL潜规则:调优,才是算法精华
FTL潜规则:调优,才是算法精华
美食家大橙子
论坛元老
|
2023-6-8 12:24:01
|
显示全部楼层
|
阅读模式
楼主
主题
1982
|
帖子
1982
|
积分
5946
前言
在存储领域中有一个FTL的概念,这是一种Flash的内存管理算法,属于各个厂商的核心机密,每个厂商的处理方式不同,有的处理简单,有的处理复杂。
FTL,即Flash Translations layer,也就是闪存转
换层,可以完成从逻辑地址到物理地址的转换,简称为映射。
为什么需要FTL
因为Flash的质量参差不齐,里面坏掉的区域是完成不能使用的。
Host发送命令下来,要求把一段数据存放在A地址中,此时A就是逻辑地址,而好死不死,Flash中的A地址刚好是坏块,那怎么办?
此时B地址是好的,FTL就将数据存放在B地址中,此时B丢置就是物理地址了,同时将A逻辑地址——B物理地址记录下来,这一段记录就是映射关系了。
下一次,当主机需要读取A逻辑地址的数据时,FTL就会将B物理地址的数据读取出来返回给主机。
FTL的位置
先了解几个名词
UCL
USB Control layer,USB控制层,主要用于解析从Host发送下来的USB命令
FTL
Flash Translation layer,Flash转换层,主要用于将逻辑地址转换成物理地址
FCL
Flash Control layer,Flash控制层,主要用于将经过映射处理后的地址解析成flash指令发送给Flash
UCL、FTL、FCL所处的位置
FTL遵循的规则
FTL这种内存管理算法,自然是遵循着着Flash特性,一切都是在Flash特性下才能运行起来的。
写数据以page为最小单位
写入的数据必须打乱存储才会稳定
写满整个Block数据才会稳定
擦除以Block为最小单位,一般不轻易做整块擦除
当然也有其他特性,但是Flash由于批次不同,制造工艺和厂商不同,出厂的flash也各有一些差异性的特性,这些,就实际问题实际分析。
FTL中各种调优
不同的厂商,FTl的方案各不相同,除了逻辑地址和物理地址的映射作用外,一个好的FTL还具备以下的调优:
映射颗粒度
逻辑地址和物理地址之间的映射方式有两种:块映射和页映射。
使用块映射,逻辑块映射到物理块,看起来挺好的,但是如果遇到操作page的情况,比如说要修改刚写满的某个Block中的某一个page,往往需要做整块擦除,大大降低了效率。
使用页映射,虽然弥补了上面的问题,但是每一页都做映射的话,页的数量一多,映射页多,要知道存储映射关系也是要消耗内存的。页映射需要消耗很大的空间。
所以市面上的做法大多数采用:块映射+页映射,简称混合映射,既可以满足存储需求,还能做到以page颗粒进行维护。
映射表存储
映射表是可以随时变化的,也是随时都要用到的,一般用的时候在RAM中使用,不用的时候就需要存储起来,一般都是用一些空闲块存储起来,这些空闲块不存数据,只放映射表。
merge处理
存储领域,少不了数据搬运这一块,一般来说,merge和GC是一起工作的。
GC回收
现在无论什么都会涉及一些垃圾回收,内存永远是一个好的算法需要考量的点。
垃圾回收需要选好时机,谁都不希望一个存储设备,会在没有能用的内存后才开始做GC回收,这就像开启了一段完全看不到进度的卡顿一样。
好的固件往往未雨绸缪,在不知不觉下做好了GC回收的工作。
寿命均衡
逻辑地址和物理地址的映射本身会对寿命均衡产生正面影响。
就刚才讲到的,映射表可以被随时修改,那么逻辑地址对应的物理地址也就被修改了,一些物理Block经常被擦写,往往会加速损坏。
我们可以通过修改逻辑块,让每次物理块不同而避免经常擦写相同的物理块,这本身就保证不会有物理块被经常擦写。
但是有一种情况它没有办法处理,即闲置的数据块,它们被写入后没有更改,就一直占据某些物理块,而这些物理块寿命还很长,而别的块却在飞速损耗中。
面对这种情况,我们只有在合适的时机帮它们换个位置了,如何选择这个时机很重要,而且这个merge搬运动作本身也会损耗寿命本身。
以上这些策略也是各个FTL算法的精华了。
我收集了一些linux的资料、算法小抄和计算机基础的资料,仅供个人学习使用,欢迎大家一起学习探讨。
linux保姆级教程完整版文档资料
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
美食家大橙子
论坛元老
这个人很懒什么都没写!
楼主热帖
【计算机视觉】图像检索
面了个腾讯拿28k跳槽出来的,真正见识 ...
全面数字化时代,国有大型银行如何走好 ...
MySQL实战45讲 11
【大话云原生】负载均衡篇-小饭馆客流 ...
K8S 性能优化 - OS sysctl 调优
【kotlin】第一天
解决Mac下腾讯会议无法使用OBS等虚拟摄 ...
Python入门自学进阶-Web框架——14、Dj ...
【docker专栏2】CentOS操作系统安装Doc ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
物联网
快速回复
返回顶部
返回列表